diff --git a/.gitattributes b/.gitattributes index e53c9f7463..4f0804b9c7 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,2 +1,3 @@ .gitattributes export-ignore -.tx export-ignore \ No newline at end of file +.gitignore export-ignore +.tx export-ignore diff --git a/.tx/config b/.tx/config index 0b213ee49f..3855d51826 100644 --- a/.tx/config +++ b/.tx/config @@ -1,13 +1,13 @@ [main] host = https://www.transifex.com -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norsk, pl: polish-utf8, pt_BR: portuguese-br-utf8, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norsk, pl: polish-utf8, pt_BR: portuguese-br-utf8, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese [modx-evolution.installer] file_filter = install/lang/.inc.php source_file = install/lang/english.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish-utf8, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br-utf8, pt: portuguese, ru: russian-UTF8, sv: svenska, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish-utf8, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br-utf8, pt: portuguese, ru: russian-UTF8, sv: svenska, uk: ukranian, zh: chinese [modx-evolution.countrylist] file_filter = manager/includes/lang/country/_country.inc.php @@ -26,40 +26,40 @@ file_filter = assets/snippets/ditto/lang/.inc.php source_file = assets/snippets/ditto/lang/english.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian-utf8, cs: czech, da: danish, de: german, es: spanish, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian-utf8, cs: czech, da: danish, de: german, es: spanish, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese [modx-evolution.eform] file_filter = assets/snippets/eform/lang/.inc.php source_file = assets/snippets/eform/lang/english.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese [modx-evolution.docmanager] file_filter = assets/modules/docmanager/lang/.inc.php source_file = assets/modules/docmanager/lang/english.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese [modx-evolution.ajaxsearch] file_filter = assets/snippets/ajaxSearch/lang/.inc.php source_file = assets/snippets/ajaxSearch/lang/english-utf8.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norsk-utf8, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norsk-utf8, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese [modx-evolution.filesource] file_filter = assets/plugins/filesource/lang/.inc.php source_file = assets/plugins/filesource/lang/english.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese [modx-evolution.tinymce] file_filter = assets/plugins/tinymce/lang/.inc.php source_file = assets/plugins/tinymce/lang/english.inc.php source_lang = en type = PHP_ALT_ARRAY -lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, zh: chinese +lang_map = bg: bulgarian, cs: czech, da: danish, de: german, es: spanish-utf8, fa: persian, fi: finnish, fr: francais-utf8, he: hebrew, it: italian, ja: japanese-utf8, nl: nederlands-utf8, no: norwegian, pl: polish-utf8, pt_BR: portuguese-br, pt: portuguese, ru: russian-UTF8, sv: svenska-utf8, uk: ukranian, zh: chinese diff --git a/README.md b/README.md new file mode 100644 index 0000000000..2e684ee4b3 --- /dev/null +++ b/README.md @@ -0,0 +1,34 @@ +# MODX Evolution + +**What is MODX** + +MODX is an open source Content Management System and Application Framework. Initially inspired by Etomite 0.6, MODX is an ongoing project written by Raymond Irving and a core team of contributors at the MODX Project. MODX is distributed under the GPL license and is now run by a professional team of developers from all over the world. Visit the Forums for more information. + +MODX provides a fast, lightweight and powerful framework on which to deploy and secure your website and web applications. For example, it gives you a true system for registered web users and groups that is separate from administration users. You can grant some web users access to one page and others access to another page. For content management, you can easily duplicate documents, folders (and all their children!), chunks and snippets. Most significant, though, is MODX's ability to empower you to quickly and easily create and maintain a rich and dynamic website like never before. + +MODX Evolution requires **PHP version 5.3 and higher**. + +### Screenshots + +![screenshot_1](https://cloud.githubusercontent.com/assets/523389/20504423/97db8bf8-b047-11e6-9eef-550c1c7d34f2.jpg) + +![screenshot_2](https://cloud.githubusercontent.com/assets/523389/20504414/926ceec8-b047-11e6-8760-3d11d6610977.jpg) + +![screenshot_3](https://cloud.githubusercontent.com/assets/523389/20504420/956ef5d0-b047-11e6-9460-7c7a471bada6.jpg) + +### References + +Official Website: +https://modx.com/community/modx-evolution + +Download: +https://modx.com/download/evolution/ + +Previous Releases: +https://modx.com/download/evolution/previous-releases.html + +Extras: +https://modx.com/extras/?product=evolution + +Documentation: +https://docs.modx.com/evolution/1.0 \ No newline at end of file diff --git a/assets/cache/images/.htaccess b/assets/cache/images/.htaccess index 8f91d28b69..83c6d382fb 100644 --- a/assets/cache/images/.htaccess +++ b/assets/cache/images/.htaccess @@ -1,2 +1,2 @@ order deny,allow -allow from all \ No newline at end of file +allow from all diff --git a/assets/docs/.htaccess b/assets/docs/.htaccess new file mode 100644 index 0000000000..7ec3cfae9a --- /dev/null +++ b/assets/docs/.htaccess @@ -0,0 +1,5 @@ +IndexIgnore */* + + Order Allow,Deny + Deny from all + \ No newline at end of file diff --git a/assets/docs/changelog.txt b/assets/docs/changelog.txt new file mode 100644 index 0000000000..ddc40b5880 --- /dev/null +++ b/assets/docs/changelog.txt @@ -0,0 +1,2817 @@ +This file shows the changes in recent releases of MODX. The most current release is usually the +development release, and is only shown to give an idea of what's currently in the pipeline. + + +MODX Evolution 1.2.1(Jan 11, 2017) +* [GitHub:#6f404c6] - [I] Debug information (yamamoto) +* [GitHub:#fa584d9] - [F] setLastClickedElement in tree.php (dmi3yy) +* [GitHub:#a0f2a52] - [R] Resource breadcrumbs bottom-border (Piotr Matysiak) +* [GitHub:#422bbcb] - [F] Wrong link (Thomas Jakobi) +* [GitHub:#41f23f5] - [R] Update duplicate_content.processor.php (M-xm) +* [GitHub:#f8dc135] - [I] #854 Allow uploads for multiple files (Deesen) +* [GitHub:#8e6cc22] - [F] Show Richtext-editors of TVs also when resource is of type weblink (Deesen) +* [GitHub:#c0b3897] - [F] Fix custom RTE-params per TV (like {"theme":"inline","editor":"CKEditor4"}) (Deesen) +* [GitHub:#ecb9745] - [I] #1134 style_formats: Transform simple-format "Title1,class1|Title2,class2" into separate inline/block-subcategories (Deesen) +* [GitHub:#3233000] - [F] #1174 Keep correct path when renaming paths/files (Deesen) +* [GitHub:#37100dd] - [F] small change (Piotr Matysiak) +* [GitHub:#126a06c] - [F] lang attribute (Piotr Matysiak) +* [GitHub:#7759cc9] - [R] Updated Polish language to 1.2.1 (Piotr Matysiak) +* [GitHub:#452fcec] - [R] Update Dutch Manager language (Marc) +* [GitHub:#3d491be] - [F] #1166 Check if iconv() is available, provide $_lang for pre-check error-messages (Deesen) +* [GitHub:#8e75ecf] - [F] #1166 Check if iconv() is available as required, added missing "OK!" after PHP-version (Deesen) +* [GitHub:#40f496a] - [F] #1169 Fix MODX_CORE_PATH for renamed manager-path (Deesen) +* [GitHub:#371dd5d] - [F] #1164 Do not trigger "save" when Alt-Key is pressed (Deesen) +* [GitHub:#72d911d] - [R] Italian language for manager (Nicola Lambathakis) +* [GitHub:#d90cd2d] - [R] Italian language for installer (Nicola Lambathakis) +* [GitHub:#3ba4a1a] - [I] #1154 Added new plugin-event "OnBeforeParseParams" to allow replacing custom-placeholders like evobabel´s [%lang%] before parsing snippet-params string to PHP-array. Example: [[Wayfinder? &startId=`[%lang%]` ]] (Deesen) +* [GitHub:#5d89d30] - [R] toAlias add .txt. (good use for robots.txt )) (dmi3yy) +* [GitHub:#cad2e21] - [F] https://github.com/modxcms/evolution/issues/1160 (Nicola Lambathakis) +* [GitHub:#c585dd6] - [E] #1160 Run Module from Module Config (Nicola Lambathakis) +* [GitHub:#6813e05] - [I] #1024 icons and styles for Online Users widget (dashboard) (Nicola Lambathakis) +* [GitHub:#e2f6188] - [F] Only delete no good, and not work on upgrade mode (dmi3yy) +* [GitHub:#219be2b] - [S] #1143 update phpMailer to 5.2.21 (dmi3yy) +* [GitHub:#de18340] - [F] #1144 Nested tags issue (yamamoto) +* [GitHub:#46ae45f] - [F] #1144 Replaced $modx->parseText() by modxRTEbridge->parsePlaceholders() (Deesen) +* [GitHub:#b08a2cd] - [F] #1149 @SELECT for checkboxes (Deesen) +* [GitHub:#a0be46a] - [F] 100% width for all inputs Example YAMS: https://github.com/Deesen/YAMS/issues/17 (Deesen) +* [GitHub:#71c1f25] - [R] Report issues link updated (Piotr Matysiak) +* [GitHub:#8463e10] - [S] #1143 Update PHPMailer (dmi3yy) +* [GitHub:#eb7ea0d] - [F] replaced text placeholder with language string (Piotr Matysiak) +* [GitHub:#885b522] - [R] ElementsInTree - replaced hardcoded text placeholder with language strings (Nicola Lambathakis) +* [GitHub:#9e54164] - [R] ElementsInTree update (Piotr Matysiak) +* [GitHub:#db9633c] - [F] fix for SimpleTab on 1.2.1 (dmi3yy) +* [GitHub:#fe188a2] - [F] #1024 Added auto-increment ID again for active_user_locks to fix multiple locks per user (Deesen) +* [GitHub:#650cb07] - [F] Lock Elements: Fixed keys (Deesen) +* [GitHub:#96b0486] - [F] Corrected "session_timeout_msg", added "multiple_sessions_msg" (Deesen) +* [GitHub:#3a07b4b] - [F] #1119 Assure "session_timeout" is always "mail_check_timeperiod" +1min https://github.com/modxcms/evolution/issues/1119#issuecomment-267921912 (Deesen) +* [GitHub:#c268b0c] - [F] replace query 3.1.1 from https://code.jquery.com/jquery-3.1.1.min.js (dmi3yy) +* [GitHub:#8cbb924] - [I] #1024 Added unique icon for users logged-in with multiple browsers using same manager-login (Deesen) +* [GitHub:#30a2d4e] - [F] #1024 Replaced check against "internalKey" by "sid", added function cleanupMultipleActiveUsers() (Deesen) +* [GitHub:#ba0b893] - [F] #1024 Replaced check against "internalKey" by "sid" (Deesen) +* [GitHub:#0ffee7c] - [F] #1024 Added `sid` to table active_user_locks (Deesen) +* [GitHub:#5682b87] - [F] #1024 Added $modx->cleanupMultipleActiveUsers() (Deesen) +* [GitHub:#15a28df] - [F] #1024 Removed unnecessary md5() for $modx->sid (Deesen) +* [GitHub:#b9489ed] - [F] #1024 Added "sid" to DB-table (using $modx->sid = md5(session_id()); as unique session-id) (Deesen) +* [GitHub:#4a126d0] - [F] #1024 Display "Multiple Sessions found for this user" / avoid "Forgot Logout"-msg for multiple browser-sessions (Deesen) +* [GitHub:#a77f6f9] - [F]update Russian Lang (dmi3yy) +* [GitHub:#2a825d8] - [R] #1115 fix ditto paginate show(Dmi3yy) +* [GitHub:#9c73a69] - [F] Modifire parse issue (yamamoto) +* [GitHub:#b691cfb] - [F] Empty placeholder parse issue (yamamoto) +* [GitHub:#660163d] - [F] Issue of nesting tags (yamamoto) +* [GitHub:#b264cb5] - [R] #1124 Refactor/Restyle Files Manager (Nicola Lambathakis) +* [GitHub:#8368ea1] - [I] #1124 Files Manager icons with Font Awesome (Nicola Lambathakis) +* [GitHub:#fb722d8] - [I] #1124 added styles for restyled Files Manager (Nicola Lambathakis) +* [GitHub:#b835fea] - [I] #1124 added missing string files_directory_is_empty (Files Manager) (Nicola Lambathakis) +* [GitHub:#ecbe34e] - [R] Update weblink help (Mr B) +* [GitHub:#c378b24] - [R] only load js once if weblink (Mr B) +* [GitHub:#ecb4d1b] - [R] Update style.css (Mr B) +* [GitHub:#345c5b3] - [I] #1131 Add file insert button for weblink field (Mr B) +* [GitHub:#4924745] - [F] Nesting level from 10 to 200 (Dmi3yy) +* [GitHub:#23ba9a2] - [F] fix virtualDir warning (Dmi3yy) +* [GitHub:#86a50ae] - [F] fix $_GET[‘q’] in sendStrictURI (Dmi3yy) +* [GitHub:#1ed16a8] - [F] error if empty $options in tinymce (Dmi3yy) +* [GitHub:#c08383c] - [F] #1130 Tabs FileManager and FileBrowser missing (yamamoto) +* [GitHub:#280a653] - [I] #1027 Added "OK"-button to datePicker for mobile devices (Deesen) +* [GitHub:#caa8c74] - [I] $modx->parseText() (yamamoto) +* [GitHub:#173b403] - [F] [*var@docid*] (yamamoto) +* [GitHub:#030e64e] - [O] Small improvements - added if (!('sendBeacon' in navigator)) before polyFill - added MODX_MANAGER_URL - added if(top.mainMenu) (Deesen) +* [GitHub:#ee27843] - [F] Clean-up expired locks at login https://github.com/modxcms/evolution/issues/1119#issuecomment-267627760 (Deesen) +* [GitHub:#484c969] - [F] Remove all locks when no valid user sessions exist to avoid confusion https://github.com/modxcms/evolution/issues/1119#issuecomment-267627760 (Deesen) +* [GitHub:#e226e5f] - [F] #1120 QM: Added periodical server-ping to assure keeping session and related locks alive (Deesen) +* [GitHub:#e6f3145] - [I] #1124 Filemanager: Added duplicateFile, renameFolder, renameFile (Deesen) +* [GitHub:#d5a7f19] - [F] Images not visible Apache 2.0 (Marc) +* [GitHub:#5671bc6] - [F] TinyMCE4 icon font style fix (Marc) +* [GitHub:#4ac8c1b] - [C] $modx->evalSnippets() (yamamoto) +* [GitHub:#cec120b] - [F] Set lock-expire minimum fallback to 120 seconds / 2min (Deesen) +* [GitHub:#7a2d630] - [F] #1089 Issue of snippet call (yamamoto) +* [GitHub:#7dbcc9c] - [F] fix #1107 error with plugin ajaxSubmit (Dmi3yy) +* [GitHub:#e48100e] - [R] TinyMCE4 restyle (Marc) +* [GitHub:#a0fd6ec] - [F] typo in wayfinder/examples/cssplay/dropline.css (Nicola Lambathakis) +* [GitHub:#6028fb8] - [F] ditto & ajaxsearch etomite_charset > modx_charset (Nicola Lambathakis) +* [GitHub:#0579d1d] - [I] new language string element_filter_msg (Nicola Lambathakis) +* [GitHub:#633dd49] - [F] various fixes to manager elements (Nicola Lambathakis) +* [GitHub:#2e7bfac] - [R] Update plugin.filesource.php (Mr B) +* [GitHub:#ee25dde] - [R] Update mutate_plugin.dynamic.php (Mr B) +* [GitHub:#3355344] - [R] Update mutate_snippet.dynamic.php (Mr B) +* [GitHub:#582cbb2] - [R] Update mutate_snippet.dynamic.php (Mr B) +* [GitHub:#a9fc31a] - [R] Update mutate_htmlsnippet.dynamic.php (Mr B) +* [GitHub:#78b201a] - [R] Update mutate_tmplvars.dynamic.php (Mr B) +* [GitHub:#53f7651] - [R] Update mutate_templates.dynamic.php (Mr B) +* [GitHub:#0076143] - [R] Update mutate_module.dynamic.php (Mr B) +* [GitHub:#f1bb21b] - [R] Update mutate_plugin.dynamic.php (Mr B) +* [GitHub:#e334269] - [R] Update mutate_tmplvars.dynamic.php (Mr B) +* [GitHub:#6f4486f] - [R] Update mutate_templates.dynamic.php (Mr B) +* [GitHub:#6bc3a77] - [R] Update mutate_module.dynamic.php (Mr B) +* [GitHub:#0bd2f33] - [F] #1026 Standard input label format, remove colon (Mr B) +* [GitHub:#da91183] - [I] Other languages fonts update (Piotr Matysiak) +* [GitHub:#3a4087d] - [F] #1110 English-british.inc.php not detected (yamamoto) +* [GitHub:#fbb2ac7] - [I] MODxRE2 Top nav lvl 2 darker hover (Piotr Matysiak) +* [GitHub:#f9143a7] - [I] MODxRE2 theme improvements (Piotr Matysiak) +* [GitHub:#b6afe95] - [I] Installer styles (Piotr Matysiak) +* [GitHub:#9feea66] - [D] logo.png not used (Dmi3yy) +* [GitHub:#3b0fe5f] - [F] #1089 Not work nested values in snippet call (yamamoto) +* [GitHub:#73f98a8] - [I] need more tests, for fix aliasListing + alias_visible (Dmi3yy) +* [GitHub:#6c313d8] - [R] $modx->atBindFileContent() (yamamoto) +* [GitHub:#1c0e026] - [F] #1097 The login state is synchronized at multiple sites (yamamoto) +* [GitHub:#d8bdd8b] - [R] config.inc.php (yamamoto) +* [GitHub:#9f18969] - [F] #109 Document Manager Layout (Nicola Lambathakis) +* [GitHub:#2de6a5c] - [R] $modx->atBindInclude() (yamamoto) +* [GitHub:#926c1a0] - [R] $modx->parseDocumentSource() (yamamoto) +* [GitHub:#2eaea99] - [F] Nested snippet call issue (yamamoto) +* [GitHub:#596902f] - [I] $modx->getExtFromFilename() (yamamoto) +* [GitHub:#8c07d55] - [R] tab1_site_settings.inc.php (yamamoto) +* [GitHub:#37fe7bb] - [F] #1092 TV @FILE binding not working (yamamoto) +* [GitHub:#80003c8] - [R] Replace ProcessFile() to $modx->atBindFileContent() (yamamoto) +* [GitHub:#f23f24a] - [I] new - $modx->atBindFileContent() (yamamoto) +* [GitHub:#ab3b1d2] - [S] Security: Set false $GLOBALS at $modx->safeEval() (yamamoto) +* [GitHub:#0fe2f02] - [F] Fix - $modx->cleanUpMODXTags() (yamamoto) +* [GitHub:#bc44f6d] - [D] Remove comment out (yamamoto) +* [GitHub:#4420c57] - [I] Showing $modx->dumpSnippets (yamamoto) +* [GitHub:#7f1c22a] - [F] - Malfunction when PHx plugin is installed (yamamoto) +* [GitHub:#39b10fc] - [F] Does not work if PHx plugin is installed (yamamoto) +* [GitHub:#bbc580d] - [F] #1091 F: Show also uncategorized elements in category-view (Deesen) +* [GitHub:#252d2f7] - [F] #1086 F: Convert tree-translations to UTF-8 before json_encode() (Deesen) +* [GitHub:#1b200fa] - [F] #1054 F: Enter-key updates datefield now, but only when entered time is valid, instead of empty it. Prepared "dp.lastValidDate" to add validation-check of dates directly entered into datefield. (Deesen) +* [GitHub:#b2d922e] - [F]#1086 F: Convert tree-translations to UTF-8 before json_encode() (Deesen) +* [GitHub:#9830311] - [F] #1081 F: Added missing buttons and organized toolbars more clean (Deesen) +* [GitHub:#21fabe6] - [F] Ditto - sql error of &documents parameter (yamamoto) +* [GitHub:#e39b9d6] - [F] #1089 Ditto - Be sure to expand [!uncached!] in tpl-chunk (yamamoto) +* [GitHub:#7eaea30] - [F] #1089 F: Cached and nested snippets not working (yamamoto) +* [GitHub:#3d1f883] - [F] https://github.com/modxcms/evolution/issues/1049 Translation missing on dashboard (Nicola Lambathakis) +* [GitHub:#09fca84] - [R] OnManagerMainFrameHeaderHTMLBlock for Extras module (Nicola Lambathakis) +* [GitHub:#f005214] - [R] OnManagerMainFrameHeaderHTMLBlock for DocManager module (Nicola Lambathakis) +* [GitHub:#e6891de] - [F] Adapted "active_users" to new mechanismn, related to #945 (Deesen) +* [GitHub:#e29249c] - [F] Fixed input height (Sasha Beep) +* [GitHub:#bbf78bb] - [I] #1081 I: Added "browser-spellcheck" to plugin-config - https://github.com/extras-evolution/tinymce4-for-modx-evo/issues/26 (Deesen) +* [GitHub:#ae04d3f] - [F] #1083 F: Wayfinder not display correct restricted documents (yamamoto) +* [GitHub:#10b0549] - [D] Remove 'recently edited' and 'online users' from System Info Report (Mr B) +* [GitHub:#532e4c0] - [R] Refactor: Installer (yamamoto) +* [GitHub:#2e319be] - [F] tinymce block to - class (Dmi3yy) +* [GitHub:#153a43b] - [F] Demo content ur alias spelling mistake (Mr B) +* [GitHub:#e018213] - [R] Update - language fles (yamamoto) +* [GitHub:#50798ed] - [R] Update actionlist.inc.php (Mr B) +* [GitHub:#bb5905b] - [R] Update login.processor.php (Mr B) +* [GitHub:#32e27ad] - [F] Added message "Please disable register_globals!" (Deesen) +* [GitHub:#80ced52] - [F] fix #1067 (Dmi3yy) +* [GitHub:#ab44760] - [F] Strange behaviour in Chrome with content sometimes being empty on init (Deesen) +* [GitHub:#18ba4f0] - [O] #1035 #1051 O: Use removeSanitizeSeed() instead of manual procedure https://github.com/Deesen/evolution/commit/842a844f014b2e5049f886631c240b1ca3977f3f#commitcomment-20100812 (Deesen) +* [GitHub:#9887de9] - [F] #1067 F: Prepare placeholders [*#longtitle*] and [*#content*] for TinyMCE4 inline-edit (Deesen) +* [GitHub:#2ff1ef7] - [F] #1067 F: TinyMCE4 inline-edit not working, clean "data-mce"-attr (Deesen) +* [GitHub:#cdfbb6b] - [R] start fix error with AliasListingFolder and Alias_visible (Dmi3yy) +* [GitHub:#851ace5] - [R] Code cleanup: Unnecessary function (yamamoto) +* [GitHub:#1af30f6] - [F] #1066 Fix: password string as is (yamamoto) +* [GitHub:#2608765] - [I] #1066 I: Adjust incorrect sanitize processing (yamamoto) +* [GitHub:#9206d5c] - [F] Fix: Don't work "math" option in If snippet (yamamoto) +* [GitHub:#c6e8e20] - [F] Fix: Error Undefined variable (yamamoto) +* [GitHub:#3c17ce3] - [O] #200 O: Make "Duplicate of" translatable when duplicating elements/resources (Deesen) +* [GitHub:#f54e9ca] - [F] #1054 F: Reinstate enter-key to close datepicker without submitting form (Deesen) +* [GitHub:#d3c0b9a] - [R] Refactor: Modifier class debug info (yamamoto) +* [GitHub:#5a8f654] - [F] Fix: Parse modifier (yamamoto) +* [GitHub:#57d5ab5] - [F] Fix: php parse error (yamamoto) +* [GitHub:#9909b64] - [F] #979 404 judgment of URL with path_info information (yamamoto) +* [GitHub:#2712ba4] - [F] Fix: Modifier at custom_widget (yamamoto) +* [GitHub:#cc3585d] - [F] #1017 Fix: related to incorrect value of $rb_base_dir (yamamoto) +* [GitHub:#ae2d2e4] - [F] Code cleanup: prepare fix url issue (yamamoto) +* [GitHub:#78d9255] - [R] Renamed $onLoginForwardToAction to $initMainframeAction (Deesen) +* [GitHub:#696a0c3] - [F] Site name with apostrophy breaks manager home (yamamoto) +* [GitHub:#cbb0a6b] - [F] #1052 F: Show menutitle also if empty, instead of pagetitle (Deesen) +* [GitHub:#0464915] - [F] #1057 F+O: Fixed "forgotManagerLogin" use "user_attributes.lastlogin" instead of "active_users" to check if user logged in once - added automatic forwarding to "change password"-action after successful login with hash - hash only valid on actual day (Deesen) +* [GitHub:#58647d2] - [R] some translates (MrSwed) +* [GitHub:#e724c85] - [I] #1034 O: Set duplicated plugins and modules disabled by default (Deesen) +* [GitHub:#c8d9f90] - [F] Added missing duplicate-button (Deesen) +* [GitHub:#4863f7a] - [I] Pre-define $recent_update before try to include "sitePublishing.idx.php" (Deesen) +* [GitHub:#842a844] - [F] #1035 #1051 F: Avoid error "strpos(): Empty needle" for empty content/templates (Deesen) +* [GitHub:#54a3859] - [I] Adding missing translations from englisch.inc.php (kulmjens) +* [GitHub:#feb6168] - [I] #1034 F+I: Fix "double duplicates" by changing new name "Duplicate of XXX" to "XXX Duplicate {$count}", this also improves sorting of elements/duplicates in overviews (Deesen) +* [GitHub:#b79b949] - [F] #1040 F: Unlock resource on action-buttons duplicate, delete and cancel (Deesen) +* [GitHub:#8c8dd8a] - [I] Moved // console.log() in front of if() (Deesen) +* [GitHub:#231c2f6] - [F]: resource data-page should not unlock resource (Deesen) +* [GitHub:#683d887] - [I]: Added confirmation "Are you sure you want to revert?" (Deesen) +* [GitHub:#555a090] - [F] #1045 Fix: Clicking on tree-root does not open "edit resource" (Deesen) +* [GitHub:#986e0ab] - [F] #1046 Fix show manager-form for "advanced upgrade" (Deesen) +* [GitHub:#e0f2e04] - [I] More switches in install - for each type of elements (MrSwed) +* [GitHub:#9474948] - [F] ditto search extender empty string (MrSwed) +* [GitHub:#62f78bd] - [F] TV tables width fix (Piotr Matysiak) + + + +MODX Evolution 1.2 (Dec 01, 2016) +=================================== +* [GitHub:#6e8455e] - fix eform version (MrSwed) +* [GitHub:#ea68293] - Full width TV tables in tabs (Piotr Matysiak) +* [GitHub:#6793843] - fix data-col for User Info and Security news panel (Nicola Lambathakis) +* [GitHub:#6d7c1cd] - Rely on Navigator.sendBeacon instead of async AJAX for sending unlock-requests on window.unload - https://developer.mozilla.org/en-US/docs/Web/API/Navigator/sendBeacon - http://stackoverflow.com/a/33553050/2354531 (Deesen) +* [GitHub:#05420d3] - Update english.inc.php (Mr B) +* [GitHub:#34b0a68] - fix modResource not save tv if editing (Dmi3yy) +* [GitHub:#6023234] - 1.2RC2 (Dmi3yy) +* [GitHub:#86bfab2] - fix #973 (Dmi3yy) +* [GitHub:#26f32bf] - fix http://take.ms/8T1mW (Dmi3yy) +* [GitHub:#eaaba9e] - fix #1008 (Dmi3yy) +* [GitHub:#5f4efca] - Fix "Failed to retrieve http://forums.modx..." https://github.com/modxcms/evolution/issues/1002#issue-192127690 (Deesen) +* [GitHub:#69c6bc9] - Added Wayfinder-Debug #719 (Deesen) +* [GitHub:#91dc7a6] - Small fixes (Deesen) +* [GitHub:#ee565cb] - ElementsInTree (Piotr Matysiak) +* [GitHub:#152af3e] - Small fixes (Deesen) +* [GitHub:#47dc93e] - Avoid TinyMCE4 being disabled after upgrade on existing MODX-installation (Deesen) +* [GitHub:#95b7ae4] - Small fix $params['dependencies'] (Deesen) +* [GitHub:#77d6a59] - fix version (Dmi3yy) +* [GitHub:#ca6d723] - 1.2-RC1 (Dmi3yy) +* [GitHub:#d836cf6] - fix #995 (Dmi3yy) +* [GitHub:#14565ed] - Added missing echo() (Deesen) +* [GitHub:#07737e8] - Revert "#995 Fix show warnings" (Dmi3yy) +* [GitHub:#c62b62a] - #995 Fix show warnings (Deesen) +* [GitHub:#5f0d6ee] - #989 Provide empty default-value for template_docs + template_chunks (Deesen) +* [GitHub:#96e5396] - #989 Provide empty default-value for custom_buttons3 + 4 (Deesen) +* [GitHub:#cb6ca35] - Fix (yamamoto) +* [GitHub:#b2ab86b] - #989 Fix replace [+phs+] by values (Deesen) +* [GitHub:#775cf52] - Fix (yamamoto) +* [GitHub:#eb2aa53] - Fix - default_config issue when new install (yamamoto) +* [GitHub:#ba7580d] - #991 Fix action, revert #981 (Deesen) +* [GitHub:#c3c1004] - update lang #992 (Dmi3yy) +* [GitHub:#03743e4] - Fix for dashboard plugin (yamamoto) +* [GitHub:#457a584] - #981 Fix (yamamoto) +* [GitHub:#25bdff9] - #981 Fix (yamamoto) +* [GitHub:#cd5a9b3] - Use filter_input() (yamamoto) +* [GitHub:#dc6000c] - add sag to images format (Dmi3yy) +* [GitHub:#8a9a954] - #985 fix (yamamoto) +* [GitHub:#78e79b7] - #972 Refactored building SQL-Query (Deesen) +* [GitHub:#dfa6c62] - Fixing a suddenly occuring thousands separator (Thomas Jakobi) +* [GitHub:#13d5531] - Remove register_globals from support (yamamoto) +* [GitHub:#dee70ea] - Remove comment (yamamoto) +* [GitHub:#6b06349] - Minor improved (speed up) (yamamoto) +* [GitHub:#324a7ba] - New - [*var@prev*] [*var:next*] (yamamoto) +* [GitHub:#505d48e] - #939 New - $modx->safeEval() (yamamoto) +* [GitHub:#d58b8aa] - Update - version_notice.1.2 (yamamoto) +* [GitHub:#bd8fead] - New info - $modx->apiVersion (yamamoto) +* [GitHub:#56bc1e2] - Fix [[@OnEventName]] (yamamoto) +* [GitHub:#165fb9b] - elementIsLocked(): Changed return false to NULL (Deesen) +* [GitHub:#20dce44] - Adapted checkLocked() / setLocked() to new "lock elements"-mechanismn (Deesen) +* [GitHub:#fdc4ed4] - Adapted check for active locks (Deesen) +* [GitHub:#324a2a9] - Several changes for "lock elements": - adapted existing lock-functions - added new function $modx->updateValidatedUserSession(); - added $this->time = time() for having global timestamp (Deesen) +* [GitHub:#79db21e] - Added "userIdle"-styles for Dashboard (Deesen) +* [GitHub:#d3951b2] - Added "logout_reminder_msg" (Deesen) +* [GitHub:#a3468c1] - Several changes: - adapted "Online User" SQL-query to new "active_user_sessions"-table - added "user idle" (= no activity last 20min) to dashboard "online users" - added check for $_SESSION['show_logout_reminder'] (Deesen) +* [GitHub:#25aac7c] - Set $_SESSION['show_logout_reminder'] when last action != 8 (logout) (Deesen) +* [GitHub:#3b8f63e] - Clean up tables "active_user_locks" & "active_user_sessions" at logout (Deesen) +* [GitHub:#3c70ecd] - Adapted for "lock elements" mechanismn to allow unlocking elements via on window.beforeunload (Deesen) +* [GitHub:#e3b36fb] - Added setLastClickedElement(type, id), trigger reloadtree() when opening pop-up (Deesen) +* [GitHub:#49b85ed] - Replaced "firsthit_df" with "lasthit_df" (Deesen) +* [GitHub:#87522b0] - Added onclick="top.tree.setLastClickedElement(0,0);" (Deesen) +* [GitHub:#543dac1] - Minor changes (Deesen) +* [GitHub:#e98f06e] - Replaced "lock_interval" with "session_timeout" (Deesen) +* [GitHub:#6437263] - Several changes reg. "lock elements" : - removed: "lock_interval", "lock_interval_msg", "lock_release_delay", "lock_release_delay_msg", "lock_element_unknown_error" - added: "session_timeout", "session_timeout_msg", "logout_reminder_msg" - modified: "lock_element_editing", "lock_element_locked_by" (Deesen) +* [GitHub:#a813536] - Several changes for "lock elements" - added table "active_user_sessions" - cleaned-up table "active_user_locks" - moved field "ip" from "active_users" to "active_user_sessions" - added DROP TABLE before "active_users" and "active_user_locks" (Deesen) +* [GitHub:#b87eefb] - Added $modx->updateValidatedUserSession(); (Deesen) +* [GitHub:#5d37ca0] - Added "Lock Elements" on window.beforeunload-script (Deesen) +* [GitHub:#95b4e71] - Added "form_save=true;" (Deesen) +* [GitHub:#605764c] - Added "form_save=true;", removed unnecessary "$tbl_active_users" (Deesen) +* [GitHub:#6925998] - ElementsInTree 1.5.6 (Piotr Matysiak) +* [GitHub:#f8b7c75] - Improved - [[@OnEventName]] (yamamoto) +* [GitHub:#93425c1] - Add symbol - $modx->addSnippet() (yamamoto) +* [GitHub:#5ec4262] - Adjust for HTML editor (yamamoto) +* [GitHub:#baa6c08] - Roles mgm new look (Piotr Matysiak) +* [GitHub:#5a5db5f] - Grid table padding (Piotr Matysiak) +* [GitHub:#6246319] - Restyled top search input (Piotr Matysiak) +* [GitHub:#18713bb] - Username margin (Piotr Matysiak) +* [GitHub:#5610996] - Fixed user_management (yamamoto) +* [GitHub:#b637b4e] - Refactor (yamamoto) +* [GitHub:#59d075d] - Refactor - MODxRE2/welcome.tpl (yamamoto) +* [GitHub:#494fca7] - Improved - Using MODX tags in welcome.tpl (yamamoto) +* [GitHub:#322d1b2] - Fix - $modx->messageQuit() loop error (yamamoto) +* [GitHub:#7a0cb3a] - Fix - $modx->sweepGarbageStrings() (yamamoto) +* [GitHub:#9372434] - Fix - error $modx->logEvent() (yamamoto) +* [GitHub:#1ac32e5] - Update content - version_notices/1.2.php (yamamoto) +* [GitHub:#1e6f21a] - Refactor - welcome.static.php (yamamoto) +* [GitHub:#be9a881] - Limit deleting localStorage to grid-items only (Deesen) +* [GitHub:#e1dd07a] - $modx->db-Юйгукн refactor add $watchError (Dmi3yy) +* [GitHub:#4a6c843] - update extras to 0.1.3 (now can update from any version) (Dmi3yy) +* [GitHub:#fd1a8c6] - fix russian lang (Dmi3yy) +* [GitHub:#fb66c35] - IF / ELSE / ENDIF can be nested (yamamoto) +* [GitHub:#426f2d4] - Improved - IF syntax (yamamoto) +* [GitHub:#c5ab4db] - Fix - templatename modifier (yamamoto) +* [GitHub:#6872ed3] - Refactor (yamamoto) +* [GitHub:#71bd595] - minor improvements (McParana) +* [GitHub:#da2085e] - #957 (McParana) +* [GitHub:#a7ff5d6] - fix for pull https://github.com/modxcms/evolution/pull/966 (Nicola Lambathakis) +* [GitHub:#3b77148] - update russian lang (Dmi3yy) +* [GitHub:#52a8526] - New API - $modx->addChunk() (yamamoto) +* [GitHub:#dd34f24] - Use phpass (yamamoto) +* [GitHub:#5993eef] - Use phpass for password management at login (yamamoto) +* [GitHub:#e870465] - New - Add phpass library (yamamoto) +* [GitHub:#b8881e1] - Fix - modifiers.class.inc.php (yamamoto) +* [GitHub:#b7cdd69] - Rename - extender class file name (yamamoto) +* [GitHub:#ca5b304] - Login - Protect from bot attack (yamamoto) +* [GitHub:#65d4984] - Minor fix (yamamoto) +* [GitHub:#7fd8036] - update russian-utf8 (Dmi3yy) +* [GitHub:#6f7a80f] - Fix syntax-error on PHP5.4: unexpected ')', expecting :: (T_PAAMAYIM_NEKUDOTAYIM) (Deesen) +* [GitHub:#ddffe02] - Fix "undefined method"-error when creating new manager user (Deesen) +* [GitHub:#7ad8b21] - Fix for special modifier (yamamoto) +* [GitHub:#60a34a5] - Refactor (yamamoto) +* [GitHub:#015889a] - fix permission for topbar link to help (Nicola Lambathakis) +* [GitHub:#f962d6f] - ElementsInTree 1.5.5 (Piotr Matysiak) +* [GitHub:#9fb9e36] - New API - $modx->addSnippet() (yamamoto) +* [GitHub:#8d13990] - Update qm.inc.php (Mr B) +* [GitHub:#cef985b] - $modx->parseText() Perform modifier processing (yamamoto) +* [GitHub:#3165b87] - update DocLister to 2.3.0 (Dmi3yy) +* [GitHub:#14195f0] - update libs (Dmi3yy) +* [GitHub:#a170754] - Fix issue - MODX_SITE_HOSTNAMES (yamamoto) +* [GitHub:#b42a089] - New readme screenshots (Piotr Matysiak) +* [GitHub:#001561c] - ElementsInTree 1.5.4 (Piotr Matysiak) +* [GitHub:#4b44228] - Readme Screenshots (Piotr Matysiak) +* [GitHub:#9ccd62d] - Remove exit() left from dev (Deesen) +* [GitHub:#ddaea4c] - New - $modx->db->_getFromStringFromArray() (yamamoto) +* [GitHub:#ac8f6a9] - $db->select() - Replace [+prefix+] in the field clause (yamamoto) +* [GitHub:#0b42552] - New - $modx->db->_getFieldsStringFromArray() (yamamoto) +* [GitHub:#dec44c1] - Fix parseText (yamamoto) +* [GitHub:#111e8bc] - Revert - $modx->parseText() (yamamoto) +* [GitHub:#4a61be5] - Make the title of event log list easier to understand (yamamoto) +* [GitHub:#bae9b18] - Minor fix - $modx->messageQuit() (yamamoto) +* [GitHub:#2dca337] - Allow the $modx->mergeXXX function to set arbitrary values (yamamoto) +* [GitHub:#64eed01] - confirm dialog for delete/undelete resources (Nicola Lambathakis) +* [GitHub:#0b4db90] - Revert "confirm dialog for delete/undelete resources" (Nicola Lambathakis) +* [GitHub:#9474e10] - confirm dialog for delete/undelete resources (Nicola Lambathakis) +* [GitHub:#de14258] - ElementsInTree 1.5.3 (Piotr Matysiak) +* [GitHub:#5fccc68] - Update setup.data.sql (Mr B) +* [GitHub:#d090b8a] - ElementsInTree 1.5.2 (Piotr Matysiak) +* [GitHub:#3422a7f] - Update web_access_permissions.dynamic.php (Mr B) +* [GitHub:#b76d7cc] - Update access_permissions.dynamic.php (Mr B) +* [GitHub:#8d7580a] - https://github.com/Dmi3yy/modx.evo.custom/pull/391 (Dmi3yy) +* [GitHub:#da248cb] - Refactor - weblogin snippet (yamamoto) +* [GitHub:#964c839] - Remove php closing tag (yamamoto) +* [GitHub:#d6e29c8] - Refactor - reflect snippet (yamamoto) +* [GitHub:#4cd15ee] - Do not add php closing tag (yamamoto) +* [GitHub:#3136798] - Do not add php closing tag (yamamoto) +* [GitHub:#21d13f9] - Fix - weblogin PHP parsing error (yamamoto) +* [GitHub:#7e0232c] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#ea8995e] - Fix - Missing merge (yamamoto) +* [GitHub:#1e4423b] - Add - language entry (minifyphp_incache) (yamamoto) +* [GitHub:#634712f] - New API - $modx->strip_tags() (yamamoto) +* [GitHub:#99d250d] - File name of attached type resource (yamamoto) +* [GitHub:#2ec1df8] - New API - $modx->stripslashes() (yamamoto) +* [GitHub:#8a6bc36] - New API - $modx->isLoggedIn() (yamamoto) +* [GitHub:#fe890b6] - Refactor - defaut_config.pp (yamamoto) +* [GitHub:#0b3e992] - Refactor - qm.tpl (yamamoto) +* [GitHub:#07601a3] - Refactor - ElementsInTree plugin (yamamoto) +* [GitHub:#d426fae] - Remove whitespace in PHP codes in the site cache (yamamoto) +* [GitHub:#a9bf8b9] - Fix - Problem when saving config value into cache (yamamoto) +* [GitHub:#3f7d1b1] - Refactor - login.processor.php (yamamoto) +* [GitHub:#8500d57] - Change function name (Related to password hash) (yamamoto) +* [GitHub:#fe2d9f9] - Refactor - login.processor.php (yamamoto) +* [GitHub:#630a7f4] - Refactor - login.processor.php (yamamoto) +* [GitHub:#0a0ad75] - Refactor- login.processor.php (yamamoto) +* [GitHub:#bf850e5] - Refactor - login.processor.php (yamamoto) +* [GitHub:#d8126c0] - Refactor - login.processor.php (yamamoto) +* [GitHub:#baab631] - Refactor - login.processor.php (yamamoto) +* [GitHub:#288affb] - Refactor - login.processor.php (yamamoto) +* [GitHub:#15ac71b] - Refactor - login.processor.php (yamamoto) +* [GitHub:#b4472c1] - Minor fix (yamamoto) +* [GitHub:#a117b7a] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#e6b857c] - Remove unnecessary rc4crypt class (yamamoto) +* [GitHub:#7b0fac2] - Fixed height for text-input "Custom content types" (Deesen) +* [GitHub:#2057440] - Revert "Equal fonts sizes" (Marc) +* [GitHub:#98bc1d5] - Equal fonts sizes (Marc) +* [GitHub:#256eb53] - Wrap radio buttons with element (yamamoto) +* [GitHub:#5681b47] - New - Add security tab in System configuration (yamamoto) +* [GitHub:#fb19791] - Fix - default value [(rb_base_url)] (yamamoto) +* [GitHub:#c54b340] - tab-pane margin-bottom (yamamoto) +* [GitHub:#afac500] - Remove unnecessary functions (yamamoto) +* [GitHub:#942e351] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#fb55f07] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#0c76cdd] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#39ee5ff] - fix elements icons in category view (Nicola Lambathakis) +* [GitHub:#23853a7] - #934 Fix width of time-fields (Deesen) +* [GitHub:#f71c556] - ElementsInTree bugfix 1.5.1 (Piotr Matysiak) +* [GitHub:#8aa3a65] - Update mainmenu.php (Mr B) +* [GitHub:#896344d] - Update mutate_module.dynamic.php (Mr B) +* [GitHub:#c12f858] - Update login.tpl (Mr B) +* [GitHub:#7f9b308] - ElementsInTree 1.5.0 (Piotr Matysiak) +* [GitHub:#be34d78] - Added key "create_new" (Deesen) +* [GitHub:#fe48daf] - ElementsInTree 1.4.0 (Piotr Matysiak) +* [GitHub:#4a66f38] - ElementsInTree buttons update (Piotr Matysiak) +* [GitHub:#6a3b171] - Shadow (small) inside form inputs (Piotr Matysiak) +* [GitHub:#7014876] - ElementsInTree "new" button and styles (Piotr Matysiak) +* [GitHub:#4a9b4de] - Renamed unlockResource() to unlockElement() (Deesen) +* [GitHub:#f2bf173] - Update dashboard.css (Mr B) +* [GitHub:#06b63fc] - Update weblogin.processor.inc.php (Mr B) +* [GitHub:#6196eba] - ElementsInTree 1.3.3 (Piotr Matysiak) +* [GitHub:#fa3d734] - Changed sprintf() to $modx->parseText() for better JS-compatibility of language-strings (enables use of string.replace("[+ph+]", phs) ) (Deesen) +* [GitHub:#1ce79f0] - Update Tree-Frame (lock-display) on cancel (Deesen) +* [GitHub:#3334957] - Added getLockedElements() for building Array/JSON-string (Deesen) +* [GitHub:#1d42af7] - Added improved Snippet-calls - https://github.com/modxcms/evolution/commit/f1035753a40148d981efa66a3682c055ee3dc666 (Deesen) +* [GitHub:#a2ae0c8] - Changed sprintf() to $modx->parseText() for better JS-compatibility (Deesen) +* [GitHub:#fbded96] - Remove lock on save+leaving element/resource (Deesen) +* [GitHub:#35f6cc1] - Changed CSS-class to avoid conflict with Boostrap (Deesen) +* [GitHub:#3bfe7f0] - Remove interval first to avoid server-requests when user does not confirm immediately, changed CSS-class to avoid conflict with Boostrap (Deesen) +* [GitHub:#589dd65] - Block bots from accessing login screen (yamamoto) +* [GitHub:#75d8d65] - New - $odx->sweepGarbageStrings() (yamamoto) +* [GitHub:#fb70898] - Fix - modxMailer (yamamoto) +* [GitHub:#f103575] - Refactor - $modx->_split_snip_call() (yamamoto) +* [GitHub:#e93d2af] - Refactor - Rename function (yamamoto) +* [GitHub:#68bbd29] - Wayfinder - Include default-config only when file exists (yamamoto) +* [GitHub:#114c032] - Change - function name (yamamoto) +* [GitHub:#f50cf8b] - Improved - "false" value in snipet call (yamamoto) +* [GitHub:#03fcb45] - Refactor - modifiers.class.inc.php (yamamoto) +* [GitHub:#42b7029] - New - autoload.php (yamamoto) +* [GitHub:#c2b7e5b] - eForm - Update version number v1.4.8 (yamamoto) +* [GitHub:#bffb840] - Security fix for eForm (yamamoto) +* [GitHub:#a1ee8b9] - security fix for ajaxSearch (Dmi3yy) +* [GitHub:#ef8184a] - Refactor $tstart to $_SERVER['REQUEST_TIME_FLOAT'] (yamamoto) +* [GitHub:#33417f9] - Refactor "install now?" (yamamoto) +* [GitHub:#a9e05df] - New - $modx->sweepRemainPlaceholders() (yamamoto) +* [GitHub:#dc9ca0d] - Refactor (Make speedup a little) (yamamoto) +* [GitHub:#bc93feb] - Add new modifiers (yamamoto) +* [GitHub:#b0253c5] - Refactor - modifiers.class.inc.php (yamamoto) +* [GitHub:#2291b1f] - Improved - system settings (yamamoto) +* [GitHub:#3f8afed] - #915 Add [(lang_code)] (yamamoto) +* [GitHub:#a6035e6] - Fix - modifier (yamamoto) +* [GitHub:#f23667e] - #915 Fix (yamamoto) +* [GitHub:#e9f2127] - indent (Piotr Matysiak) +* [GitHub:#0fda407] - Fix MM tv tab table width (Piotr Matysiak) +* [GitHub:#2c1a695] - Fix MM tv tab table width (Piotr Matysiak) +* [GitHub:#b122d42] - Fix bug tracking flags (yamamoto) +* [GitHub:#79f0f68] - Revert tabs rounded borders style (Piotr Matysiak) +* [GitHub:#3a41264] - Add modifier - :eachTpl (yamamoto) +* [GitHub:#341333d] - Add modifiers - :isEmpty, :isNotEmpty (yamamoto) +* [GitHub:#fdcbee0] - Refactor - modifiers.class.inc.php (yamamoto) +* [GitHub:#0594d65] - Refactor - MODX_startup_Bootstrap.tpl (yamamoto) +* [GitHub:#040f5eb] - Support utf8mb4 for AjaxSearch (yamamoto) +* [GitHub:#fa07230] - Minor fix MODxRE2/style.css (yamamoto) +* [GitHub:#06bf25d] - Refactor $modx->htmlspecialchars() (yamamoto) +* [GitHub:#e9a9fb4] - Fix wordwrap modifier for php7 (yamamoto) +* [GitHub:#a485f56] - Add automatic primary key (yamamoto) +* [GitHub:#4133f15] - Refactor (yamamoto) +* [GitHub:#31c6c97] - Refactor - $modx->mergeConditionalTagsContent() (yamamoto) +* [GitHub:#2d41ebc] - #912 Move "customParams" to end of object to allow overwriting previous params (Deesen) +* [GitHub:#bba0bd1] - #910 Fix missing translations in settings (Deesen) +* [GitHub:#13273d1] - #908 Remove "keepMeLockedInterval" when creating new resource/element .. (Deesen) +* [GitHub:#d307b0b] - #906 Fix search when MODX is installed in sub-directory (Deesen) +* [GitHub:#e76e536] - Workaround for deprecated preg_replace() with /e modifier (yamamoto) +* [GitHub:#0733c97] - Refactor - protect.inc.php (yamamoto) +* [GitHub:#159a961] - New - $modx->splitKeyAndFilter() (yamamoto) +* [GitHub:#a1eb88c] - New - $modx->applyFilter() (yamamoto) +* [GitHub:#3efc104] - New - $modx->applyFilter() (yamamoto) +* [GitHub:#3d45b3b] - Refactor - modifiers.class.inc.php (yamamoto) +* [GitHub:#140feb0] - New - $modx->removeSanitizeSeed() (yamamoto) +* [GitHub:#cfc4dea] - New - $modx->removeSanitizeSeed() (yamamoto) +* [GitHub:#408fc4c] - Minor fix (yamamoto) +* [GitHub:#11b9617] - Minor fix - Comments and white spaces (yamamoto) +* [GitHub:#374cbf5] - Removed unnessecary styleFormats #886 (Deesen) +* [GitHub:#75c3d82] - Added translations for "lock_elements" #862 (Deesen) +* [GitHub:#9ff00f0] - Added displaying user-locks, added event-object to treeAction() #862 (Deesen) +* [GitHub:#953327b] - Added displaying user-locks, added unlockResource() for unlock-button #862 (Deesen) +* [GitHub:#23ac6be] - Added unlockResource() for unlock-button, enable Shift-Mouseclick to open resource in pop-up #862 (Deesen) +* [GitHub:#1226220] - Added "firsthit" for exact display of editing times #862 (Deesen) +* [GitHub:#e6bb4b7] - Added "lost lock"-alert and additional warning-div #862 (Deesen) +* [GitHub:#870677b] - Prepared styles for new "lost lock"-alert #862 (Deesen) +* [GitHub:#34fbe95] - Added field "firsthit" to table "active_user_locks" #862 (Deesen) +* [GitHub:#51de60e] - Removed spaces (Deesen) +* [GitHub:#9a2721d] - Enable unlocking single elements/resources #862 (Deesen) +* [GitHub:#534f395] - Only refresh lock-state when already locked, otherwise return false to trigger "not locked"-alert in edit-window #862 (Deesen) +* [GitHub:#ae4f628] - Prepared lockElements-functions to work with resources.static & single unlock-feature #862 (Deesen) +* [GitHub:#272d752] - Replaced old lock-mechanism with "active_user_locks" #862 (Deesen) +* [GitHub:#23e0498] - Immediately unlock resource after hitting "save+leave"- or "cancel"-button #862 (Deesen) +* [GitHub:#cf2f727] - Added functions for new locked elements/resources feature #862 (Deesen) +* [GitHub:#468ac7d] - New handler for receiving periodically lock-requests #862 (Deesen) +* [GitHub:#b2139c0] - Javascript to include into actions for sending periodically lock-requests #862 (Deesen) +* [GitHub:#dd28e38] - Added new setting "lock_interval", "lock_release_delay" #862 (Deesen) +* [GitHub:#2e2da80] - Added new role "display_locks" #862 (Deesen) +* [GitHub:#42e3bfe] - Added table "active_user_locks", added role "display_locks" #862 (Deesen) +* [GitHub:#7dbe207] - Link the Collations list and choosen language (yamamoto) +* [GitHub:#9cac209] - #897 Fix (yamamoto) +* [GitHub:#5733cca] - Parameter styleFormat: Simple-format now uses inline:'span' instead of selectors #886 (Deesen) +* [GitHub:#3f1804d] - Fix JS-Error "tp is not defined" (Deesen) +* [GitHub:#7c187d5] - Added button "formatselect" as per Tiny3-themes #886 (Deesen) +* [GitHub:#cf2dd92] - Default theme for inline-editing / [*#tv*] (Deesen) +* [GitHub:#a65edaf] - #897 FIx - choose collations issue at new install (yamamoto) +* [GitHub:#f977cdc] - Always autofocus first input-field (Deesen) +* [GitHub:#2f5b7e0] - Revert "actions in Manager Elements" (Nicola Lambathakis) +* [GitHub:#36c35e8] - ElementsInTree defaults (Piotr Matysiak) +* [GitHub:#106b23f] - Some minor CSS change (Piotr Matysiak) +* [GitHub:#31fb525] - Fix #890 (Deesen) +* [GitHub:#1c786b8] - actions in Manager Elements (Nicola Lambathakis) +* [GitHub:#3b34010] - updated styles for modules and plugins config table (Nicola Lambathakis) +* [GitHub:#43965f9] - restyled plugins config table and setdefault buttons (Nicola Lambathakis) +* [GitHub:#d0b5f0c] - restyled modules config table and setdefault buttons (Nicola Lambathakis) +* [GitHub:#f175bd1] - Allow setting TinyMCE4 "Custom Style Formats" fully manually #886 (Deesen) +* [GitHub:#c3f8f96] - Fix input/textarea-width so "Set default" will not overlap #867 (Deesen) +* [GitHub:#1bcb503] - Update qm.inc.php (Mr B) +* [GitHub:#14856f8] - Removed unnessecary row #867 (Deesen) +* [GitHub:#b51fb62] - ElementsInTree plugin update (Piotr Matysiak) +* [GitHub:#becc662] - Cleaned-up & adapted tabs / forms to each other (module, plugin, snippet) #867 (Deesen) +* [GitHub:#b5f60f2] - ElementsinTree Plugin - Prevent Users from submitting filter elements form (Nicola Lambathakis) +* [GitHub:#7d0103e] - https://github.com/modxcms/evolution/issues/880 (Nicola Lambathakis) +* [GitHub:#3dcf4aa] - Elements icons in Combined View (Nicola Lambathakis) +* [GitHub:#eade463] - Cleaned-up & adapted tabs / forms to each other (module, plugin, snippet) #867 (Deesen) +* [GitHub:#7f8ed3b] - Styles for properties #867 (Deesen) +* [GitHub:#83376db] - Remove limited height for properties-inputs #867 (Deesen) +* [GitHub:#036834a] - "About MODX" now completely translatable #870 (Deesen) +* [GitHub:#1d9a75b] - removed ">" typo (Nicola Lambathakis) +* [GitHub:#a092b95] - moved user access to access permission tab (Nicola Lambathakis) +* [GitHub:#2bfcf79] - set default button (Nicola Lambathakis) +* [GitHub:#1e8c435] - rearranged modules tabs (Nicola Lambathakis) +* [GitHub:#b24ad6d] - rearranged plugins tabs (Nicola Lambathakis) +* [GitHub:#89953ee] - ElementsInTree 1.3.0 (Piotr Matysiak) +* [GitHub:#c26d051] - Added infos for 1.2 (Deesen) +* [GitHub:#7cc3eb0] - Strings for "About MODX" (Deesen) +* [GitHub:#70bcea1] - Added createList($sectionHeader, $linkArr), added "Help translating" (Deesen) +* [GitHub:#da5fe7d] - Font Awesome 4.7 (Nicola Lambathakis) +* [GitHub:#3e09003] - Font Awesome 4.7 (Nicola Lambathakis) +* [GitHub:#378d852] - Font Awesome 4.7 (Nicola Lambathakis) +* [GitHub:#0e600aa] - Fixed missing login checkbox (Piotr Matysiak) +* [GitHub:#a293fba] - Update htaccess directive for apache 2.2 & 2.4 (esszett) +* [GitHub:#76ee29b] - revert #698 fix this but broken else (Dmi3yy) +* [GitHub:#38559bb] - Added download-links and modified credits (Deesen) +* [GitHub:#220c972] - Corrected link (Deesen) +* [GitHub:#2089153] - Added reference-links #866 (Deesen) +* [GitHub:#a0a9199] - return back icons for backward compatibility (EvoBabel, SimpleGallery and etc use icons from themes) (Dmi3yy) +* [GitHub:#4bbc556] - fix shared properties for module and plugins (Dmi3yy) +* [GitHub:#20bacd6] - fix button in iOS (Dmi3yy) +* [GitHub:#ca81002] - generate thumbs all time (Dmi3yy) +* [GitHub:#774723f] - update date version (Dmi3yy) +* [GitHub:#dd47958] - fix html (Dmi3yy) +* [GitHub:#3c1e4c9] - Completely remove empty params from properties-list for backward-compatibility #865 https://github.com/modxcms/evolution/issues/867#issuecomment-256707512 (Deesen) +* [GitHub:#569ff06] - ElementsInTree small fix (Piotr Matysiak) +* [GitHub:#63eb74f] - (webkit) login form bug (Piotr Matysiak) +* [GitHub:#934c9e9] - Prepared optional "http to https"-redirect (Deesen) +* [GitHub:#879f6f9] - ElementsInTree - smooth cutting (Piotr Matysiak) +* [GitHub:#7d52a55] - and lost icon (Dmi3yy) +* [GitHub:#7c669d9] - ElementsInTree update (Piotr Matysiak) +* [GitHub:#106b487] - Elements lists css bugfix (Piotr Matysiak) +* [GitHub:#f0e4514] - Small margin change (Piotr Matysiak) +* [GitHub:#d9cfbff] - Updated version-notices (Deesen) +* [GitHub:#bf805d3] - ElementsInTree 1.2.0 (Piotr Matysiak) +* [GitHub:#03df609] - Restyled modules context menu (Piotr Matysiak) +* [GitHub:#f444005] - Removed gap from top nav (Piotr Matysiak) +* [GitHub:#24d967b] - Improved responsiveness of top frame (Piotr Matysiak) +* [GitHub:#6432a59] - Bigger popup window (Piotr Matysiak) +* [GitHub:#4f175b0] - Better tinymce font (Piotr Matysiak) +* [GitHub:#25c9f66] - fix action buttons id (Nicola Lambathakis) +* [GitHub:#9cd3d05] - fix action buttons id (Nicola Lambathakis) +* [GitHub:#95c4bf8] - fix action buttons id (Nicola Lambathakis) +* [GitHub:#f1cbb60] - Extras - pagetitle icon + minor restyle for MODxRE2 (Nicola Lambathakis) +* [GitHub:#8b5289c] - Revert "Extras - minor restyle for MODxRE2" (Nicola Lambathakis) +* [GitHub:#a50919f] - Extras - minor restyle for MODxRE2 (Nicola Lambathakis) +* [GitHub:#50b730b] - docmanager pagetitle icon and icons in tabs (Nicola Lambathakis) +* [GitHub:#061d49d] - dashboard: fix collapse button padding (Nicola Lambathakis) +* [GitHub:#edf68a8] - fix font for code mirror better for eyes (Dmi3yy) +* [GitHub:#042041f] - ElementsInTree 1.1.5 (Piotr Matysiak) +* [GitHub:#054864e] - Restyled install (Piotr Matysiak) +* [GitHub:#bc0dea1] - Fix wrong margin after resize (Deesen) +* [GitHub:#259b2bd] - better html format (Nicola Lambathakis) +* [GitHub:#878dd58] - font awesome list icons in manage elements list (Nicola Lambathakis) +* [GitHub:#df1e6e0] - new list image (Nicola Lambathakis) +* [GitHub:#3f32f3b] - Improved quicksearch: hide/display categories (Deesen) +* [GitHub:#a23200a] - Small change 2 (Piotr Matysiak) +* [GitHub:#680b4d0] - Small change (Piotr Matysiak) +* [GitHub:#e68cb69] - ElementsInTree 1.1.4 (Piotr Matysiak) +* [GitHub:#42bfafa] - fix https://github.com/modxcms/evolution/issues/781#issuecomment-254590373 (Nicola Lambathakis) +* [GitHub:#81a2daa] - Re-compiled without Glyphicons https://github.com/modxcms/evolution/issues/781#issuecomment-254590373 (Deesen) +* [GitHub:#b3c8c2a] - Added documentIdentifier for parseDocumentSource() #840 (Deesen) +* [GitHub:#d5cd5d1] - Fix issue with spaces #841 (Deesen) +* [GitHub:#a6ce450] - fix resource overview alias and introtext (Nicola Lambathakis) +* [GitHub:#0ced6a5] - hide help info for plugins (Dmi3yy) +* [GitHub:#142889c] - hide help info for snippets (Dmi3yy) +* [GitHub:#75828f0] - hide help info for chunks (Dmi3yy) +* [GitHub:#3bee5c5] - hide tv help info (Dmi3yy) +* [GitHub:#24f4f4b] - hide template help (Dmi3yy) +* [GitHub:#11d2aa3] - ElementsInTree 1.1.3 (Piotr Matysiak) +* [GitHub:#5de0060] - Cleaned-up "Sort the site tree"-floater, button to bottom (Deesen) +* [GitHub:#7bebd10] - ElementsInTree bugfix (Piotr Matysiak) +* [GitHub:#ce3c389] - Removed scrollbar in recent widget in webkit (Piotr Matysiak) +* [GitHub:#7f72639] - ElementsInTree plugin updated to 1.1.2 (Piotr Matysiak) +* [GitHub:#c5bae7d] - jot comments admin bootstrap icons (Nicola) +* [GitHub:#056f2fb] - Revert "bootstrap jot admin icons" (Nicola) +* [GitHub:#d0ec817] - bootstrap jot admin icons (Nicola) +* [GitHub:#12e1c7a] - ElementsInTree plugin small fix (Piotr Matysiak) +* [GitHub:#fc89c0b] - ElementsInTree plugin v1.1.1 (Piotr Matysiak) +* [GitHub:#24f1a8c] - Remove - ListIndexer in preset (yamamoto) +* [GitHub:#56c4459] - Optimized images (yamamoto) +* [GitHub:#b1720c8] - Optimized images (yamamoto) +* [GitHub:#f57be46] - Optimize images (yamamoto) +* [GitHub:#0a33f6b] - Fix - Japanese font (yamamoto) +* [GitHub:#6f803bb] - Refactor (yamamoto) +* [GitHub:#3161341] - Remove IE6 style (yamamoto) +* [GitHub:#1214f0a] - Improved - Font style (yamamoto) +* [GitHub:#818b622] - Minor fix - tree pane (yamamoto) +* [GitHub:#7ad6e4b] - Add minimum HTML mark-up - https://github.com/modxcms/evolution/issues/780#issuecomment-254034389 (Deesen) +* [GitHub:#f1e3707] - Fix 'Table jot_content doesn't exist' for new installations - https://github.com/modxcms/evolution/issues/780#issuecomment-254034389 (Deesen) +* [GitHub:#2a4bece] - Improved - Manager tree context menu (yamamoto) +* [GitHub:#f1bc97f] - Refactor - manager tree node (yamamoto) +* [GitHub:#6de9d16] - Remove undefined function (yamamoto) +* [GitHub:#d569f0b] - Minor fix (yamamoto) +* [GitHub:#c329be7] - Refactor - manager tree node (yamamoto) +* [GitHub:#f6686a2] - Deleted not needed Bootstrap JS files (Piotr Matysiak) +* [GitHub:#c1202ef] - Deleted themes (Piotr Matysiak) +* [GitHub:#e0f1da6] - Deleted uncompressed FA (Piotr Matysiak) +* [GitHub:#0c54b01] - Deleted Bootstrap icons (Piotr Matysiak) +* [GitHub:#e35758e] - More condensed accordion (Piotr Matysiak) +* [GitHub:#4ddb768] - Removed scrollbar of recent resources widget (Piotr Matysiak) +* [GitHub:#4c100b1] - Up version to 1.2-RC1 (Piotr Matysiak) +* [GitHub:#843ea80] - fix now extras work on https (Dmi3yy) +* [GitHub:#e53411a] - up version (Dmi3yy) +* [GitHub:#43b6125] - Fix - Shared paramater issue (yamamoto) +* [GitHub:#6a30e0c] - Refactor - $cache_sync->escapeSingleQuotes() (yamamoto) +* [GitHub:#01562bb] - Refactor - $cache_sync->escapeSingleQuotes() (yamamoto) +* [GitHub:#61884d5] - Refactor - $modx->parseProperties() (yamamoto) +* [GitHub:#f22e28c] - Minor fix - $modx->parseProperties() (yamamoto) +* [GitHub:#9a9c32b] - Refactor - $modx->parseProperties() (yamamoto) +* [GitHub:#1613d1f] - Revert "fast fix shared params. but think need fix normal." (yamamoto) +* [GitHub:#a18dd34] - Added "reset database" before inserting demo-content #824 (Deesen) +* [GitHub:#6a06bec] - Remove version info in description #824 (Deesen) +* [GitHub:#34ab007] - Always add english-language as fallback for missing keys #824 (Deesen) +* [GitHub:#735d6ce] - Fixed @template_assignments #824 (Deesen) +* [GitHub:#c0f0eff] - Fixed installation of none-existing chunks #824 (Deesen) +* [GitHub:#9c3f072] - Added installset sample #824 (Deesen) +* [GitHub:#54aed99] - Fix - Replace new template when update (yamamoto) +* [GitHub:#affc08d] - Sort tree form fix (Piotr Matysiak) +* [GitHub:#6ee7b7a] - Removed big icons from rss feeds (Piotr Matysiak) +* [GitHub:#d0be9df] - Fixed width in recent documents widget table date (Piotr Matysiak) +* [GitHub:#970f7c8] - Search width (Piotr Matysiak) +* [GitHub:#496b929] - Top nav search form style improvements (Piotr Matysiak) +* [GitHub:#2721953] - Module Dependency icon fix (Nicola Lambathakis) +* [GitHub:#1c553d9] - Module Dependency layout and style fix (Nicola Lambathakis) +* [GitHub:#09d95a2] - updated style for new icon (Nicola Lambathakis) +* [GitHub:#de10b25] - new MODXRE2 icon style (Nicola Lambathakis) +* [GitHub:#de25145] - new MODXRE2 icon style (Nicola Lambathakis) +* [GitHub:#931bee6] - new MODXRE2 icons (Nicola Lambathakis) +* [GitHub:#c784013] - new MODXRE2 icon style (Nicola Lambathakis) +* [GitHub:#8db1ed4] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#5d9a64e] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#900c682] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#40867d1] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#ef9c45e] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#2e5688b] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#581a448] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#9f27092] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#4ed71b6] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#c2141eb] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#a5d2e20] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#22b15ad] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#e88af6a] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#d18b8b7] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#3aae04b] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#0d9ca44] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#609049a] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#92e55b9] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#954ae002e] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#8d57406] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#ba8918f] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#268e4d7] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#d8f17e3] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#2762529] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#5f18c1c] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#77d8e6c] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#e355fdf] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#d6214e8] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#fae3df1] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#07a3492] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#47a1c59] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#eb4bcf0] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#06d3bdf] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#533f412] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#c0c1702] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#bb4b675] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#bea290c] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#88343eb] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#b01e41b] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#f3302e9] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#262d021] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#a13701d] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#bd5ff9c] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#931ac36] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#d9d929f] - removed old icons MODxRE2 (Nicola Lambathakis) +* [GitHub:#0ee7744] - Fixed merging sharedParams in JSON-format #823 (Deesen) +* [GitHub:#e2f2e69] - Removed tab (Deesen) +* [GitHub:#c57359e] - Added param @save_sql_id_as for fixing demo-template´s IDs #824 (Deesen) +* [GitHub:#6461651] - Changed is_readable() to file_exists() .. (Deesen) +* [GitHub:#1bbb5f7] - fix for mobile login.tpl in MODxRE2 (Dmi3yy) +* [GitHub:#fce980e] - fast fix shared params. but think need fix normal. (Dmi3yy) +* [GitHub:#2284ef8] - Update README.md (Aleksander Maksymiuk) +* [GitHub:#80fa279] - ElementsInTree plugin (Piotr Matysiak) +* [GitHub:#578cb7d] - mainMenu frame shadow (Piotr Matysiak) +* [GitHub:#37ba5e5] - Improved - Change template setting when upgrade (yamamoto) +* [GitHub:#ac53129] - Fix - Upgrade script (yamamoto) +* [GitHub:#7fd555a] - fix style (Dmi3yy) +* [GitHub:#0d8194f] - fix lang (Dmi3yy) +* [GitHub:#e28803d] - Refactor dashboard (Dmi3yy) +* [GitHub:#e46c64a] - move search form to top menu MODxRE2 (Dmi3yy) +* [GitHub:#e547b51] - Allow custom language-overrides not altered after Evo-Updates https://github.com/modxcms/evolution/issues/818#issuecomment-253743223 (Deesen) +* [GitHub:#06552c0] - on mobile not see shadow and better when different bg color MODxRE2 (Dmi3yy) +* [GitHub:#4bc049f] - fix MODxRE2 for mobile normal manager width) (Dmi3yy) +* [GitHub:#9fd9de0] - fix MODxRE2 for view on mobile (Dmi3yy) +* [GitHub:#e357839] - fix http https (Dmi3yy) +* [GitHub:#b1137ff] - fix loginpage on mobile (Dmi3yy) +* [GitHub:#bc123af] - fix hideMenuFrame ico position (Dmi3yy) +* [GitHub:#eb32818] - fix main menu item colors (Dmi3yy) +* [GitHub:#c237eb5] - add some shadow to top menu, like shadow for DocTree ) (Dmi3yy) +* [GitHub:#05cfee4] - fix now first widget without scrolling on 1280px width ) (Dmi3yy) +* [GitHub:#0d74715] - fix top resize move to right (Dmi3yy) +* [GitHub:#83fc13b] - fix button margin in MODxRE2 (Dmi3yy) +* [GitHub:#cfac06f] - fix margin in home button in MODxRE2 (Dmi3yy) +* [GitHub:#3e35947] - home buttons on MODxRE2 2x better when in one row ) (Dmi3yy) +* [GitHub:#c4b4b6a] - fix css.map 404 error (Dmi3yy) +* [GitHub:#5439592] - by default MODxRE2 (Dmi3yy) +* [GitHub:#2f54362] - Refactor - moo-datepicker (yamamoto) +* [GitHub:#dc24d76] - restored link to message system (Nicola Lambathakis) +* [GitHub:#a1ebd44] - web users access pagetitle icon (Nicola Lambathakis) +* [GitHub:#beda74f] - search pagetitle icon (Nicola Lambathakis) +* [GitHub:#2f9bd43] - roles pagetitle icon (Nicola Lambathakis) +* [GitHub:#d8c00dc] - create/edit webuser pagetitle icon (Nicola Lambathakis) +* [GitHub:#a9354a6] - create/edit user pagetitle icon (Nicola Lambathakis) +* [GitHub:#d29fe95] - settings pagetitle icon (Nicola Lambathakis) +* [GitHub:#6793d7b] - edit/create module pagetitle icon (Nicola Lambathakis) +* [GitHub:#c778f5e] - sort documents pagetitle icon (Nicola Lambathakis) +* [GitHub:#8d0289a] - edit/create document pagetitle icon (Nicola Lambathakis) +* [GitHub:#7d7c48e] - move document pagetitle icon (Nicola Lambathakis) +* [GitHub:#712d23f] - removed duplicated fa class in pagetitle icon (Nicola Lambathakis) +* [GitHub:#26c021d] - message pagetitle icon (Nicola Lambathakis) +* [GitHub:#11d3274] - help pagetitle icon (Nicola Lambathakis) +* [GitHub:#6b698a3] - document overview pagetitle icon (Nicola Lambathakis) +* [GitHub:#614af77] - manager access pagetitle icon (Nicola Lambathakis) +* [GitHub:#30de164] - Unified action headers (Piotr Matysiak) +* [GitHub:#234e30d] - User management action buttons (Piotr Matysiak) +* [GitHub:#c81058b] - Elements search with action buttons style update (Piotr Matysiak) +* [GitHub:#4026d89] - little fix to pagetitle icon (Nicola Lambathakis) +* [GitHub:#352c968] - wev users pagetitle icon (Nicola Lambathakis) +* [GitHub:#24c6b76] - users pagetitle icon (Nicola Lambathakis) +* [GitHub:#9954efa] - sys info pagetitle icon (Nicola Lambathakis) +* [GitHub:#3a162c2] - schedule pagetitle icon (Nicola Lambathakis) +* [GitHub:#50b042d] - modules pagetitle icon (Nicola Lambathakis) +* [GitHub:#84af850] - events log pagetitle icon (Nicola Lambathakis) +* [GitHub:#337cebf] - import html pagetitle icon (Nicola Lambathakis) +* [GitHub:#8dddaed] - files pagetitle icon (Nicola Lambathakis) +* [GitHub:#843a6fc] - export html pagetitle icon (Nicola Lambathakis) +* [GitHub:#f51b52b] - manager log pagetitle icon (Nicola Lambathakis) +* [GitHub:#60d67ff] - backup pagetitle icon (Nicola Lambathakis) +* [GitHub:#9e57cc7] - Moved search input to actionButtons (Piotr Matysiak) +* [GitHub:#845408a] - Manage Elements styles (Piotr Matysiak) +* [GitHub:#dae1e35] - Icons and elements description (Piotr Matysiak) +* [GitHub:#f6e319b] - fixed color icons in D3X (Dmi3yy) +* [GitHub:#64b4d24] - fixed missed icons in D3X (Dmi3yy) +* [GitHub:#6ce10bb] - add summary Based on Doclister (Dmi3yy) +* [GitHub:#919c85d] - add DLUsers (Dmi3yy) +* [GitHub:#a71113f] - update DocLister (Dmi3yy) +* [GitHub:#66e36be] - update class summary (Dmi3yy) +* [GitHub:#7d1d77e] - update ApiHelpers.class (Dmi3yy) +* [GitHub:#7bd8a74] - update lis/simpleTab (Dmi3yy) +* [GitHub:#e29fd2d] - update MODxAPI (Dmi3yy) +* [GitHub:#93d378c] - update lib/modules (Dmi3yy) +* [GitHub:#c54324d] - update helpers (Dmi3yy) +* [GitHub:#9dbe2cc] - Update /lib/formater (Dmi3yy) +* [GitHub:#c7bcc9b] - fix width in D3X (Dmi3yy) +* [GitHub:#a798073] - Icons is Manage Elements Tabs (Piotr Matysiak) +* [GitHub:#d68d9d1] - Live search in Elements lists (Piotr Matysiak) +* [GitHub:#2f38e91] - Add - maketable.extenders.inc.php (yamamoto) +* [GitHub:#c14e378] - Update jQuery v3.1.1 (yamamoto) +* [GitHub:#5aeaa9d] - Installer - Refactor (yamamoto) +* [GitHub:#e349aa8] - Installer - Refactor (yamamoto) +* [GitHub:#4583ee9] - Installer - Refactor (yamamoto) +* [GitHub:#3bd5595] - Update jQuery v1.8.3 to v3.1.1 (yamamoto) +* [GitHub:#74fc53e] - Installer - Refactor (yamamoto) +* [GitHub:#47c0cd3] - Installer - Refactor (yamamoto) +* [GitHub:#beb5f9f] - Installer - Refactor (yamamoto) +* [GitHub:#331a8d9] - Minor fix - $modx->db->dataSeek() (yamamoto) +* [GitHub:#7051810] - Installer - Refactor (yamamoto) +* [GitHub:#ccb1c54] - Installer - Refactor style (yamamoto) +* [GitHub:#1064b23] - Installer - Rfactor style for Japanese font (yamamoto) +* [GitHub:#906cf5b] - notInMenuNode normal font weight (Piotr Matysiak) +* [GitHub:#cb3197e] - Remove bold from tree published node (Piotr Matysiak) +* [GitHub:#46e0090] - Improved sort_tree-button appearance (Deesen) +* [GitHub:#c5a12fd] - sub-actionButtons: Removed float:right (Deesen) +* [GitHub:#86be2dc] - actionButton instead of text-link (Deesen) +* [GitHub:#b717016] - Tree colors and disabled elements styles (Piotr Matysiak) +* [GitHub:#11da047] - removed ul.sortableList padding-left (Deesen) +* [GitHub:#d6381a6] - actionButton instead of text-link, removed ul.sortableList padding-left (Deesen) +* [GitHub:#fcaf6d2] - Installer - Refactor (yamamoto) +* [GitHub:#30ba7dd] - Installer - Refactor (yamamoto) +* [GitHub:#1856fb1] - actionButton instead of text-link (Deesen) +* [GitHub:#9efb1f2] - actionButton instead of text-link for resetSysfilesChecksum (Deesen) +* [GitHub:#b11acf7] - Installer - Refactor (yamamoto) +* [GitHub:#d9bd4b0] - Installer - Remove connection.js (yamamoto) +* [GitHub:#c330274] - Installer - refactor (yamamoto) +* [GitHub:#a6c3937] - jQuery into installer (yamamoto) +* [GitHub:#5e60048] - Tree published node new color (Piotr Matysiak) +* [GitHub:#18772ca] - Missing resource secure icon (Piotr Matysiak) +* [GitHub:#4da63a5] - Small fix cancel-button (Deesen) +* [GitHub:#e71e87c] - Datepicker Fix (Piotr Matysiak) +* [GitHub:#e2496ea] - Set MODxRE2 as default theme (Piotr Matysiak) +* [GitHub:#993afba] - file deleted icon (Nicola Lambathakis) +* [GitHub:#62c488c] - file deleted icons (Nicola Lambathakis) +* [GitHub:#ad9c113] - solid folders (Nicola Lambathakis) +* [GitHub:#b6a329d] - Tooltips icons margin (Piotr Matysiak) +* [GitHub:#9ce84bf] - Removed all hardcoded icons (Nicola Lambathakis) +* [GitHub:#f09b5ab] - New icons for Manage Files (Nicola Lambathakis) +* [GitHub:#4acc8dd] - New icons for Manage Files (Nicola Lambathakis) +* [GitHub:#ac431f1] - New icons for Manage Files (Nicola Lambathakis) +* [GitHub:#56a79f0] - New icons for Manage Files (Nicola Lambathakis) +* [GitHub:#93caca6] - updated tree secured icons lock (Nicola Lambathakis) +* [GitHub:#ed89b8a] - updated tree secured icons lock (Nicola Lambathakis) +* [GitHub:#a4ede3c] - updated tree secured icons lock (Nicola Lambathakis) +* [GitHub:#7b4d7a9] - updated tree secured icons lock (Nicola Lambathakis) +* [GitHub:#da51692] - added run module icon (Nicola Lambathakis) +* [GitHub:#28abee7] - deleted old publish and info icon (Nicola Lambathakis) +* [GitHub:#991c677] - updated styles for move, info, publish, calendar icons (Nicola Lambathakis) +* [GitHub:#933fbe5] - new info icon (Nicola Lambathakis) +* [GitHub:#44bbe37] - new move icon (Nicola Lambathakis) +* [GitHub:#bce2443] - deleted old calendars icon (Nicola Lambathakis) +* [GitHub:#bcda1fb] - new calendars icon (Nicola Lambathakis) +* [GitHub:#f98711b] - New publish icon (Nicola Lambathakis) +* [GitHub:#8e38413] - Updated to 4.3.7.2 (Deesen) +* [GitHub:#7048a78] - modules static context menu icons (Nicola Lambathakis) +* [GitHub:#22e8fbf] - replaced $_style['icons_save'] with new $_style['icons_run'] (Nicola Lambathakis) +* [GitHub:#72fd10a] - Fixed file-browser on none-root installations #787 - added "which_browser" - fixed JS-error with MultiTV - inline-editing like QM with [*#tv*] (Deesen) +* [GitHub:#429fea7] - updated question sign icon (Nicola Lambathakis) +* [GitHub:#782163a] - updated module icon (Nicola Lambathakis) +* [GitHub:#11108f6] - updated manage files icons (Nicola Lambathakis) +* [GitHub:#441a540] - new collapse icons (Nicola Lambathakis) +* [GitHub:#7cc206f] - Improved search-form #789 - activated "search by template-id" - remembers form-values after sending - merged URL/ID into single field (Deesen) +* [GitHub:#74a7361] - https://github.com/modxcms/evolution/issues/793 (Nicola Lambathakis) +* [GitHub:#661617c] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#5fc1428] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#2cd3253] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#42801a8] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#d3c8771] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#2e6b81c] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#3d30f67] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#5142e9d] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#7812f18] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#d57778f] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#cb5cd38] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#1665405] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#3efd467] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#eb60d0b] - new MODxFlat icons (Nicola Lambathakis) +* [GitHub:#442756e] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#5b24b42] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#c19cdff] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#6b22937] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#9b78ad7] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#2331b57] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#dc11094] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#192d3ef] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#aeb3c64] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#0540381] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#a437b31] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#5a55638] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#07850e7] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#bd00ecd] - deleted old icons (Nicola Lambathakis) +* [GitHub:#4d0871a] - Tree icons from MODxFlat Theme (Nicola Lambathakis) +* [GitHub:#6e98752] - Tree icons from MODxFlat Theme (Nicola Lambathakis) +* [GitHub:#7802e6e] - deleted old tree icons (Nicola Lambathakis) +* [GitHub:#c3c7ce9] - select width (Piotr Matysiak) +* [GitHub:#8e25c6a] - if we haven't q and id in get need go to onPageNotFound. (Dmi3yy) +* [GitHub:#4aad3c6] - Table .grid styles mostly (Piotr Matysiak) +* [GitHub:#6f474d4] - Resource children list style (Piotr Matysiak) +* [GitHub:#143839a] - Add some space between content and "Editor to use" (Piotr Matysiak) +* [GitHub:#e0aa7c9] - Image TV input width (Piotr Matysiak) +* [GitHub:#dc8757f] - Fix for fields width (Piotr Matysiak) +* [GitHub:#9d1428d] - Inputs width (Piotr Matysiak) +* [GitHub:#93f4fab] - Tree Button small improvements (Piotr Matysiak) +* [GitHub:#fb95556] - MODxRE2 small fix (Piotr Matysiak) +* [GitHub:#fa49a33] - MODxRE2 (Piotr Matysiak) +* [GitHub:#472b5ac] - Fix Tree Button icon size (Piotr Matysiak) +* [GitHub:#e57c6ce] - fix ht.access (Dmi3yy) +* [GitHub:#13ccfe2] - fix RichEditor (Dmi3yy) +* [GitHub:#be4c3e0] - add tinyMCE theme "custom" by Default (Dmi3yy) +* [GitHub:#760224c] - delete tinyMCE 3 settings (Dmi3yy) +* [GitHub:#d3b0258] - add tinyMCE4 (Dmi3yy) +* [GitHub:#ee5d720] - delete tinyMCE3 (Dmi3yy) +* [GitHub:#b348c21] - OnManagerTopPrerender (Nicola Lambathakis) +* [GitHub:#8e773e6] - Styling using language attributes (yamamoto) +* [GitHub:#47e780e] - Refactor - Upgrade script (yamamoto) +* [GitHub:#f3ffe6e] - Corresponding to UTF8MB4 (yamamoto) +* [GitHub:#4029e0e] - Fix documentDirty (yamamoto) +* [GitHub:#75f2827] - fix scroll on 1440 width (Dmi3yy) +* [GitHub:#b28d6d2] - fix icons (Dmi3yy) +* [GitHub:#bf6724a] - fix path moo-datapicker in D3X (Dmi3yy) +* [GitHub:#1fede26] - fix path moo-datapicker in MODxRE (Dmi3yy) +* [GitHub:#be932f2] - fix path moo-datapicker in MODxCarbon (Dmi3yy) +* [GitHub:#2416a7b] - fix moo-datapicker.tpl (Dmi3yy) +* [GitHub:#c9d9c09] - move moo-datapicker to common folder (Dmi3yy) +* [GitHub:#2deed1a] - fix (Dmi3yy) +* [GitHub:#f02b9c8] - fix D3X (Dmi3yy) +* [GitHub:#da3104c] - no message (Dmi3yy) +* [GitHub:#a3b1802] - no message (Dmi3yy) +* [GitHub:#0f0892e] - fix d#x (Dmi3yy) +* [GitHub:#9337663] - fix D3X (Dmi3yy) +* [GitHub:#7955f41] - fix lang (Dmi3yy) +* [GitHub:#b58d0cd] - fix lang (Dmi3yy) +* [GitHub:#0449967] - fix langs (Dmi3yy) +* [GitHub:#5a5f226] - update lang (Dmi3yy) +* [GitHub:#f483f6f] - fix style D3X (Dmi3yy) +* [GitHub:#6343037] - fix style in D3X (Dmi3yy) +* [GitHub:#f864bde] - fix style in D3x (Dmi3yy) +* [GitHub:#bce2e56] - fix icons in D3X (Dmi3yy) +* [GitHub:#50c7cbf] - update D3X (Dmi3yy) +* [GitHub:#d8c0300] - add dashboard files in D3X (Dmi3yy) +* [GitHub:#8c24c6a] - add moo-datapiker files (Dmi3yy) +* [GitHub:#4c1ce71] - fix tree width in D3X (Dmi3yy) +* [GitHub:#7ad7645] - fix lots omg in tree for D3X (Dmi3yy) +* [GitHub:#e4c65dd] - add file manager Zico in tree for D3X (Dmi3yy) +* [GitHub:#7212ddb] - fix events icon (Dmi3yy) +* [GitHub:#969a2ff] - fix logo in D3X theme (Dmi3yy) +* [GitHub:#d1f6a1b] - add D3X theme (Dmi3yy) +* [GitHub:#a201088] - Dashboard search for MODxCarbon (Piotr Matysiak) +* [GitHub:#04e0278] - Update for normal work with angular, ets plugin like this : (Dmi3yy) +* [GitHub:#54a573f] - New MODX startup - Bootstrap Template (Nicola Lambathakis) +* [GitHub:#266a269] - removed modxhost files (Nicola Lambathakis) +* [GitHub:#65f32db] - Dashboard search styles (Piotr Matysiak) +* [GitHub:#97bbd0b] - Unique class for user info table (Piotr Matysiak) +* [GitHub:#f3c8e97] - Missing div in welcome.tpl (Piotr Matysiak) +* [GitHub:#82ed0c3] - various css fix (Nicola Lambathakis) +* [GitHub:#b477d63] - added search to dashboard + varuios fix (Nicola Lambathakis) +* [GitHub:#6364e7c] - replaced tree icon icon in style php (Nicola Lambathakis) +* [GitHub:#42abf9a] - updated modxre styles for fontawesome (Nicola Lambathakis) +* [GitHub:#5aad9c9] - updated modxcarbon dashboard (Nicola Lambathakis) +* [GitHub:#2cdddf0] - moved grister to manager scripts folder (Nicola Lambathakis) +* [GitHub:#992b558] - removed jquery from dashboard (Nicola Lambathakis) +* [GitHub:#51beeff] - moved grister js to manager scripts folder (Nicola Lambathakis) +* [GitHub:#e39a454] - moved grister css to manager scripts folder (Nicola Lambathakis) +* [GitHub:#0b7312c] - wrong dashboard location (Nicola Lambathakis) +* [GitHub:#2dfae2f] - wrong dashboard location (Nicola Lambathakis) +* [GitHub:#6f56c16] - wrong dashboard location (Nicola Lambathakis) +* [GitHub:#f1ee469] - wrong dashboard location (Nicola Lambathakis) +* [GitHub:#1563dab] - wrong dashboard location (Nicola Lambathakis) +* [GitHub:#55a4902] - replaced icons with font awesome (Nicola Lambathakis) +* [GitHub:#fb19f07] - updated welcome static (Nicola Lambathakis) +* [GitHub:#4fb0119] - Tree Node margins (Piotr Matysiak) +* [GitHub:#0bcb68b] - Revert "Fix td vertical align" (MrSwed) +* [GitHub:#2ee7828] - Replaced escapeshellarg() by customEscapeshellarg() #754 (Deesen) +* [GitHub:#0d9885d] - Update to v0.5.6 - Fix for "ontouchstart" (Firefox) #729 (Deesen) +* [GitHub:#eed7ebe] - Update save_web_user.processor.php (Mr B) +* [GitHub:#fb82a6b] - Update save_user.processor.php (Mr B) +* [GitHub:#c1c6d2e] - Update eform.inc.php (Mr B) +* [GitHub:#12be4c6] - RSS Feeds lists (Piotr Matysiak) +* [GitHub:#d7a3556] - Remove duplicated icons (Piotr Matysiak) +* [GitHub:#22c7704] - Input transition (Piotr Matysiak) +* [GitHub:#071dded] - Icon placement (Piotr Matysiak) +* [GitHub:#db52c1e] - Dashboard styles (Piotr Matysiak) +* [GitHub:#6158cfa] - Update plus/minus tree icons (Piotr Matysiak) +* [GitHub:#8ba9453] - delete empty rows (Dmi3yy) +* [GitHub:#f2bb174] - store.js some fix (Dmi3yy) +* [GitHub:#e9a1d8e] - some fix in store.js (Dmi3yy) +* [GitHub:#b5bad67] - update rus lang (Dmi3yy) +* [GitHub:#ca086d0] - upd russian lang (Dmi3yy) +* [GitHub:#1958794] - * Increased the maximum length of the template name, TV name and chunk name up to 100. (Andrey Demchenko) +* [GitHub:#a605fc8] - fixed wrong language string in user column title (th) (Nicola Lambathakis) +* [GitHub:#5bfcf67] - added missin topmenu collapse icon (Nicola Lambathakis) +* [GitHub:#ea8c136] - Added new Dashboard to MODxCarbon (Nicola Lambathakis) +* [GitHub:#82d09af] - logo dashboard (Nicola Lambathakis) +* [GitHub:#e37f1f4] - New Resource Panel with overview (Nicola Lambathakis) +* [GitHub:#431b36f] - moved fontawesome styles (Nicola Lambathakis) +* [GitHub:#446ebd9] - moved fontawesome fonts (Nicola Lambathakis) +* [GitHub:#21e1782] - removed bootstrap (Nicola Lambathakis) +* [GitHub:#e7e781b] - Updated fro resource panel (Nicola Lambathakis) +* [GitHub:#97e1087] - updated dashboard for new resource panel (Nicola Lambathakis) +* [GitHub:#b201cf0] - added font awesome 4.6 (Nicola Lambathakis) +* [GitHub:#447c68e] - added bootstrap styles and font (Nicola Lambathakis) +* [GitHub:#3c27722] - added bootstrap scripts v3.3.7 to the system (Nicola Lambathakis) +* [GitHub:#5278ee3] - better 0 by default many erros when update site with PHx (Dmi3yy) +* [GitHub:#c61ee9d] - russian lang fix (Fr3ddy) +* [GitHub:#40359ca] - removed description from info and recent resource panels (Nicola Lambathakis) +* [GitHub:#04c0a4b] - removed typo dashes from info panel (Nicola Lambathakis) +* [GitHub:#c4b306a] - Added info "jQuery 3.1" (Deesen) +* [GitHub:#e5164b5] - Linked "systemversion" to version-notices (Deesen) +* [GitHub:#27436dc] - resetgrid (Fr3ddy) +* [GitHub:#af5d1cb] - Revert "Revert "#729"" (Fr3ddy) +* [GitHub:#ef65167] - Revert "#729" (Fr3ddy) +* [GitHub:#388a88a] - #729 (Fr3ddy) +* [GitHub:#57576af] - fix path (Fr3ddy) +* [GitHub:#6f5abab] - #738 (Fr3ddy) +* [GitHub:#9638887] - new size 16x16 (Fr3ddy) +* [GitHub:#8ce502b] - #741 Remove .gitignore (yamamoto) +* [GitHub:#93fe1fe] - logo-dashboard.png (Nicola Lambathakis) +* [GitHub:#5a08d20] - German https://github.com/modxcms/evolution/pull/739#issuecomment-245488425 (MrSwed) +* [GitHub:#cc4d3ab] - Nederlands https://github.com/modxcms/evolution/pull/739#issuecomment-245412600 (MrSwed) +* [GitHub:#0d03990] - fix line-height (Fr3ddy) +* [GitHub:#8dcb3a7] - More correct tip, some google translate. (MrSwed) +* [GitHub:#5e8e31e] - added "reset grid" text placeholder (Nicola Lambathakis) +* [GitHub:#eb3074b] - fix tree icons - plus\minus (Fr3ddy) +* [GitHub:#55b5ea0] - removed inbox panel (Nicola Lambathakis) +* [GitHub:#21a85aa] - update css (Nicola Lambathakis) +* [GitHub:#1588aab] - extended user infos with inbox (Nicola Lambathakis) +* [GitHub:#52159ac] - Revert "extended userinfo placeholder with inbox infos" (Nicola Lambathakis) +* [GitHub:#2d7d3d9] - extended userinfo placeholder with inbox infos (Nicola) +* [GitHub:#2b2363a] - fix jquery path (Nicola) +* [GitHub:#2931be2] - modxre with dashboard (Nicola) +* [GitHub:#9fea41b] - Fix for mm_requireFields (ManagerManager) (yamamoto) +* [GitHub:#0f81255] - DocManager - Remove loading moodx.js (yamamoto) +* [GitHub:#a5f1359] - Help icon in welcome page (Nicola) +* [GitHub:#cb21ea9] - Remove "leaving without saving"-alert when pressing save-button (Deesen) +* [GitHub:#354d82e] - Added templates via @INCLUDE #627 (Deesen) +* [GitHub:#7d4df78] - Filemanager: Switch Codemirror-mode by file-extension #730 (Deesen) +* [GitHub:#8171ae4] - tab online (Fr3ddy) +* [GitHub:#7dbff68] - Remove support old IE (yamamoto) +* [GitHub:#1cc624c] - Fix - Elements list in manager (yamamoto) +* [GitHub:#f17de04] - Fix for MySQL5.7 (yamamoto) +* [GitHub:#3bb7fe5] - Refactor nodes.php (yamamoto) +* [GitHub:#7f4e0ff] - revert (Fix for MySQL5.7 this is incompatible with sql_mode=only_full_group_by) (Dmi3yy) +* [GitHub:#0318c84] - Fix - Backup Manager sql error (yamamoto) +* [GitHub:#7bf767b] - fix url (Dmi3yy) +* [GitHub:#2c0f03b] - open store.js (Dmi3yy) +* [GitHub:#8e756a6] - up version to 1.1.1-beta3 (Dmi3yy) +* [GitHub:#8d1bb2e] - fix Doclister json format (Dmi3yy) +* [GitHub:#27dbbb4] - fix in Doclister Abstract - sotring (Dmi3yy) +* [GitHub:#170f074] - fix in lib Helpers (Dmi3yy) +* [GitHub:#cd41799] - add Sortable.min.js (Dmi3yy) +* [GitHub:#1e1b778] - add Jquery 1.9.1 need for DocLister, simpleGallery e.t.c (Dmi3yy) +* [GitHub:#05846e7] - add jEditable need for DocLister, simpleGallery e.t.c (Dmi3yy) +* [GitHub:#5684745] - add handlebars need for DocLister, simpleGallery e.t.c (Dmi3yy) +* [GitHub:#8d3f8be] - add FileAPI need for DocLister, simpleGallery e.t.c (Dmi3yy) +* [GitHub:#323c36c] - add jeasyui need for DocLister, simpleGallery e.t.c (Dmi3yy) +* [GitHub:#3fd0533] - Refactor -nodes.php (yamamoto) +* [GitHub:#7f6d126] - Wayfinder - Fix for debug info (yamamoto) +* [GitHub:#148f0a8] - Fix Wayfinder - &startId=parent (yamamoto) +* [GitHub:#3a84bdf] - Fix for MySQL5.7 (yamamoto) +* [GitHub:#7bf955c] - Fix for MySQL5.7 (yamamoto) +* [GitHub:#bc6b1ed] - Fix for PHP7 (yamamoto) +* [GitHub:#58f73c7] - add noimage (Dmi3yy) +* [GitHub:#b0c23b9] - #722 Minor fix (file path issue) (yamamoto) +* [GitHub:#597c629] - fix wrong link (Fr3ddy) +* [GitHub:#ffebc6b] - Tree icons fix and new (Piotr Matysiak) +* [GitHub:#4bf5df5] - Fix PHP Deprecated - Class constructor name with PHP7 (yamamoto) +* [GitHub:#e67b5b0] - DatePicker - Minor fix (yamamoto) +* [GitHub:#875e76e] - DatePicker - Remove unnecessary files (yamamoto) +* [GitHub:#432731f] - Remove unnecessary spaces (yamamoto) +* [GitHub:#a81eb25] - size icons (Fr3ddy) +* [GitHub:#128b13c] - Wayfinder - [+url+] New placeholder (yamamoto) +* [GitHub:#1aa47ac] - change icons in tree #694 + add datapicker from MODxCarbon theme (Fr3ddy) +* [GitHub:#697c876] - Revert "change icons in tree + add datapicker from MODxCarbon theme #722" (Fr3ddy) +* [GitHub:#5b27bd7] - change icons in tree + add datapicker from MODxCarbon theme #722 (Fr3ddy) +* [GitHub:#abd43f8] - #722 To bind the DatePicker in manager theme (yamamoto) +* [GitHub:#d5ea09f] - #720 Fix for multitv (mootools datepicker) (yamamoto) +* [GitHub:#79dbbd5] - Minor fix - $modx->checkSession() (yamamoto) +* [GitHub:#fc8f27e] - Fixed ajaxSecHash for multiple fields, added optional contenteditable to parseEditableIds() (Deesen) +* [GitHub:#e4a8ccf] - Added z-index #720 (Deesen) +* [GitHub:#44e7c19] - #719 [Wayfinder] Refactor debug information (yamamoto) +* [GitHub:#e604b55] - [New] Wayfinder - &showPrivate (yamamoto) +* [GitHub:#152b18c] - Wayfinder - Version update 2.1 (yamamoto) +* [GitHub:#60a2cbf] - Wayfinder - @FILE:any-config (yamamoto) +* [GitHub:#c629e43] - [New] Wayfinder - config by chunk (yamamoto) +* [GitHub:#4cf8cb9] - Wayfinder - Refactor (yamamoto) +* [GitHub:#d525264] - Wayfinder - Add bootstrap-navbar.config.php (yamamoto) +* [GitHub:#e21014d] - Wayfinder - Refactor sample files (yamamoto) +* [GitHub:#edd46b7] - Wayfinder - Remove IE6 samples (yamamoto) +* [GitHub:#fe90c27] - Wayfinder - Remove old samples (yamamoto) +* [GitHub:#bec27f4] - Wayfinder - Refactor mollio.config.php (yamamoto) +* [GitHub:#3bbb988] - Wayfinder - Refactor chunks.txt (yamamoto) +* [GitHub:#8ede0da] - Wayfinder - Minor fix (yamamoto) +* [GitHub:#aea7abe] - Wayfinder - Refactor breadcrumb.config.php (yamamoto) +* [GitHub:#8177569] - Wayfinder - Refactor debug info (yamamoto) +* [GitHub:#862b8fa] - Wayfinder - Remove code for IE6 in sample.config (yamamoto) +* [GitHub:#0eea85d] - Wayfinder - Refactor breadcrumb.config.php (yamamoto) +* [GitHub:#4a0a56a] - Wayfinder - Refactor (yamamoto) +* [GitHub:#9bb7774] - Wayfinder - Improved debug info (yamamoto) +* [GitHub:#0757e04] - Refactor - Wayfinder (yamamoto) +* [GitHub:#e8b8e6d] - Fix - wordwrap modifire (yamamoto) +* [GitHub:#4e50715] - Detect PHx even when plugin has been renamed #623 (Deesen) +* [GitHub:#d5c907c] - Fix SQL-Error (pubdate = '' / empty) when Filters are disabled as then ":strtolower" fails for [(datetime_format:strtolower)] (Deesen) +* [GitHub:#3e9d2ba] - Revert last changes (Deesen) +* [GitHub:#3a4bb29] - Filters-warning when PHx is enabled #623 (Deesen) +* [GitHub:#16f7d36] - Avoid SQL-Error when saving resource (Error: pub_date='' / empty) (Deesen) +* [GitHub:#ced5d28] - Wayfinder - To get the TV using the API (yamamoto) +* [GitHub:#dc298ce] - [New] Wayfinder - &startId=parent (yamamoto) +* [GitHub:#b4c9c6c] - Wayfinder - Be able to use the modifier in tpl (yamamoto) +* [GitHub:#bfa68fe] - Wayfinder - Refactor (yamamoto) +* [GitHub:#d1a74bc] - Wayfinder - Replace tabs to spaces (yamamoto) +* [GitHub:#fe6aa9f] - Minor fix (yamamoto) +* [GitHub:#8f8b015] - Fix - DatePicker for mm_ddMultipleFields http://forum.modx.jp/viewtopic.php?p=9067#p9067 (yamamoto) +* [GitHub:#0f39241] - #710 Minor fix (yamamoto) +* [GitHub:#f6a19e3] - Refactor - wayfider.inc.php (yamamoto) +* [GitHub:#09e1d49] - Update deprecated.functions.inc.php (Lukacs Vertes) +* [GitHub:#b50e149] - update ditto distinct extender. a long time ago lost updates (MrSwed) +* [GitHub:#928439e] - an update mm_hideEmpty https://github.com/MrSwed/MODXEvo.plugin.ManagerManager.mm_hideEmpty (MrSwed) +* [GitHub:#a374a3f] - MySQL 5.7.x small fix (Andriy) +* [GitHub:#0243e8d] - Enable modxRTEbridge creating config-obj for external tools like MultiTV (Deesen) +* [GitHub:#d57901e] - Allow using different File Browsers like KCFinder, elFinder #629, #705 (Deesen) +* [GitHub:#1fdcaf3] - Show File-Browser buttons only when "Enable File Browser" in MODX-config is set to "Yes" #681 (Deesen) +* [GitHub:#b099cb8] - Grant full permissions for administrators on upgrade (assets_images, assets_files, change_resourcetype) (Deesen) +* [GitHub:#884cc1e] - Parse Resource-Fields & TVs, changed [+tv+] to [*tv*] #699 (Deesen) +* [GitHub:#ffdec5a] - Improved layout of "Version Notices" (Deesen) +* [GitHub:#1430a42] - Improved layout of "Version Notices" (Deesen) +* [GitHub:#69493da] - Updated version-notices 1.1.1 #625 (Deesen) +* [GitHub:#80c1af2] - Updated version-notices 1.1.1 #699 (Deesen) +* [GitHub:#49cc77f] - Added fallback to default-value #699 (Deesen) +* [GitHub:#ab30bc5] - Allow using TV-values in @bindings (@SELECT name,value FROM xxx WHERE yyy = [+tv_name+]) #699 (Deesen) +* [GitHub:#ac802af] - Added optional index to makeArray() #699 (Deesen) +* [GitHub:#2892fb4] - Fix #701 (Deesen) +* [GitHub:#131c383] - #698 Fix (yamamoto) +* [GitHub:#efa787b] - Improved parser - IF / ELSEIF / ELSE / ENDIF (yamamoto) +* [GitHub:#7564d01] - #698 Refactor (yamamoto) +* [GitHub:#6772768] - #698 Fix $_REQUEST['q'] issue (yamamoto) +* [GitHub:#b6c2be2] - Updated version-notices 1.1.1 (Deesen) +* [GitHub:#853b2d8] - Refatctor - Personalize snippet (yamamoto) +* [GitHub:#e3d8a73] - Update - Personalize v 2.2 (yamamoto) +* [GitHub:#03e3701] - Refactor - Personalize snippets (yamamoto) +* [GitHub:#7a92974] - Refactor - Personalize snippet (yamamoto) +* [GitHub:#acbbd3a] - Allow display/hide of "Manage Image/Files"-button with role "assets_images/files" only (Deesen) +* [GitHub:#f76204c] - New Tree Buttons Permissions fix (Piotr Matysiak) +* [GitHub:#ab87fcc] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#fa36608] - Refactor - Set default values in mutate_settings.dynamic.php (yamamoto) +* [GitHub:#0f1eaec] - Minor fix - $modx->config['use_breadcrumbs'] (yamamoto) +* [GitHub:#1259010] - Refactor - mutate_content.dynamic.php (yamamoto) +* [GitHub:#03f5228] - Set the $modx->documentObject in resource edit (yamamoto) +* [GitHub:#4195feb] - Refactor - $modx->manager->loadFormValues() (yamamoto) +* [GitHub:#7ed2344] - Does not clear the value of the settings_version at the time of update (yamamoto) +* [GitHub:#ed6c63c] - there are no $modx->mb_strftime function yet. (MrSwed) +* [GitHub:#cedde34] - some sintax fix (MrSwed) +* [GitHub:#072143e] - #623 fix disable filters if phx enabled (MrSwed) +* [GitHub:#dd50a40] - Added permissions "assets_images, assets_files" to roles "editor, publisher" for new installations #681 (Deesen) +* [GitHub:#55d7f5b] - Version notices: New manager roles (Deesen) +* [GitHub:#c7a84bf] - Corrected displaying icons in a row when having limited permissions (Deesen) +* [GitHub:#d48a2ee] - fix Deprecated after jQuery update 7afa3a2effe327e26bb00fa7d412b7dc7b8765b8 (MrSwed) +* [GitHub:#8c247bc] - Added hasPermission("assets_images") to show/hide KCFinder-button #681 (Deesen) +* [GitHub:#723addd] - Added hasPermission("assets_images, assets_files") #681 (Deesen) +* [GitHub:#96bcfe5] - Applied roles assets_images/assets_files to Manage Images/Files buttons #681 (Deesen) +* [GitHub:#0d578c6] - Added new roles "assets_images, assets_files" #681 (Deesen) +* [GitHub:#6ce8001] - Assure QM-toolbar lies above all elements (Deesen) +* [GitHub:#d81b6c7] - Update - v1.1.1-beta2 (yamamoto) +* [GitHub:#35a03bc] - Updates before and after the version display in manager (yamamoto) +* [GitHub:#a09e7a2] - Remove - Code for IE6 (yamamoto) +* [GitHub:#3ae737b] - Refactor - DatePicker implementation (yamamoto) +* [GitHub:#0fb6a4a] - New DatePicker for DocManager and MM (yamamoto) +* [GitHub:#6772b8e] - Remove - Tigra Calendar (yamamoto) +* [GitHub:#8b5d0ba] - Fix - DatePicker not work at TV (yamamoto) +* [GitHub:#23eee22] - Fix DatePicker (yamamoto) +* [GitHub:#03335fb] - restore accidentally deleted ht.access in c2d4b4a83 (MrSwed) +* [GitHub:#1f26994] - #623 "Enable filters" link and russian translate (draft) (MrSwed) +* [GitHub:#2fc7c0a] - Improved - "Do you want to install now?" (yamamoto) +* [GitHub:#828cf4b] - New - DatePicker (yamamoto) +* [GitHub:#fdf3230] - New - Replace DatePicker (yamamoto) +* [GitHub:#d0f3ab5] - Items moved from top nav (Piotr Matysiak) +* [GitHub:#db7a18b] - Refactor - DatePiker loading script (yamamoto) +* [GitHub:#2611e1d] - ajax_loader for exportButton (yamamoto) +* [GitHub:#7afa3a2] - Update - jQuery v3.1.0 (yamamoto) +* [GitHub:#a948e7e] - To hide the action button before the transition by clicking (yamamoto) +* [GitHub:#9a7c367] - To hide the action button before the transition by clicking (yamamoto) +* [GitHub:#3352c39] - Revert - $modx->config['devmode_showhash'] @f25d102 (yamamoto) +* [GitHub:#3dc19b8] - Refactor (yamamoto) +* [GitHub:#fddc40a] - Minorfix (yamamoto) +* [GitHub:#5ddcb31] - #680 Added comment-tag (Deesen) +* [GitHub:#1a59f0a] - Version notices updated, still incomplete (Deesen) +* [GitHub:#b023925] - Improved layout (Deesen) +* [GitHub:#2855f51] - #623 Fix - Custom modifier name issue (yamamoto) +* [GitHub:#5888547] - Improved - [[snipName?p1&p2&p3]] (yamamoto) +* [GitHub:#18d426f] - #623 Refactor (yamamoto) +* [GitHub:#192538f] - #677 renamed "remove notice"-button to "rebuild checksums" (Deesen) +* [GitHub:#a06bc19] - #677 Improved system files checksum mechanismn: - show&log list of modified files - added "remove notice"-button to rebuild checksum quickly - requires permission "settings" (Deesen) +* [GitHub:#6445991] - Break lines nicely for captions/names longer than 500px & show name if caption is empty (Deesen) +* [GitHub:#deebbde] - Remove text-underline from .actionButtons a:hover (Deesen) +* [GitHub:#087a3e9] - Show also TV-caption, not only TV-name (Deesen) +* [GitHub:#dd05a62] - Show TV-name below TV-caption when having permission "edit_template" (Deesen) +* [GitHub:#eb21f38] - Minor fix (yamamoto) +* [GitHub:#90cacd2] - Fix - $modx->_snipParamsToArray() (yamamoto) +* [GitHub:#ae07452] - Minor fix (yamamoto) +* [GitHub:#3f9dee3] - Fix for PHP 7 - wordwrap modifier (yamamoto) +* [GitHub:#9e529d1] - #623 fix - MODIFIERS class into core (PHx) (yamamoto) +* [GitHub:#a0d033c] - #623 Fix - MODIFIERS class into core (PHx) (yamamoto) +* [GitHub:#5129cca] - Refactor top bar supplementalNav (Piotr Matysiak) +* [GitHub:#e29cefb] - Elements ul list spacing (Piotr Matysiak) +* [GitHub:#f4efdff] - Fix select width (Piotr Matysiak) +* [GitHub:#2b5e8dd] - Fix vertical align in role edit page 2 (Piotr Matysiak) +* [GitHub:#1a43386] - Fix vertical align in role edit page (Piotr Matysiak) +* [GitHub:#183a39f] - Fix td vertical align (Piotr Matysiak) +* [GitHub:#80d5bac] - Elements links underline on hover 2 (Piotr Matysiak) +* [GitHub:#89c4ed5] - Elements links underline on hover (Piotr Matysiak) +* [GitHub:#13605bf] - check class (MrSwed) +* [GitHub:#712e84b] - Properties value as is. Fix 0 value. (MrSwed) +* [GitHub:#6667f28] - Web access permissions style (Piotr Matysiak) +* [GitHub:#f23e1f4] - Reorder Tree Buttons (Piotr Matysiak) +* [GitHub:#ddff05c] - Improved Tree floater styles (Piotr Matysiak) +* [GitHub:#2ac195b] - Style update for Tree Buttons (Piotr Matysiak) +* [GitHub:#bd69c62] - Refactor Web user table/html (Piotr Matysiak) +* [GitHub:#55e8d84] - General styles update (Piotr Matysiak) +* [GitHub:#2e75e27] - Wider Tree iframe (Piotr Matysiak) +* [GitHub:#fc2a306] - Additional Tree Buttons (Piotr Matysiak) +* [GitHub:#6cec8a2] - User icon (Piotr Matysiak) +* [GitHub:#6febae8] - "Manage Elements" Tree Button style (Piotr Matysiak) +* [GitHub:#8683663] - #669 Added "Manage Elements"-Button (Deesen) +* [GitHub:#2683e96] - #623 New modifiers (yamamoto) +* [GitHub:#5e1c9ef] - #623 New modifiers (yamamoto) +* [GitHub:#1bd1f58] - Refactor (yamamoto) +* [GitHub:#c57c136] - #668 Minor fix (yamamoto) +* [GitHub:#4d20991] - modifiers.class - multi-line call (yamamoto) +* [GitHub:#91afbc1] - Added is_readable() (Deesen) +* [GitHub:#0c6ae53] - #645 Improved Help-Button - added tab "Documentation" - added tab "Version Notices" (content taken from assets/templates/help/version_notices) - added tab "Changelog" (moved changelog.txt from /install/ to assets/docs/) (Deesen) +* [GitHub:#7693c30] - #618, #636: Remember last user-settings for tree-sorting via DB-table "user_settings" (Deesen) +* [GitHub:#9c40e2b] - #659 Remember content after Duplicate Element-Error (Deesen) +* [GitHub:#ce99e39] - #658 Fix params for Webuser (Deesen) +* [GitHub:#f3f7957] - #662 Fix: Enable admins to preview unpublished pages (Deesen) +* [GitHub:#2e25bee] - Minor fix (installer css) (yamamoto) +* [GitHub:#3eab6da] - Add $modx->config['enable_filter'] (yamamoto) +* [GitHub:#4a5b6ac] - fix breadcrumbs on the page of manager. [-] TV var inheritance for new sub resource (MrSwed) +* [GitHub:#74902b0] - update some in doc parcer (Dmi3yy) +* [GitHub:#225bb2a] - update modxRTEbridge (Dmi3yy) +* [GitHub:#1e3898c] - fix codemirror (Dmi3yy) +* [GitHub:#47d035b] - eform parameters array_merge fix (Ricardo Lewis) +* [GitHub:#784e32f] - Changed "tmplvar_contentvalues" text to mediumtext #648 (yamamoto) +* [GitHub:#8fb3729] - Corrected readOnly-param for edit-mode (Deesen) +* [GitHub:#edf77b7] - readOnly-param (Deesen) +* [GitHub:#cb8865e] - Init Codemirror via OnRichTextEditorInit (readOnly) - https://github.com/modxcms/evolution/issues/652#issuecomment-222820593 (Deesen) +* [GitHub:#f0dbdcc] - Added readOnly-option (for file-manager) (Deesen) +* [GitHub:#235d26c] - Fixed CSS-highlighting - https://github.com/modxcms/evolution/issues/652#issuecomment-222936562 (Deesen) +* [GitHub:#5a799a9] - Fixed JS-error notice #646 (Deesen) +* [GitHub:#a3775c3] - Changed "tmplvar_contentvalues" text to mediumtext #648 (Deesen) +* [GitHub:#e17ec61] - Fix backup version-no, clearer "remove locks"-message (Deesen) +* [GitHub:#74723d4] - mm_ddMultipleFields: fix using tables in richtext https://github.com/MrSwed/MODXEvo.plugin.ManagerManager.mm_ddMultipleFields/commit/1156b3f812511d0518fe3c3e8af755fffa5dab5b (MrSwed) +* [GitHub:#c2d4b4a] - wayfinder, useReferenced: fix determine fields fix version. (MrSwed) +* [GitHub:#213f83a] - Fix: Display nothing instead of "Array" for none-existing chunks (Deesen) +* [GitHub:#fcc2d77] - Update mutate_menuindex_sort.dynamic.php (Mr B) +* [GitHub:#4956aee] - Fix #639 (Deesen) +* [GitHub:#581a58e] - Revert "Small fix" This is partial reverts commit 8637a79f62791e9232dec1332c2a864950b7dbfb. (MrSwed) +* [GitHub:#0a01e23] - Fix: Show all none-assigned TVs (Deesen) +* [GitHub:#df0a78b] - translates for 'Change Resource-Type' role (MrSwed) +* [GitHub:#f820b2e] - Set version (1.1.1-beta) update database while modx upgrade #531 (MrSwed) +* [GitHub:#0a49695] - Conditional tags (yamamoto) +* [GitHub:#9c2ed2b] - Fix - $modx->getField() (yamamoto) +* [GitHub:#fe8c8f4] - New - $modx->atBindInclude() (yamamoto) +* [GitHub:#ab82bc2] - New - $modx->atBindInclude() (yamamoto) +* [GitHub:#b12f60e] - Refactor - $modx->checkCache() (yamamoto) +* [GitHub:#14c3601] - Refactor - $modx->prepareResponse() (yamamoto) +* [GitHub:#43e8da2] - Refactor - $modx->getChunk() (yamamoto) +* [GitHub:#a01fad9] - MODIFIERS class into core (yamamoto) +* [GitHub:#f5092a3] - New - Set parameters to Chunk (yamamoto) +* [GitHub:#3b91c8b] - Small fix - [[Snip1?param=[[Snip2]]]] (yamamoto) +* [GitHub:#af39d78] - Improved - $modx->parseText() (yamamoto) +* [GitHub:#e5f1fbf] - Refactor - Fetch snippet call (yamamoto) +* [GitHub:#6703a07] - Improved - $modx->_split_snip_call() (yamamoto) +* [GitHub:#ca86fac] - Rename $modx->_get_snip_properties() (yamamoto) +* [GitHub:#529209f] - Convert tabs to spaces (yamamoto) +* [GitHub:#0a4dccb] - Refactor - $modx->mergePlaceholderContent() (yamamoto) +* [GitHub:#8131602] - Output PHP Super Global Values (yamamoto) +* [GitHub:#94b7a31] - Avoid php-error when pasting tplVars back-button (Deesen) +* [GitHub:#ccc2c92] - TinyMCE4-support (Deesen) +* [GitHub:#cf88f04] - Add pagetitle to tooltips when nodes show date-format (Deesen) +* [GitHub:#84a5d07] - Added checkbox&radio type to old scheme (Deesen) +* [GitHub:#3605a4a] - Bugfix "purge obsolete plugins"-button - keep latest version of disabled plugins (Deesen) +* [GitHub:#bd14dbc] - update DocLister (Dmi3yy) +* [GitHub:#3150df9] - update MODxAPI (Dmi3yy) +* [GitHub:#8ffabae] - Fix documentDirty for config-fields (Deesen) +* [GitHub:#f121f76] - same width as param-fields (Deesen) +* [GitHub:#e8a8482] - Small fix - don´t limit height for main code-input (Deesen) +* [GitHub:#5be6a8e] - Small improvements - use codemirror for editing JSON-capable configuration-fields - added JSON-format to module- & snippet-configuration (Deesen) +* [GitHub:#1e801ea] - KCfinder denyUpdateCheck => true (Dmi3yy) +* [GitHub:#8d1cf0e] - fix KCfinder png black background (Dmi3yy) +* [GitHub:#a0085cc] - Improved placeholder-/attribute-highlighting - update to CM v5.12.0 - small fixes (Deesen) +* [GitHub:#033c3fb] - Codemirror v5.12.0 (Deesen) +* [GitHub:#3408142] - Add modxRTEbridge to assets/lib (Deesen) +* [GitHub:#26c714c] - Avoid PHP-notice (Deesen) +* [GitHub:#3ca670a] - Support multiple richtext-TVs with {"editor":"Codemirror"}, reformat code (Deesen) +* [GitHub:#3e5285e] - OnRichTextEditorInit options-handling, call invokeEvent once per editor (Deesen) +* [GitHub:#1c55609] - Separated code into function getPluginCode() - extended JSON-pluginConfig (Deesen) +* [GitHub:#fca82a1] - Refactor - Replace tabs to spaces (yamamoto) +* [GitHub:#f76f054] - Refactor - $modx->mergeDocumentContent() (yamamoto) +* [GitHub:#c959d35] - Prepared parseProperties() to fetch params from Input-Options (Deesen) +* [GitHub:#b953eb8] - Added $modx->isJson() (Deesen) +* [GitHub:#1787d2d] - changed switch-labels (Deesen) +* [GitHub:#96631a5] - optional switch of nodename-source (Deesen) +* [GitHub:#e71d5d3] - Improved manager-tree - sort by "published on" - empty dates come first/last - tooltips with line-breaks - tooltips reveal more details now (Deesen) +* [GitHub:#9967c3a] - Pass TV input-options to RTE-plugins #388 (Deesen) +* [GitHub:#396edf9] - JSON-string now human-readable (Deesen) +* [GitHub:#f3755a2] - Improved plugin-configuration - converting old scheme to new scheme adds default-value - new types checkbox, radio - options support "label==value||label==value" - new "Set Default"-button - "Set Automatic"-button removes all events first (Deesen) +* [GitHub:#52f00e1] - Category (id) in all lists (Deesen) +* [GitHub:#e49eeeb] - add (id) for category in elements list (Dmi3yy) +* [GitHub:#0e26be2] - Plugin-configuration in JSON-Format (Deesen) +* [GitHub:#4ce8da3] - Revert "Update .gitattributes - Disable LF normalization" (yamamoto) +* [GitHub:#9ec4347] - Update .gitattributes - Disable LF normalization (yamamoto) +* [GitHub:#7d4d7de] - Added default-template info (Deesen) +* [GitHub:#e25070b] - Small fix CodeMirror (Yura) +* [GitHub:#f6c02cc] - fix for customTv type select (Dmi3yy) +* [GitHub:#8645e0e] - we can move hidemenu (Dmi3yy) +* [GitHub:#cfbe8cb] - Update editor_plugin.js (Mr B) +* [GitHub:#40ccf61] - Update editor_plugin_src.js (Mr B) +* [GitHub:#6a73b47] - Added documentDirty to tpl/tv-checkboxes (Deesen) +* [GitHub:#ca0cca6] - Avoid empty TV-names (Deesen) +* [GitHub:#753b749] - Consider $newid (Deesen) +* [GitHub:#48f98ab] - Sort templates by category, name (Deesen) +* [GitHub:#d26e745] - List templates like in native Tpl-list & catch $_POST (Deesen) +* [GitHub:#9aa3a59] - Display unassigned TVs like in native TV-management & catch $_POST (Deesen) +* [GitHub:#e0ffb3e] - Refactor $modx->parseProperties() (yamamoto) +* [GitHub:#c4dc6ef] - Force default template´s selectable = 1 (Deesen) +* [GitHub:#a14a5e7] - Refactor - $modx->parseProperties() (yamamoto) +* [GitHub:#85929f9] - Avoid trim spaces from Chunks (allows clean indented HTML) (Deesen) +* [GitHub:#d8bd7e8] - Allow styling of labels (Deesen) +* [GitHub:#5989528] - Set chmod after mkdir() (Deesen) +* [GitHub:#f25d102] - New - $modx->config['devmode_showhash'] (yamamoto) +* [GitHub:#8c142bb] - Minor fix (code indent) (yamamoto) +* [GitHub:#91aa032] - Refactor - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#6dbce8c] - Refactor - mutate.settings.dynamic.php (yamamoto) +* [GitHub:#1a48769] - jQuery into core (yamamoto) +* [GitHub:#24f4c3d] - Move event output below mootools.js (yamamoto) +* [GitHub:#6477345] - Fix sort by category (Deesen) +* [GitHub:#48ecaa2] - Exact same order as in assignedTvs-Tab (Deesen) +* [GitHub:#71d1a5f] - Preserve rankings of already assigned TVs (Deesen) +* [GitHub:#407877c] - Add space (Deesen) +* [GitHub:#edb1d05] - Bigger click-area.. (Deesen) +* [GitHub:#df7239d] - Added Yama´s sort-mechanismn to TemplateVars-Edit (Deesen) +* [GitHub:#fbef3fe] - Added edit-button for better UI (Deesen) +* [GitHub:#cc58041] - Refactor (yamamoto) +* [GitHub:#23af420] - Added ORDER BY tv.name for none-ranked TVs (Deesen) +* [GitHub:#d5d6fd4] - Remove unnessecary $_lang (Deesen) +* [GitHub:#a5225ab] - Minor fix (yamamoto) +* [GitHub:#bd0db33] - Show and hide furl settings using by jQuery (yamamoto) +* [GitHub:#f7b8cda] - Add showhide() - mutate_settings.dynamic.php (yamamoto) +* [GitHub:#75055d0] - jQuery into core (yamamoto) +* [GitHub:#de27178] - Improved (yamamoto) +* [GitHub:#5403dcd] - Add - jQuery into core (yamamoto) +* [GitHub:#69e27f2] - Remove - Deprecated TV widgets (yamamoto) +* [GitHub:#24bd8ed] - tabpane.js - Remove IE5.5 support (yamamoto) +* [GitHub:#2e7a04a] - #328 Add tab "not assigned TVs" to template-edit (Deesen) +* [GitHub:#15fe4f6] - Fix double $value['type']!="" (Yura) +* [GitHub:#c089635] - Fix install demo content (Yura) +* [GitHub:#cb7e15e] - Fix tabs (Piotr Matysiak) +* [GitHub:#8b6dc88] - #345 fix activeParentRowTpl for empty childs (MrSwed) +* [GitHub:#1697e50] - uniform formatting style (MrSwed) + + + +MODX Evolution 1.1 (Feb 29, 2016) +=================================== +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [GitHub:#41a5bcd] Fixing #356 Loosing content in chunk after saving and already exists +* [GitHub:#6d799af] [#364] Fixed issue for renderFormElements to provide default text (Fixed to only set value if field_value is empty) +* [GitHub:#90b1a91] Weblogin: - Retain remember me option … +* [GitHub:#dcd9656] Fix script error in View manager logs +* [GitHub:#3e6895d] Increase FileSource filebinding input field maxlength to prevent data loss +* [GitHub:#da4cf8a] Prevent PHP warning 'Key cannot be empty' … +* [GitHub:#32f0d65] Fix #396 getUserDocGroups(true) always returns only one group name +* [GitHub:#3cea34d] Weblogin: doesn't always clear $_SESSION['webDocgrpNames'] on logout +* [GitHub:#1b0148e] Fix #394 error in description of CodeMirror … +* [GitHub:#6cc4467] Fix/update confirmed working MODX version in CodeMirror plugin comment. +* [GitHub:#1c2e755] Value of properties in GUID on module creation. This bug is active since 1.0.13. Seems to be that creating modules is not an everyday task +* [GitHub:#8530858] Maybe missing permission check in refresh_site.dynamic.php +* [GitHub:#21e1aad] ManagerManager: non-breaking space. It interferes with the use of the ddmultifield +* [GitHub:#aca2a22] Minor fix - MODxHost template +* [GitHub:#30fd127] small calendar styles fix +* [GitHub:#7dec05a] Choose language translate +* [GitHub:#0dc2c0f] AjaxSarch Date format +* [GitHub:#395898a] fix DBAPI update( for NULL) +* [GitHub:#5a554f7] fix session_keepalive +* [GitHub:#dd25766] Ditto: Fix - Deprecated PHP Code "makeList" +* [GitHub:#75c9c0f] Fix - Slimming Paint rendering issue at Chrome … +* [GitHub:#14a94c6] Fix error render the default setting in the TV type date +* [GitHub:#cbce5e7] fix sendmail +* [GitHub:#175a18e] checkCache fix +* [GitHub:#9e09c4e] wayfinder config need include for multi use with other configs +* [GitHub:#a5d63f5] DB dumps do not disable foreign key checks +* [GitHub:#ef206b2] fix install with empty categoryes name +* [GitHub:#f65f4ed] Avoid double matches … +* [GitHub:#797bd91] fix emmet header footer for HTML5 +* [GitHub:#b631d61] fix bad SEO when using phpthumb #434 … +* [GitHub:#ac0cec4] Fixing, TransAlias removes a dot in file's format … +* [GitHub:#4bc76c5] #391 user/pw htmlspecialchars +* [GitHub:#2dd47e0] #391 username/data htmlspecialchars +* [GitHub:#93959ac] Avoid PHP-Error "File not found" +* [GitHub:#640309d] fix render settings +* [GitHub:#c7abc69] avoid php notice: undefined index… +* [GitHub:#e7ea0f7] Avoid PHP-Error/Data-Loss if path not exists +* [GitHub:#2bb4391] Issue #385 htmlspecialchars + windows-1251 +* [GitHub:#62a22ba] icon message unread +* [GitHub:#2772903] Problem with a plus-sign in email address with forgot manager password #428 +* [GitHub:#ef7a06d] if: fix for check [*content*] Issue #480 +* [GitHub:#8845642] export.class.inc.php #417 +* [GitHub:#9e0a1b9] makeUrl fails with site start and query string +* [GitHub:#92f6cda] Error counting published and unpublished comments in JOT #389 +* [GitHub:#f8ea894] Template Variable Type 'date' doesn't allow manual time + +-------------------------------------------- +Refactor: +-------------------------------------------- +* [GitHub:#aa2baae] Refactor manager api class: added missing return values, updated checkHashAlgorithm, removed superfluos variables, added missing variables +* [GitHub:#dfb0ac4] Display TV name during install +* [GitHub:#6f26656] Refactor - $modx->evalSnippets() +* [GitHub:#1cebc29] Refactor - $modx->getTagsFromContent() +* [GitHub:#6c098f5] Refactor - $modx->evalSnippets() +* [GitHub:#4e8b8da] Refactor - $modx->mergeDocumentContent() +* [GitHub:#2b56d5d] Update setup.sql Increase default max upload file size to 10MB +* [GitHub:#fb2f868] Wayfinder: for local references - use original document fields separated by comma (useful for set active if it is current, titles, link attr) +* [GitHub:#e77c169] Wayfinder: &useWeblinkUrl=`0` now work, no longer need to write &useWeblinkUrl=`FALSE` +* [GitHub:#27ebbe6] Ditto: no "start=0" in links of ditto pagination depending on modx setting seostrict +* [GitHub:#fa0348f] now we can use custom frame files from theme see (https://github.com/Dmi3yy/modx.evo.custom/tree/master/manager/media/style/D3X) +* [GitHub:#ca8bnow] you can change all action in theme without change in core +* [GitHub:#a842303] refactor search.static +* [GitHub:#c09c083] frameset to iframe +* [GitHub:#ed5396e] use Mysqli by default +* [GitHub:#1968b47] refactor MainMenu (https://github.com/modxcms/evolution/blob/develop/manager/frames/mainmenu.php) +* [GitHub:#6211a79] refactor cache_sync class, add some code for AliasListingFolder +* [GitHub:#7c6adaa] fix in postProcess +* [GitHub:#295ad92] Workaround for deprecated preg_replace() with /e modifier … +* [GitHub:#bdb542d] refactor BackTrace +* [GitHub:#e612f72] refactor getLoginUserName +* [GitHub:#03c5e28] refactor getLoginUserID +* [GitHub:#816af9c] refactor getChunk +* [GitHub:#93fa0fc] refactor runSnippet +* [GitHub:#26f86d0] refactor makeUrl for AliasListingFolder +* [GitHub:#7d3e99e] refactor logEvent +* [GitHub:#a7fd270] refactor getChildIds for AliasListingFolder +* [GitHub:#6f19c69] refactor getParentIds for AliasListngFolder +* [GitHub:#fa86662] refactor executeParser for AliasListingFolder +* [GitHub:#3c94596] refactor checkPublishStatus() +* [GitHub:#758817d] "Show in menu" moved to new row … +* [GitHub:#b229ca1] #444 (Installer & PHP 5.5+ ) +* [GitHub:#113ac4c] add php version in sysinfo +* [GitHub:#de360bd] autoload_register to spl_autoload_register +* [GitHub:#7fadc10] Create cache folder before creating .htaccess in it + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [GitHub:#a76c830] Add Ukrainian lang +* [GitHub:#0ca31ad] phpthumb: determination of the original image file extension +* [GitHub:#46e8457] phpthumb: encode decode cyr filenames +* [GitHub:#70d0c84] phpthumb: &q=96 makes no sense with png and gif +* [GitHub:#9b0a873] phpthumb: encode only returned filenames +* [GitHub:#bc501e0] phpthumb: larger nophoto image +* [GitHub:#563934c] Update eform.inc.php fix adding slash by vericode for HTML5 inputs +* [GitHub:#d2adb9d] eForm: Adding HTML5 input types +* [GitHub:#7be7aca] Wayfinder. Set id of reference to original document ID if it is innerdoc +* [GitHub:#63e6414] Starting the installation with the language of the user's browser +* [GitHub:#bc5a9eb] BreadCrumbs 1.0.5: add ignoreAliasVisible to BreadCrumbs +* [GitHub:#2e56507] Eform: add phone validate in Eform +* [GitHub:#89dc1ea] New - $modx->getField($field,$docid) +* [GitHub:#0c3fd0b] New - $modx->getUltimateParentId($docid,$top) +* [GitHub:#956c9ae] Cross-references from ClipperCMS: [*pagetitle@17*], [*pagetitle@parent*], [*pagetitle@ultimateparent*] ([*pagetitle@uparent*]), [*pagetitle@ultimateparent(17)*], [*pagetitle@alias(alias/path)*],[*pagetitle@site_start*] +* [GitHub:#5ddb8df] allow using asterisk for assign TVs to all templates +* [GitHub:#2ed509b] Update file browser KCfinder to 2.5.4 +* [GitHub:#eae7e74] Update CodeMirror to 1.2b +* [GitHub:#b7dc20f] the ability to pass arbitrary parameters in the snippet(so you can use them in the processing of events) +* [GitHub:#fcb6343] Wayfinder: add [+wf.iterator+] +* [GitHub:#907a1f2] view customTV in Select when choice tv type +* [GitHub:#1072d79] Add some events: OnMakePageCacheKey, OnDocFormUnDelete, onBeforeMoveDocument, onAfterMoveDocument, OnBeforeLoadDocumentObject, OnAfterLoadDocumentObject, OnBeforeLoadExtension, OnManagerMenuPrerender, OnDocFormTemplateRender, OnFileBrowserUpload, OnDocFormTemplateRender +* [GitHub:#2770263] ManagerManger(add mm_movecategorytotab) +* [GitHub:#] add AliasLiastingFolder in Setting -> Friendly URLs (tested with 1000000 documents, no more limits for documents) +* [GitHub:#07bac53] add function getCacheFolder +* [GitHub:#9372391] add function setConditional +* [GitHub:#09e0ba7] add function getTpl +* [GitHub:#769617e] ctrl + S, cmd + S now save in Manager +* [GitHub:#fe5a3e7] Add MODxAPI extend MODX Api +* [GitHub:#bcbe26e] add DocLister (https://rtfm.modx.com/extras/evo/doclister/) +* [GitHub:#1bb1710] add in DBAPI $modx->db->dataSeek +* [GitHub:#3a1c634] update _get_snip_result +* [GitHub:#97326f2] Added missing CSS-ID to "actionButtons" +* [GitHub:#95a9283] Add Extras module to core +* [GitHub:#0d95ec6] if: Added Expression "contains" +* [GitHub:#3b2547b] #328 Checkbox "selectable templates" #513 +* [GitHub:#3001fc6] #323 Chunks remember last selected+saved RTE + + + +MODX Evolution 1.0.15 (Oct 31, 2014) +=================================== +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [GitHub:#8721e56] Typo +* [GitHub:#6dc47ed] Wrong indents +* [GitHub:#c9267a8] Bugfix for "Context menu don't show if node has quotes." +* [GitHub:#7b8ad03] Wrong indents +* [GitHub:#6805efa] Not only "listbox-multiple" send array to POST +* [GitHub:#21bf185] Fix MYSQLI->fieldName() +* [GitHub:#8926b25] Fixing Bug: Only variables should be passed by reference +* [GitHub:#ee6e7a0] Don't show set_time_limit warning on host that have changing the time limit disabled +* [GitHub:#c02f75c] Richtext widget "undefined" output #341 +* [GitHub:#3151a01] changeWebUserPassword doesn't use md5 for a new password #304 +* [GitHub:#b7e665f] Update web_user_management.static.php +* [GitHub:#5c4bda6] Patch https://github.com/modxcms/evolution/commit/98e68cbab53dd6523bb65243a9a654263cd8423d +* [GitHub:#56357ce] fix makeURL +* [GitHub:#1d2bfdb] Fix - Can't work manager except utf8 +* [GitHub:#2da96f6] Wayfinder, move levelClass from li to ul http://c2n.me/iA951g +* [GitHub:#31f6759] $modx to $this +* [GitHub:#c2775fd] Fixed CodeMirror syntax HTML entity highlighting +* [GitHub:#13d0d6d] fix makeFriendlyURL for site_start +* [GitHub:#0f4aba1] eForm - Fix Invalid address error +* [GitHub:#71492ad] Delete unnecessary evaluate PHP code +* [GitHub:#d8872e7] Update media.js +* [GitHub:#022b755] Fix PHP Notices from document.parser +* [GitHub:#04cdccc] Bugfix - $id could be an integer and not a string. +* [GitHub:#0448cf7] fix uploader +* [GitHub:#b49e81e] show only allowed images in their folder +* [GitHub:#f5629f3] Skip all fields without name attribute in eFormParseTemplate +* [GitHub:#27d7adf] Bugfix - wrong quotes +* [GitHub:#7781b65] Small fix - smtp password field in system settings +* [GitHub:#d2b7cb0] fix http://joxi.ru/Y_SlUxjKTJBBH38Lv8U +* [GitHub:#9a121bc] Fixing $modx->makeUrl($modx->config['site_start']) should return '/' or $modx->config['site_url'] #2 +* [GitHub:#5266730] Fixes for phpthumb snippet - added temp folder creation – for open_basedir issues - updated phpthumb +* [GitHub:#dfbd44e] Bugfix for hideMenu parameter +* [GitHub:#6a23f91] New Security Feed! -> english.inc.php +* [GitHub:#cb5b0e0] Removed unused variables +* [GitHub:#be143a1] Removed wrong array keys +* [GitHub:#987f8b8] Output Content-Type header at messageCount +* [GitHub:#f7aecc4] Tools/Backup/Restore #275 +* [GitHub:#dfe0020] Webusers Not Showing Private Resources #273 +* [GitHub:#766e662] Fix for CJK multi byte environment +* [GitHub:#39ee732] Fixing issue with accounts not getting unblocked automatically (#267) and added some language string +* [GitHub:#a245648] Rename function name +* [GitHub:#102fe60] Fixing Wayfinder problems after upgrading MODX from 1.0.10 to 1.0.13 #226 +* [GitHub:#744fdcc] Hide META tags content in Resource Overview when META Keywords tab is set to no #283 +* [GitHub:#ea9ccdf] Quickfix for Refused to set unsafe header "Connection" #227 - removed setHeader("Connection", "close +* [GitHub:#43bcf75] Fixed some style issues + +-------------------------------------------- +Refactor: +-------------------------------------------- +* [GitHub:#0b82d66] Use of $modx->htmlspecialchars instead of htmlspecialchars +* [GitHub:#ace7999] htmlspecialchars be called with ENT_QUOTES +* [GitHub:#9c4d6f5] Avoid tampering cache file by escaping all keys and values - changing all $modx->db->escape to $this +* [GitHub:#3cdcffd] add , to errorRequiredSeparator in eForm +* [GitHub:#d8ec4ce] Typo - When you need to get one field, need use the db->getValue() +* [GitHub:#b20c22b] Update style.css +* [GitHub:#db56a5f] insideManager is deprecated +* [GitHub:#8deface] Uniform style code for int of $_REQUEST['id'] +* [GitHub:#3eceb21] Uniform style code for int of $_REQUEST['id'] in mutate_* Remove unnecessary checks +* [GitHub:#92b0d75] Updated AjaxSearch - Documentation in markdown format - Changed module/snippet/plugin code from txt +* [GitHub:#1ea15af] Set default: Send mail on MODX errors = not notify #289 +* [GitHub:#645503e] Update modxmailer.class.inc.php +* [GitHub:#c7f6d34] Wayfinder, revert levelClass, add outerLevelClass +* [GitHub:#5c97732] Update uploader.php +* [GitHub:#51c473f] Update config.php +* [GitHub:#d9c3cda] Update mutate_user.dynamic.php +* [GitHub:#acbaf8b] Refactor - Calling method of deprecated-function +* [GitHub:#aef110e] Refactor - $modx->makeUrl() +* [GitHub:#3715940] typo fix +* [GitHub:#39a62fb] Replace insideManager() to isBackend() +* [GitHub:#855fc76] Refactor - $modx->isFrontend() +* [GitHub:#2d86096] Refactor - $modx->isBackend() +* [GitHub:#1849346] Refactor - File browser settings +* [GitHub:#6a87f51] Set $modx->config['server_offset_time'] +* [GitHub:#be2f392] + The “OnDocFormPrerender” and “OnDocFormRender” events now have the document template ID parameter. +* [GitHub:#caf0f98] Add placeholder for PHP version in language files +* [GitHub:#8752559] Add "level" to the "wrapperLevel" placeholders +* [GitHub:#1f76491] Refactoring #265 - new parameters: errorTpl, errorRequiredTpl, errorRequiredSeparator +* [GitHub:#eb3a458] Remove changes added during #90 - Hexadecimal entities not needed anymore for MODX tags +* [GitHub:#66255dc] Change DOCTYPE declaration(HTML5) +* [GitHub:#696a8d6] Remove semicoron +* [GitHub:#9ab2678] Added support for lastRowTpl that will apply to last row of a list +* [GitHub:#a98fe41] Update KCFinder Dutch language file +* [GitHub:#576e210] Remove "?>" from end of php file +* [GitHub:#0fc2ccb] Update tagging.extender.inc.php + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [GitHub:#b74b11b] update mm to 0.6.2 +* [GitHub:#1e22788] Update Wayfinder to 2.0.4 +* [GitHub:#e0c80f3] Update eForm to 1.4.6 +* [GitHub:#55b4471] Updated Languages from Transifex +* [GitHub:#2aad3e3] Updated languages from Transifex +* [GitHub:#f1f53d3] Updated languages from Transifex +* [GitHub:#6166167] Updated Dutch language +* [GitHub:#3dd0c82] Added Ukrainian Language to Transfix +* [GitHub:#6a97faa] Updated Languages from Transifex +* [GitHub:#9a0eb01] add ukranian lang for eFrom and AjaxSearch +* [GitHub:#d19102d] Update english-british.inc.php +* [GitHub:#ac38129] MYSQLI Extender +* [GitHub:#f53d739] New feature: Allow searching of resources by template ID used. Include language strings for English +* [GitHub:#0c98bec] update logo +* [GitHub:#ceee98f] add ssl to smtp mail setting add alias_listing in breadcrumbs plugin add one more type in Ditto filt +* [GitHub:#c264569] Support for encoding windows-1251 in the emails +* [GitHub:#98e68cb] Change publishedon, set value from current time to pub_date +* [GitHub:#a2a3a57] Fix save mutate_content form on press Enter in input field +* [GitHub:#41048c3] add .tpl, .less, .sass for View/Edit in FileManager +* [GitHub:#7f05792] Allow load any extension without changing the core code +* [GitHub:#45f08ec] datepicker localization +* [GitHub:#0c29ed0] select/deselect all templates for tv +* [GitHub:#6b468fb] French translation for 1.0.14 +* [GitHub:#f4a559b] Updated polish and brazilian portuguese languages from Transifex Thanks to Raphael Mendonça & Piotr +* [GitHub:#ad335ad] Re-Added Breadcrumbs snippet commented documentation #236 +* [GitHub:#6e0fd11] Updated swedish language +* [GitHub:#03a1e04] Première version complète de la traduction pour la 1.0.14 +* [GitHub:#45cb1ff] Début de traduction pour la 1.0.14 +* [GitHub:#a761a63] mise à jour des messages de gestionnaire de fichiers + +-------------------------------------------- +Security: +-------------------------------------------- +* [GitHub:#a293ec6] Set secure flag to prevent cookies to be leaked via non encrypted requests. +* [GitHub:#d798a2a] config.inc.php to have setcookie specify httponly +* [GitHub:#38cbdaa] Sameorigin header +* [GitHub:#e62d961] Prevent XSS +* [GitHub:#3e7f9bd] Avoid XSS - $modx->htmlspecialchars or explicit integer casting on $_GET/$_POST values +* [GitHub:#3373321] Close SQL Injection + +MODX Evolution 1.0.14 (Jun 05, 2014) +=================================== +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [GitHub:#f233bf0] Error in resource lib +* [GitHub:#8958b7c] Empty template error +* [GitHub:#99d6824] Web user view ico +* [GitHub:#c5cfa3e] weblogin.processor.inc.php missing fields +* [GitHub:#9f404dd] If (not_empty) +* [GitHub:#40a7d49] Export not cacheable resources +* [GitHub:#6fcde64] Cool explode() bug +* [GitHub:#a02dcce] WebLogin +* [GitHub:#8d7f933] weblogin.processor.inc.php +* [GitHub:#5738f4c] htmlspecialchars_decode should be executed for the reports if sent as html +* [GitHub:#fa0b0ad] weblogin.processor.inc.php +* [GitHub:#8829799] Warning issue: (superfluous) default object created from value +* [GitHub:#9adc29a] Unset parameters in $modx->messageQuit call +* [GitHub:#40229ea] phpthumb, bkmanager +* [GitHub:#f755592] logEvent +* [GitHub:#b7b9ed1] Typo in PHx class for ditto +* [GitHub:#8f5f0bc] Typo in document.class.inc.php +* [GitHub:#448ddb7] Typo in delete_role.processor.php +* [GitHub:#fd4ce0e] Path for example in document.class.inc.php +* [GitHub:#e88c78d] Typo in document.parser.class.inc.php +* [GitHub:#852093b] Possible fix for valid cache file file_exist check but not found file +* [GitHub:#e6ca725] Missing error message in evalSnippet/evalPlugin error +* [GitHub:#488c893] Wrong language string used when renaming existing snippet with duplicate name +* [GitHub:#9a7b2bb] Plugin save logic is updated so that it allows duplicate names for disabled plugins. Duplicate names among activated plugins are still prevented. +* [GitHub:#7ca2938] Access Permissions error +* [GitHub:#fc29642] Send mail at $modx->logEvent() +* [GitHub:#751d22e] Lost installer image file +* [GitHub:#5b87dd6] Wayfinder - Small fix +* [GitHub:#cc65308] Wayfinder - Small fixes +* [GitHub:#41ad3c4] Wayfinder - Fix +* [GitHub:#e3da37d] Wayfinder - Fix undefined variable +* [GitHub:#80486bb] Wayfinder - Fix htmlentities +* [GitHub:#52bae77] Wayfinder - Fix fetch template +* [GitHub:#3cb3d0b] Wayfinder - Fix Read config +* [GitHub:#b239aa8] Wayfinder - Fix +* [GitHub:#f9d09ff] Fix +* [GitHub:#7e668ac] Fix - $modx_textdir +* [GitHub:#0bb19bf] Wayfinder - Fix empty value of alias +* [GitHub:#243ec89] Charset and Collation Charset not showing +* [GitHub:#c4f18f6] 'Array is currently editing these settings' +* [GitHub:#3608861] tinyMCE style for use in custom manager theme +* [GitHub:#78bc5f3] $modx->getSettings +* [GitHub:#dd5d8f3] Fix - Don't parse EVAL binding at the TV form +* [GitHub:#b3ab833] Update value+1 in login.processor +* [GitHub:#c15a609] fix resourse.php +* [GitHub:#3d9186f] Ditto - &noResults parameter doesn't work +* [GitHub:#eea2a6b] Wayfinder sets "last" class to all items +* [GitHub:#39a2e5c] $modx->sendmail() cc and bcc +* [GitHub:#1bcc38e] $modx->sendmail() $param['from'] +* [GitHub:#cb69e7d] TinyMCE - toolbar style +* [GitHub:#8d55236] Requirements not checked php version +* [GitHub:#b30c2e2] Tools>Export - language entry + +-------------------------------------------- +Refactor: +-------------------------------------------- +* [GitHub:#006b40c] Refactor resource lib +* [GitHub:#0448020] eForm: Remove not needed function parameter +* [GitHub:#93ba7f9] Removing superfluous variables +* [GitHub:#c9fd858] Removing unused keys +* [GitHub:#9d8f797] Code issues: Removed unused code, fixed missing semicolons, corrected DocBlock declaration +* [GitHub:#7c79471] Code issues: Removed semicolon +* [GitHub:#49c0ed6] Delete unused code +* [GitHub:#c6d5136] Change escape logic in logEvent - substr non-escaped source - send mail with non-escaped source +* [GitHub:#5ce9296] Use db->escape() instead addslashes() +* [GitHub:#781a578]
    only if count roles > 0 +* [GitHub:#428b523] Disable direct call of filesource/plugin.filesource.php +* [GitHub:#7fdf3c2] Fixes in QM+ - get "Individual user language setting" from session (mgrUsrConfigSet) - use MODX_MANAGER_PATH instead MGR_DIR for include() - delete unused modx->getDocument() call +* [GitHub:#2ff654f] Use MODX_MANAGER_PATH for include +* [GitHub:#6c4f6b4] Add more debug info about query +* [GitHub:#3fac66b] Use clearCache('full') +* [GitHub:#4aca668] Show snippet params in debug info only if it's present +* [GitHub:#e74aee6] Stop the unnecessary call recursive functions +* [GitHub:#e5fb3aa] Use new 'all' param +* [GitHub:#98acdd6] MariaDB. POSIX collating elements are not supported +* [GitHub:#7300f38] Update TinyMCE default width to 100% +* [GitHub:#21f3463] Sort cached parameters +* [GitHub:#3bfdfd7] Send user processor mails as text. +* [GitHub:#ccbe3b9] Use modx_charset for non japanese languages als mail charset +* [GitHub:#651e846] Send system mails as text More detailed error mail +* [GitHub:#65b9087] New design of installer like Revo +* [GitHub:#89e5c14] Wayfinder - Use __construct() +* [GitHub:#74fea39] Keep original publish state, publishedon, publishedby on save +* [GitHub:#0da61aa] Updated Japanese Language - thanks to Mika Kobayashi +* [GitHub:#3e7cd8c] $virtualDir= $this->config['virtual_dir']; +* [GitHub:#07960d2] Use published='all' for one query +* [GitHub:#9b0c95d] Info about character_set_database and collation_database +* [GitHub:#a23ec37] Now we can specify document ID if needed +* [GitHub:#7dafcf8] DB request only made if $hereId != $modx->documentObject['id'] +* [GitHub:#64d730f] sample-robots.txt added Disallow: /assets/packages/ +* [GitHub:#ed0d697] Delete unnecessary bold tags + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [GitHub:#cd61342] Updated polish language +* [GitHub:#cb6e8be] Updated Finnish Language - thanks to Kari Söderholm +* [GitHub:#c938674] New feature - @@EVAL at the TV form +* [GitHub:#79e1f0f] Added polish eForm language - thanks to Piotr Matysiak +* [GitHub:#f9eeb72] Updated Finnish language +* [GitHub:#9c14e64] Update - TinyMCE 3.5.11 +* [GitHub:#3a920f1] MODX DBAPI->disconnect() is incomplete + +-------------------------------------------- +Security: +-------------------------------------------- +* [GitHub:#b875144] SQL injection vulnerability in manager +* [GitHub:#f466faf] Fix possible SQL injection vulnerability in manager +* [GitHub:#45f47c6] Fix possible XSS vulnerability in manager +* [GitHub:#0919124] Harden index-ajax.php +* [GitHub:#13eac12] Update AjaxSearch to 1.10.1 - Security/Bug fixes + +MODX Evolution 1.0.13 (Feb 23, 2014) +=================================== +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#10073] Define in php < 5.3 +* [#10076] Undefined variable in manager panel +* [#10173] mm_rules hide tv needs to hide split too +* [#10177] Add - Ditto language entry +* [#10192] 500 error with save setting if install in subfolder +* [#10195] Lost tinyMCE theme full +* [#10196] [+prefix+] -> $modx->getFullTableName($tableName); +* [#10198] Codemirror template +* [#10200] Translation on transifex not possible +* [#10203] @Binding does not work the same +* [#10212] Version 1.0.12 doesn't seem to work with Reflect +* [#10225] Increment method Resource ID - Incomplete? +* [#10235] Webuser can't change Email +* [#10236] [phpthumb] source filename bug +* [#10239] mm_rules.inc.php in russian +* [#10240] Improve onchange trigger for file/image input +* [#10266] Error if start_page have get +* [#10273] TinyMCE compatibility with IE11 +* [#10283] modx_sanitize_gpc problem +* [#10284] modx_sanitize_gpc breaks eForm +* [#10293] eForm: when using ccsender, 'to' address is visible +* [#10308] easy2gallery menu not visible +* [#10309] Don't save SMTP password if field was emptied manually +* [#10336] eForm sendAsText and htmlspecialchars +* [#10339] eForm: retain classes for checkboxes (and other form fields that have a name attribute with an array) +* [#10348] Ditto Debug issues +* [#10356] Closing chunk tag confuses the parser +* [#10357] Ditto does not work in @EVAL +* [#10358] FCKEditor && $_SERVER['HTTP_HOST'] with port +* [gitHub] AjaxSearch: Adding charset header in Ajax Mode +* [gitHub] $key could be empty if the placeholder tag is not closed or if it is directly closed +* [gitHub] Fix for not set $_SESSION key +* [gitHub] Ditto: Fix outerTpl +* [gitHub] Fix - Save button in file manager +* [gitHub] Fix missing calendar icon +* [gitHub] Bugfix for closing opt group tag +* [gitHub] Restored textareamini +* [gitHub] Don't save SMTP password if field was emptied manually +* [gitHub] Codemirror: matchBrekers fix and turn on by default +* [gitHub] Full request url in messageQuit +* [gitHub] Fix SQL error when calling optimize method +* [gitHub] Fix backup format file Y-m-d_H-i-s - now new always top +* [gitHub] Clean filenames with KCFinder - use of TransAlias class and plugin settings +* [gitHub] CodeMirror fails to refresh in QuickManager+ + +-------------------------------------------- +Refactor: +-------------------------------------------- +* [#10278] Update ManagerManager built-in fields for 1.0.12 +* [#10178] Set permission to config.inc.php when install +* [#10208] Improvement several text strings +* [#10271] Modify save button position in file manager +* [#10300] Allow array parameter in phpthumb snippet +* [#10349] FirstChildRedirect options +* [#3137] save_content.processor.php site_start save condition tune. (not old-date set) +* [#3159] $_lang['install'] button is changed to $_lang['btnnext_value'] button. +* [#3154] Datebase name default value should be empty. +* [gitHub] The item of "Update" is concealed at a new installation. +* [gitHub] Manager Users - List item tuning. Many user env useful. +* [gitHub] View manager logs - grid view tune +* [gitHub] Reformatted indents and changed double quotes to single quotes in merge functions +* [gitHub] Reworked eval snippets/plugin functions and MODX error level detection +* [gitHub] eForm: Retain classes for checkboxes (and other form fields that have a name attribute with an array) +* [gitHub] eForm: validation messages with span (for better styling with css) +* [gitHub] Trigger change event for file/image inputs +* [gitHub] Add css class to displayparams table, removed inline style +* [gitHub] Use same tags and styles as other fields in manager. +* [gitHub] Netbeans doesn't like 'and' as classname +* [gitHub] Updated language files +* [gitHub] Change nicesize +* [gitHub] Change snippetsCode out +* [gitHub] Change input size in access permissions +* [gitHub] Correct preview link +* [gitHub] Restore view_eventlog permission on site_shedule +* [gitHub] Make one point to clearCache and add params +* [gitHub] Rename MODx to MODX +* [gitHub] Language files for core and core snippets are now handled by Transifex +* [gitHub] Changed ConvertDate to direct call $modx->toTimeStamp +* [gitHub] Change "event->alert"+"include mutate_*" to "manager->saveFormValues"+ webAlertAndMsg +* [gitHub] Change webAlert() to webAlertAndQuit() and mode webAlert() to deprecated.functions.inc.php +* [gitHub] Use while in db->makeArray() +* [gitHub] Use db->makeArray(), db->getColumn() instead of loops +* [gitHub] Change db loops style from for to while +* [gitHub] Change nicesize() to $modx->nicesize() +* [gitHub] update $modx->getDocuments +* [gitHub] update $modx->getTemplateVars +* [gitHub] update $modx->getTemplateVarOutput +* [gitHub] update $modx->getDocumentChildren +* [gitHub] update $modx->getDocumentChildrenTVarOutput +* [gitHub] update $modx->getDocumentChildren + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [gitHub] Wayfinder: ability to use all document fields like [+longtitle+] or [+pagetitle+] +* [gitHub] Wayfinder: ability to @INHERIT custom TVs +* [gitHub] WebLogin: @FILE ability for &tpl +* [gitHub] Manager with role = 1 can see all documents in frontend and backend +* [gitHub] Setup module depedencies +* [gitHub] in manager now can go to selected tab from url with &tab=# +* [gitHub] CodeMirror: new shorts for emmet +* [gitHub] the method “$modx->parseText” which parses a text has been added. +* [gitHub] Improve file/image set url for inputs that are not direct children of the form (i.e. in a colorbox) +* [gitHub] Add backtrace info to dumpSql +* [gitHub] Add dumpPlugins & pluginsCode out +* [gitHub] Add hide plugin in sort +* [gitHub] Patch findTemplateVars for compatibility with HPx +* [gitHub] Add ID in QM+ toolbar. +* [gitHub] add ID in title for edit document +* [gitHub] update ManagerManager to 0.6.1. +* [gitHub] update ajaxSearch to 1.10.0. +* [gitHub] update Wayfinder to 2.0.2. +* [gitHub] update Eform to 1.4.5. +* [gitHub] Breadcrumbs 1.0.4 (option to hide pages with certain templates from crumbs list) +* [gitHub] phpthumb 1.2 (not include phpthumb class if have resized images) +* [gitHub] KCFinder - Remove superfluous update check from kcfinder +* [gitHub] Automatic create .htaccess in cache folder if it is a subfolder of assets/cache +* [gitHub] FirstChildRedirect 2.0 + +-------------------------------------------- +Security: +-------------------------------------------- +* [gitHub] Prevent XSS exploits misusing the site_url system setting + + + +MODX Evolution 1.0.12 (Sep 12, 2013) +=================================== +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#10190] fix lang (spanish, russian, nederlands) + + +MODX Evolution 1.0.11 (Sep 11, 2013) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#9933] insideManager - security fix +* [#10180] ForgotManagerPassword - Improvement reset url + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#9823] IE 10 -> FCK editor is blank +* [#9848] System Configuration screen layout issues with IE10 +* [#9865] Fix ManagerManager field rules +* [#9870] critical--> Login won't let mgr, web users login with special characters in password +* [#9875] Wayfinder: parametrize entity encoding title, linktext, introtext, description +* [#9899] font-family Arial for manager +* [#9910] superfluous " before 'new module' +* [#9920] Quickmanager+ 1.5.5 Frontend-editing +* [#9921] Quickmanager+ 1.5.5 inline template variable buttons not saving (furl on) +* [#9932] load TVs only if template not _blank +* [#9936] /assets/js/ being used? +* [#9938] eForm: email field and ccsender/automessage +* [#9959] SEO Strict URLs 301 redirect +* [#9977] datapicker not work in IE9 +* [#9989] Cannot change email address for an exisiting web user +* [#10008] eForm: allow tag attributes with '-' inside +* [#10010] Fix - Define MGR_DIR +* [#10028] Fix - RewriteRule +* [#10059] error when install sampleData +* [#10060] Template Variable Date Picker CSS Z-Index problem +* [#10065] TinyMCE theme full not working +* [#10066] check in install backup and .thumbs writable? +* [#10068] tinyMCE no add images from KCfinder +* [#10090] TinyMCE: Parameters aren't being passed through properly +* [#10091] ManagerManager Javascript failing as jQuery is not installed +* [#10105] Need encode plugin parameters +* [#10109] Fix Tab pane ID +* [#10115] Fix table structure at the new install +* [#10117] Set "0" default template ID +* [#10119] Fix - Table structure upgrade sql +* [#10123] update managermanager to 0.3.11 +* [#10142] database name with "-" +* [#10153] Can not update block user status when login +* [#10162] Multi line @EVAL statement +* [#10171] Ditto - TV name issue +* [#10176] Ditto rss format - Missing link element +* [#10181] FMP - Can not login when CAPTCHA mode + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#3870] Consistent email API needed +* [#4305] Webuser/Manageruser records don't have "City" +* [#9714] return object or array after RunSnippet +* [#9763] Auto rotation logs +* [#9886] add phpthumb snippet +* [#9887] add * @internal @disabled 1 to install plugins +* [#9888] add CodeMirror plugin +* [#10011] New function - $modx->getIdFromAlias() +* [#10024] new event in core (onTreePrerender, onTreeRender , and more) +* [#10027] Auto generate .htaccess +* [#10036] Add new events into manager menu +* [#10045] eForm - Replace mail function to new mail API +* [#10047] Add SMTP for send mail +* [#10049] add new theme (MODxRE) +* [#10051] add CodeMirror for file-manager +* [#10054] New DBAPI function - $modx->db->optimize() +* [#10124] Intsrement method Resource ID +* [#10125] Add new function - $modx->sendmail() +* [#10137] Add new event OnLoadDocumentObject +* [#10138] Generate cache for each $_GET parameters +* [#10160] email notifies of system error +* [#10186] alias_visible - ignore parent in url(optional) + +-------------------------------------------- +Refactor: +-------------------------------------------- +* [#3432] Use menutitle instead of Pagetitle in doc_tree +* [#3757] Update phpmailer +* [#3833] Default template in root when Sibling is checked +* [#4440] change MODxCarbon/style.css to make manager look better in chrome +* [#4449] Improve search functionality +* [#5972] Installer should check whether $_SESSION data is being correctly saved +* [#9706] Convert language files encoding +* [#9707] Translate error messages +* [#9720] Deprecated core functions +* [#9727] invokeEvent in save_password.processor.php +* [#9795] Remove hard coded style +* [#9797] Fetch tags without using the regular expression +* [#9816] Add gender option +* [#9845] [SOLVED] Snippet Parameters cannot use Chunks? +* [#9849] Replace to DBAPI functions +* [#9858] Extend 'Important System Files have been modified' message +* [#9860] Delete Etomite database functions +* [#9861] Should be core files line feed code is "lf" +* [#9863] Convert to utf8 all core files +* [#9873] Abstract parser statistics to own method +* [#9884] /manager/ to MODX_MANAGER_PATH +* [#9891] Delete phpSniff +* [#9911] Update AjaxSearch to 1.9.3b +* [#9922] german.inc.php (and other lang files) +* [#9931] getPlaceholder return null if not exist +* [#9934] Display caption for TV on TVs tabs +* [#9939] eForm: multiple event functions separated by comma +* [#9940] refactor exec mergeSettingsContent +* [#9969] appeal to the module only through GET +* [#10025] Cache documents with $_GET (optional) +* [#10026] SEO Strict URLs (optional) +* [#10037] Fix - Default value ($modx->config['use_alias_path']) +* [#10038] added sorting when viewing children documents +* [#10039] permit duplicate aliases in different folders +* [#10044] IE layout issue in manager tree +* [#10046] eForm - Delete set charset +* [#10048] Description of phpthumb snippet english translation +* [#10050] Replace MCPUK to KCFinder +* [#10055] Use placeholder in language files +* [#10058] Update core language files +* [#10062] Change MODx -> MODX +* [#10071] fix snippets and plugins for smaller cache file +* [#10097] htmlspecialchars in >PHP 5.4 no longer defaults to ISO-8859-1 +* [#10100] Add PHP compatible functions +* [#10103] Add label tag on checkbox fields +* [#10104] Add bold style on selected checkbox fields +* [#10106] Add tab pane to template var edit +* [#10107] Set default template at new template var +* [#10108] TinyMCE - Separation toolbar settings from functions.php +* [#10110] Add actionButtons class to elements list +* [#10111] Add primary button class +* [#10112] Add properties tab into elements edit +* [#10113] Set custom widget default value +* [#10114] Ajust role settings screen +* [#10116] Add primary key to tables +* [#10118] Add index key to site_content table +* [#10120] 01-01-1970 01:00:00 when "0" +* [#10126] Rewrite Export Static HTML function +* [#10127] Rewrite Import HTML site function +* [#10131] Update jQuery version +* [#10132] QM - Update jQuery ColorBox plugin +* [#10139] Show templateWarning message when only documentDirty +* [#10144] add OnManagerNodeRender, OnManagerNodePrerender +* [#10148] Message check time interval in manager is very short +* [#10149] Use placeholder filemanager_path and rb_base_dir in settings value +* [#10156] Improvement $modx->getDocuments() parameter value +* [#10161] Remember last tab in access permissions pane + + + +MODX Evolution 1.0.10 (Apr 18, 2013) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#9704] LFI in mutate_settings.ajax.php +* [#9802] Security feature - Check falsification of system files + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#3449] Datepicker bug in Opera +* [#3493] unnecessary slash in MAGPIE_CACHE_DIR +* [#3533] AJAXSEARCH-82 : can't define configuration file name with "@FILE:" prefix +* [#3698] AJAXSEARCH-85 : Wrong URL construction when using an array of values (checkboxes) +* [#3783] Superfluous code in getTemplateVars +* [#3847] Wayfinder does not apply lastClass if there is only one item +* [#4088] web user photo from other site not correct +* [#7033] incorrect unzip in file manager +* [#7541] Upgrade of Existing Site - Error due to single quote in plugin properties +* [#8909] Publication schedule don't use server_offset_time setting +* [#9670] Can't log into upgrade install +* [#9671] TinyMCE - Rewrite Japanese string +* [#9678] eForm documentation +* [#9679] Warning during Installation +* [#9687] Dashboard logo background is not transparent +* [#9688] Can not make new manager user +* [#9694] Undefined property: DocumentParser::$mstart +* [#9695] bug with add images from FCKeditor +* [#9696] ImageEditor fix for php5.4 +* [#9697] seturl_js_tinymce incorrect path +* [#9702] no string in language pack +* [#9703] fake settings_version +* [#9705] Snoopy.class.inc - File encode issue +* [#9708] Improvement event log message +* [#9709] Undefined variable error +* [#9711] TinyMCE - two editor's plugins missing +* [#9729] new tinylogo for qm plugin +* [#9730] PHP error causes Tiny MCE Link List v1.0.3 to fail [Fix included] +* [#9732] Template Var label CSS display:block [Includes FIX] +* [#9733] mutate_web_user.dynamic.php fails to sanitize user entry +* [#9745] cant create and edit web_users +* [#9755] @INHERIT being output in page code +* [#9760] Style issue +* [#9762] MODX Installer foiled by single quotes in TinyMCE Custom Parameters? +* [#9779] Trouble with site after upgrade JSON no longer working +* [#9791] File browser - Undefined index error +* [#9803] Error call datepicker in IE9 on Date Publication +* [#9812] Issue of manager theme setting in user +* [#9813] Error during Advanced Upgrade +* [#9817] File browser file name issue +* [#9822] Constant MGR_DIR already defined in config.inc.php +* [#9823] IE 10 -> FCK editor is blank +* [#9829] hardcoded style + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#3151] @Bindings commands enable/disable +* [#3730] Entity encode Wayfinder placeholders +* [#3746] don't show New Module button when user's role lacks that permission +* [#9582] Add new config "Detection level of the PHP error" +* [#9613] MODX Carbon Login page +* [#9665] add more content type (json) +* [#9673] Improvement some translations +* [#9682] modx::getVersionData() +* [#9683] trusted folder/file in index-ajax.php +* [#9684] Remove entity encoded MODX tags in stripTags +* [#9692] Escape strings in array data +* [#9693] When use mysql_real_escape_string, execute mysql_set_charset beforehand +* [#9764] german translation (german.inc.php) string: udperms_message +* [#9766] Icon size hardcoded in welcome.static.php +* [#9767] Files in assets/templates/manager should get moved into the theme folder +* [#9776] Adding seo strict urls functionality to parser +* [#9778] Added ability to use custom templates to login and manager lockout pages +* [#9785] Add new placeholder to manager theme +* [#9786] Change MODx -> MODX +* [#9787] Add new config for manager layout +* [#9790] Rename - title of mcpuk file browser +* [#9810] Change new logo +* [#9818] TransAlias plugin - Add property values +* [#9819] TransAlias plugin - Add translation table +* [#9831] Change MODx -> MODX in installer and sample contents +* [#9832] Change forum url +* [#9837] Indicate inheritanced template variable + + +MODX Evolution 1.0.9 (Mar 19, 2013) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#3796] MODX security issues +* [#8338] LFI in browser.php +* [#8339] LFI in install +* [#9621] SQL-injection in logEvent +* [#471] Show custom error page if mysql is down +* [#9624] Add .htaccess into assets/cache/ + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#2893] document parser crop value of param when contain ?&= +* [#3495] Mistake in phpSniff.core.php +* [#3582] [ManagerManager] showimagetvs widget TV dirty check issue +* [#3676] Ditto: german language file is corrupt +* [#3689] Ditto relative to absolute url bug (with possible fix) +* [#3724] Magic GPC Quotes issue in PHP 5.3.* +* [#3835] Multiple call wayfinder with config, not load config in second call +* [#4484] bug in wait.static.php +* [#5403] Maximum upload size not honoured +* [#5807] manager.lockout not styled properly +* [#6119] sendMailMessage in save_web_user.processor.php +* [#7204] eForm in eFormParseTemplate $formats and $labels are declared as string but they are used as array +* [#7459] Deprecated function 'split' used in includes/datefunctions.inc.php +* [#9398] eForm & php 5.3 +* [#9547] ManagerManager Tv-transfer options with multiple choice in a new tab +* [#9548] cant modify the customTV(multiTv or other without type input) with ManagerManager +* [#9549] page not index in yandex if use FirstChildRedirect +* [#9550] Breadcrumbs not have crumbSeparator +* [#9563] onManagerMainFrameHeaderHTMLBlock event issue +* [#9580] Bug in processors/delete_content.processor.php on line 40 +* [#9586] Quick Manager and system setting Automatic Template Assignment +* [#9620] Set Manager language in Create/Edit User + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#9570] Detailed log message +* [#9554] add Snippet IF +* [#9566] Improvement to full table name call +* [#9567] Add "limit" option to $modx->db->delete() +* [#9568] @Bindings enable/disable option in System configuration +* [#9569] Password hash algorithm +* [#9582] Add new config "Detection level of the PHP error" +* [#9615] Add new function for documentParser "$modx->nicesize()" +* [#4051] german transliteration for transalias plugin +* [#5971] Check whether manager template exists during manager login +* [#9545] PHP 5.4 compatibility +* [#9556] add memomy view to statistics for the modx parser [^m^] +* [#9557] DocumentParser - remove all unused multiline placeholders +* [#9564] OnWUsrFormRender event adjustment +* [#9583] Refactoring System configuration in manager screen +* [#9616] Update TinyMCE (3.3.9.2 -> 3.5.8) +* [#9617] Refactoring backup manage +* [#9622] Refactor "Manage Files" +* [#9623] Refactor MODxCarbon theme + + + +MODX Evolution 1.0.8 (Jan 08, 2013) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#9391] Prevent hash array exploit in Forgot Manager Login plugin + +MODX Evolution 1.0.7 (Nov 26, 2012) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* Prevent users from unblocking themselves in Forgot Manager Login plugin +* [#9175] Escape $hash in Forgot Manager Login plugin + + +MODX Evolution 1.0.6 (Mar 08, 2012) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#7175] Fix sanitization to strip tags recursively in parser and in eForm + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#3799] Fix table creation on MySQL databases that no longer support TYPE keyword +* [#3699] Fix fatal error using default value on a Template Variable with @INHERIT binding + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#3796] Fix manager_language not being sanitized +* [JA879] improvement to pageCache read logic +* Update minimum PHP version for manager to 4.3.3 + + +MODX Evolution 1.0.5 (Jan 19, 2011) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#MODX-1035] fix XSS vulnerability in installer +* [#2787] fix XSS vuln. in image editor +* [#3352] work around critical PHP bug 53632 +* [#3437] fix vulnerability in AjaxSearch allowing attacker to view arbitrary files (JVN#95385972) +* [#3429] fix SQL injection vulnerability in AjaxSearch allowing attacker to execute arbitrary PHP code (JVN#54092716) + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#MODX-2245] 3 events not firing: OnWebChangePassword, OnManagerSaveUser, OnManagerChangePassword +* [#MODX-1331] Resources in tree unclickable if pagetitle contains line break +* [#100] fix TV with Input Type 'Date' and Widget 'Unixtime' returns wrong value +* [#435] improve installer handling of Sample Site option +* [#359] published date always set due to ManagerManager demo rules +* [#488] Fix bad check for mysql strict mode +* [#595] Fix bad path on Resource Editor rich text fields when TMCE in "root relative" mode +* [#1252] Fix @SELECT multi-select listbox TV losing its value when switching Content field "Editor to use" +* [#321] stop parser from running case-mismatched snippet calls +* [#343] Fix Hiding "Validate Referer" warning messes up the setting itself +* [#432] Fix TV date-layer display problem with multiple datefields in FF 3.6.3 +* [#445] Fix error displaying filenames with non-Latin charsets +* [#577] Fix Spanish UTF8 language file +* [#760] Fix Document tree not loading in children +* [#609] Fix web_groups and member_groups tables can have duplicate entries +* [#364] Fix W3C validation problem with TV image output widget +* [#2957] Allow multibyte strings in QuickManager+ TV buttons +* [#2711] Re-fix path bug in Image Editor +* [#3060] Fix message count on Manager welcome page +* [#1070] Fixed bug in DocManager where it would not create new TV values, only update existing ones +* [#3163] Fix RSS feed encode issue +* [#1871] Fix for file manager when aggressive caching/pre-fetching is used at the ISP level (e.g. satellite internet) + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#MODX-1734] Add context parameter to the getLoginUserName() API function +* [#4] getDocumentObject allows full alias path to be specified +* [#443] TinyMCE updated to 3.3.9.2 +* [#23] Quick Manager+ updated to 1.5.4 +* [#421] ManagerManager updated to 0.3.9 +* [#421] AjaxSearch updated to 1.9.2 +* [#359][#421] Default Chunk for ManagerManager rules now "mm_rules"; Since demo rules are "mm_demo_rules", MM is now disabled on install +* [#308] Return to active tab for Elements, regardless of "Remember tabs" system setting +* [#331] Updated Czech language file +* [#881] Improvements to Template inheritance (moved from plugin into core, added system setting to control behavior) +* [#592] Adjustment of manager fonts +* [#476] Improvement to New user's default role +* [#378] Check for and disallow reserved words in Template Variable names +* [#1360] Better handling of Template Switcher plugin +* [#833] Manager and Web User comments field no longer limited to 255 characters +* [#1132] New system setting to strip characters from files uploaded in Manage Files (using same logic configured for aliases) +* [#190] Resolve hostnames config option deprecated +* [#1065] Let manager themes have their own welcome.html page +* [#216] Optimization of core methods (getParentIds & getChildIds) +* [#819] Improvement in config.inc.php file (new installs only) so proper MODX_SITE_URL constant is set in API Mode +* [#2867] Improvements to installer with respect to handling of Demo Site option and related elements +* [#2867] Laid foundation for "installsets" or preset groups of installer elements +* [#2963] New icons in manager resource tree (to reflect site start, error page, site unavailable and unauthorized system settings) +* [#594] Tweaked Quick Manager window open style +* [#487] Links updated in demo site content +* [#3075] Apply monospace font to manager textarea fields +* [#999] Enhance ordering logic when displaying lists of TVs +* [#2953] Fix QuickManager+ Google Chrome font problem (text-shadow) +* [#3063][#3064][#3065] Replace calls to deprecated db-related parser methods with calls to db class methods +* [#2961] Wayfinder improvement - allow use of [+wf.alias+] +* [#3061] Allow @ and . characters in remembered login name +* [#3062] Corrections to ActionList item names (given that Documents are now Resources and Resources are now Elements) +* [#3115] Automatically regenerate siteCache if it not found +* [#835] @INHERIT improved to work with @FILE, and to allow additional data after the @INHERIT +* [#3092] Remove db user and pw from hidden form fields in installer +* [#194] Improve and fix bugs in markup on Edit Resource screen +* [*3168] remove debugging output from DocManager when updating TVs +* [#546] Improve DocManager usability by adding checkboxes to TVs and removing "ignore list", which was hard to use +* [#3361] Allow custom TemplateVariables and output widgets +* [#3362] Updated distributed jQuery library to 1.4.4 and updated AjaxSearch, QuickManager+ and ManagerManager to use it +* [#2627] New event allows plugin to inject custom markup into manager's header (header.inc.php) +* [#3385] Wayfinder optimization when hideSubMenus is enabled +* [#3386] Breadcrumbs optimizations +* [#3543] Personalize updated to 2.1 + + +MODX Evolution 1.0.4 (Jun 8, 2010) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#MODX-1964] WebLogin does not prevent brute force attack + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#MODX-1957] Danish language file update +* [#MODX-2018] Fix Multiple TinyMCE plugins activated after upgrade +* [#MODX-1865] 1.02 to 1.03 Upgrade Error with mySQL STRICT mode, "Templates: Incorrect integer value" +* [#MODX-1883] WebLoginSideBar chunk "forget" typo +* [#MODX-1880] Superfluous single quote in tree.php +* [#MODX-1878] Wrong path for _tx_.gif image in multiple files +* [#MODX-1896] Can't properly execute logEvent function when user is not logged in (strict sql mode on) +* [#MODX-1900] Fixes and tweaks for search.static.php +* [#MODX-1905] Broken paths to images, non valid xhtml tags, unmatched tags +* [#MODX-1884] Bug in breadcrumbs 1.0.1 +* [#MODX-1833] Incorrect rendering of module parameters for 'list-multi' type +* [#MODX-1920] Problem with Ditto and server time offset +* [#MODX-1925] WebLogin loses GET request elements if you have to login before getting to the page +* [#MODX-1926] Revert Cache Sync tokenization updates due to inconsistencies across PHP environments +* [#MODX-1893] Code registered with "regClientHTMLBlock" not inserted in cached documents +* [#MODX-1906] Put duplicate button on resource edit page +* [#MODX-1814] Irregular character string in QuickManager class +* [#MODX-1003] Removed font: Icon; from sortabletable class to let normal font-size view. [#MODX-1818] +* [#MODX-1874] Minor error in dbapi and debug +* [#MODX-1487] Error when configuring database on initial install process +* [#MODX-1882] webUserGroupNames $_SESSION value not set until second page land in WebLogin +* [#MODX-1510] Add a 'Remove Locks' permission to roles +* [#MODX-1881] ManagerManager errors when PHP version less than 5.2.3 +* [#MODX-1938] DB backup in Manager fails on IE under https +* [#MODX-1954] Add system setting to allow configuration warnings to only be shown to Admins +* [#MODX-1958] tmplvars.format.inc.php missing image property align +* [#MODX-1959] E_DEPRECATED error in ImageEditor +* [#MODX-1960] ImageEditor has incorrect location for the image src +* [#MODX-1962] E_DEPRECATED error in ManagerManager +* [#MODX-1963] DocManager, after tree sorting, can show document tree JS alert +* [#MODX-1947] and [#MODX-1956] Allow $modx->getDocumentObject() to get other documents than the currently requested +* [#MODX-1927] Manager Log fails to display when there are too many log entries +* [#MODX-1990] Update common transliteration table for TransAlias plugin [#ADDON-152], update InheritTemplate plugin to include Sibling option + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#MODX-1458] Make default click behavior for the Tree menu a system option +* [#MODX-1879] Mistake in the Netherlands language file +* [#MODX-1955] Make installer path setting changes required for Web PI installer +* [#MODX-1957] Update language files +* [#MODX-1929] Add styling to phpinfo() screen +* [#MODX-1931] Style update to Mutate Module screen +* [#MODX-1932] Style update to Template Variable and Plugin Priority Sort screens +* [#MODX-1935] Style tweaks to table bgcolor in various places +* [#MODX-1888] Add setting for allowing control over remembering the last tab viewed or not +* [#MODX-1977] When previewing, use friendly URLs (if enabled) +* [#MODX-2009] Clean up handling of 'a' variable in Manager (and related type casting changes) + +MODX Evolution 1.0.3 (Apr 1, 2010) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#MODX-1758] Fix issue described in JVN#46669729, XSS possibility with searchHighlight plugin +* [#MODX-1793] TinyMCE link lists are not secured if manager session does not exist +* [#ADDON-136] Prevent SQL injection on Weblogin + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#MODX-1472] Bad path to MODxCarbon transparent GIF +* [#MODX-1396] Add language string on module configuration screen +* [#MODX-1424] Fix SQL errors when adding user/resource groups with apostrophes in them +* [#MODX-1589] Remove duplicated pagetitle sort option for tree +* [#MODX-1608] Fix background image on TV sort list for templates +* [#MODX-1298] Links exchanged in demo site for Developers and Administration guides +* [#MODX-1079] "Edit resource" title changes on changing the template +* [#MODX-1630] Correct modx version reference in System Information screen +* [#MODX-1537] Weblink internal doc ID selection icon doesn't change +* [#MODX-1408] getVersionData out of sync with version.inc.php +* [#MODX-1431] Correct typo in install footer +* [#MODX-1449] Typo in demo site text +* [#MODX-1580] PHP typo in mutate_content.dynamic.php +* [#MODX-1506] QuickManager+ javascript errors when editing a resource +* [#MODX-1106] Change help icons on TV create/edit screen +* [#MODX-1103] Element Selector, part of the letters hides in search box +* [#MODX-1566] Fix problem with Forgot Password confirmation link in WebLogin +* [#MODX-1659] Stay option for adding another manager web user not working correctly +* [#MODX-1164] Unable to set cssStyle when using getHTMLGrid +* [#MODX-1176] Correct the permissions check when duplicating chunks and plugins +* [#MODX-1753] Fix help page layout in manager +* [#MODX-1279] OnUserFormPrerender & OnUserFormRender events weren't receiving the ID of the user +* [#MODX-1492] Default .htaccess file will prevent some pages being found when using friendly alias +* [#MODX-1587] For Web or Manager Users, date of birth cannot be set before year 2000 on dropdown list +* [#MODX-1747] Date TV input: Date Picker Container gets hidden behind other input fields +* [#MODX-1110] After deleting a template, the assignments "template to tmplvar" are still existing +* [#MODX-1314] Spanish utf-8 translation problem - install language file had been put in place of manager language file +* [#MODX-1505] Get 'Missing image' boxes in manager tree +* [#MODX-1694] Extra backslashes in ForgotManagerPassword.tpl::sendEmail +* [#MODX-1096] Additional fix, only show MODX tables on backup screen +* [#MODX-1271] Remove unused chunk from sample site +* [#MODX-1410] Update MooTools to 1.1.2 +* [#MODX-1429] sysAlert js function not working +* [#MODX-1168] Double tooltips in IE7 +* [#MODX-1175] User with no create new permissions can duplicate a document +* [#MODX-1206] Identifying the site root in the manager control panel +* [#MODX-1141] Mootools Error if logged in with SSL encryption (https) +* [#MODX-1114] Duplicate name on update template +* [#MODX-1225] PHP error after install +* [#MODX-1609] User upload file types unable to be unticked +* [#MODX-1427] Unexpected character in input error after upgrading +* [#MODX-863] Throws an error while running under PHP 5.3.0 +* [#MODX-1775] Remove blank line stripping from cache processor, can cause unwanted changes to chunks +* [#MODX-1460] ManagerManager mm_renameSection for 'tvs' renames the 'content' section instead +* [#MODX-1462] Date Picker is not displaying the current date 'green box' or correct month when re-editing a date +* [#MODX-1799] $modx->addEventListener() doesn't operate because of the syntax error + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#MODX-1107] Make font-size bigger on tree sort option dropdowns +* [#MODX-1432] Updated Danish language file +* [#MODX-1102] Minor layout fixes to import site, export site, and settings screen +* [#MODX-1078] Stop scrollbar showing on welcome screen +* [#MODX-1101] Minor styling fix for access permissions screens +* [#MODX-1333] Add missing credit images to MODxCarbon theme +* [#MODX-1159] Updated Norsk language file +* [#MODX-1629] DataGrid control does not have a THEAD +* [#MODX-1366] Hide "Manage META tags and Keywords" button if show_meta system setting is set to No +* [#MODX-1464] Make welcome.static.php use style.php for large icons +* [#MODX-1610] Installer doesn't install templates +* [#MODX-1098] Add interim solution to the IE8 compatibility issues +* [#MODX-1365] Non-admin managers to edit contentType and content_dispo for resources they create +* [#MODX-1622] Remove support.inc.php as same can be achieved by customizing the manager HTML templates provided +* [#MODX-1452] Show File path defaults in Site Config +* [#MODX-1127] When creating roles, "View help pages" cannot be deselected +* [#MODX-1757] File browser CSS tuning +* [#MODX-1100] Delete unused template files +* [#MODX-1320] Clean up baseline style.php file +* [#MODX-1407] Prevent MODX 404-handling for missing images +* [#MODX-1600] Add unique CSS ids to ease DOM manipulation of content editing Manager pages +* [#MODX-1105] Minor Manager cleanups to remove deprecated elements +* [#MODX-1761] Remove Templates from SQL install files +* [#MODX-1767] Improve Evo installer to remove leading/trailing elements surrounding opening docblock +* [#MODX-1760] ManagerManager updated to version 0.3.8 +* Allow TV definitions to be installed via the MODX installer +* [#MODX-1756] mcpuk internal file browser hard coding strings pattern +* [#MODX-1795] Tuning context menu order +* [#MODX-1800] Finnish language file for Evolution 1.0.3 +* [#MODX-1803] Swedish language files +* [#MODX-1808] Spanish language files +* [#MODX-1804] and [#MODX-1805] Danish language file +* [#MODX-1760] TinyMCE updated to version 3.3.2 +* [#MODX-1760] QM+ updated to version 1.3.4.1 +* [#MODX-1816] Russian language files +* [#MODX-1817] German language files +* [#MODX-1820] Japanese language files +* [#MODX-1195] Paths reset button for filemanager and assets +* [#MODX-1821] Use manager language for default language setting in Ditto + + + +MODX Evolution 1.0.2 (Nov 4, 2009) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#MODX-1391] Fix possible security exploits in WebChangePwd snippet + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#MODX-1406] Error: Cannot redeclare getsvnrev() +* [#MODX-991] Admin password form not appearing during install +* [#ADDON-61] Doc Manager, Template Variables not updated +* [#MODX-1157] Updating TV order on templates creates error +* [#MODX-1039] "No active users found" in Welcome and System Info screens hardcoded +* [#MODX-1321] [#MODX-1329] and [#MODX-1343] When non-admin users modify resource it loses 'type' and 'doc type' +* [#MODX-1339] Wrong date format for datepicker inserted into DB as part of new install +* [#MODX-994] Setting time in datepicker to a single digit gives incorrect formatted date +* from-forums Fix problem where resources couldn't be deleted from the Resource Edit screen +* [#ADDON-49] Forgot Manager Login bug in sql query which prevents user from completing the password reset +* [#ADDON-52] Hardcoded charset in ForgotManagerPassword plugin +* [#MODX-1092] DocManager - Adding Document Permissions does not properly set privateweb flag in modx_site_content +* [#MODX-1386] After install, MODX didn't show configuration page +* [#MODX-1338] Alias field accepts percent character +* [#MODX-1215] Unixtime widget uses wrong pattern for MySQL date string +* [#MODX-1364] Add check for tokenizer extension in cache_sync processor + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#MODX-1322] New french language file for eForm +* [#MODX-1071] Auto select manager language during install +* [#MODX-1097] Tweak htaccess rule template and improve wiki documentation of such +* [#MODX-1104] Remove width and height attributes on weblink icon on Edit Resource screen +* [#MODX-1152] Portuguese-br language file update +* [#MODX-1323] French language file update +* [#MODX-1336] Italian language file updates +* [#MODX-1277] Move jquery.colorbox.min.js to QM plugin directory as it's solely intended for use with QM +* [#MODX-948] Parser: Snippet calls no longer break with blank characters or when broken across multiple lines + + +MODX Evolution 1.0.1 (rev 5946 - October 22, 2009) +=================================== +-------------------------------------------- +Security: +-------------------------------------------- +* [#MODX-206] Reduce vulnerability to CSRF via referrer check update. Additional protections coming in the future via tokenizing requests in the Manager. +* [#MODX-1216] Remove "execute snippet" from mutate_snippets and mutate_modules +* [#MODX-1227] Add referrer check configuration warning to Manager +* [#MODX-1218] Enable CSRF check by default for sites that set headers properly +* [#MODX-1262] Security enhancement to ForgotManagerPassword plugin +* [#AJAXSEARCH-46] Prevent content injection with JS disabled (AjaxSearch 1.8.4) + +-------------------------------------------- +Bugfixes: +-------------------------------------------- +* [#MODX-353] Duplicate container cause problems +* [#MODX-586] Cancel button on the move document page does not redirect you to the selected page +* [#MODX-842] Missing Template Variable title in language files +* [#MODX-1000] On editing a template variable the right "Cancel" button is positioned weird +* [#MODX-1001] Navigation issues when pressing the cancel button +* [#MODX-1017] Removed unused code in welcome.static.php +* [#MODX-1024] Additional check for language files in Manager with graceful fallback to English +* [#MODX-1025] No alerts on deleting the keywords +* [#MODX-1065] Quoted_printable function in save_user.processor.php not available in some server configurations +* [#MODX-1075] String not properly translated in French installer translation +* [#MODX-1077] Login panel updates +* [#MODX-1084] Download path issue in File Manager +* [#MODX-1087] JS error when manager don't have rights for trashcan +* [#MODX-1096] System info page shows all tables in DB +* [#MODX-1099] Typo in the name of language variables in File manager +* [#MODX-1129] Editing form layout broken in IE6 +* [#MODX-1131] Remove "Show Preview Window" from Site Configuration page +* [#MODX-1145] Begin deprecation of META Tags management in the Manager +* [#MODX-1160] Missing label on search form for manager logs (Dupes: [#MODX-1041] [#MODX-1083]) +* [#MODX-1184] After creating a manager user the head title show wrong text +* [#MODX-1188] fix TransAlias installer template, plus other improvements to TransAlias by rfoster +* [#MODX-1190] Installer fixes and enhancements +* [#MODX-1095] Fixed Spanish Translation typos and missing labels and convert it to UTF-8 +* [#MODX-1286] Ensure version is saved to DB when saving configuration settings +* [#MODX-1289] Add 'Remove Periods' config param to TransAlias plugin and remove period substitution from the trans tables (and default MODX stripAlias() function) +* [#MODX-1301] Ensure correct Resource Type option is selected when adding Resources and Weblinks +* [#MODX-1309] Stop upgrades overwriting the element category + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* [#MODX-180] Convert weblink to document (and vice versa) (merge from 1.0 dev branch) +* [#MODX-828] Need to be able to tell user access permissions by the Site Tree icon/text +* [#MODX-929] Swap default click behavior for the Tree menu (edit vs view data) +* [#MODX-988] Automate storage of version number in settings table during install/upgrade +* [#MODX-1011] Make config language string punctuation consistent for field labels +* [#MODX-1034] Missed update to version number +* [#MODX-1038] Remove space after closing ?> tags +* [#MODX-1069] Improve layout/simplify Module Manager page +* [#MODX-1137] Change Manager term "alias" to "URL alias" +* [#MODX-1138] New more flexible and manageable Installer that enables making custom installer packages for Evo much simpler +* [#MODX-1149] Update language string Resource_X and Document_X keys to match actual changes +* [#MODX-1211] Add configuration option to QM+ - allows user to choose top or bottom placement of toolbar overlay in browser window +* [#MODX-1244] Add ManagerManager 0.3.5 +* [#MODX-1245] Update QM+ to version 1.3.3 +* [#MODX-1246] Update AjaxSearch to 1.8.4 +* [#MODX-1276] Reduce site cache size by removing PHP comments +* [#MODX-1282] Swedish language files for Evolution 1.0.1 +* [#MODX-1284] Czech language file for Evo 1.0.1 +* [#MODX-1287] New Danish language file for Evo 1.01 +* [#MODX-1288] New Danish language file for Evo 1.01 install +* [#MODX-1295] Demo Content categories need to be set +* [#MDOX-1302] Create demo content defaults for ManagerManager +* [#MDOX-1306] Clean up styling on Manager login page +* [#MDOX-1307] Update styling on QM+ to improve usability + + +MODX Evolution 1.0.0 (rev 5601 - July 30, 2009) +=================================== +-------------------------------------------- +Bugfixes & Feature Requests: +-------------------------------------------- +* [#MODX-583] Alter email-related Manager settings by reloading from specific translations +* [#MODX-1061] Link list fixed in TinyMCE +* [#MODX-1060] Escape language string for the recycle bin to fix a problem with disappearing trees +* [#MODX-1027] Fix broken images with Image TV Preview plugin when no image selected +* [#MODX-1033] Implement consistent dates throughout the Manager and add a date format setting +* [#MODX-1045] Replace JS Alert tooltips with Mootools hover tooltips +* [#MODX-1049] Cancel action when editing a module goes to wrong location +* [#MODX-1026] Canceling a template change in Manager lost the original template setting +* [#MODX-1028] Manager did not properly handle failed login attempt counts or block users +* [#MODX-999] Fixed width buttons break with some languages (setting pages) +* [#MODX-1023] Date and Image TV changing doesn't work correctly in DocManager. +* [#MODX-1013] Make DocManager use the new DatePicker +* [MODX-1009] Fix grammar/spelling error in english language file. +* [MODX-1008] Fix broken icons in Resource Overview->View Children +* [#MODX-989] Fix issue with DatePicker time field styling +* [#MODX-993] Fix broken URL rewriting when friendly alias paths are enabled +* [#MODX-981] Replaced missing event icons. +* [#MODX-968] Replaced folder icon in tree. (nodes.php) +* [#MODX-974] Fixed missing save icon in files.dynamic.php +* [#MODX-898] Allow passing script names and versions to regClient*, setting stage for more intelligent handling of script inclusion +* [#MODX-863] Isolate deprecated magic_quotes-related code inside PHP version checks for less than 5.3 to avoid deprecated warnings in 5.3/errors in 6.0 +* [#MODX-941] Add % character to transliteration plugin tables +* [#MODX-971] Fix to TransAlias plugin to allow it to work with the Import HTML action. +* [#MODX-591] Escape the database user and password in config.inc.php during install +* [#MODX-952] Modified the warning message with MySQL 4.x +* [#MODX-944] Installer with IE8 does not show final 'Install' button on last page +* [#MODX-904] Add better email format checking when adding/updating users. +* [#MODX-950] Scroll the File Manager to the editing textarea when clicking the edit button. +* [#MODX-905] Fix SQL error in cache_sync processor +* [#MODX-866] Allow manual editing of the datepicker fields +* [#MODX-720] The website name on the Manager login page links back to the front end site +* [#MODX-916] Better handling of text direction and encoding for Manager languages +* [#MODX-882] Specify the default Manager language during installation +* [#MODX-815] Users without edit or create module permissions can get to Modules editing screen +* [#MODX-390] Infinite loop possible during install +* [#MODX-909] Roles menu item showed even if Manager User did not have Roles permissions +* [#MODX-851] Manager User and Webuser email messages were always in English despite the language setting +* [#MODX-830] Friendly URLs can now contain UTF8 characters +* [#MODX-897] Dynamic title for create/edit Resource action page depending on state +* [#MODX-891] Manager language files contains hard-coded CSS spans +* [#MODX-867] Add system events to Manager log Welcome page to make custom dashboard plugins possible +* [#MODX-602] Remove the calltime-pass-by-ref errors on the Export Site HTML screen. +* [#MODX-725] Retain checkbox TV values when changing template, also fix postback rendering of TV values (broken in a recent commit) +* [#MODX-810] Ensure that the web user ID is passed correctly to the OnWUsrFormPrerender and OnWUsrFormRender events. +* [#MODX-733] Apply fix for multi-byte characters being garbled in 'Site' > 'Search'. +* [#MODX-719] Small fix to DocManager to prevent parse error when no doc groups are present and an update to doc groups is attempted. +* [#MODX-741] Fix MCPUK browser navigation to work with folders that have spaces in them. +* [#MODX-813] Fix the image editor's src link for the image tag. +* [#MODX-822], [#MODX-465] Add basic file encoding for the file manager, not a complete solution but consensus that it's better than previous. +* [#MODX-847] Replace QuickEdit with QuickManager+ (includes /assets/js/jQuery 1.3.2.min.js) +* [#MODX-838] Ensure Datepicker correctly closes when select and textboxes lose focus without being changed. +* [#MODX-806] fix duplicated option groups in template picker +* [#MODX-581] Installer doesn't check /assets/media, /assets/flash and /assets/files directories +* [#MODX-687], [#MODX-589] Fix the TV name fields so that new DatePicker works correctly +* [#MODX-832] Implement new DatePicker in the MODX Manager. +* [#MODX-655] Correct a sanity check that was preventing the allow_manager_access setting being saved. +* [#MODX-806] Add option groups to template chooser in Manager +* [#MODX-571] Fix TV date picker when special characters in TV name +* [#MODX-588] Missing else in document parser that orphaned a small piece of code +* [#MODX-608] Missing "$this->" in SystemEvent::stopPropagation() +* [#MODX-592] Site Cache improvement for only storing doctypes that are different from text/html in cache files +* [#MODX-681] Manager include path fix for occasional errors and working better with third-party libraries +* [#MODX-449] Incorrect language setting for RTE used in front end instances at install +* [#MODX-812] Added Hebrew Manager translation +* [#MODX-209] Amended original patch: remove urlencode() call for viewable files (i.e. images) when generating the preview buttons in the file manager. +* [#MODX-85] Removed transliteration code from core and turn into a plugin + - Supports multiple languages + - Template Variable can override transliteration table (file) per-document/section (supports @INHERIT) + - Move stripAlias function into parser + - Add OnStripAlias parser/system event +* [#MODX-445] Fix case where deleted docs with the same alias as another document caused a 404 response. Remove deleted docs from site cache. +* [#MODX-593] Add missing summary/introtext to Weblink manager page +* [#MODX-220] Manager language updates for sorting and formatting consistency across languages +* [#MODX-393] Show Protected Pages issue solved by Thomas Leiritz +* [#MODX-516] and [#MODX-397] + - fix to display of Access Permissions depending on Role permissions + - fix to preserve parent after new document save permissions error +* [#MODX-397] Fix logic: creating documents inside restricted containers + - disallow users from creating restricted docs they can't access + - disallow "Create Document Here" and "Create Weblink Here" under restricted parents +* [#MODX-572] new Elements must be given unique names + - applies only to elements created with "New..." buttons + - templates, tvs, plugins, snippets, chunks, modules + - Removed isNumber function, not needed since PHP < 4 +* [#MODX-620] Add boolean support to Datagrid class +* [#MODX-446] Committing Soushi's cache sync patch (re: optimizations to cache syncing when the site has a large number of documents) +* [#MODX-686] Major updates to Dutch language file +* [#MODX-582] Update and alphabetize default upload-able file types for new installs. (Also removes php files from list) +* [#MODX-457] Updates to Swedish language file +* [#MODX-363] Missing URL types for cleaning in save content processor +* [#MODX-701] Polish updates +* [#MODX-713] Brazillian Portuguese updates +* [#MODX-580] Update Italian language files +* [#MODX-515] Fix non-clickable view unpublished role label +* [#MODX-724] Reference wiki page for fix for multi-server/cloud deployments and unexpected logoffs +* [#MODX-734] Typo in language file it's->its +* [#MODX-410] access permissions will be inherited from parent when user creates new child but and does not have role permission for access permissions +* [#MODX-724] Create .htaccess template to set the session paths out of shared /tmp/ directories which can lead to loosing sessions from aggressive garbage collection. +* [#MODX-394] Update Russian installation file per http://forums.modx.com/thread/1294/fixes-what-can-i-do-to-be-heard +* [#MODX-715] Fix .jp lang file for incorrect hard-coded link +* [#MODX-541] Fix the include statement in getUserData() method +* [#MODX-650] bad reference to csshover.htc (now csshover2.htc) + +-------------------------------------------- +Additional Improvements & Updates: +-------------------------------------------- +* Fix get_func_args() error (evident on PHP 5.3) in Ditto/Reflect +* Many updates to Manager and Installer language translations + - Updating language to be in line with Revo. (Resources -> Elements, resource browser -> File Browser, Documents -> Resources) + - Simplify language and remove overly-wordy phrases + - New language strings where appropriate and needed + - Replaced hard coded language strings in Import and Export action pages with new language strings + - Better handling of Manager language encoding and text direction + - Now handles RSS, Word, Excel, XML, HTML, CSS, JS, PDF and plain documents with custom icons in the Site Tree + - Able to reload and choose language for key site settings like Signup emails, password reset emails, etc. +* Remove legacy code no longer needed + - Removed QuickEdit module (instructions only) + - Removed News Publisher snippet (did not support TVs) + - Prototype and Scriptaculous JS and SLLists.class.php from core distribution, no longer used + - Update demo content to remove Prototype/Scriptaculous dependencies +* Convert manager to use Mootools exclusively + - Manager Login page + - Convert the 'Sort TV by template' and 'Plugin Execution Ordering', also fix the button CSS styling on those pages + - DocManager module (also to assist with future updates) - MODULE MUST BE UPDATED when upgrading from previous MODX versions +* Upgrade Add-on: eForm 1.4.4.6 +* Upgrade Add-on: AjaxSearch 1.8.3 +* Updated Add-on: TinyMCE 3.2.4.1 +* Fix the Template Variable "Lock variable for editing" checkbox +* Removed erroneous parameter in isFrontend() method call +* Exclude /assets and /manager by default from MODX rewrite and to comment out example.com -> www.example.com rule by default +* Fix bug when login page language file was missing translation strings. Now falls back to main English file. +* Added additional database diagnostic info to system info page (auto-generated paths) +* Updated the MODX installer + - New skin + - Streamline process by removing two steps + - Make Connection/Collation/Default Admin User only show when prior steps are completed first + - Now set the default Manager language during new installs instead of relying on installation language +* New MODX Carbon default theme for MODX Evolution 1.0 release + - Removed deprecated themes for Evo 1.0 release + - Added a CSS class (setting of $modx->config['manager_direction']) to Manager pages to automatically address RTL Manager language users + - Remove Bottom Button Bar plugin due to new static button bar similar to Revo +* Make upgrades between versions simpler + - Moving Manager login/welcome/blocked templates into /assets/templates/manager + - Moving Manager Help pages into /assets/templates/help +* Manager RSS feed improvements + - Updated RSS feeds to more manageable number of entries for welcome page. + - Updated snoopy class to latest version 1.2.4 (used by magpierss). + +For earlier changelog entries, please see the /install/changelog.txt file included with the MODX 0.9.6.3 distribution \ No newline at end of file diff --git a/assets/images/logo.png b/assets/images/logo.png deleted file mode 100755 index fab087fb22..0000000000 Binary files a/assets/images/logo.png and /dev/null differ diff --git a/assets/images/modx-logo.png b/assets/images/modx-logo.png new file mode 100644 index 0000000000..5f91dced7a Binary files /dev/null and b/assets/images/modx-logo.png differ diff --git a/assets/images/noimage.jpg b/assets/images/noimage.jpg new file mode 100755 index 0000000000..e0de171897 Binary files /dev/null and b/assets/images/noimage.jpg differ diff --git a/assets/js/easy-ui/easyloader.js b/assets/js/easy-ui/easyloader.js new file mode 100755 index 0000000000..d5ec1cf84b --- /dev/null +++ b/assets/js/easy-ui/easyloader.js @@ -0,0 +1,190 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function(){ +var _1={draggable:{js:"jquery.draggable.js"},droppable:{js:"jquery.droppable.js"},resizable:{js:"jquery.resizable.js"},linkbutton:{js:"jquery.linkbutton.js",css:"linkbutton.css"},progressbar:{js:"jquery.progressbar.js",css:"progressbar.css"},tooltip:{js:"jquery.tooltip.js",css:"tooltip.css"},pagination:{js:"jquery.pagination.js",css:"pagination.css",dependencies:["linkbutton"]},datagrid:{js:"jquery.datagrid.js",css:"datagrid.css",dependencies:["panel","resizable","linkbutton","pagination"]},treegrid:{js:"jquery.treegrid.js",css:"tree.css",dependencies:["datagrid"]},propertygrid:{js:"jquery.propertygrid.js",css:"propertygrid.css",dependencies:["datagrid"]},panel:{js:"jquery.panel.js",css:"panel.css"},window:{js:"jquery.window.js",css:"window.css",dependencies:["resizable","draggable","panel"]},dialog:{js:"jquery.dialog.js",css:"dialog.css",dependencies:["linkbutton","window"]},messager:{js:"jquery.messager.js",css:"messager.css",dependencies:["linkbutton","window","progressbar"]},layout:{js:"jquery.layout.js",css:"layout.css",dependencies:["resizable","panel"]},form:{js:"jquery.form.js"},menu:{js:"jquery.menu.js",css:"menu.css"},tabs:{js:"jquery.tabs.js",css:"tabs.css",dependencies:["panel","linkbutton"]},menubutton:{js:"jquery.menubutton.js",css:"menubutton.css",dependencies:["linkbutton","menu"]},splitbutton:{js:"jquery.splitbutton.js",css:"splitbutton.css",dependencies:["menubutton"]},accordion:{js:"jquery.accordion.js",css:"accordion.css",dependencies:["panel"]},calendar:{js:"jquery.calendar.js",css:"calendar.css"},textbox:{js:"jquery.textbox.js",css:"textbox.css",dependencies:["validatebox","linkbutton"]},filebox:{js:"jquery.filebox.js",css:"filebox.css",dependencies:["textbox"]},combo:{js:"jquery.combo.js",css:"combo.css",dependencies:["panel","textbox"]},combobox:{js:"jquery.combobox.js",css:"combobox.css",dependencies:["combo"]},combotree:{js:"jquery.combotree.js",dependencies:["combo","tree"]},combogrid:{js:"jquery.combogrid.js",dependencies:["combo","datagrid"]},validatebox:{js:"jquery.validatebox.js",css:"validatebox.css",dependencies:["tooltip"]},numberbox:{js:"jquery.numberbox.js",dependencies:["textbox"]},searchbox:{js:"jquery.searchbox.js",css:"searchbox.css",dependencies:["menubutton","textbox"]},spinner:{js:"jquery.spinner.js",css:"spinner.css",dependencies:["textbox"]},numberspinner:{js:"jquery.numberspinner.js",dependencies:["spinner","numberbox"]},timespinner:{js:"jquery.timespinner.js",dependencies:["spinner"]},tree:{js:"jquery.tree.js",css:"tree.css",dependencies:["draggable","droppable"]},datebox:{js:"jquery.datebox.js",css:"datebox.css",dependencies:["calendar","combo"]},datetimebox:{js:"jquery.datetimebox.js",dependencies:["datebox","timespinner"]},slider:{js:"jquery.slider.js",dependencies:["draggable"]},tooltip:{js:"jquery.tooltip.js"},parser:{js:"jquery.parser.js"}}; +var _2={"af":"easyui-lang-af.js","ar":"easyui-lang-ar.js","bg":"easyui-lang-bg.js","ca":"easyui-lang-ca.js","cs":"easyui-lang-cs.js","cz":"easyui-lang-cz.js","da":"easyui-lang-da.js","de":"easyui-lang-de.js","el":"easyui-lang-el.js","en":"easyui-lang-en.js","es":"easyui-lang-es.js","fr":"easyui-lang-fr.js","it":"easyui-lang-it.js","jp":"easyui-lang-jp.js","nl":"easyui-lang-nl.js","pl":"easyui-lang-pl.js","pt_BR":"easyui-lang-pt_BR.js","ru":"easyui-lang-ru.js","sv_SE":"easyui-lang-sv_SE.js","tr":"easyui-lang-tr.js","zh_CN":"easyui-lang-zh_CN.js","zh_TW":"easyui-lang-zh_TW.js"}; +var _3={}; +function _4(_5,_6){ +var _7=false; +var _8=document.createElement("script"); +_8.type="text/javascript"; +_8.language="javascript"; +_8.src=_5; +_8.onload=_8.onreadystatechange=function(){ +if(!_7&&(!_8.readyState||_8.readyState=="loaded"||_8.readyState=="complete")){ +_7=true; +_8.onload=_8.onreadystatechange=null; +if(_6){ +_6.call(_8); +} +} +}; +document.getElementsByTagName("head")[0].appendChild(_8); +}; +function _9(_a,_b){ +_4(_a,function(){ +document.getElementsByTagName("head")[0].removeChild(this); +if(_b){ +_b(); +} +}); +}; +function _c(_d,_e){ +var _f=document.createElement("link"); +_f.rel="stylesheet"; +_f.type="text/css"; +_f.media="screen"; +_f.href=_d; +document.getElementsByTagName("head")[0].appendChild(_f); +if(_e){ +_e.call(_f); +} +}; +function _10(_11,_12){ +_3[_11]="loading"; +var _13=_1[_11]; +var _14="loading"; +var _15=(easyloader.css&&_13["css"])?"loading":"loaded"; +if(easyloader.css&&_13["css"]){ +if(/^http/i.test(_13["css"])){ +var url=_13["css"]; +}else{ +var url=easyloader.base+"themes/"+easyloader.theme+"/"+_13["css"]; +} +_c(url,function(){ +_15="loaded"; +if(_14=="loaded"&&_15=="loaded"){ +_16(); +} +}); +} +if(/^http/i.test(_13["js"])){ +var url=_13["js"]; +}else{ +var url=easyloader.base+"plugins/"+_13["js"]; +} +_4(url,function(){ +_14="loaded"; +if(_14=="loaded"&&_15=="loaded"){ +_16(); +} +}); +function _16(){ +_3[_11]="loaded"; +easyloader.onProgress(_11); +if(_12){ +_12(); +} +}; +}; +function _17(_18,_19){ +var mm=[]; +var _1a=false; +if(typeof _18=="string"){ +add(_18); +}else{ +for(var i=0;i<_18.length;i++){ +add(_18[i]); +} +} +function add(_1b){ +if(!_1[_1b]){ +return; +} +var d=_1[_1b]["dependencies"]; +if(d){ +for(var i=0;i').appendTo(container); + var button = $('').appendTo(container); + button.click({ + target: this, + field: input, + browserUrl: options.browserUrl, + opener: options.opener + }, this.browse); + return input; + }, + destroy: function (target) { + $(target).remove(); + }, + getValue: function (target) { + return $(target).val(); + }, + setValue: function (target, value) { + $(target).val(value); + }, + resize: function (target, width) { + return; + }, + browse: function (e) { + var width = screen.width * 0.5; + var height = screen.height * 0.5; + var iLeft = (screen.width - width) / 2; + var iTop = (screen.height - height) / 2; + var sOptions = 'toolbar=no,status=no,resizable=yes,dependent=yes'; + var url = e.data.browserUrl + '&opener=' + e.data.opener; + sOptions += ',width=' + width; + sOptions += ',height=' + height; + sOptions += ',left=' + iLeft; + sOptions += ',top=' + iTop; + window.KCFinder = {}; + window.KCFinder = { + callBack: function (url) { + window.KCFinder = null; + e.data.target.setValue(e.data.field, url); + } + }; + var oWindow = window.open(url, 'FileBrowser', sOptions); + } + } + }); +})(jQuery); diff --git a/assets/js/easy-ui/editors/imageBrowser.js b/assets/js/easy-ui/editors/imageBrowser.js new file mode 100755 index 0000000000..4d6dd40343 --- /dev/null +++ b/assets/js/easy-ui/editors/imageBrowser.js @@ -0,0 +1,54 @@ +(function($) { + $.extend($.fn.datagrid.defaults.editors, { + imageBrowser: { + thumb_prefix: '', + noImage: '', + init: function (container, options) { + var input = $('').appendTo(container); + var image = $('').appendTo(container); + this.thumb_prefix = options.thumb_prefix; + this.noImage = options.noImage; + image.click({ + target: this, + field: input, + browserUrl: options.browserUrl, + opener: options.opener + }, this.browse); + return input; + }, + destroy: function (target) { + $(target).remove(); + }, + getValue: function (target) { + return $(target).val(); + }, + setValue: function (target, value) { + $(target).val(value); + $(target).parent().find('img').attr('src', (value == '' ? this.noImage : this.thumb_prefix + value)); + }, + resize: function (target, width) { + return; + }, + browse: function (e) { + var width = screen.width * 0.5; + var height = screen.height * 0.5; + var iLeft = (screen.width - width) / 2; + var iTop = (screen.height - height) / 2; + var sOptions = 'toolbar=no,status=no,resizable=yes,dependent=yes'; + var url = e.data.browserUrl + '&opener=' + e.data.opener; + sOptions += ',width=' + width; + sOptions += ',height=' + height; + sOptions += ',left=' + iLeft; + sOptions += ',top=' + iTop; + window.KCFinder = {}; + window.KCFinder = { + callBack: function (url) { + window.KCFinder = null; + e.data.target.setValue(e.data.field, url); + } + }; + var oWindow = window.open(url, 'ImageBrowser', sOptions); + } + } + }); +})(jQuery); \ No newline at end of file diff --git a/assets/js/easy-ui/jquery.easyui.min.js b/assets/js/easy-ui/jquery.easyui.min.js new file mode 100755 index 0000000000..6c061dd903 --- /dev/null +++ b/assets/js/easy-ui/jquery.easyui.min.js @@ -0,0 +1,13547 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +$.parser={auto:true,onComplete:function(_1){ +},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","textbox","filebox","combo","combobox","combotree","combogrid","numberbox","validatebox","searchbox","spinner","numberspinner","timespinner","datetimespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","tabs","accordion","window","dialog","form"],parse:function(_2){ +var aa=[]; +for(var i=0;i<$.parser.plugins.length;i++){ +var _3=$.parser.plugins[i]; +var r=$(".easyui-"+_3,_2); +if(r.length){ +if(r[_3]){ +r[_3](); +}else{ +aa.push({name:_3,jq:r}); +} +} +} +if(aa.length&&window.easyloader){ +var _4=[]; +for(var i=0;i=0){ +v=Math.floor((_8.width()-_9)*v/100); +}else{ +v=Math.floor((_8.height()-_9)*v/100); +} +}else{ +v=parseInt(v)||undefined; +} +return v; +},parseOptions:function(_b,_c){ +var t=$(_b); +var _d={}; +var s=$.trim(t.attr("data-options")); +if(s){ +if(s.substring(0,1)!="{"){ +s="{"+s+"}"; +} +_d=(new Function("return "+s))(); +} +$.map(["width","height","left","top","minWidth","maxWidth","minHeight","maxHeight"],function(p){ +var pv=$.trim(_b.style[p]||""); +if(pv){ +if(pv.indexOf("%")==-1){ +pv=parseInt(pv)||undefined; +} +_d[p]=pv; +} +}); +if(_c){ +var _e={}; +for(var i=0;i<_c.length;i++){ +var pp=_c[i]; +if(typeof pp=="string"){ +_e[pp]=t.attr(pp); +}else{ +for(var _f in pp){ +var _10=pp[_f]; +if(_10=="boolean"){ +_e[_f]=t.attr(_f)?(t.attr(_f)=="true"):undefined; +}else{ +if(_10=="number"){ +_e[_f]=t.attr(_f)=="0"?0:parseFloat(t.attr(_f))||undefined; +} +} +} +} +} +$.extend(_d,_e); +} +return _d; +}}; +$(function(){ +var d=$("
    ").appendTo("body"); +$._boxModel=d.outerWidth()!=100; +d.remove(); +if(!window.easyloader&&$.parser.auto){ +$.parser.parse(); +} +}); +$.fn._outerWidth=function(_11){ +if(_11==undefined){ +if(this[0]==window){ +return this.width()||document.body.clientWidth; +} +return this.outerWidth()||0; +} +return this._size("width",_11); +}; +$.fn._outerHeight=function(_12){ +if(_12==undefined){ +if(this[0]==window){ +return this.height()||document.body.clientHeight; +} +return this.outerHeight()||0; +} +return this._size("height",_12); +}; +$.fn._scrollLeft=function(_13){ +if(_13==undefined){ +return this.scrollLeft(); +}else{ +return this.each(function(){ +$(this).scrollLeft(_13); +}); +} +}; +$.fn._propAttr=$.fn.prop||$.fn.attr; +$.fn._size=function(_14,_15){ +if(typeof _14=="string"){ +if(_14=="clear"){ +return this.each(function(){ +$(this).css({width:"",minWidth:"",maxWidth:"",height:"",minHeight:"",maxHeight:""}); +}); +}else{ +if(_14=="fit"){ +return this.each(function(){ +_16(this,this.tagName=="BODY"?$("body"):$(this).parent(),true); +}); +}else{ +if(_14=="unfit"){ +return this.each(function(){ +_16(this,$(this).parent(),false); +}); +}else{ +if(_15==undefined){ +return _17(this[0],_14); +}else{ +return this.each(function(){ +_17(this,_14,_15); +}); +} +} +} +} +}else{ +return this.each(function(){ +_15=_15||$(this).parent(); +$.extend(_14,_16(this,_15,_14.fit)||{}); +var r1=_18(this,"width",_15,_14); +var r2=_18(this,"height",_15,_14); +if(r1||r2){ +$(this).addClass("easyui-fluid"); +}else{ +$(this).removeClass("easyui-fluid"); +} +}); +} +function _16(_19,_1a,fit){ +if(!_1a.length){ +return false; +} +var t=$(_19)[0]; +var p=_1a[0]; +var _1b=p.fcount||0; +if(fit){ +if(!t.fitted){ +t.fitted=true; +p.fcount=_1b+1; +$(p).addClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").addClass("panel-fit"); +} +} +return {width:($(p).width()||1),height:($(p).height()||1)}; +}else{ +if(t.fitted){ +t.fitted=false; +p.fcount=_1b-1; +if(p.fcount==0){ +$(p).removeClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").removeClass("panel-fit"); +} +} +} +return false; +} +}; +function _18(_1c,_1d,_1e,_1f){ +var t=$(_1c); +var p=_1d; +var p1=p.substr(0,1).toUpperCase()+p.substr(1); +var min=$.parser.parseValue("min"+p1,_1f["min"+p1],_1e); +var max=$.parser.parseValue("max"+p1,_1f["max"+p1],_1e); +var val=$.parser.parseValue(p,_1f[p],_1e); +var _20=(String(_1f[p]||"").indexOf("%")>=0?true:false); +if(!isNaN(val)){ +var v=Math.min(Math.max(val,min||0),max||99999); +if(!_20){ +_1f[p]=v; +} +t._size("min"+p1,""); +t._size("max"+p1,""); +t._size(p,v); +}else{ +t._size(p,""); +t._size("min"+p1,min); +t._size("max"+p1,max); +} +return _20||_1f.fit; +}; +function _17(_21,_22,_23){ +var t=$(_21); +if(_23==undefined){ +_23=parseInt(_21.style[_22]); +if(isNaN(_23)){ +return undefined; +} +if($._boxModel){ +_23+=_24(); +} +return _23; +}else{ +if(_23===""){ +t.css(_22,""); +}else{ +if($._boxModel){ +_23-=_24(); +if(_23<0){ +_23=0; +} +} +t.css(_22,_23+"px"); +} +} +function _24(){ +if(_22.toLowerCase().indexOf("width")>=0){ +return t.outerWidth()-t.width(); +}else{ +return t.outerHeight()-t.height(); +} +}; +}; +}; +})(jQuery); +(function($){ +var _25=null; +var _26=null; +var _27=false; +function _28(e){ +if(e.touches.length!=1){ +return; +} +if(!_27){ +_27=true; +dblClickTimer=setTimeout(function(){ +_27=false; +},500); +}else{ +clearTimeout(dblClickTimer); +_27=false; +_29(e,"dblclick"); +} +_25=setTimeout(function(){ +_29(e,"contextmenu",3); +},1000); +_29(e,"mousedown"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2a(e){ +if(e.touches.length!=1){ +return; +} +if(_25){ +clearTimeout(_25); +} +_29(e,"mousemove"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2b(e){ +if(_25){ +clearTimeout(_25); +} +_29(e,"mouseup"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _29(e,_2c,_2d){ +var _2e=new $.Event(_2c); +_2e.pageX=e.changedTouches[0].pageX; +_2e.pageY=e.changedTouches[0].pageY; +_2e.which=_2d||1; +$(e.target).trigger(_2e); +}; +if(document.addEventListener){ +document.addEventListener("touchstart",_28,true); +document.addEventListener("touchmove",_2a,true); +document.addEventListener("touchend",_2b,true); +} +})(jQuery); +(function($){ +function _2f(e){ +var _30=$.data(e.data.target,"draggable"); +var _31=_30.options; +var _32=_30.proxy; +var _33=e.data; +var _34=_33.startLeft+e.pageX-_33.startX; +var top=_33.startTop+e.pageY-_33.startY; +if(_32){ +if(_32.parent()[0]==document.body){ +if(_31.deltaX!=null&&_31.deltaX!=undefined){ +_34=e.pageX+_31.deltaX; +}else{ +_34=e.pageX-e.data.offsetWidth; +} +if(_31.deltaY!=null&&_31.deltaY!=undefined){ +top=e.pageY+_31.deltaY; +}else{ +top=e.pageY-e.data.offsetHeight; +} +}else{ +if(_31.deltaX!=null&&_31.deltaX!=undefined){ +_34+=e.data.offsetWidth+_31.deltaX; +} +if(_31.deltaY!=null&&_31.deltaY!=undefined){ +top+=e.data.offsetHeight+_31.deltaY; +} +} +} +if(e.data.parent!=document.body){ +_34+=$(e.data.parent).scrollLeft(); +top+=$(e.data.parent).scrollTop(); +} +if(_31.axis=="h"){ +_33.left=_34; +}else{ +if(_31.axis=="v"){ +_33.top=top; +}else{ +_33.left=_34; +_33.top=top; +} +} +}; +function _35(e){ +var _36=$.data(e.data.target,"draggable"); +var _37=_36.options; +var _38=_36.proxy; +if(!_38){ +_38=$(e.data.target); +} +_38.css({left:e.data.left,top:e.data.top}); +$("body").css("cursor",_37.cursor); +}; +function _39(e){ +$.fn.draggable.isDragging=true; +var _3a=$.data(e.data.target,"draggable"); +var _3b=_3a.options; +var _3c=$(".droppable").filter(function(){ +return e.data.target!=this; +}).filter(function(){ +var _3d=$.data(this,"droppable").options.accept; +if(_3d){ +return $(_3d).filter(function(){ +return this==e.data.target; +}).length>0; +}else{ +return true; +} +}); +_3a.droppables=_3c; +var _3e=_3a.proxy; +if(!_3e){ +if(_3b.proxy){ +if(_3b.proxy=="clone"){ +_3e=$(e.data.target).clone().insertAfter(e.data.target); +}else{ +_3e=_3b.proxy.call(e.data.target,e.data.target); +} +_3a.proxy=_3e; +}else{ +_3e=$(e.data.target); +} +} +_3e.css("position","absolute"); +_2f(e); +_35(e); +_3b.onStartDrag.call(e.data.target,e); +return false; +}; +function _3f(e){ +var _40=$.data(e.data.target,"draggable"); +_2f(e); +if(_40.options.onDrag.call(e.data.target,e)!=false){ +_35(e); +} +var _41=e.data.target; +_40.droppables.each(function(){ +var _42=$(this); +if(_42.droppable("options").disabled){ +return; +} +var p2=_42.offset(); +if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_57.options.edge; +}; +}); +}; +$.fn.draggable.methods={options:function(jq){ +return $.data(jq[0],"draggable").options; +},proxy:function(jq){ +return $.data(jq[0],"draggable").proxy; +},enable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:true}); +}); +}}; +$.fn.draggable.parseOptions=function(_5c){ +var t=$(_5c); +return $.extend({},$.parser.parseOptions(_5c,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,onBeforeDrag:function(e){ +},onStartDrag:function(e){ +},onDrag:function(e){ +},onStopDrag:function(e){ +}}; +$.fn.draggable.isDragging=false; +})(jQuery); +(function($){ +function _5d(_5e){ +$(_5e).addClass("droppable"); +$(_5e).bind("_dragenter",function(e,_5f){ +$.data(_5e,"droppable").options.onDragEnter.apply(_5e,[e,_5f]); +}); +$(_5e).bind("_dragleave",function(e,_60){ +$.data(_5e,"droppable").options.onDragLeave.apply(_5e,[e,_60]); +}); +$(_5e).bind("_dragover",function(e,_61){ +$.data(_5e,"droppable").options.onDragOver.apply(_5e,[e,_61]); +}); +$(_5e).bind("_drop",function(e,_62){ +$.data(_5e,"droppable").options.onDrop.apply(_5e,[e,_62]); +}); +}; +$.fn.droppable=function(_63,_64){ +if(typeof _63=="string"){ +return $.fn.droppable.methods[_63](this,_64); +} +_63=_63||{}; +return this.each(function(){ +var _65=$.data(this,"droppable"); +if(_65){ +$.extend(_65.options,_63); +}else{ +_5d(this); +$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_63)}); +} +}); +}; +$.fn.droppable.methods={options:function(jq){ +return $.data(jq[0],"droppable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:true}); +}); +}}; +$.fn.droppable.parseOptions=function(_66){ +var t=$(_66); +return $.extend({},$.parser.parseOptions(_66,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_67){ +},onDragOver:function(e,_68){ +},onDragLeave:function(e,_69){ +},onDrop:function(e,_6a){ +}}; +})(jQuery); +(function($){ +$.fn.resizable=function(_6b,_6c){ +if(typeof _6b=="string"){ +return $.fn.resizable.methods[_6b](this,_6c); +} +function _6d(e){ +var _6e=e.data; +var _6f=$.data(_6e.target,"resizable").options; +if(_6e.dir.indexOf("e")!=-1){ +var _70=_6e.startWidth+e.pageX-_6e.startX; +_70=Math.min(Math.max(_70,_6f.minWidth),_6f.maxWidth); +_6e.width=_70; +} +if(_6e.dir.indexOf("s")!=-1){ +var _71=_6e.startHeight+e.pageY-_6e.startY; +_71=Math.min(Math.max(_71,_6f.minHeight),_6f.maxHeight); +_6e.height=_71; +} +if(_6e.dir.indexOf("w")!=-1){ +var _70=_6e.startWidth-e.pageX+_6e.startX; +_70=Math.min(Math.max(_70,_6f.minWidth),_6f.maxWidth); +_6e.width=_70; +_6e.left=_6e.startLeft+_6e.startWidth-_6e.width; +} +if(_6e.dir.indexOf("n")!=-1){ +var _71=_6e.startHeight-e.pageY+_6e.startY; +_71=Math.min(Math.max(_71,_6f.minHeight),_6f.maxHeight); +_6e.height=_71; +_6e.top=_6e.startTop+_6e.startHeight-_6e.height; +} +}; +function _72(e){ +var _73=e.data; +var t=$(_73.target); +t.css({left:_73.left,top:_73.top}); +if(t.outerWidth()!=_73.width){ +t._outerWidth(_73.width); +} +if(t.outerHeight()!=_73.height){ +t._outerHeight(_73.height); +} +}; +function _74(e){ +$.fn.resizable.isResizing=true; +$.data(e.data.target,"resizable").options.onStartResize.call(e.data.target,e); +return false; +}; +function _75(e){ +_6d(e); +if($.data(e.data.target,"resizable").options.onResize.call(e.data.target,e)!=false){ +_72(e); +} +return false; +}; +function _76(e){ +$.fn.resizable.isResizing=false; +_6d(e,true); +_72(e); +$.data(e.data.target,"resizable").options.onStopResize.call(e.data.target,e); +$(document).unbind(".resizable"); +$("body").css("cursor",""); +return false; +}; +return this.each(function(){ +var _77=null; +var _78=$.data(this,"resizable"); +if(_78){ +$(this).unbind(".resizable"); +_77=$.extend(_78.options,_6b||{}); +}else{ +_77=$.extend({},$.fn.resizable.defaults,$.fn.resizable.parseOptions(this),_6b||{}); +$.data(this,"resizable",{options:_77}); +} +if(_77.disabled==true){ +return; +} +$(this).bind("mousemove.resizable",{target:this},function(e){ +if($.fn.resizable.isResizing){ +return; +} +var dir=_79(e); +if(dir==""){ +$(e.data.target).css("cursor",""); +}else{ +$(e.data.target).css("cursor",dir+"-resize"); +} +}).bind("mouseleave.resizable",{target:this},function(e){ +$(e.data.target).css("cursor",""); +}).bind("mousedown.resizable",{target:this},function(e){ +var dir=_79(e); +if(dir==""){ +return; +} +function _7a(css){ +var val=parseInt($(e.data.target).css(css)); +if(isNaN(val)){ +return 0; +}else{ +return val; +} +}; +var _7b={target:e.data.target,dir:dir,startLeft:_7a("left"),startTop:_7a("top"),left:_7a("left"),top:_7a("top"),startX:e.pageX,startY:e.pageY,startWidth:$(e.data.target).outerWidth(),startHeight:$(e.data.target).outerHeight(),width:$(e.data.target).outerWidth(),height:$(e.data.target).outerHeight(),deltaWidth:$(e.data.target).outerWidth()-$(e.data.target).width(),deltaHeight:$(e.data.target).outerHeight()-$(e.data.target).height()}; +$(document).bind("mousedown.resizable",_7b,_74); +$(document).bind("mousemove.resizable",_7b,_75); +$(document).bind("mouseup.resizable",_7b,_76); +$("body").css("cursor",dir+"-resize"); +}); +function _79(e){ +var tt=$(e.data.target); +var dir=""; +var _7c=tt.offset(); +var _7d=tt.outerWidth(); +var _7e=tt.outerHeight(); +var _7f=_77.edge; +if(e.pageY>_7c.top&&e.pageY<_7c.top+_7f){ +dir+="n"; +}else{ +if(e.pageY<_7c.top+_7e&&e.pageY>_7c.top+_7e-_7f){ +dir+="s"; +} +} +if(e.pageX>_7c.left&&e.pageX<_7c.left+_7f){ +dir+="w"; +}else{ +if(e.pageX<_7c.left+_7d&&e.pageX>_7c.left+_7d-_7f){ +dir+="e"; +} +} +var _80=_77.handles.split(","); +for(var i=0;i<_80.length;i++){ +var _81=_80[i].replace(/(^\s*)|(\s*$)/g,""); +if(_81=="all"||_81==dir){ +return dir; +} +} +return ""; +}; +}); +}; +$.fn.resizable.methods={options:function(jq){ +return $.data(jq[0],"resizable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:true}); +}); +}}; +$.fn.resizable.parseOptions=function(_82){ +var t=$(_82); +return $.extend({},$.parser.parseOptions(_82,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ +},onResize:function(e){ +},onStopResize:function(e){ +}}; +$.fn.resizable.isResizing=false; +})(jQuery); +(function($){ +function _83(_84,_85){ +var _86=$.data(_84,"linkbutton").options; +if(_85){ +$.extend(_86,_85); +} +if(_86.width||_86.height||_86.fit){ +var btn=$(_84); +var _87=btn.parent(); +var _88=btn.is(":visible"); +if(!_88){ +var _89=$("
    ").insertBefore(_84); +var _8a={position:btn.css("position"),display:btn.css("display"),left:btn.css("left")}; +btn.appendTo("body"); +btn.css({position:"absolute",display:"inline-block",left:-20000}); +} +btn._size(_86,_87); +var _8b=btn.find(".l-btn-left"); +_8b.css("margin-top",0); +_8b.css("margin-top",parseInt((btn.height()-_8b.height())/2)+"px"); +if(!_88){ +btn.insertAfter(_89); +btn.css(_8a); +_89.remove(); +} +} +}; +function _8c(_8d){ +var _8e=$.data(_8d,"linkbutton").options; +var t=$(_8d).empty(); +t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); +t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_8e.size); +if(_8e.plain){ +t.addClass("l-btn-plain"); +} +if(_8e.selected){ +t.addClass(_8e.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +} +t.attr("group",_8e.group||""); +t.attr("id",_8e.id||""); +var _8f=$("").appendTo(t); +if(_8e.text){ +$("").html(_8e.text).appendTo(_8f); +}else{ +$(" ").appendTo(_8f); +} +if(_8e.iconCls){ +$(" ").addClass(_8e.iconCls).appendTo(_8f); +_8f.addClass("l-btn-icon-"+_8e.iconAlign); +} +t.unbind(".linkbutton").bind("focus.linkbutton",function(){ +if(!_8e.disabled){ +$(this).addClass("l-btn-focus"); +} +}).bind("blur.linkbutton",function(){ +$(this).removeClass("l-btn-focus"); +}).bind("click.linkbutton",function(){ +if(!_8e.disabled){ +if(_8e.toggle){ +if(_8e.selected){ +$(this).linkbutton("unselect"); +}else{ +$(this).linkbutton("select"); +} +} +_8e.onClick.call(this); +} +}); +_90(_8d,_8e.selected); +_91(_8d,_8e.disabled); +}; +function _90(_92,_93){ +var _94=$.data(_92,"linkbutton").options; +if(_93){ +if(_94.group){ +$("a.l-btn[group=\""+_94.group+"\"]").each(function(){ +var o=$(this).linkbutton("options"); +if(o.toggle){ +$(this).removeClass("l-btn-selected l-btn-plain-selected"); +o.selected=false; +} +}); +} +$(_92).addClass(_94.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +_94.selected=true; +}else{ +if(!_94.group){ +$(_92).removeClass("l-btn-selected l-btn-plain-selected"); +_94.selected=false; +} +} +}; +function _91(_95,_96){ +var _97=$.data(_95,"linkbutton"); +var _98=_97.options; +$(_95).removeClass("l-btn-disabled l-btn-plain-disabled"); +if(_96){ +_98.disabled=true; +var _99=$(_95).attr("href"); +if(_99){ +_97.href=_99; +$(_95).attr("href","javascript:void(0)"); +} +if(_95.onclick){ +_97.onclick=_95.onclick; +_95.onclick=null; +} +_98.plain?$(_95).addClass("l-btn-disabled l-btn-plain-disabled"):$(_95).addClass("l-btn-disabled"); +}else{ +_98.disabled=false; +if(_97.href){ +$(_95).attr("href",_97.href); +} +if(_97.onclick){ +_95.onclick=_97.onclick; +} +} +}; +$.fn.linkbutton=function(_9a,_9b){ +if(typeof _9a=="string"){ +return $.fn.linkbutton.methods[_9a](this,_9b); +} +_9a=_9a||{}; +return this.each(function(){ +var _9c=$.data(this,"linkbutton"); +if(_9c){ +$.extend(_9c.options,_9a); +}else{ +$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_9a)}); +$(this).removeAttr("disabled"); +$(this).bind("_resize",function(e,_9d){ +if($(this).hasClass("easyui-fluid")||_9d){ +_83(this); +} +return false; +}); +} +_8c(this); +_83(this); +}); +}; +$.fn.linkbutton.methods={options:function(jq){ +return $.data(jq[0],"linkbutton").options; +},resize:function(jq,_9e){ +return jq.each(function(){ +_83(this,_9e); +}); +},enable:function(jq){ +return jq.each(function(){ +_91(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_91(this,true); +}); +},select:function(jq){ +return jq.each(function(){ +_90(this,true); +}); +},unselect:function(jq){ +return jq.each(function(){ +_90(this,false); +}); +}}; +$.fn.linkbutton.parseOptions=function(_9f){ +var t=$(_9f); +return $.extend({},$.parser.parseOptions(_9f,["id","iconCls","iconAlign","group","size",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); +}; +$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){ +}}; +})(jQuery); +(function($){ +function _a0(_a1){ +var _a2=$.data(_a1,"pagination"); +var _a3=_a2.options; +var bb=_a2.bb={}; +var _a4=$(_a1).addClass("pagination").html("
    "); +var tr=_a4.find("tr"); +var aa=$.extend([],_a3.layout); +if(!_a3.showPageList){ +_a5(aa,"list"); +} +if(!_a3.showRefresh){ +_a5(aa,"refresh"); +} +if(aa[0]=="sep"){ +aa.shift(); +} +if(aa[aa.length-1]=="sep"){ +aa.pop(); +} +for(var _a6=0;_a6"); +ps.bind("change",function(){ +_a3.pageSize=parseInt($(this).val()); +_a3.onChangePageSize.call(_a1,_a3.pageSize); +_ad(_a1,_a3.pageNumber); +}); +for(var i=0;i<_a3.pageList.length;i++){ +$("").text(_a3.pageList[i]).appendTo(ps); +} +$("").append(ps).appendTo(tr); +}else{ +if(_a7=="sep"){ +$("
    ").appendTo(tr); +}else{ +if(_a7=="first"){ +bb.first=_a8("first"); +}else{ +if(_a7=="prev"){ +bb.prev=_a8("prev"); +}else{ +if(_a7=="next"){ +bb.next=_a8("next"); +}else{ +if(_a7=="last"){ +bb.last=_a8("last"); +}else{ +if(_a7=="manual"){ +$("").html(_a3.beforePageText).appendTo(tr).wrap(""); +bb.num=$("").appendTo(tr).wrap(""); +bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ +if(e.keyCode==13){ +var _a9=parseInt($(this).val())||1; +_ad(_a1,_a9); +return false; +} +}); +bb.after=$("").appendTo(tr).wrap(""); +}else{ +if(_a7=="refresh"){ +bb.refresh=_a8("refresh"); +}else{ +if(_a7=="links"){ +$("").appendTo(tr); +} +} +} +} +} +} +} +} +} +} +if(_a3.buttons){ +$("
    ").appendTo(tr); +if($.isArray(_a3.buttons)){ +for(var i=0;i<_a3.buttons.length;i++){ +var btn=_a3.buttons[i]; +if(btn=="-"){ +$("
    ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var a=$("").appendTo(td); +a[0].onclick=eval(btn.handler||function(){ +}); +a.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +var td=$("").appendTo(tr); +$(_a3.buttons).appendTo(td).show(); +} +} +$("
    ").appendTo(_a4); +$("
    ").appendTo(_a4); +function _a8(_aa){ +var btn=_a3.nav[_aa]; +var a=$("").appendTo(tr); +a.wrap(""); +a.linkbutton({iconCls:btn.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ +btn.handler.call(_a1); +}); +return a; +}; +function _a5(aa,_ab){ +var _ac=$.inArray(_ab,aa); +if(_ac>=0){ +aa.splice(_ac,1); +} +return aa; +}; +}; +function _ad(_ae,_af){ +var _b0=$.data(_ae,"pagination").options; +_b1(_ae,{pageNumber:_af}); +_b0.onSelectPage.call(_ae,_b0.pageNumber,_b0.pageSize); +}; +function _b1(_b2,_b3){ +var _b4=$.data(_b2,"pagination"); +var _b5=_b4.options; +var bb=_b4.bb; +$.extend(_b5,_b3||{}); +var ps=$(_b2).find("select.pagination-page-list"); +if(ps.length){ +ps.val(_b5.pageSize+""); +_b5.pageSize=parseInt(ps.val()); +} +var _b6=Math.ceil(_b5.total/_b5.pageSize)||1; +if(_b5.pageNumber<1){ +_b5.pageNumber=1; +} +if(_b5.pageNumber>_b6){ +_b5.pageNumber=_b6; +} +if(_b5.total==0){ +_b5.pageNumber=0; +_b6=0; +} +if(bb.num){ +bb.num.val(_b5.pageNumber); +} +if(bb.after){ +bb.after.html(_b5.afterPageText.replace(/{pages}/,_b6)); +} +var td=$(_b2).find("td.pagination-links"); +if(td.length){ +td.empty(); +var _b7=_b5.pageNumber-Math.floor(_b5.links/2); +if(_b7<1){ +_b7=1; +} +var _b8=_b7+_b5.links-1; +if(_b8>_b6){ +_b8=_b6; +} +_b7=_b8-_b5.links+1; +if(_b7<1){ +_b7=1; +} +for(var i=_b7;i<=_b8;i++){ +var a=$("").appendTo(td); +a.linkbutton({plain:true,text:i}); +if(i==_b5.pageNumber){ +a.linkbutton("select"); +}else{ +a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ +_ad(_b2,e.data.pageNumber); +}); +} +} +} +var _b9=_b5.displayMsg; +_b9=_b9.replace(/{from}/,_b5.total==0?0:_b5.pageSize*(_b5.pageNumber-1)+1); +_b9=_b9.replace(/{to}/,Math.min(_b5.pageSize*(_b5.pageNumber),_b5.total)); +_b9=_b9.replace(/{total}/,_b5.total); +$(_b2).find("div.pagination-info").html(_b9); +if(bb.first){ +bb.first.linkbutton({disabled:((!_b5.total)||_b5.pageNumber==1)}); +} +if(bb.prev){ +bb.prev.linkbutton({disabled:((!_b5.total)||_b5.pageNumber==1)}); +} +if(bb.next){ +bb.next.linkbutton({disabled:(_b5.pageNumber==_b6)}); +} +if(bb.last){ +bb.last.linkbutton({disabled:(_b5.pageNumber==_b6)}); +} +_ba(_b2,_b5.loading); +}; +function _ba(_bb,_bc){ +var _bd=$.data(_bb,"pagination"); +var _be=_bd.options; +_be.loading=_bc; +if(_be.showRefresh&&_bd.bb.refresh){ +_bd.bb.refresh.linkbutton({iconCls:(_be.loading?"pagination-loading":"pagination-load")}); +} +}; +$.fn.pagination=function(_bf,_c0){ +if(typeof _bf=="string"){ +return $.fn.pagination.methods[_bf](this,_c0); +} +_bf=_bf||{}; +return this.each(function(){ +var _c1; +var _c2=$.data(this,"pagination"); +if(_c2){ +_c1=$.extend(_c2.options,_bf); +}else{ +_c1=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_bf); +$.data(this,"pagination",{options:_c1}); +} +_a0(this); +_b1(this); +}); +}; +$.fn.pagination.methods={options:function(jq){ +return $.data(jq[0],"pagination").options; +},loading:function(jq){ +return jq.each(function(){ +_ba(this,true); +}); +},loaded:function(jq){ +return jq.each(function(){ +_ba(this,false); +}); +},refresh:function(jq,_c3){ +return jq.each(function(){ +_b1(this,_c3); +}); +},select:function(jq,_c4){ +return jq.each(function(){ +_ad(this,_c4); +}); +}}; +$.fn.pagination.parseOptions=function(_c5){ +var t=$(_c5); +return $.extend({},$.parser.parseOptions(_c5,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); +}; +$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh"],onSelectPage:function(_c6,_c7){ +},onBeforeRefresh:function(_c8,_c9){ +},onRefresh:function(_ca,_cb){ +},onChangePageSize:function(_cc){ +},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ +var _cd=$(this).pagination("options"); +if(_cd.pageNumber>1){ +$(this).pagination("select",1); +} +}},prev:{iconCls:"pagination-prev",handler:function(){ +var _ce=$(this).pagination("options"); +if(_ce.pageNumber>1){ +$(this).pagination("select",_ce.pageNumber-1); +} +}},next:{iconCls:"pagination-next",handler:function(){ +var _cf=$(this).pagination("options"); +var _d0=Math.ceil(_cf.total/_cf.pageSize); +if(_cf.pageNumber<_d0){ +$(this).pagination("select",_cf.pageNumber+1); +} +}},last:{iconCls:"pagination-last",handler:function(){ +var _d1=$(this).pagination("options"); +var _d2=Math.ceil(_d1.total/_d1.pageSize); +if(_d1.pageNumber<_d2){ +$(this).pagination("select",_d2); +} +}},refresh:{iconCls:"pagination-refresh",handler:function(){ +var _d3=$(this).pagination("options"); +if(_d3.onBeforeRefresh.call(this,_d3.pageNumber,_d3.pageSize)!=false){ +$(this).pagination("select",_d3.pageNumber); +_d3.onRefresh.call(this,_d3.pageNumber,_d3.pageSize); +} +}}}}; +})(jQuery); +(function($){ +function _d4(_d5){ +var _d6=$(_d5); +_d6.addClass("tree"); +return _d6; +}; +function _d7(_d8){ +var _d9=$.data(_d8,"tree").options; +$(_d8).unbind().bind("mouseover",function(e){ +var tt=$(e.target); +var _da=tt.closest("div.tree-node"); +if(!_da.length){ +return; +} +_da.addClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.addClass("tree-expanded-hover"); +}else{ +tt.addClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +var tt=$(e.target); +var _db=tt.closest("div.tree-node"); +if(!_db.length){ +return; +} +_db.removeClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.removeClass("tree-expanded-hover"); +}else{ +tt.removeClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("click",function(e){ +var tt=$(e.target); +var _dc=tt.closest("div.tree-node"); +if(!_dc.length){ +return; +} +if(tt.hasClass("tree-hit")){ +_13b(_d8,_dc[0]); +return false; +}else{ +if(tt.hasClass("tree-checkbox")){ +_104(_d8,_dc[0],!tt.hasClass("tree-checkbox1")); +return false; +}else{ +_181(_d8,_dc[0]); +_d9.onClick.call(_d8,_df(_d8,_dc[0])); +} +} +e.stopPropagation(); +}).bind("dblclick",function(e){ +var _dd=$(e.target).closest("div.tree-node"); +if(!_dd.length){ +return; +} +_181(_d8,_dd[0]); +_d9.onDblClick.call(_d8,_df(_d8,_dd[0])); +e.stopPropagation(); +}).bind("contextmenu",function(e){ +var _de=$(e.target).closest("div.tree-node"); +if(!_de.length){ +return; +} +_d9.onContextMenu.call(_d8,e,_df(_d8,_de[0])); +e.stopPropagation(); +}); +}; +function _e0(_e1){ +var _e2=$.data(_e1,"tree").options; +_e2.dnd=false; +var _e3=$(_e1).find("div.tree-node"); +_e3.draggable("disable"); +_e3.css("cursor","pointer"); +}; +function _e4(_e5){ +var _e6=$.data(_e5,"tree"); +var _e7=_e6.options; +var _e8=_e6.tree; +_e6.disabledNodes=[]; +_e7.dnd=true; +_e8.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_e9){ +var p=$("
    ").appendTo("body"); +p.html(" "+$(_e9).find(".tree-title").html()); +p.hide(); +return p; +},deltaX:15,deltaY:15,onBeforeDrag:function(e){ +if(_e7.onBeforeDrag.call(_e5,_df(_e5,this))==false){ +return false; +} +if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ +return false; +} +if(e.which!=1){ +return false; +} +$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); +var _ea=$(this).find("span.tree-indent"); +if(_ea.length){ +e.data.offsetWidth-=_ea.length*_ea.width(); +} +},onStartDrag:function(){ +$(this).draggable("proxy").css({left:-10000,top:-10000}); +_e7.onStartDrag.call(_e5,_df(_e5,this)); +var _eb=_df(_e5,this); +if(_eb.id==undefined){ +_eb.id="easyui_tree_node_id_temp"; +_11e(_e5,_eb); +} +_e6.draggingNodeId=_eb.id; +},onDrag:function(e){ +var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; +var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); +if(d>3){ +$(this).draggable("proxy").show(); +} +this.pageY=e.pageY; +},onStopDrag:function(){ +$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); +for(var i=0;i<_e6.disabledNodes.length;i++){ +$(_e6.disabledNodes[i]).droppable("enable"); +} +_e6.disabledNodes=[]; +var _ec=_179(_e5,_e6.draggingNodeId); +if(_ec&&_ec.id=="easyui_tree_node_id_temp"){ +_ec.id=""; +_11e(_e5,_ec); +} +_e7.onStopDrag.call(_e5,_ec); +}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_ed){ +if(_e7.onDragEnter.call(_e5,this,_ee(_ed))==false){ +_ef(_ed,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_e6.disabledNodes.push(this); +} +},onDragOver:function(e,_f0){ +if($(this).droppable("options").disabled){ +return; +} +var _f1=_f0.pageY; +var top=$(this).offset().top; +var _f2=top+$(this).outerHeight(); +_ef(_f0,true); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +if(_f1>top+(_f2-top)/2){ +if(_f2-_f1<5){ +$(this).addClass("tree-node-bottom"); +}else{ +$(this).addClass("tree-node-append"); +} +}else{ +if(_f1-top<5){ +$(this).addClass("tree-node-top"); +}else{ +$(this).addClass("tree-node-append"); +} +} +if(_e7.onDragOver.call(_e5,this,_ee(_f0))==false){ +_ef(_f0,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_e6.disabledNodes.push(this); +} +},onDragLeave:function(e,_f3){ +_ef(_f3,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +_e7.onDragLeave.call(_e5,this,_ee(_f3)); +},onDrop:function(e,_f4){ +var _f5=this; +var _f6,_f7; +if($(this).hasClass("tree-node-append")){ +_f6=_f8; +_f7="append"; +}else{ +_f6=_f9; +_f7=$(this).hasClass("tree-node-top")?"top":"bottom"; +} +if(_e7.onBeforeDrop.call(_e5,_f5,_ee(_f4),_f7)==false){ +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +return; +} +_f6(_f4,_f5,_f7); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +}}); +function _ee(_fa,pop){ +return $(_fa).closest("ul.tree").tree(pop?"pop":"getData",_fa); +}; +function _ef(_fb,_fc){ +var _fd=$(_fb).draggable("proxy").find("span.tree-dnd-icon"); +_fd.removeClass("tree-dnd-yes tree-dnd-no").addClass(_fc?"tree-dnd-yes":"tree-dnd-no"); +}; +function _f8(_fe,_ff){ +if(_df(_e5,_ff).state=="closed"){ +_133(_e5,_ff,function(){ +_100(); +}); +}else{ +_100(); +} +function _100(){ +var node=_ee(_fe,true); +$(_e5).tree("append",{parent:_ff,data:[node]}); +_e7.onDrop.call(_e5,_ff,node,"append"); +}; +}; +function _f9(_101,dest,_102){ +var _103={}; +if(_102=="top"){ +_103.before=dest; +}else{ +_103.after=dest; +} +var node=_ee(_101,true); +_103.data=node; +$(_e5).tree("insert",_103); +_e7.onDrop.call(_e5,dest,node,_102); +}; +}; +function _104(_105,_106,_107){ +var opts=$.data(_105,"tree").options; +if(!opts.checkbox){ +return; +} +var _108=_df(_105,_106); +if(opts.onBeforeCheck.call(_105,_108,_107)==false){ +return; +} +var node=$(_106); +var ck=node.find(".tree-checkbox"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +if(_107){ +ck.addClass("tree-checkbox1"); +}else{ +ck.addClass("tree-checkbox0"); +} +if(opts.cascadeCheck){ +_109(node); +_10a(node); +} +opts.onCheck.call(_105,_108,_107); +function _10a(node){ +var _10b=node.next().find(".tree-checkbox"); +_10b.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +if(node.find(".tree-checkbox").hasClass("tree-checkbox1")){ +_10b.addClass("tree-checkbox1"); +}else{ +_10b.addClass("tree-checkbox0"); +} +}; +function _109(node){ +var _10c=_146(_105,node[0]); +if(_10c){ +var ck=$(_10c.target).find(".tree-checkbox"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +if(_10d(node)){ +ck.addClass("tree-checkbox1"); +}else{ +if(_10e(node)){ +ck.addClass("tree-checkbox0"); +}else{ +ck.addClass("tree-checkbox2"); +} +} +_109($(_10c.target)); +} +function _10d(n){ +var ck=n.find(".tree-checkbox"); +if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ +return false; +} +var b=true; +n.parent().siblings().each(function(){ +if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ +b=false; +} +}); +return b; +}; +function _10e(n){ +var ck=n.find(".tree-checkbox"); +if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ +return false; +} +var b=true; +n.parent().siblings().each(function(){ +if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ +b=false; +} +}); +return b; +}; +}; +}; +function _10f(_110,_111){ +var opts=$.data(_110,"tree").options; +if(!opts.checkbox){ +return; +} +var node=$(_111); +if(_112(_110,_111)){ +var ck=node.find(".tree-checkbox"); +if(ck.length){ +if(ck.hasClass("tree-checkbox1")){ +_104(_110,_111,true); +}else{ +_104(_110,_111,false); +} +}else{ +if(opts.onlyLeafCheck){ +$("").insertBefore(node.find(".tree-title")); +} +} +}else{ +var ck=node.find(".tree-checkbox"); +if(opts.onlyLeafCheck){ +ck.remove(); +}else{ +if(ck.hasClass("tree-checkbox1")){ +_104(_110,_111,true); +}else{ +if(ck.hasClass("tree-checkbox2")){ +var _113=true; +var _114=true; +var _115=_116(_110,_111); +for(var i=0;i<_115.length;i++){ +if(_115[i].checked){ +_114=false; +}else{ +_113=false; +} +} +if(_113){ +_104(_110,_111,true); +} +if(_114){ +_104(_110,_111,false); +} +} +} +} +} +}; +function _117(_118,ul,data,_119){ +var _11a=$.data(_118,"tree"); +var opts=_11a.options; +var _11b=$(ul).prevAll("div.tree-node:first"); +data=opts.loadFilter.call(_118,data,_11b[0]); +var _11c=_11d(_118,"domId",_11b.attr("id")); +if(!_119){ +_11c?_11c.children=data:_11a.data=data; +$(ul).empty(); +}else{ +if(_11c){ +_11c.children?_11c.children=_11c.children.concat(data):_11c.children=data; +}else{ +_11a.data=_11a.data.concat(data); +} +} +opts.view.render.call(opts.view,_118,ul,data); +if(opts.dnd){ +_e4(_118); +} +if(_11c){ +_11e(_118,_11c); +} +var _11f=[]; +var _120=[]; +for(var i=0;i1){ +$(_126[0].target).addClass("tree-root-first"); +}else{ +if(_126.length==1){ +$(_126[0].target).addClass("tree-root-one"); +} +} +} +$(ul).children("li").each(function(){ +var node=$(this).children("div.tree-node"); +var ul=node.next("ul"); +if(ul.length){ +if($(this).next().length){ +_127(node); +} +_123(_124,ul,_125); +}else{ +_128(node); +} +}); +var _129=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); +_129.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +function _128(node,_12a){ +var icon=node.find("span.tree-icon"); +icon.prev("span.tree-indent").addClass("tree-join"); +}; +function _127(node){ +var _12b=node.find("span.tree-indent, span.tree-hit").length; +node.next().find("div.tree-node").each(function(){ +$(this).children("span:eq("+(_12b-1)+")").addClass("tree-line"); +}); +}; +}; +function _12c(_12d,ul,_12e,_12f){ +var opts=$.data(_12d,"tree").options; +_12e=$.extend({},opts.queryParams,_12e||{}); +var _130=null; +if(_12d!=ul){ +var node=$(ul).prev(); +_130=_df(_12d,node[0]); +} +if(opts.onBeforeLoad.call(_12d,_130,_12e)==false){ +return; +} +var _131=$(ul).prev().children("span.tree-folder"); +_131.addClass("tree-loading"); +var _132=opts.loader.call(_12d,_12e,function(data){ +_131.removeClass("tree-loading"); +_117(_12d,ul,data); +if(_12f){ +_12f(); +} +},function(){ +_131.removeClass("tree-loading"); +opts.onLoadError.apply(_12d,arguments); +if(_12f){ +_12f(); +} +}); +if(_132==false){ +_131.removeClass("tree-loading"); +} +}; +function _133(_134,_135,_136){ +var opts=$.data(_134,"tree").options; +var hit=$(_135).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +var node=_df(_134,_135); +if(opts.onBeforeExpand.call(_134,node)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var ul=$(_135).next(); +if(ul.length){ +if(opts.animate){ +ul.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_134,node); +if(_136){ +_136(); +} +}); +}else{ +ul.css("display","block"); +node.state="open"; +opts.onExpand.call(_134,node); +if(_136){ +_136(); +} +} +}else{ +var _137=$("
      ").insertAfter(_135); +_12c(_134,_137[0],{id:node.id},function(){ +if(_137.is(":empty")){ +_137.remove(); +} +if(opts.animate){ +_137.slideDown("normal",function(){ +node.state="open"; +opts.onExpand.call(_134,node); +if(_136){ +_136(); +} +}); +}else{ +_137.css("display","block"); +node.state="open"; +opts.onExpand.call(_134,node); +if(_136){ +_136(); +} +} +}); +} +}; +function _138(_139,_13a){ +var opts=$.data(_139,"tree").options; +var hit=$(_13a).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +var node=_df(_139,_13a); +if(opts.onBeforeCollapse.call(_139,node)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +var ul=$(_13a).next(); +if(opts.animate){ +ul.slideUp("normal",function(){ +node.state="closed"; +opts.onCollapse.call(_139,node); +}); +}else{ +ul.css("display","none"); +node.state="closed"; +opts.onCollapse.call(_139,node); +} +}; +function _13b(_13c,_13d){ +var hit=$(_13d).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +_138(_13c,_13d); +}else{ +_133(_13c,_13d); +} +}; +function _13e(_13f,_140){ +var _141=_116(_13f,_140); +if(_140){ +_141.unshift(_df(_13f,_140)); +} +for(var i=0;i<_141.length;i++){ +_133(_13f,_141[i].target); +} +}; +function _142(_143,_144){ +var _145=[]; +var p=_146(_143,_144); +while(p){ +_145.unshift(p); +p=_146(_143,p.target); +} +for(var i=0;i<_145.length;i++){ +_133(_143,_145[i].target); +} +}; +function _147(_148,_149){ +var c=$(_148).parent(); +while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ +c=c.parent(); +} +var n=$(_149); +var ntop=n.offset().top; +if(c[0].tagName!="BODY"){ +var ctop=c.offset().top; +if(ntopctop+c.outerHeight()-18){ +c.scrollTop(c.scrollTop()+ntop+n.outerHeight()-ctop-c.outerHeight()+18); +} +} +}else{ +c.scrollTop(ntop); +} +}; +function _14a(_14b,_14c){ +var _14d=_116(_14b,_14c); +if(_14c){ +_14d.unshift(_df(_14b,_14c)); +} +for(var i=0;i<_14d.length;i++){ +_138(_14b,_14d[i].target); +} +}; +function _14e(_14f,_150){ +var node=$(_150.parent); +var data=_150.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +var ul; +if(node.length==0){ +ul=$(_14f); +}else{ +if(_112(_14f,node[0])){ +var _151=node.find("span.tree-icon"); +_151.removeClass("tree-file").addClass("tree-folder tree-folder-open"); +var hit=$("").insertBefore(_151); +if(hit.prev().length){ +hit.prev().remove(); +} +} +ul=node.next(); +if(!ul.length){ +ul=$("
        ").insertAfter(node); +} +} +_117(_14f,ul[0],data,true); +_10f(_14f,ul.prev()); +}; +function _152(_153,_154){ +var ref=_154.before||_154.after; +var _155=_146(_153,ref); +var data=_154.data; +if(!data){ +return; +} +data=$.isArray(data)?data:[data]; +if(!data.length){ +return; +} +_14e(_153,{parent:(_155?_155.target:null),data:data}); +var _156=_155?_155.children:$(_153).tree("getRoots"); +for(var i=0;i<_156.length;i++){ +if(_156[i].domId==$(ref).attr("id")){ +for(var j=data.length-1;j>=0;j--){ +_156.splice((_154.before?i:(i+1)),0,data[j]); +} +_156.splice(_156.length-data.length,data.length); +break; +} +} +var li=$(); +for(var i=0;i").prependTo(node); +node.next().remove(); +} +_11e(_158,_15a); +_10f(_158,_15a.target); +} +_123(_158,_158); +function del(_15b){ +var id=$(_15b).attr("id"); +var _15c=_146(_158,_15b); +var cc=_15c?_15c.children:$.data(_158,"tree").data; +for(var i=0;i=0;i--){ +_180.unshift(node.children[i]); +} +} +} +}; +function _181(_182,_183){ +var opts=$.data(_182,"tree").options; +var node=_df(_182,_183); +if(opts.onBeforeSelect.call(_182,node)==false){ +return; +} +$(_182).find("div.tree-node-selected").removeClass("tree-node-selected"); +$(_183).addClass("tree-node-selected"); +opts.onSelect.call(_182,node); +}; +function _112(_184,_185){ +return $(_185).children("span.tree-hit").length==0; +}; +function _186(_187,_188){ +var opts=$.data(_187,"tree").options; +var node=_df(_187,_188); +if(opts.onBeforeEdit.call(_187,node)==false){ +return; +} +$(_188).css("position","relative"); +var nt=$(_188).find(".tree-title"); +var _189=nt.outerWidth(); +nt.empty(); +var _18a=$("").appendTo(nt); +_18a.val(node.text).focus(); +_18a.width(_189+20); +_18a.height(document.compatMode=="CSS1Compat"?(18-(_18a.outerHeight()-_18a.height())):18); +_18a.bind("click",function(e){ +return false; +}).bind("mousedown",function(e){ +e.stopPropagation(); +}).bind("mousemove",function(e){ +e.stopPropagation(); +}).bind("keydown",function(e){ +if(e.keyCode==13){ +_18b(_187,_188); +return false; +}else{ +if(e.keyCode==27){ +_18f(_187,_188); +return false; +} +} +}).bind("blur",function(e){ +e.stopPropagation(); +_18b(_187,_188); +}); +}; +function _18b(_18c,_18d){ +var opts=$.data(_18c,"tree").options; +$(_18d).css("position",""); +var _18e=$(_18d).find("input.tree-editor"); +var val=_18e.val(); +_18e.remove(); +var node=_df(_18c,_18d); +node.text=val; +_11e(_18c,node); +opts.onAfterEdit.call(_18c,node); +}; +function _18f(_190,_191){ +var opts=$.data(_190,"tree").options; +$(_191).css("position",""); +$(_191).find("input.tree-editor").remove(); +var node=_df(_190,_191); +_11e(_190,node); +opts.onCancelEdit.call(_190,node); +}; +$.fn.tree=function(_192,_193){ +if(typeof _192=="string"){ +return $.fn.tree.methods[_192](this,_193); +} +var _192=_192||{}; +return this.each(function(){ +var _194=$.data(this,"tree"); +var opts; +if(_194){ +opts=$.extend(_194.options,_192); +_194.options=opts; +}else{ +opts=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_192); +$.data(this,"tree",{options:opts,tree:_d4(this),data:[]}); +var data=$.fn.tree.parseData(this); +if(data.length){ +_117(this,this,data); +} +} +_d7(this); +if(opts.data){ +_117(this,this,$.extend(true,[],opts.data)); +} +_12c(this,this); +}); +}; +$.fn.tree.methods={options:function(jq){ +return $.data(jq[0],"tree").options; +},loadData:function(jq,data){ +return jq.each(function(){ +_117(this,this,data); +}); +},getNode:function(jq,_195){ +return _df(jq[0],_195); +},getData:function(jq,_196){ +return _174(jq[0],_196); +},reload:function(jq,_197){ +return jq.each(function(){ +if(_197){ +var node=$(_197); +var hit=node.children("span.tree-hit"); +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +node.next().remove(); +_133(this,_197); +}else{ +$(this).empty(); +_12c(this,this); +} +}); +},getRoot:function(jq,_198){ +return _160(jq[0],_198); +},getRoots:function(jq){ +return _164(jq[0]); +},getParent:function(jq,_199){ +return _146(jq[0],_199); +},getChildren:function(jq,_19a){ +return _116(jq[0],_19a); +},getChecked:function(jq,_19b){ +return _16d(jq[0],_19b); +},getSelected:function(jq){ +return _172(jq[0]); +},isLeaf:function(jq,_19c){ +return _112(jq[0],_19c); +},find:function(jq,id){ +return _179(jq[0],id); +},select:function(jq,_19d){ +return jq.each(function(){ +_181(this,_19d); +}); +},check:function(jq,_19e){ +return jq.each(function(){ +_104(this,_19e,true); +}); +},uncheck:function(jq,_19f){ +return jq.each(function(){ +_104(this,_19f,false); +}); +},collapse:function(jq,_1a0){ +return jq.each(function(){ +_138(this,_1a0); +}); +},expand:function(jq,_1a1){ +return jq.each(function(){ +_133(this,_1a1); +}); +},collapseAll:function(jq,_1a2){ +return jq.each(function(){ +_14a(this,_1a2); +}); +},expandAll:function(jq,_1a3){ +return jq.each(function(){ +_13e(this,_1a3); +}); +},expandTo:function(jq,_1a4){ +return jq.each(function(){ +_142(this,_1a4); +}); +},scrollTo:function(jq,_1a5){ +return jq.each(function(){ +_147(this,_1a5); +}); +},toggle:function(jq,_1a6){ +return jq.each(function(){ +_13b(this,_1a6); +}); +},append:function(jq,_1a7){ +return jq.each(function(){ +_14e(this,_1a7); +}); +},insert:function(jq,_1a8){ +return jq.each(function(){ +_152(this,_1a8); +}); +},remove:function(jq,_1a9){ +return jq.each(function(){ +_157(this,_1a9); +}); +},pop:function(jq,_1aa){ +var node=jq.tree("getData",_1aa); +jq.tree("remove",_1aa); +return node; +},update:function(jq,_1ab){ +return jq.each(function(){ +_11e(this,_1ab); +}); +},enableDnd:function(jq){ +return jq.each(function(){ +_e4(this); +}); +},disableDnd:function(jq){ +return jq.each(function(){ +_e0(this); +}); +},beginEdit:function(jq,_1ac){ +return jq.each(function(){ +_186(this,_1ac); +}); +},endEdit:function(jq,_1ad){ +return jq.each(function(){ +_18b(this,_1ad); +}); +},cancelEdit:function(jq,_1ae){ +return jq.each(function(){ +_18f(this,_1ae); +}); +}}; +$.fn.tree.parseOptions=function(_1af){ +var t=$(_1af); +return $.extend({},$.parser.parseOptions(_1af,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); +}; +$.fn.tree.parseData=function(_1b0){ +var data=[]; +_1b1(data,$(_1b0)); +return data; +function _1b1(aa,tree){ +tree.children("li").each(function(){ +var node=$(this); +var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); +item.text=node.children("span").html(); +if(!item.text){ +item.text=node.html(); +} +var _1b2=node.children("ul"); +if(_1b2.length){ +item.children=[]; +_1b1(item.children,_1b2); +} +aa.push(item); +}); +}; +}; +var _1b3=1; +var _1b4={render:function(_1b5,ul,data){ +var opts=$.data(_1b5,"tree").options; +var _1b6=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; +var cc=_1b7(_1b6,data); +$(ul).append(cc.join("")); +function _1b7(_1b8,_1b9){ +var cc=[]; +for(var i=0;i<_1b9.length;i++){ +var item=_1b9[i]; +if(item.state!="open"&&item.state!="closed"){ +item.state="open"; +} +item.domId="_easyui_tree_"+_1b3++; +cc.push("
      • "); +cc.push("
        "); +for(var j=0;j<_1b8;j++){ +cc.push(""); +} +var _1ba=false; +if(item.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(item.children&&item.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +_1ba=true; +} +} +if(opts.checkbox){ +if((!opts.onlyLeafCheck)||_1ba){ +cc.push(""); +} +} +cc.push(""+opts.formatter.call(_1b5,item)+""); +cc.push("
        "); +if(item.children&&item.children.length){ +var tmp=_1b7(_1b8+1,item.children); +cc.push("
          "); +cc=cc.concat(tmp); +cc.push("
        "); +} +cc.push("
      • "); +} +return cc; +}; +}}; +$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,queryParams:{},formatter:function(node){ +return node.text; +},loader:function(_1bb,_1bc,_1bd){ +var opts=$(this).tree("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_1bb,dataType:"json",success:function(data){ +_1bc(data); +},error:function(){ +_1bd.apply(this,arguments); +}}); +},loadFilter:function(data,_1be){ +return data; +},view:_1b4,onBeforeLoad:function(node,_1bf){ +},onLoadSuccess:function(node,data){ +},onLoadError:function(){ +},onClick:function(node){ +},onDblClick:function(node){ +},onBeforeExpand:function(node){ +},onExpand:function(node){ +},onBeforeCollapse:function(node){ +},onCollapse:function(node){ +},onBeforeCheck:function(node,_1c0){ +},onCheck:function(node,_1c1){ +},onBeforeSelect:function(node){ +},onSelect:function(node){ +},onContextMenu:function(e,node){ +},onBeforeDrag:function(node){ +},onStartDrag:function(node){ +},onStopDrag:function(node){ +},onDragEnter:function(_1c2,_1c3){ +},onDragOver:function(_1c4,_1c5){ +},onDragLeave:function(_1c6,_1c7){ +},onBeforeDrop:function(_1c8,_1c9,_1ca){ +},onDrop:function(_1cb,_1cc,_1cd){ +},onBeforeEdit:function(node){ +},onAfterEdit:function(node){ +},onCancelEdit:function(node){ +}}; +})(jQuery); +(function($){ +function init(_1ce){ +$(_1ce).addClass("progressbar"); +$(_1ce).html("
        "); +$(_1ce).bind("_resize",function(e,_1cf){ +if($(this).hasClass("easyui-fluid")||_1cf){ +_1d0(_1ce); +} +return false; +}); +return $(_1ce); +}; +function _1d0(_1d1,_1d2){ +var opts=$.data(_1d1,"progressbar").options; +var bar=$.data(_1d1,"progressbar").bar; +if(_1d2){ +opts.width=_1d2; +} +bar._size(opts); +bar.find("div.progressbar-text").css("width",bar.width()); +bar.find("div.progressbar-text,div.progressbar-value").css({height:bar.height()+"px",lineHeight:bar.height()+"px"}); +}; +$.fn.progressbar=function(_1d3,_1d4){ +if(typeof _1d3=="string"){ +var _1d5=$.fn.progressbar.methods[_1d3]; +if(_1d5){ +return _1d5(this,_1d4); +} +} +_1d3=_1d3||{}; +return this.each(function(){ +var _1d6=$.data(this,"progressbar"); +if(_1d6){ +$.extend(_1d6.options,_1d3); +}else{ +_1d6=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_1d3),bar:init(this)}); +} +$(this).progressbar("setValue",_1d6.options.value); +_1d0(this); +}); +}; +$.fn.progressbar.methods={options:function(jq){ +return $.data(jq[0],"progressbar").options; +},resize:function(jq,_1d7){ +return jq.each(function(){ +_1d0(this,_1d7); +}); +},getValue:function(jq){ +return $.data(jq[0],"progressbar").options.value; +},setValue:function(jq,_1d8){ +if(_1d8<0){ +_1d8=0; +} +if(_1d8>100){ +_1d8=100; +} +return jq.each(function(){ +var opts=$.data(this,"progressbar").options; +var text=opts.text.replace(/{value}/,_1d8); +var _1d9=opts.value; +opts.value=_1d8; +$(this).find("div.progressbar-value").width(_1d8+"%"); +$(this).find("div.progressbar-text").html(text); +if(_1d9!=_1d8){ +opts.onChange.call(this,_1d8,_1d9); +} +}); +}}; +$.fn.progressbar.parseOptions=function(_1da){ +return $.extend({},$.parser.parseOptions(_1da,["width","height","text",{value:"number"}])); +}; +$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_1db,_1dc){ +}}; +})(jQuery); +(function($){ +function init(_1dd){ +$(_1dd).addClass("tooltip-f"); +}; +function _1de(_1df){ +var opts=$.data(_1df,"tooltip").options; +$(_1df).unbind(".tooltip").bind(opts.showEvent+".tooltip",function(e){ +$(_1df).tooltip("show",e); +}).bind(opts.hideEvent+".tooltip",function(e){ +$(_1df).tooltip("hide",e); +}).bind("mousemove.tooltip",function(e){ +if(opts.trackMouse){ +opts.trackMouseX=e.pageX; +opts.trackMouseY=e.pageY; +$(_1df).tooltip("reposition"); +} +}); +}; +function _1e0(_1e1){ +var _1e2=$.data(_1e1,"tooltip"); +if(_1e2.showTimer){ +clearTimeout(_1e2.showTimer); +_1e2.showTimer=null; +} +if(_1e2.hideTimer){ +clearTimeout(_1e2.hideTimer); +_1e2.hideTimer=null; +} +}; +function _1e3(_1e4){ +var _1e5=$.data(_1e4,"tooltip"); +if(!_1e5||!_1e5.tip){ +return; +} +var opts=_1e5.options; +var tip=_1e5.tip; +var pos={left:-100000,top:-100000}; +if($(_1e4).is(":visible")){ +pos=_1e6(opts.position); +if(opts.position=="top"&&pos.top<0){ +pos=_1e6("bottom"); +}else{ +if((opts.position=="bottom")&&(pos.top+tip._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){ +pos=_1e6("top"); +} +} +if(pos.left<0){ +if(opts.position=="left"){ +pos=_1e6("right"); +}else{ +$(_1e4).tooltip("arrow").css("left",tip._outerWidth()/2+pos.left); +pos.left=0; +} +}else{ +if(pos.left+tip._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +if(opts.position=="right"){ +pos=_1e6("left"); +}else{ +var left=pos.left; +pos.left=$(window)._outerWidth()+$(document)._scrollLeft()-tip._outerWidth(); +$(_1e4).tooltip("arrow").css("left",tip._outerWidth()/2-(pos.left-left)); +} +} +} +} +tip.css({left:pos.left,top:pos.top,zIndex:(opts.zIndex!=undefined?opts.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); +opts.onPosition.call(_1e4,pos.left,pos.top); +function _1e6(_1e7){ +opts.position=_1e7||"bottom"; +tip.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+opts.position); +var left,top; +if(opts.trackMouse){ +t=$(); +left=opts.trackMouseX+opts.deltaX; +top=opts.trackMouseY+opts.deltaY; +}else{ +var t=$(_1e4); +left=t.offset().left+opts.deltaX; +top=t.offset().top+opts.deltaY; +} +switch(opts.position){ +case "right": +left+=t._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "left": +left-=tip._outerWidth()+12+(opts.trackMouse?12:0); +top-=(tip._outerHeight()-t._outerHeight())/2; +break; +case "top": +left-=(tip._outerWidth()-t._outerWidth())/2; +top-=tip._outerHeight()+12+(opts.trackMouse?12:0); +break; +case "bottom": +left-=(tip._outerWidth()-t._outerWidth())/2; +top+=t._outerHeight()+12+(opts.trackMouse?12:0); +break; +} +return {left:left,top:top}; +}; +}; +function _1e8(_1e9,e){ +var _1ea=$.data(_1e9,"tooltip"); +var opts=_1ea.options; +var tip=_1ea.tip; +if(!tip){ +tip=$("
        "+"
        "+"
        "+"
        "+"
        ").appendTo("body"); +_1ea.tip=tip; +_1eb(_1e9); +} +_1e0(_1e9); +_1ea.showTimer=setTimeout(function(){ +$(_1e9).tooltip("reposition"); +tip.show(); +opts.onShow.call(_1e9,e); +var _1ec=tip.children(".tooltip-arrow-outer"); +var _1ed=tip.children(".tooltip-arrow"); +var bc="border-"+opts.position+"-color"; +_1ec.add(_1ed).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); +_1ec.css(bc,tip.css(bc)); +_1ed.css(bc,tip.css("backgroundColor")); +},opts.showDelay); +}; +function _1ee(_1ef,e){ +var _1f0=$.data(_1ef,"tooltip"); +if(_1f0&&_1f0.tip){ +_1e0(_1ef); +_1f0.hideTimer=setTimeout(function(){ +_1f0.tip.hide(); +_1f0.options.onHide.call(_1ef,e); +},_1f0.options.hideDelay); +} +}; +function _1eb(_1f1,_1f2){ +var _1f3=$.data(_1f1,"tooltip"); +var opts=_1f3.options; +if(_1f2){ +opts.content=_1f2; +} +if(!_1f3.tip){ +return; +} +var cc=typeof opts.content=="function"?opts.content.call(_1f1):opts.content; +_1f3.tip.children(".tooltip-content").html(cc); +opts.onUpdate.call(_1f1,cc); +}; +function _1f4(_1f5){ +var _1f6=$.data(_1f5,"tooltip"); +if(_1f6){ +_1e0(_1f5); +var opts=_1f6.options; +if(_1f6.tip){ +_1f6.tip.remove(); +} +if(opts._title){ +$(_1f5).attr("title",opts._title); +} +$.removeData(_1f5,"tooltip"); +$(_1f5).unbind(".tooltip").removeClass("tooltip-f"); +opts.onDestroy.call(_1f5); +} +}; +$.fn.tooltip=function(_1f7,_1f8){ +if(typeof _1f7=="string"){ +return $.fn.tooltip.methods[_1f7](this,_1f8); +} +_1f7=_1f7||{}; +return this.each(function(){ +var _1f9=$.data(this,"tooltip"); +if(_1f9){ +$.extend(_1f9.options,_1f7); +}else{ +$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_1f7)}); +init(this); +} +_1de(this); +_1eb(this); +}); +}; +$.fn.tooltip.methods={options:function(jq){ +return $.data(jq[0],"tooltip").options; +},tip:function(jq){ +return $.data(jq[0],"tooltip").tip; +},arrow:function(jq){ +return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); +},show:function(jq,e){ +return jq.each(function(){ +_1e8(this,e); +}); +},hide:function(jq,e){ +return jq.each(function(){ +_1ee(this,e); +}); +},update:function(jq,_1fa){ +return jq.each(function(){ +_1eb(this,_1fa); +}); +},reposition:function(jq){ +return jq.each(function(){ +_1e3(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_1f4(this); +}); +}}; +$.fn.tooltip.parseOptions=function(_1fb){ +var t=$(_1fb); +var opts=$.extend({},$.parser.parseOptions(_1fb,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); +t.attr("title",""); +if(!opts.content){ +opts.content=opts._title; +} +return opts; +}; +$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ +},onHide:function(e){ +},onUpdate:function(_1fc){ +},onPosition:function(left,top){ +},onDestroy:function(){ +}}; +})(jQuery); +(function($){ +$.fn._remove=function(){ +return this.each(function(){ +$(this).remove(); +try{ +this.outerHTML=""; +} +catch(err){ +} +}); +}; +function _1fd(node){ +node._remove(); +}; +function _1fe(_1ff,_200){ +var _201=$.data(_1ff,"panel"); +var opts=_201.options; +var _202=_201.panel; +var _203=_202.children("div.panel-header"); +var _204=_202.children("div.panel-body"); +var _205=_202.children("div.panel-footer"); +if(_200){ +$.extend(opts,{width:_200.width,height:_200.height,minWidth:_200.minWidth,maxWidth:_200.maxWidth,minHeight:_200.minHeight,maxHeight:_200.maxHeight,left:_200.left,top:_200.top}); +} +_202._size(opts); +_203.add(_204)._outerWidth(_202.width()); +if(!isNaN(parseInt(opts.height))){ +_204._outerHeight(_202.height()-_203._outerHeight()-_205._outerHeight()); +}else{ +_204.css("height",""); +var min=$.parser.parseValue("minHeight",opts.minHeight,_202.parent()); +var max=$.parser.parseValue("maxHeight",opts.maxHeight,_202.parent()); +var _206=_203._outerHeight()+_205._outerHeight()+_202._outerHeight()-_202.height(); +_204._size("minHeight",min?(min-_206):""); +_204._size("maxHeight",max?(max-_206):""); +} +_202.css({height:"",minHeight:"",maxHeight:"",left:opts.left,top:opts.top}); +opts.onResize.apply(_1ff,[opts.width,opts.height]); +$(_1ff).panel("doLayout"); +}; +function _207(_208,_209){ +var opts=$.data(_208,"panel").options; +var _20a=$.data(_208,"panel").panel; +if(_209){ +if(_209.left!=null){ +opts.left=_209.left; +} +if(_209.top!=null){ +opts.top=_209.top; +} +} +_20a.css({left:opts.left,top:opts.top}); +opts.onMove.apply(_208,[opts.left,opts.top]); +}; +function _20b(_20c){ +$(_20c).addClass("panel-body")._size("clear"); +var _20d=$("
        ").insertBefore(_20c); +_20d[0].appendChild(_20c); +_20d.bind("_resize",function(e,_20e){ +if($(this).hasClass("easyui-fluid")||_20e){ +_1fe(_20c); +} +return false; +}); +return _20d; +}; +function _20f(_210){ +var _211=$.data(_210,"panel"); +var opts=_211.options; +var _212=_211.panel; +_212.css(opts.style); +_212.addClass(opts.cls); +_213(); +_214(); +var _215=$(_210).panel("header"); +var body=$(_210).panel("body"); +var _216=$(_210).siblings("div.panel-footer"); +if(opts.border){ +_215.removeClass("panel-header-noborder"); +body.removeClass("panel-body-noborder"); +_216.removeClass("panel-footer-noborder"); +}else{ +_215.addClass("panel-header-noborder"); +body.addClass("panel-body-noborder"); +_216.addClass("panel-footer-noborder"); +} +_215.addClass(opts.headerCls); +body.addClass(opts.bodyCls); +$(_210).attr("id",opts.id||""); +if(opts.content){ +$(_210).panel("clear"); +$(_210).html(opts.content); +$.parser.parse($(_210)); +} +function _213(){ +if(opts.tools&&typeof opts.tools=="string"){ +_212.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(opts.tools); +} +_1fd(_212.children("div.panel-header")); +if(opts.title&&!opts.noheader){ +var _217=$("
        ").prependTo(_212); +var _218=$("
        ").html(opts.title).appendTo(_217); +if(opts.iconCls){ +_218.addClass("panel-with-icon"); +$("
        ").addClass(opts.iconCls).appendTo(_217); +} +var tool=$("
        ").appendTo(_217); +tool.bind("click",function(e){ +e.stopPropagation(); +}); +if(opts.tools){ +if($.isArray(opts.tools)){ +for(var i=0;i").addClass(opts.tools[i].iconCls).appendTo(tool); +if(opts.tools[i].handler){ +t.bind("click",eval(opts.tools[i].handler)); +} +} +}else{ +$(opts.tools).children().each(function(){ +$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(tool); +}); +} +} +if(opts.collapsible){ +$("").appendTo(tool).bind("click",function(){ +if(opts.collapsed==true){ +_235(_210,true); +}else{ +_228(_210,true); +} +return false; +}); +} +if(opts.minimizable){ +$("").appendTo(tool).bind("click",function(){ +_23b(_210); +return false; +}); +} +if(opts.maximizable){ +$("").appendTo(tool).bind("click",function(){ +if(opts.maximized==true){ +_23e(_210); +}else{ +_227(_210); +} +return false; +}); +} +if(opts.closable){ +$("").appendTo(tool).bind("click",function(){ +_229(_210); +return false; +}); +} +_212.children("div.panel-body").removeClass("panel-body-noheader"); +}else{ +_212.children("div.panel-body").addClass("panel-body-noheader"); +} +}; +function _214(){ +if(opts.footer){ +$(opts.footer).addClass("panel-footer").appendTo(_212); +$(_210).addClass("panel-body-nobottom"); +}else{ +_212.children("div.panel-footer").remove(); +$(_210).removeClass("panel-body-nobottom"); +} +}; +}; +function _219(_21a,_21b){ +var _21c=$.data(_21a,"panel"); +var opts=_21c.options; +if(_21d){ +opts.queryParams=_21b; +} +if(!opts.href){ +return; +} +if(!_21c.isLoaded||!opts.cache){ +var _21d=$.extend({},opts.queryParams); +if(opts.onBeforeLoad.call(_21a,_21d)==false){ +return; +} +_21c.isLoaded=false; +$(_21a).panel("clear"); +if(opts.loadingMessage){ +$(_21a).html($("
        ").html(opts.loadingMessage)); +} +opts.loader.call(_21a,_21d,function(data){ +var _21e=opts.extractor.call(_21a,data); +$(_21a).html(_21e); +$.parser.parse($(_21a)); +opts.onLoad.apply(_21a,arguments); +_21c.isLoaded=true; +},function(){ +opts.onLoadError.apply(_21a,arguments); +}); +} +}; +function _21f(_220){ +var t=$(_220); +t.find(".combo-f").each(function(){ +$(this).combo("destroy"); +}); +t.find(".m-btn").each(function(){ +$(this).menubutton("destroy"); +}); +t.find(".s-btn").each(function(){ +$(this).splitbutton("destroy"); +}); +t.find(".tooltip-f").each(function(){ +$(this).tooltip("destroy"); +}); +t.children("div").each(function(){ +$(this)._size("unfit"); +}); +t.empty(); +}; +function _221(_222){ +$(_222).panel("doLayout",true); +}; +function _223(_224,_225){ +var opts=$.data(_224,"panel").options; +var _226=$.data(_224,"panel").panel; +if(_225!=true){ +if(opts.onBeforeOpen.call(_224)==false){ +return; +} +} +_226.stop(true,true); +if($.isFunction(opts.openAnimation)){ +opts.openAnimation.call(_224,cb); +}else{ +switch(opts.openAnimation){ +case "slide": +_226.slideDown(opts.openDuration,cb); +break; +case "fade": +_226.fadeIn(opts.openDuration,cb); +break; +case "show": +_226.show(opts.openDuration,cb); +break; +default: +_226.show(); +cb(); +} +} +function cb(){ +opts.closed=false; +opts.minimized=false; +var tool=_226.children("div.panel-header").find("a.panel-tool-restore"); +if(tool.length){ +opts.maximized=true; +} +opts.onOpen.call(_224); +if(opts.maximized==true){ +opts.maximized=false; +_227(_224); +} +if(opts.collapsed==true){ +opts.collapsed=false; +_228(_224); +} +if(!opts.collapsed){ +_219(_224); +_221(_224); +} +}; +}; +function _229(_22a,_22b){ +var opts=$.data(_22a,"panel").options; +var _22c=$.data(_22a,"panel").panel; +if(_22b!=true){ +if(opts.onBeforeClose.call(_22a)==false){ +return; +} +} +_22c.stop(true,true); +_22c._size("unfit"); +if($.isFunction(opts.closeAnimation)){ +opts.closeAnimation.call(_22a,cb); +}else{ +switch(opts.closeAnimation){ +case "slide": +_22c.slideUp(opts.closeDuration,cb); +break; +case "fade": +_22c.fadeOut(opts.closeDuration,cb); +break; +case "hide": +_22c.hide(opts.closeDuration,cb); +break; +default: +_22c.hide(); +cb(); +} +} +function cb(){ +opts.closed=true; +opts.onClose.call(_22a); +}; +}; +function _22d(_22e,_22f){ +var _230=$.data(_22e,"panel"); +var opts=_230.options; +var _231=_230.panel; +if(_22f!=true){ +if(opts.onBeforeDestroy.call(_22e)==false){ +return; +} +} +$(_22e).panel("clear").panel("clear","footer"); +_1fd(_231); +opts.onDestroy.call(_22e); +}; +function _228(_232,_233){ +var opts=$.data(_232,"panel").options; +var _234=$.data(_232,"panel").panel; +var body=_234.children("div.panel-body"); +var tool=_234.children("div.panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==true){ +return; +} +body.stop(true,true); +if(opts.onBeforeCollapse.call(_232)==false){ +return; +} +tool.addClass("panel-tool-expand"); +if(_233==true){ +body.slideUp("normal",function(){ +opts.collapsed=true; +opts.onCollapse.call(_232); +}); +}else{ +body.hide(); +opts.collapsed=true; +opts.onCollapse.call(_232); +} +}; +function _235(_236,_237){ +var opts=$.data(_236,"panel").options; +var _238=$.data(_236,"panel").panel; +var body=_238.children("div.panel-body"); +var tool=_238.children("div.panel-header").find("a.panel-tool-collapse"); +if(opts.collapsed==false){ +return; +} +body.stop(true,true); +if(opts.onBeforeExpand.call(_236)==false){ +return; +} +tool.removeClass("panel-tool-expand"); +if(_237==true){ +body.slideDown("normal",function(){ +opts.collapsed=false; +opts.onExpand.call(_236); +_219(_236); +_221(_236); +}); +}else{ +body.show(); +opts.collapsed=false; +opts.onExpand.call(_236); +_219(_236); +_221(_236); +} +}; +function _227(_239){ +var opts=$.data(_239,"panel").options; +var _23a=$.data(_239,"panel").panel; +var tool=_23a.children("div.panel-header").find("a.panel-tool-max"); +if(opts.maximized==true){ +return; +} +tool.addClass("panel-tool-restore"); +if(!$.data(_239,"panel").original){ +$.data(_239,"panel").original={width:opts.width,height:opts.height,left:opts.left,top:opts.top,fit:opts.fit}; +} +opts.left=0; +opts.top=0; +opts.fit=true; +_1fe(_239); +opts.minimized=false; +opts.maximized=true; +opts.onMaximize.call(_239); +}; +function _23b(_23c){ +var opts=$.data(_23c,"panel").options; +var _23d=$.data(_23c,"panel").panel; +_23d._size("unfit"); +_23d.hide(); +opts.minimized=true; +opts.maximized=false; +opts.onMinimize.call(_23c); +}; +function _23e(_23f){ +var opts=$.data(_23f,"panel").options; +var _240=$.data(_23f,"panel").panel; +var tool=_240.children("div.panel-header").find("a.panel-tool-max"); +if(opts.maximized==false){ +return; +} +_240.show(); +tool.removeClass("panel-tool-restore"); +$.extend(opts,$.data(_23f,"panel").original); +_1fe(_23f); +opts.minimized=false; +opts.maximized=false; +$.data(_23f,"panel").original=null; +opts.onRestore.call(_23f); +}; +function _241(_242,_243){ +$.data(_242,"panel").options.title=_243; +$(_242).panel("header").find("div.panel-title").html(_243); +}; +var _244=null; +$(window).unbind(".panel").bind("resize.panel",function(){ +if(_244){ +clearTimeout(_244); +} +_244=setTimeout(function(){ +var _245=$("body.layout"); +if(_245.length){ +_245.layout("resize"); +$("body").children(".easyui-fluid:visible").trigger("_resize"); +}else{ +$("body").panel("doLayout"); +} +_244=null; +},100); +}); +$.fn.panel=function(_246,_247){ +if(typeof _246=="string"){ +return $.fn.panel.methods[_246](this,_247); +} +_246=_246||{}; +return this.each(function(){ +var _248=$.data(this,"panel"); +var opts; +if(_248){ +opts=$.extend(_248.options,_246); +_248.isLoaded=false; +}else{ +opts=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_246); +$(this).attr("title",""); +_248=$.data(this,"panel",{options:opts,panel:_20b(this),isLoaded:false}); +} +_20f(this); +if(opts.doSize==true){ +_248.panel.css("display","block"); +_1fe(this); +} +if(opts.closed==true||opts.minimized==true){ +_248.panel.hide(); +}else{ +_223(this); +} +}); +}; +$.fn.panel.methods={options:function(jq){ +return $.data(jq[0],"panel").options; +},panel:function(jq){ +return $.data(jq[0],"panel").panel; +},header:function(jq){ +return $.data(jq[0],"panel").panel.find(">div.panel-header"); +},footer:function(jq){ +return jq.panel("panel").children(".panel-footer"); +},body:function(jq){ +return $.data(jq[0],"panel").panel.find(">div.panel-body"); +},setTitle:function(jq,_249){ +return jq.each(function(){ +_241(this,_249); +}); +},open:function(jq,_24a){ +return jq.each(function(){ +_223(this,_24a); +}); +},close:function(jq,_24b){ +return jq.each(function(){ +_229(this,_24b); +}); +},destroy:function(jq,_24c){ +return jq.each(function(){ +_22d(this,_24c); +}); +},clear:function(jq,type){ +return jq.each(function(){ +_21f(type=="footer"?$(this).panel("footer"):this); +}); +},refresh:function(jq,href){ +return jq.each(function(){ +var _24d=$.data(this,"panel"); +_24d.isLoaded=false; +if(href){ +if(typeof href=="string"){ +_24d.options.href=href; +}else{ +_24d.options.queryParams=href; +} +} +_219(this); +}); +},resize:function(jq,_24e){ +return jq.each(function(){ +_1fe(this,_24e); +}); +},doLayout:function(jq,all){ +return jq.each(function(){ +_24f(this,"body"); +_24f($(this).siblings("div.panel-footer")[0],"footer"); +function _24f(_250,type){ +if(!_250){ +return; +} +var _251=_250==$("body")[0]; +var s=$(_250).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_252,el){ +var p=$(el).parents("div.panel-"+type+":first"); +return _251?p.length==0:p[0]==_250; +}); +s.trigger("_resize",[all||false]); +}; +}); +},move:function(jq,_253){ +return jq.each(function(){ +_207(this,_253); +}); +},maximize:function(jq){ +return jq.each(function(){ +_227(this); +}); +},minimize:function(jq){ +return jq.each(function(){ +_23b(this); +}); +},restore:function(jq){ +return jq.each(function(){ +_23e(this); +}); +},collapse:function(jq,_254){ +return jq.each(function(){ +_228(this,_254); +}); +},expand:function(jq,_255){ +return jq.each(function(){ +_235(this,_255); +}); +}}; +$.fn.panel.parseOptions=function(_256){ +var t=$(_256); +return $.extend({},$.parser.parseOptions(_256,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); +}; +$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_257,_258,_259){ +var opts=$(this).panel("options"); +if(!opts.href){ +return false; +} +$.ajax({type:opts.method,url:opts.href,cache:false,data:_257,dataType:"html",success:function(data){ +_258(data); +},error:function(){ +_259.apply(this,arguments); +}}); +},extractor:function(data){ +var _25a=/]*>((.|[\n\r])*)<\/body>/im; +var _25b=_25a.exec(data); +if(_25b){ +return _25b[1]; +}else{ +return data; +} +},onBeforeLoad:function(_25c){ +},onLoad:function(){ +},onLoadError:function(){ +},onBeforeOpen:function(){ +},onOpen:function(){ +},onBeforeClose:function(){ +},onClose:function(){ +},onBeforeDestroy:function(){ +},onDestroy:function(){ +},onResize:function(_25d,_25e){ +},onMove:function(left,top){ +},onMaximize:function(){ +},onRestore:function(){ +},onMinimize:function(){ +},onBeforeCollapse:function(){ +},onBeforeExpand:function(){ +},onCollapse:function(){ +},onExpand:function(){ +}}; +})(jQuery); +(function($){ +function _25f(_260,_261){ +var _262=$.data(_260,"window"); +if(_261){ +if(_261.left!=null){ +_262.options.left=_261.left; +} +if(_261.top!=null){ +_262.options.top=_261.top; +} +} +$(_260).panel("move",_262.options); +if(_262.shadow){ +_262.shadow.css({left:_262.options.left,top:_262.options.top}); +} +}; +function _263(_264,_265){ +var opts=$.data(_264,"window").options; +var pp=$(_264).window("panel"); +var _266=pp._outerWidth(); +if(opts.inline){ +var _267=pp.parent(); +opts.left=Math.ceil((_267.width()-_266)/2+_267.scrollLeft()); +}else{ +opts.left=Math.ceil(($(window)._outerWidth()-_266)/2+$(document).scrollLeft()); +} +if(_265){ +_25f(_264); +} +}; +function _268(_269,_26a){ +var opts=$.data(_269,"window").options; +var pp=$(_269).window("panel"); +var _26b=pp._outerHeight(); +if(opts.inline){ +var _26c=pp.parent(); +opts.top=Math.ceil((_26c.height()-_26b)/2+_26c.scrollTop()); +}else{ +opts.top=Math.ceil(($(window)._outerHeight()-_26b)/2+$(document).scrollTop()); +} +if(_26a){ +_25f(_269); +} +}; +function _26d(_26e){ +var _26f=$.data(_26e,"window"); +var opts=_26f.options; +var win=$(_26e).panel($.extend({},_26f.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(opts.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ +if(opts.onBeforeDestroy.call(_26e)==false){ +return false; +} +if(_26f.shadow){ +_26f.shadow.remove(); +} +if(_26f.mask){ +_26f.mask.remove(); +} +},onClose:function(){ +if(_26f.shadow){ +_26f.shadow.hide(); +} +if(_26f.mask){ +_26f.mask.hide(); +} +opts.onClose.call(_26e); +},onOpen:function(){ +if(_26f.mask){ +_26f.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); +} +if(_26f.shadow){ +_26f.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:opts.left,top:opts.top,width:_26f.window._outerWidth(),height:_26f.window._outerHeight()}); +} +_26f.window.css("z-index",$.fn.window.defaults.zIndex++); +opts.onOpen.call(_26e); +},onResize:function(_270,_271){ +var _272=$(this).panel("options"); +$.extend(opts,{width:_272.width,height:_272.height,left:_272.left,top:_272.top}); +if(_26f.shadow){ +_26f.shadow.css({left:opts.left,top:opts.top,width:_26f.window._outerWidth(),height:_26f.window._outerHeight()}); +} +opts.onResize.call(_26e,_270,_271); +},onMinimize:function(){ +if(_26f.shadow){ +_26f.shadow.hide(); +} +if(_26f.mask){ +_26f.mask.hide(); +} +_26f.options.onMinimize.call(_26e); +},onBeforeCollapse:function(){ +if(opts.onBeforeCollapse.call(_26e)==false){ +return false; +} +if(_26f.shadow){ +_26f.shadow.hide(); +} +},onExpand:function(){ +if(_26f.shadow){ +_26f.shadow.show(); +} +opts.onExpand.call(_26e); +}})); +_26f.window=win.panel("panel"); +if(_26f.mask){ +_26f.mask.remove(); +} +if(opts.modal==true){ +_26f.mask=$("
        ").insertAfter(_26f.window); +_26f.mask.css({width:(opts.inline?_26f.mask.parent().width():_273().width),height:(opts.inline?_26f.mask.parent().height():_273().height),display:"none"}); +} +if(_26f.shadow){ +_26f.shadow.remove(); +} +if(opts.shadow==true){ +_26f.shadow=$("
        ").insertAfter(_26f.window); +_26f.shadow.css({display:"none"}); +} +if(opts.left==null){ +_263(_26e); +} +if(opts.top==null){ +_268(_26e); +} +_25f(_26e); +if(!opts.closed){ +win.window("open"); +} +}; +function _274(_275){ +var _276=$.data(_275,"window"); +_276.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_276.options.draggable==false,onStartDrag:function(e){ +if(_276.mask){ +_276.mask.css("z-index",$.fn.window.defaults.zIndex++); +} +if(_276.shadow){ +_276.shadow.css("z-index",$.fn.window.defaults.zIndex++); +} +_276.window.css("z-index",$.fn.window.defaults.zIndex++); +if(!_276.proxy){ +_276.proxy=$("
        ").insertAfter(_276.window); +} +_276.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_276.proxy._outerWidth(_276.window._outerWidth()); +_276.proxy._outerHeight(_276.window._outerHeight()); +setTimeout(function(){ +if(_276.proxy){ +_276.proxy.show(); +} +},500); +},onDrag:function(e){ +_276.proxy.css({display:"block",left:e.data.left,top:e.data.top}); +return false; +},onStopDrag:function(e){ +_276.options.left=e.data.left; +_276.options.top=e.data.top; +$(_275).window("move"); +_276.proxy.remove(); +_276.proxy=null; +}}); +_276.window.resizable({disabled:_276.options.resizable==false,onStartResize:function(e){ +if(_276.pmask){ +_276.pmask.remove(); +} +_276.pmask=$("
        ").insertAfter(_276.window); +_276.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_276.window._outerWidth(),height:_276.window._outerHeight()}); +if(_276.proxy){ +_276.proxy.remove(); +} +_276.proxy=$("
        ").insertAfter(_276.window); +_276.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_276.proxy._outerWidth(e.data.width)._outerHeight(e.data.height); +},onResize:function(e){ +_276.proxy.css({left:e.data.left,top:e.data.top}); +_276.proxy._outerWidth(e.data.width); +_276.proxy._outerHeight(e.data.height); +return false; +},onStopResize:function(e){ +$(_275).window("resize",e.data); +_276.pmask.remove(); +_276.pmask=null; +_276.proxy.remove(); +_276.proxy=null; +}}); +}; +function _273(){ +if(document.compatMode=="BackCompat"){ +return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; +}else{ +return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; +} +}; +$(window).resize(function(){ +$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); +setTimeout(function(){ +$("body>div.window-mask").css({width:_273().width,height:_273().height}); +},50); +}); +$.fn.window=function(_277,_278){ +if(typeof _277=="string"){ +var _279=$.fn.window.methods[_277]; +if(_279){ +return _279(this,_278); +}else{ +return this.panel(_277,_278); +} +} +_277=_277||{}; +return this.each(function(){ +var _27a=$.data(this,"window"); +if(_27a){ +$.extend(_27a.options,_277); +}else{ +_27a=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_277)}); +if(!_27a.options.inline){ +document.body.appendChild(this); +} +} +_26d(this); +_274(this); +}); +}; +$.fn.window.methods={options:function(jq){ +var _27b=jq.panel("options"); +var _27c=$.data(jq[0],"window").options; +return $.extend(_27c,{closed:_27b.closed,collapsed:_27b.collapsed,minimized:_27b.minimized,maximized:_27b.maximized}); +},window:function(jq){ +return $.data(jq[0],"window").window; +},move:function(jq,_27d){ +return jq.each(function(){ +_25f(this,_27d); +}); +},hcenter:function(jq){ +return jq.each(function(){ +_263(this,true); +}); +},vcenter:function(jq){ +return jq.each(function(){ +_268(this,true); +}); +},center:function(jq){ +return jq.each(function(){ +_263(this); +_268(this); +_25f(this); +}); +}}; +$.fn.window.parseOptions=function(_27e){ +return $.extend({},$.fn.panel.parseOptions(_27e),$.parser.parseOptions(_27e,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); +}; +$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); +})(jQuery); +(function($){ +function _27f(_280){ +var opts=$.data(_280,"dialog").options; +opts.inited=false; +$(_280).window($.extend({},opts,{onResize:function(w,h){ +if(opts.inited){ +_284(this); +opts.onResize.call(this,w,h); +} +}})); +var win=$(_280).window("window"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$(_280).siblings("div.dialog-toolbar").remove(); +var _281=$("
        ").appendTo(win); +var tr=_281.find("tr"); +for(var i=0;i
        ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("dialog-toolbar").appendTo(win); +$(opts.toolbar).show(); +} +}else{ +$(_280).siblings("div.dialog-toolbar").remove(); +} +if(opts.buttons){ +if($.isArray(opts.buttons)){ +$(_280).siblings("div.dialog-button").remove(); +var _282=$("
        ").appendTo(win); +for(var i=0;i").appendTo(_282); +if(p.handler){ +_283[0].onclick=p.handler; +} +_283.linkbutton(p); +} +}else{ +$(opts.buttons).addClass("dialog-button").appendTo(win); +$(opts.buttons).show(); +} +}else{ +$(_280).siblings("div.dialog-button").remove(); +} +opts.inited=true; +win.show(); +$(_280).window("resize"); +if(opts.closed){ +win.hide(); +} +}; +function _284(_285,_286){ +var t=$(_285); +var opts=t.dialog("options"); +var _287=opts.noheader; +var tb=t.siblings(".dialog-toolbar"); +var bb=t.siblings(".dialog-button"); +tb.insertBefore(_285).css({position:"relative",borderTopWidth:(_287?1:0),top:(_287?tb.length:0)}); +bb.insertAfter(_285).css({position:"relative",top:-1}); +if(!isNaN(parseInt(opts.height))){ +t._outerHeight(t._outerHeight()-tb._outerHeight()-bb._outerHeight()); +} +tb.add(bb)._outerWidth(t._outerWidth()); +var _288=$.data(_285,"window").shadow; +if(_288){ +var cc=t.panel("panel"); +_288.css({width:cc._outerWidth(),height:cc._outerHeight()}); +} +}; +$.fn.dialog=function(_289,_28a){ +if(typeof _289=="string"){ +var _28b=$.fn.dialog.methods[_289]; +if(_28b){ +return _28b(this,_28a); +}else{ +return this.window(_289,_28a); +} +} +_289=_289||{}; +return this.each(function(){ +var _28c=$.data(this,"dialog"); +if(_28c){ +$.extend(_28c.options,_289); +}else{ +$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_289)}); +} +_27f(this); +}); +}; +$.fn.dialog.methods={options:function(jq){ +var _28d=$.data(jq[0],"dialog").options; +var _28e=jq.panel("options"); +$.extend(_28d,{width:_28e.width,height:_28e.height,left:_28e.left,top:_28e.top,closed:_28e.closed,collapsed:_28e.collapsed,minimized:_28e.minimized,maximized:_28e.maximized}); +return _28d; +},dialog:function(jq){ +return jq.window("window"); +}}; +$.fn.dialog.parseOptions=function(_28f){ +return $.extend({},$.fn.window.parseOptions(_28f),$.parser.parseOptions(_28f,["toolbar","buttons"])); +}; +$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); +})(jQuery); +(function($){ +function show(el,type,_290,_291){ +var win=$(el).window("window"); +if(!win){ +return; +} +switch(type){ +case null: +win.show(); +break; +case "slide": +win.slideDown(_290); +break; +case "fade": +win.fadeIn(_290); +break; +case "show": +win.show(_290); +break; +} +var _292=null; +if(_291>0){ +_292=setTimeout(function(){ +hide(el,type,_290); +},_291); +} +win.hover(function(){ +if(_292){ +clearTimeout(_292); +} +},function(){ +if(_291>0){ +_292=setTimeout(function(){ +hide(el,type,_290); +},_291); +} +}); +}; +function hide(el,type,_293){ +if(el.locked==true){ +return; +} +el.locked=true; +var win=$(el).window("window"); +if(!win){ +return; +} +switch(type){ +case null: +win.hide(); +break; +case "slide": +win.slideUp(_293); +break; +case "fade": +win.fadeOut(_293); +break; +case "show": +win.hide(_293); +break; +} +setTimeout(function(){ +$(el).window("destroy"); +},_293); +}; +function _294(_295){ +var opts=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ +show(this,opts.showType,opts.showSpeed,opts.timeout); +return false; +},onBeforeClose:function(){ +hide(this,opts.showType,opts.showSpeed); +return false; +}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_295); +opts.style.zIndex=$.fn.window.defaults.zIndex++; +var win=$("
        ").html(opts.msg).appendTo("body"); +win.window(opts); +win.window("window").css(opts.style); +win.window("open"); +return win; +}; +function _296(_297,_298,_299){ +var win=$("
        ").appendTo("body"); +win.append(_298); +if(_299){ +var tb=$("
        ").appendTo(win); +for(var _29a in _299){ +$("").attr("href","javascript:void(0)").text(_29a).css("margin-left",10).bind("click",eval(_299[_29a])).appendTo(tb).linkbutton(); +} +} +win.window({title:_297,noheader:(_297?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ +setTimeout(function(){ +win.window("destroy"); +},100); +}}); +win.window("window").addClass("messager-window"); +win.children("div.messager-button").children("a:first").focus(); +return win; +}; +$.messager={show:function(_29b){ +return _294(_29b); +},alert:function(_29c,msg,icon,fn){ +var _29d="
        "+msg+"
        "; +switch(icon){ +case "error": +_29d="
        "+_29d; +break; +case "info": +_29d="
        "+_29d; +break; +case "question": +_29d="
        "+_29d; +break; +case "warning": +_29d="
        "+_29d; +break; +} +_29d+="
        "; +var _29e={}; +_29e[$.messager.defaults.ok]=function(){ +win.window("close"); +if(fn){ +fn(); +return false; +} +}; +var win=_296(_29c,_29d,_29e); +return win; +},confirm:function(_29f,msg,fn){ +var _2a0="
        "+"
        "+msg+"
        "+"
        "; +var _2a1={}; +_2a1[$.messager.defaults.ok]=function(){ +win.window("close"); +if(fn){ +fn(true); +return false; +} +}; +_2a1[$.messager.defaults.cancel]=function(){ +win.window("close"); +if(fn){ +fn(false); +return false; +} +}; +var win=_296(_29f,_2a0,_2a1); +return win; +},prompt:function(_2a2,msg,fn){ +var _2a3="
        "+"
        "+msg+"
        "+"
        "+"
        "+"
        "; +var _2a4={}; +_2a4[$.messager.defaults.ok]=function(){ +win.window("close"); +if(fn){ +fn($(".messager-input",win).val()); +return false; +} +}; +_2a4[$.messager.defaults.cancel]=function(){ +win.window("close"); +if(fn){ +fn(); +return false; +} +}; +var win=_296(_2a2,_2a3,_2a4); +win.children("input.messager-input").focus(); +return win; +},progress:function(_2a5){ +var _2a6={bar:function(){ +return $("body>div.messager-window").find("div.messager-p-bar"); +},close:function(){ +var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); +if(win.length){ +win.window("close"); +} +}}; +if(typeof _2a5=="string"){ +var _2a7=_2a6[_2a5]; +return _2a7(); +} +var opts=$.extend({title:"",msg:"",text:undefined,interval:300},_2a5||{}); +var _2a8="
        "; +var win=_296(opts.title,_2a8,null); +win.find("div.messager-p-msg").html(opts.msg); +var bar=win.find("div.messager-p-bar"); +bar.progressbar({text:opts.text}); +win.window({closable:false,onClose:function(){ +if(this.timer){ +clearInterval(this.timer); +} +$(this).window("destroy"); +}}); +if(opts.interval){ +win[0].timer=setInterval(function(){ +var v=bar.progressbar("getValue"); +v+=10; +if(v>100){ +v=0; +} +bar.progressbar("setValue",v); +},opts.interval); +} +return win; +}}; +$.messager.defaults={ok:"Ok",cancel:"Cancel"}; +})(jQuery); +(function($){ +function _2a9(_2aa,_2ab){ +var _2ac=$.data(_2aa,"accordion"); +var opts=_2ac.options; +var _2ad=_2ac.panels; +var cc=$(_2aa); +if(_2ab){ +$.extend(opts,{width:_2ab.width,height:_2ab.height}); +} +cc._size(opts); +var _2ae=0; +var _2af="auto"; +var _2b0=cc.find(">div.panel>div.accordion-header"); +if(_2b0.length){ +_2ae=$(_2b0[0]).css("height","")._outerHeight(); +} +if(!isNaN(parseInt(opts.height))){ +_2af=cc.height()-_2ae*_2b0.length; +} +_2b1(true,_2af-_2b1(false)+1); +function _2b1(_2b2,_2b3){ +var _2b4=0; +for(var i=0;i<_2ad.length;i++){ +var p=_2ad[i]; +var h=p.panel("header")._outerHeight(_2ae); +if(p.panel("options").collapsible==_2b2){ +var _2b5=isNaN(_2b3)?undefined:(_2b3+_2ae*h.length); +p.panel("resize",{width:cc.width(),height:(_2b2?_2b5:undefined)}); +_2b4+=p.panel("panel").outerHeight()-_2ae*h.length; +} +} +return _2b4; +}; +}; +function _2b6(_2b7,_2b8,_2b9,all){ +var _2ba=$.data(_2b7,"accordion").panels; +var pp=[]; +for(var i=0;i<_2ba.length;i++){ +var p=_2ba[i]; +if(_2b8){ +if(p.panel("options")[_2b8]==_2b9){ +pp.push(p); +} +}else{ +if(p[0]==$(_2b9)[0]){ +return i; +} +} +} +if(_2b8){ +return all?pp:(pp.length?pp[0]:null); +}else{ +return -1; +} +}; +function _2bb(_2bc){ +return _2b6(_2bc,"collapsed",false,true); +}; +function _2bd(_2be){ +var pp=_2bb(_2be); +return pp.length?pp[0]:null; +}; +function _2bf(_2c0,_2c1){ +return _2b6(_2c0,null,_2c1); +}; +function _2c2(_2c3,_2c4){ +var _2c5=$.data(_2c3,"accordion").panels; +if(typeof _2c4=="number"){ +if(_2c4<0||_2c4>=_2c5.length){ +return null; +}else{ +return _2c5[_2c4]; +} +} +return _2b6(_2c3,"title",_2c4); +}; +function _2c6(_2c7){ +var opts=$.data(_2c7,"accordion").options; +var cc=$(_2c7); +if(opts.border){ +cc.removeClass("accordion-noborder"); +}else{ +cc.addClass("accordion-noborder"); +} +}; +function init(_2c8){ +var _2c9=$.data(_2c8,"accordion"); +var cc=$(_2c8); +cc.addClass("accordion"); +_2c9.panels=[]; +cc.children("div").each(function(){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_2c9.panels.push(pp); +_2cb(_2c8,pp,opts); +}); +cc.bind("_resize",function(e,_2ca){ +if($(this).hasClass("easyui-fluid")||_2ca){ +_2a9(_2c8); +} +return false; +}); +}; +function _2cb(_2cc,pp,_2cd){ +var opts=$.data(_2cc,"accordion").options; +pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body"},_2cd,{onBeforeExpand:function(){ +if(_2cd.onBeforeExpand){ +if(_2cd.onBeforeExpand.call(this)==false){ +return false; +} +} +if(!opts.multiple){ +var all=$.grep(_2bb(_2cc),function(p){ +return p.panel("options").collapsible; +}); +for(var i=0;i").addClass("accordion-collapse accordion-expand").appendTo(tool); +t.bind("click",function(){ +var _2d1=_2bf(_2cc,pp); +if(pp.panel("options").collapsed){ +_2d2(_2cc,_2d1); +}else{ +_2d6(_2cc,_2d1); +} +return false; +}); +pp.panel("options").collapsible?t.show():t.hide(); +_2d0.click(function(){ +$(this).find("a.accordion-collapse:visible").triggerHandler("click"); +return false; +}); +}; +function _2d2(_2d3,_2d4){ +var p=_2c2(_2d3,_2d4); +if(!p){ +return; +} +_2d5(_2d3); +var opts=$.data(_2d3,"accordion").options; +p.panel("expand",opts.animate); +}; +function _2d6(_2d7,_2d8){ +var p=_2c2(_2d7,_2d8); +if(!p){ +return; +} +_2d5(_2d7); +var opts=$.data(_2d7,"accordion").options; +p.panel("collapse",opts.animate); +}; +function _2d9(_2da){ +var opts=$.data(_2da,"accordion").options; +var p=_2b6(_2da,"selected",true); +if(p){ +_2db(_2bf(_2da,p)); +}else{ +_2db(opts.selected); +} +function _2db(_2dc){ +var _2dd=opts.animate; +opts.animate=false; +_2d2(_2da,_2dc); +opts.animate=_2dd; +}; +}; +function _2d5(_2de){ +var _2df=$.data(_2de,"accordion").panels; +for(var i=0;i<_2df.length;i++){ +_2df[i].stop(true,true); +} +}; +function add(_2e0,_2e1){ +var _2e2=$.data(_2e0,"accordion"); +var opts=_2e2.options; +var _2e3=_2e2.panels; +if(_2e1.selected==undefined){ +_2e1.selected=true; +} +_2d5(_2e0); +var pp=$("
        ").appendTo(_2e0); +_2e3.push(pp); +_2cb(_2e0,pp,_2e1); +_2a9(_2e0); +opts.onAdd.call(_2e0,_2e1.title,_2e3.length-1); +if(_2e1.selected){ +_2d2(_2e0,_2e3.length-1); +} +}; +function _2e4(_2e5,_2e6){ +var _2e7=$.data(_2e5,"accordion"); +var opts=_2e7.options; +var _2e8=_2e7.panels; +_2d5(_2e5); +var _2e9=_2c2(_2e5,_2e6); +var _2ea=_2e9.panel("options").title; +var _2eb=_2bf(_2e5,_2e9); +if(!_2e9){ +return; +} +if(opts.onBeforeRemove.call(_2e5,_2ea,_2eb)==false){ +return; +} +_2e8.splice(_2eb,1); +_2e9.panel("destroy"); +if(_2e8.length){ +_2a9(_2e5); +var curr=_2bd(_2e5); +if(!curr){ +_2d2(_2e5,0); +} +} +opts.onRemove.call(_2e5,_2ea,_2eb); +}; +$.fn.accordion=function(_2ec,_2ed){ +if(typeof _2ec=="string"){ +return $.fn.accordion.methods[_2ec](this,_2ed); +} +_2ec=_2ec||{}; +return this.each(function(){ +var _2ee=$.data(this,"accordion"); +if(_2ee){ +$.extend(_2ee.options,_2ec); +}else{ +$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_2ec),accordion:$(this).addClass("accordion"),panels:[]}); +init(this); +} +_2c6(this); +_2a9(this); +_2d9(this); +}); +}; +$.fn.accordion.methods={options:function(jq){ +return $.data(jq[0],"accordion").options; +},panels:function(jq){ +return $.data(jq[0],"accordion").panels; +},resize:function(jq,_2ef){ +return jq.each(function(){ +_2a9(this,_2ef); +}); +},getSelections:function(jq){ +return _2bb(jq[0]); +},getSelected:function(jq){ +return _2bd(jq[0]); +},getPanel:function(jq,_2f0){ +return _2c2(jq[0],_2f0); +},getPanelIndex:function(jq,_2f1){ +return _2bf(jq[0],_2f1); +},select:function(jq,_2f2){ +return jq.each(function(){ +_2d2(this,_2f2); +}); +},unselect:function(jq,_2f3){ +return jq.each(function(){ +_2d6(this,_2f3); +}); +},add:function(jq,_2f4){ +return jq.each(function(){ +add(this,_2f4); +}); +},remove:function(jq,_2f5){ +return jq.each(function(){ +_2e4(this,_2f5); +}); +}}; +$.fn.accordion.parseOptions=function(_2f6){ +var t=$(_2f6); +return $.extend({},$.parser.parseOptions(_2f6,["width","height",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); +}; +$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,onSelect:function(_2f7,_2f8){ +},onUnselect:function(_2f9,_2fa){ +},onAdd:function(_2fb,_2fc){ +},onBeforeRemove:function(_2fd,_2fe){ +},onRemove:function(_2ff,_300){ +}}; +})(jQuery); +(function($){ +function _301(_302){ +var opts=$.data(_302,"tabs").options; +if(opts.tabPosition=="left"||opts.tabPosition=="right"||!opts.showHeader){ +return; +} +var _303=$(_302).children("div.tabs-header"); +var tool=_303.children("div.tabs-tool"); +var _304=_303.children("div.tabs-scroller-left"); +var _305=_303.children("div.tabs-scroller-right"); +var wrap=_303.children("div.tabs-wrap"); +var _306=_303.outerHeight(); +if(opts.plain){ +_306-=_306-_303.height(); +} +tool._outerHeight(_306); +var _307=0; +$("ul.tabs li",_303).each(function(){ +_307+=$(this).outerWidth(true); +}); +var _308=_303.width()-tool._outerWidth(); +if(_307>_308){ +_304.add(_305).show()._outerHeight(_306); +if(opts.toolPosition=="left"){ +tool.css({left:_304.outerWidth(),right:""}); +wrap.css({marginLeft:_304.outerWidth()+tool._outerWidth(),marginRight:_305._outerWidth(),width:_308-_304.outerWidth()-_305.outerWidth()}); +}else{ +tool.css({left:"",right:_305.outerWidth()}); +wrap.css({marginLeft:_304.outerWidth(),marginRight:_305.outerWidth()+tool._outerWidth(),width:_308-_304.outerWidth()-_305.outerWidth()}); +} +}else{ +_304.add(_305).hide(); +if(opts.toolPosition=="left"){ +tool.css({left:0,right:""}); +wrap.css({marginLeft:tool._outerWidth(),marginRight:0,width:_308}); +}else{ +tool.css({left:"",right:0}); +wrap.css({marginLeft:0,marginRight:tool._outerWidth(),width:_308}); +} +} +}; +function _309(_30a){ +var opts=$.data(_30a,"tabs").options; +var _30b=$(_30a).children("div.tabs-header"); +if(opts.tools){ +if(typeof opts.tools=="string"){ +$(opts.tools).addClass("tabs-tool").appendTo(_30b); +$(opts.tools).show(); +}else{ +_30b.children("div.tabs-tool").remove(); +var _30c=$("
        ").appendTo(_30b); +var tr=_30c.find("tr"); +for(var i=0;i").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(opts.tools[i].handler||function(){ +}); +tool.linkbutton($.extend({},opts.tools[i],{plain:true})); +} +} +}else{ +_30b.children("div.tabs-tool").remove(); +} +}; +function _30d(_30e,_30f){ +var _310=$.data(_30e,"tabs"); +var opts=_310.options; +var cc=$(_30e); +if(_30f){ +$.extend(opts,{width:_30f.width,height:_30f.height}); +} +cc._size(opts); +var _311=cc.children("div.tabs-header"); +var _312=cc.children("div.tabs-panels"); +var wrap=_311.find("div.tabs-wrap"); +var ul=wrap.find(".tabs"); +for(var i=0;i<_310.tabs.length;i++){ +var _313=_310.tabs[i].panel("options"); +var p_t=_313.tab.find("a.tabs-inner"); +var _314=parseInt(_313.tabWidth||opts.tabWidth)||undefined; +if(_314){ +p_t._outerWidth(_314); +}else{ +p_t.css("width",""); +} +p_t._outerHeight(opts.tabHeight); +p_t.css("lineHeight",p_t.height()+"px"); +} +if(opts.tabPosition=="left"||opts.tabPosition=="right"){ +_311._outerWidth(opts.showHeader?opts.headerWidth:0); +_312._outerWidth(cc.width()-_311.outerWidth()); +_311.add(_312)._outerHeight(opts.height); +wrap._outerWidth(_311.width()); +ul._outerWidth(wrap.width()).css("height",""); +}else{ +var lrt=_311.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool"); +_311._outerWidth(opts.width).css("height",""); +if(opts.showHeader){ +_311.css("background-color",""); +wrap.css("height",""); +lrt.show(); +}else{ +_311.css("background-color","transparent"); +_311._outerHeight(0); +wrap._outerHeight(0); +lrt.hide(); +} +ul._outerHeight(opts.tabHeight).css("width",""); +_301(_30e); +_312._size("height",isNaN(opts.height)?"":(opts.height-_311.outerHeight())); +_312._size("width",isNaN(opts.width)?"":opts.width); +} +}; +function _315(_316){ +var opts=$.data(_316,"tabs").options; +var tab=_317(_316); +if(tab){ +var _318=$(_316).children("div.tabs-panels"); +var _319=opts.width=="auto"?"auto":_318.width(); +var _31a=opts.height=="auto"?"auto":_318.height(); +tab.panel("resize",{width:_319,height:_31a}); +} +}; +function _31b(_31c){ +var tabs=$.data(_31c,"tabs").tabs; +var cc=$(_31c); +cc.addClass("tabs-container"); +var pp=$("
        ").insertBefore(cc); +cc.children("div").each(function(){ +pp[0].appendChild(this); +}); +cc[0].appendChild(pp[0]); +$("
        "+"
        "+"
        "+"
        "+"
          "+"
          "+"
          ").prependTo(_31c); +cc.children("div.tabs-panels").children("div").each(function(i){ +var opts=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +tabs.push(pp); +_329(_31c,pp,opts); +}); +cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ +$(this).addClass("tabs-scroller-over"); +},function(){ +$(this).removeClass("tabs-scroller-over"); +}); +cc.bind("_resize",function(e,_31d){ +if($(this).hasClass("easyui-fluid")||_31d){ +_30d(_31c); +_315(_31c); +} +return false; +}); +}; +function _31e(_31f){ +var _320=$.data(_31f,"tabs"); +var opts=_320.options; +$(_31f).children("div.tabs-header").unbind().bind("click",function(e){ +if($(e.target).hasClass("tabs-scroller-left")){ +$(_31f).tabs("scrollBy",-opts.scrollIncrement); +}else{ +if($(e.target).hasClass("tabs-scroller-right")){ +$(_31f).tabs("scrollBy",opts.scrollIncrement); +}else{ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +var a=$(e.target).closest("a.tabs-close"); +if(a.length){ +_33b(_31f,_321(li)); +}else{ +if(li.length){ +var _322=_321(li); +var _323=_320.tabs[_322].panel("options"); +if(_323.collapsible){ +_323.closed?_331(_31f,_322):_352(_31f,_322); +}else{ +_331(_31f,_322); +} +} +} +} +} +}).bind("contextmenu",function(e){ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +if(li.length){ +opts.onContextMenu.call(_31f,e,li.find("span.tabs-title").html(),_321(li)); +} +}); +function _321(li){ +var _324=0; +li.parent().children("li").each(function(i){ +if(li[0]==this){ +_324=i; +return false; +} +}); +return _324; +}; +}; +function _325(_326){ +var opts=$.data(_326,"tabs").options; +var _327=$(_326).children("div.tabs-header"); +var _328=$(_326).children("div.tabs-panels"); +_327.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); +_328.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); +if(opts.tabPosition=="top"){ +_327.insertBefore(_328); +}else{ +if(opts.tabPosition=="bottom"){ +_327.insertAfter(_328); +_327.addClass("tabs-header-bottom"); +_328.addClass("tabs-panels-top"); +}else{ +if(opts.tabPosition=="left"){ +_327.addClass("tabs-header-left"); +_328.addClass("tabs-panels-right"); +}else{ +if(opts.tabPosition=="right"){ +_327.addClass("tabs-header-right"); +_328.addClass("tabs-panels-left"); +} +} +} +} +if(opts.plain==true){ +_327.addClass("tabs-header-plain"); +}else{ +_327.removeClass("tabs-header-plain"); +} +if(opts.border==true){ +_327.removeClass("tabs-header-noborder"); +_328.removeClass("tabs-panels-noborder"); +}else{ +_327.addClass("tabs-header-noborder"); +_328.addClass("tabs-panels-noborder"); +} +}; +function _329(_32a,pp,_32b){ +var _32c=$.data(_32a,"tabs"); +_32b=_32b||{}; +pp.panel($.extend({},_32b,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_32b.icon?_32b.icon:undefined),onLoad:function(){ +if(_32b.onLoad){ +_32b.onLoad.call(this,arguments); +} +_32c.options.onLoad.call(_32a,$(this)); +}})); +var opts=pp.panel("options"); +var tabs=$(_32a).children("div.tabs-header").find("ul.tabs"); +opts.tab=$("
        • ").appendTo(tabs); +opts.tab.append(""+""+""+""); +$(_32a).tabs("update",{tab:pp,options:opts,type:"header"}); +}; +function _32d(_32e,_32f){ +var _330=$.data(_32e,"tabs"); +var opts=_330.options; +var tabs=_330.tabs; +if(_32f.selected==undefined){ +_32f.selected=true; +} +var pp=$("
          ").appendTo($(_32e).children("div.tabs-panels")); +tabs.push(pp); +_329(_32e,pp,_32f); +opts.onAdd.call(_32e,_32f.title,tabs.length-1); +_30d(_32e); +if(_32f.selected){ +_331(_32e,tabs.length-1); +} +}; +function _332(_333,_334){ +_334.type=_334.type||"all"; +var _335=$.data(_333,"tabs").selectHis; +var pp=_334.tab; +var _336=pp.panel("options").title; +if(_334.type=="all"||_334=="body"){ +pp.panel($.extend({},_334.options,{iconCls:(_334.options.icon?_334.options.icon:undefined)})); +} +if(_334.type=="all"||_334.type=="header"){ +var opts=pp.panel("options"); +var tab=opts.tab; +var _337=tab.find("span.tabs-title"); +var _338=tab.find("span.tabs-icon"); +_337.html(opts.title); +_338.attr("class","tabs-icon"); +tab.find("a.tabs-close").remove(); +if(opts.closable){ +_337.addClass("tabs-closable"); +$("").appendTo(tab); +}else{ +_337.removeClass("tabs-closable"); +} +if(opts.iconCls){ +_337.addClass("tabs-with-icon"); +_338.addClass(opts.iconCls); +}else{ +_337.removeClass("tabs-with-icon"); +} +if(_336!=opts.title){ +for(var i=0;i<_335.length;i++){ +if(_335[i]==_336){ +_335[i]=opts.title; +} +} +} +tab.find("span.tabs-p-tool").remove(); +if(opts.tools){ +var _339=$("").insertAfter(tab.find("a.tabs-inner")); +if($.isArray(opts.tools)){ +for(var i=0;i").appendTo(_339); +t.addClass(opts.tools[i].iconCls); +if(opts.tools[i].handler){ +t.bind("click",{handler:opts.tools[i].handler},function(e){ +if($(this).parents("li").hasClass("tabs-disabled")){ +return; +} +e.data.handler.call(this); +}); +} +} +}else{ +$(opts.tools).children().appendTo(_339); +} +var pr=_339.children().length*12; +if(opts.closable){ +pr+=8; +}else{ +pr-=3; +_339.css("right","5px"); +} +_337.css("padding-right",pr+"px"); +} +} +_30d(_333); +$.data(_333,"tabs").options.onUpdate.call(_333,opts.title,_33a(_333,pp)); +}; +function _33b(_33c,_33d){ +var opts=$.data(_33c,"tabs").options; +var tabs=$.data(_33c,"tabs").tabs; +var _33e=$.data(_33c,"tabs").selectHis; +if(!_33f(_33c,_33d)){ +return; +} +var tab=_340(_33c,_33d); +var _341=tab.panel("options").title; +var _342=_33a(_33c,tab); +if(opts.onBeforeClose.call(_33c,_341,_342)==false){ +return; +} +var tab=_340(_33c,_33d,true); +tab.panel("options").tab.remove(); +tab.panel("destroy"); +opts.onClose.call(_33c,_341,_342); +_30d(_33c); +for(var i=0;i<_33e.length;i++){ +if(_33e[i]==_341){ +_33e.splice(i,1); +i--; +} +} +var _343=_33e.pop(); +if(_343){ +_331(_33c,_343); +}else{ +if(tabs.length){ +_331(_33c,0); +} +} +}; +function _340(_344,_345,_346){ +var tabs=$.data(_344,"tabs").tabs; +if(typeof _345=="number"){ +if(_345<0||_345>=tabs.length){ +return null; +}else{ +var tab=tabs[_345]; +if(_346){ +tabs.splice(_345,1); +} +return tab; +} +} +for(var i=0;idiv.tabs-header>div.tabs-wrap"); +var left=tab.position().left; +var _354=left+tab.outerWidth(); +if(left<0||_354>wrap.width()){ +var _355=left-(wrap.width()-tab.width())/2; +$(_34c).tabs("scrollBy",_355); +}else{ +$(_34c).tabs("scrollBy",0); +} +_315(_34c); +opts.onSelect.call(_34c,_353,_33a(_34c,_350)); +}; +function _352(_356,_357){ +var _358=$.data(_356,"tabs"); +var p=_340(_356,_357); +if(p){ +var opts=p.panel("options"); +if(!opts.closed){ +p.panel("close"); +if(opts.closed){ +opts.tab.removeClass("tabs-selected"); +_358.options.onUnselect.call(_356,opts.title,_33a(_356,p)); +} +} +} +}; +function _33f(_359,_35a){ +return _340(_359,_35a)!=null; +}; +function _35b(_35c,_35d){ +var opts=$.data(_35c,"tabs").options; +opts.showHeader=_35d; +$(_35c).tabs("resize"); +}; +$.fn.tabs=function(_35e,_35f){ +if(typeof _35e=="string"){ +return $.fn.tabs.methods[_35e](this,_35f); +} +_35e=_35e||{}; +return this.each(function(){ +var _360=$.data(this,"tabs"); +if(_360){ +$.extend(_360.options,_35e); +}else{ +$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_35e),tabs:[],selectHis:[]}); +_31b(this); +} +_309(this); +_325(this); +_30d(this); +_31e(this); +_349(this); +}); +}; +$.fn.tabs.methods={options:function(jq){ +var cc=jq[0]; +var opts=$.data(cc,"tabs").options; +var s=_317(cc); +opts.selected=s?_33a(cc,s):-1; +return opts; +},tabs:function(jq){ +return $.data(jq[0],"tabs").tabs; +},resize:function(jq,_361){ +return jq.each(function(){ +_30d(this,_361); +_315(this); +}); +},add:function(jq,_362){ +return jq.each(function(){ +_32d(this,_362); +}); +},close:function(jq,_363){ +return jq.each(function(){ +_33b(this,_363); +}); +},getTab:function(jq,_364){ +return _340(jq[0],_364); +},getTabIndex:function(jq,tab){ +return _33a(jq[0],tab); +},getSelected:function(jq){ +return _317(jq[0]); +},select:function(jq,_365){ +return jq.each(function(){ +_331(this,_365); +}); +},unselect:function(jq,_366){ +return jq.each(function(){ +_352(this,_366); +}); +},exists:function(jq,_367){ +return _33f(jq[0],_367); +},update:function(jq,_368){ +return jq.each(function(){ +_332(this,_368); +}); +},enableTab:function(jq,_369){ +return jq.each(function(){ +$(this).tabs("getTab",_369).panel("options").tab.removeClass("tabs-disabled"); +}); +},disableTab:function(jq,_36a){ +return jq.each(function(){ +$(this).tabs("getTab",_36a).panel("options").tab.addClass("tabs-disabled"); +}); +},showHeader:function(jq){ +return jq.each(function(){ +_35b(this,true); +}); +},hideHeader:function(jq){ +return jq.each(function(){ +_35b(this,false); +}); +},scrollBy:function(jq,_36b){ +return jq.each(function(){ +var opts=$(this).tabs("options"); +var wrap=$(this).find(">div.tabs-header>div.tabs-wrap"); +var pos=Math.min(wrap._scrollLeft()+_36b,_36c()); +wrap.animate({scrollLeft:pos},opts.scrollDuration); +function _36c(){ +var w=0; +var ul=wrap.children("ul"); +ul.children("li").each(function(){ +w+=$(this).outerWidth(true); +}); +return w-wrap.width()+(ul.outerWidth()-ul.width()); +}; +}); +}}; +$.fn.tabs.parseOptions=function(_36d){ +return $.extend({},$.parser.parseOptions(_36d,["tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number",showHeader:"boolean"}])); +}; +$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_36e){ +},onSelect:function(_36f,_370){ +},onUnselect:function(_371,_372){ +},onBeforeClose:function(_373,_374){ +},onClose:function(_375,_376){ +},onAdd:function(_377,_378){ +},onUpdate:function(_379,_37a){ +},onContextMenu:function(e,_37b,_37c){ +}}; +})(jQuery); +(function($){ +var _37d=false; +function _37e(_37f,_380){ +var _381=$.data(_37f,"layout"); +var opts=_381.options; +var _382=_381.panels; +var cc=$(_37f); +if(_380){ +$.extend(opts,{width:_380.width,height:_380.height}); +} +if(_37f.tagName.toLowerCase()=="body"){ +cc._size("fit"); +}else{ +cc._size(opts); +} +var cpos={top:0,left:0,width:cc.width(),height:cc.height()}; +_383(_384(_382.expandNorth)?_382.expandNorth:_382.north,"n"); +_383(_384(_382.expandSouth)?_382.expandSouth:_382.south,"s"); +_385(_384(_382.expandEast)?_382.expandEast:_382.east,"e"); +_385(_384(_382.expandWest)?_382.expandWest:_382.west,"w"); +_382.center.panel("resize",cpos); +function _383(pp,type){ +if(!pp.length||!_384(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:cc.width(),height:opts.height}); +var _386=pp.panel("panel").outerHeight(); +pp.panel("move",{left:0,top:(type=="n"?0:cc.height()-_386)}); +cpos.height-=_386; +if(type=="n"){ +cpos.top+=_386; +if(!opts.split&&opts.border){ +cpos.top--; +} +} +if(!opts.split&&opts.border){ +cpos.height++; +} +}; +function _385(pp,type){ +if(!pp.length||!_384(pp)){ +return; +} +var opts=pp.panel("options"); +pp.panel("resize",{width:opts.width,height:cpos.height}); +var _387=pp.panel("panel").outerWidth(); +pp.panel("move",{left:(type=="e"?cc.width()-_387:0),top:cpos.top}); +cpos.width-=_387; +if(type=="w"){ +cpos.left+=_387; +if(!opts.split&&opts.border){ +cpos.left--; +} +} +if(!opts.split&&opts.border){ +cpos.width++; +} +}; +}; +function init(_388){ +var cc=$(_388); +cc.addClass("layout"); +function _389(cc){ +cc.children("div").each(function(){ +var opts=$.fn.layout.parsePanelOptions(this); +if("north,south,east,west,center".indexOf(opts.region)>=0){ +_38b(_388,opts,this); +} +}); +}; +cc.children("form").length?_389(cc.children("form")):_389(cc); +cc.append("
          "); +cc.bind("_resize",function(e,_38a){ +if($(this).hasClass("easyui-fluid")||_38a){ +_37e(_388); +} +return false; +}); +}; +function _38b(_38c,_38d,el){ +_38d.region=_38d.region||"center"; +var _38e=$.data(_38c,"layout").panels; +var cc=$(_38c); +var dir=_38d.region; +if(_38e[dir].length){ +return; +} +var pp=$(el); +if(!pp.length){ +pp=$("
          ").appendTo(cc); +} +var _38f=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ +var tool=$(this).panel("header").children("div.panel-tool"); +tool.children("a.panel-tool-collapse").hide(); +var _390={north:"up",south:"down",east:"right",west:"left"}; +if(!_390[dir]){ +return; +} +var _391="layout-button-"+_390[dir]; +var t=tool.children("a."+_391); +if(!t.length){ +t=$("").addClass(_391).appendTo(tool); +t.bind("click",{dir:dir},function(e){ +_39d(_38c,e.data.dir); +return false; +}); +} +$(this).panel("options").collapsible?t.show():t.hide(); +}},_38d); +pp.panel(_38f); +_38e[dir]=pp; +if(pp.panel("options").split){ +var _392=pp.panel("panel"); +_392.addClass("layout-split-"+dir); +var _393=""; +if(dir=="north"){ +_393="s"; +} +if(dir=="south"){ +_393="n"; +} +if(dir=="east"){ +_393="w"; +} +if(dir=="west"){ +_393="e"; +} +_392.resizable($.extend({},{handles:_393,onStartResize:function(e){ +_37d=true; +if(dir=="north"||dir=="south"){ +var _394=$(">div.layout-split-proxy-v",_38c); +}else{ +var _394=$(">div.layout-split-proxy-h",_38c); +} +var top=0,left=0,_395=0,_396=0; +var pos={display:"block"}; +if(dir=="north"){ +pos.top=parseInt(_392.css("top"))+_392.outerHeight()-_394.height(); +pos.left=parseInt(_392.css("left")); +pos.width=_392.outerWidth(); +pos.height=_394.height(); +}else{ +if(dir=="south"){ +pos.top=parseInt(_392.css("top")); +pos.left=parseInt(_392.css("left")); +pos.width=_392.outerWidth(); +pos.height=_394.height(); +}else{ +if(dir=="east"){ +pos.top=parseInt(_392.css("top"))||0; +pos.left=parseInt(_392.css("left"))||0; +pos.width=_394.width(); +pos.height=_392.outerHeight(); +}else{ +if(dir=="west"){ +pos.top=parseInt(_392.css("top"))||0; +pos.left=_392.outerWidth()-_394.width(); +pos.width=_394.width(); +pos.height=_392.outerHeight(); +} +} +} +} +_394.css(pos); +$("
          ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); +},onResize:function(e){ +if(dir=="north"||dir=="south"){ +var _397=$(">div.layout-split-proxy-v",_38c); +_397.css("top",e.pageY-$(_38c).offset().top-_397.height()/2); +}else{ +var _397=$(">div.layout-split-proxy-h",_38c); +_397.css("left",e.pageX-$(_38c).offset().left-_397.width()/2); +} +return false; +},onStopResize:function(e){ +cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); +pp.panel("resize",e.data); +_37e(_38c); +_37d=false; +cc.find(">div.layout-mask").remove(); +}},_38d)); +} +}; +function _398(_399,_39a){ +var _39b=$.data(_399,"layout").panels; +if(_39b[_39a].length){ +_39b[_39a].panel("destroy"); +_39b[_39a]=$(); +var _39c="expand"+_39a.substring(0,1).toUpperCase()+_39a.substring(1); +if(_39b[_39c]){ +_39b[_39c].panel("destroy"); +_39b[_39c]=undefined; +} +} +}; +function _39d(_39e,_39f,_3a0){ +if(_3a0==undefined){ +_3a0="normal"; +} +var _3a1=$.data(_39e,"layout").panels; +var p=_3a1[_39f]; +var _3a2=p.panel("options"); +if(_3a2.onBeforeCollapse.call(p)==false){ +return; +} +var _3a3="expand"+_39f.substring(0,1).toUpperCase()+_39f.substring(1); +if(!_3a1[_3a3]){ +_3a1[_3a3]=_3a4(_39f); +_3a1[_3a3].panel("panel").bind("click",function(){ +p.panel("expand",false).panel("open"); +var _3a5=_3a6(); +p.panel("resize",_3a5.collapse); +p.panel("panel").animate(_3a5.expand,function(){ +$(this).unbind(".layout").bind("mouseleave.layout",{region:_39f},function(e){ +if(_37d==true){ +return; +} +if($("body>div.combo-p>div.combo-panel:visible").length){ +return; +} +_39d(_39e,e.data.region); +}); +}); +return false; +}); +} +var _3a7=_3a6(); +if(!_384(_3a1[_3a3])){ +_3a1.center.panel("resize",_3a7.resizeC); +} +p.panel("panel").animate(_3a7.collapse,_3a0,function(){ +p.panel("collapse",false).panel("close"); +_3a1[_3a3].panel("open").panel("resize",_3a7.expandP); +$(this).unbind(".layout"); +}); +function _3a4(dir){ +var icon; +if(dir=="east"){ +icon="layout-button-left"; +}else{ +if(dir=="west"){ +icon="layout-button-right"; +}else{ +if(dir=="north"){ +icon="layout-button-down"; +}else{ +if(dir=="south"){ +icon="layout-button-up"; +} +} +} +} +var p=$("
          ").appendTo(_39e); +p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",closed:true,minWidth:0,minHeight:0,doSize:false,tools:[{iconCls:icon,handler:function(){ +_3ad(_39e,_39f); +return false; +}}]})); +p.panel("panel").hover(function(){ +$(this).addClass("layout-expand-over"); +},function(){ +$(this).removeClass("layout-expand-over"); +}); +return p; +}; +function _3a6(){ +var cc=$(_39e); +var _3a8=_3a1.center.panel("options"); +var _3a9=_3a2.collapsedSize; +if(_39f=="east"){ +var _3aa=p.panel("panel")._outerWidth(); +var _3ab=_3a8.width+_3aa-_3a9; +if(_3a2.split||!_3a2.border){ +_3ab++; +} +return {resizeC:{width:_3ab},expand:{left:cc.width()-_3aa},expandP:{top:_3a8.top,left:cc.width()-_3a9,width:_3a9,height:_3a8.height},collapse:{left:cc.width(),top:_3a8.top,height:_3a8.height}}; +}else{ +if(_39f=="west"){ +var _3aa=p.panel("panel")._outerWidth(); +var _3ab=_3a8.width+_3aa-_3a9; +if(_3a2.split||!_3a2.border){ +_3ab++; +} +return {resizeC:{width:_3ab,left:_3a9-1},expand:{left:0},expandP:{left:0,top:_3a8.top,width:_3a9,height:_3a8.height},collapse:{left:-_3aa,top:_3a8.top,height:_3a8.height}}; +}else{ +if(_39f=="north"){ +var _3ac=p.panel("panel")._outerHeight(); +var hh=_3a8.height; +if(!_384(_3a1.expandNorth)){ +hh+=_3ac-_3a9+((_3a2.split||!_3a2.border)?1:0); +} +_3a1.east.add(_3a1.west).add(_3a1.expandEast).add(_3a1.expandWest).panel("resize",{top:_3a9-1,height:hh}); +return {resizeC:{top:_3a9-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_3a9},collapse:{top:-_3ac,width:cc.width()}}; +}else{ +if(_39f=="south"){ +var _3ac=p.panel("panel")._outerHeight(); +var hh=_3a8.height; +if(!_384(_3a1.expandSouth)){ +hh+=_3ac-_3a9+((_3a2.split||!_3a2.border)?1:0); +} +_3a1.east.add(_3a1.west).add(_3a1.expandEast).add(_3a1.expandWest).panel("resize",{height:hh}); +return {resizeC:{height:hh},expand:{top:cc.height()-_3ac},expandP:{top:cc.height()-_3a9,left:0,width:cc.width(),height:_3a9},collapse:{top:cc.height(),width:cc.width()}}; +} +} +} +} +}; +}; +function _3ad(_3ae,_3af){ +var _3b0=$.data(_3ae,"layout").panels; +var p=_3b0[_3af]; +var _3b1=p.panel("options"); +if(_3b1.onBeforeExpand.call(p)==false){ +return; +} +var _3b2="expand"+_3af.substring(0,1).toUpperCase()+_3af.substring(1); +if(_3b0[_3b2]){ +_3b0[_3b2].panel("close"); +p.panel("panel").stop(true,true); +p.panel("expand",false).panel("open"); +var _3b3=_3b4(); +p.panel("resize",_3b3.collapse); +p.panel("panel").animate(_3b3.expand,function(){ +_37e(_3ae); +}); +} +function _3b4(){ +var cc=$(_3ae); +var _3b5=_3b0.center.panel("options"); +if(_3af=="east"&&_3b0.expandEast){ +return {collapse:{left:cc.width(),top:_3b5.top,height:_3b5.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}}; +}else{ +if(_3af=="west"&&_3b0.expandWest){ +return {collapse:{left:-p.panel("panel")._outerWidth(),top:_3b5.top,height:_3b5.height},expand:{left:0}}; +}else{ +if(_3af=="north"&&_3b0.expandNorth){ +return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}}; +}else{ +if(_3af=="south"&&_3b0.expandSouth){ +return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}}; +} +} +} +} +}; +}; +function _384(pp){ +if(!pp){ +return false; +} +if(pp.length){ +return pp.panel("panel").is(":visible"); +}else{ +return false; +} +}; +function _3b6(_3b7){ +var _3b8=$.data(_3b7,"layout").panels; +if(_3b8.east.length&&_3b8.east.panel("options").collapsed){ +_39d(_3b7,"east",0); +} +if(_3b8.west.length&&_3b8.west.panel("options").collapsed){ +_39d(_3b7,"west",0); +} +if(_3b8.north.length&&_3b8.north.panel("options").collapsed){ +_39d(_3b7,"north",0); +} +if(_3b8.south.length&&_3b8.south.panel("options").collapsed){ +_39d(_3b7,"south",0); +} +}; +$.fn.layout=function(_3b9,_3ba){ +if(typeof _3b9=="string"){ +return $.fn.layout.methods[_3b9](this,_3ba); +} +_3b9=_3b9||{}; +return this.each(function(){ +var _3bb=$.data(this,"layout"); +if(_3bb){ +$.extend(_3bb.options,_3b9); +}else{ +var opts=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_3b9); +$.data(this,"layout",{options:opts,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); +init(this); +} +_37e(this); +_3b6(this); +}); +}; +$.fn.layout.methods={options:function(jq){ +return $.data(jq[0],"layout").options; +},resize:function(jq,_3bc){ +return jq.each(function(){ +_37e(this,_3bc); +}); +},panel:function(jq,_3bd){ +return $.data(jq[0],"layout").panels[_3bd]; +},collapse:function(jq,_3be){ +return jq.each(function(){ +_39d(this,_3be); +}); +},expand:function(jq,_3bf){ +return jq.each(function(){ +_3ad(this,_3bf); +}); +},add:function(jq,_3c0){ +return jq.each(function(){ +_38b(this,_3c0); +_37e(this); +if($(this).layout("panel",_3c0.region).panel("options").collapsed){ +_39d(this,_3c0.region,0); +} +}); +},remove:function(jq,_3c1){ +return jq.each(function(){ +_398(this,_3c1); +_37e(this); +}); +}}; +$.fn.layout.parseOptions=function(_3c2){ +return $.extend({},$.parser.parseOptions(_3c2,[{fit:"boolean"}])); +}; +$.fn.layout.defaults={fit:false}; +$.fn.layout.parsePanelOptions=function(_3c3){ +var t=$(_3c3); +return $.extend({},$.fn.panel.parseOptions(_3c3),$.parser.parseOptions(_3c3,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); +}; +$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapsedSize:28,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); +})(jQuery); +(function($){ +function init(_3c4){ +$(_3c4).appendTo("body"); +$(_3c4).addClass("menu-top"); +$(document).unbind(".menu").bind("mousedown.menu",function(e){ +var m=$(e.target).closest("div.menu,div.combo-p"); +if(m.length){ +return; +} +$("body>div.menu-top:visible").menu("hide"); +}); +var _3c5=_3c6($(_3c4)); +for(var i=0;i<_3c5.length;i++){ +_3c7(_3c5[i]); +} +function _3c6(menu){ +var _3c8=[]; +menu.addClass("menu"); +_3c8.push(menu); +if(!menu.hasClass("menu-content")){ +menu.children("div").each(function(){ +var _3c9=$(this).children("div"); +if(_3c9.length){ +_3c9.insertAfter(_3c4); +this.submenu=_3c9; +var mm=_3c6(_3c9); +_3c8=_3c8.concat(mm); +} +}); +} +return _3c8; +}; +function _3c7(menu){ +var wh=$.parser.parseOptions(menu[0],["width","height"]); +menu[0].originalHeight=wh.height||0; +if(menu.hasClass("menu-content")){ +menu[0].originalWidth=wh.width||menu._outerWidth(); +}else{ +menu[0].originalWidth=wh.width||0; +menu.children("div").each(function(){ +var item=$(this); +var _3ca=$.extend({},$.parser.parseOptions(this,["name","iconCls","href",{separator:"boolean"}]),{disabled:(item.attr("disabled")?true:undefined)}); +if(_3ca.separator){ +item.addClass("menu-sep"); +} +if(!item.hasClass("menu-sep")){ +item[0].itemName=_3ca.name||""; +item[0].itemHref=_3ca.href||""; +var text=item.addClass("menu-item").html(); +item.empty().append($("
          ").html(text)); +if(_3ca.iconCls){ +$("
          ").addClass(_3ca.iconCls).appendTo(item); +} +if(_3ca.disabled){ +_3cb(_3c4,item[0],true); +} +if(item[0].submenu){ +$("
          ").appendTo(item); +} +_3cc(_3c4,item); +} +}); +$("
          ").prependTo(menu); +} +_3cd(_3c4,menu); +menu.hide(); +_3ce(_3c4,menu); +}; +}; +function _3cd(_3cf,menu){ +var opts=$.data(_3cf,"menu").options; +var _3d0=menu.attr("style")||""; +menu.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); +var el=menu[0]; +var _3d1=el.originalWidth||0; +if(!_3d1){ +_3d1=0; +menu.find("div.menu-text").each(function(){ +if(_3d1<$(this)._outerWidth()){ +_3d1=$(this)._outerWidth(); +} +$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); +}); +_3d1+=40; +} +_3d1=Math.max(_3d1,opts.minWidth); +var _3d2=el.originalHeight||0; +if(!_3d2){ +_3d2=menu.outerHeight(); +if(menu.hasClass("menu-top")&&opts.alignTo){ +var at=$(opts.alignTo); +var h1=at.offset().top-$(document).scrollTop(); +var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight(); +_3d2=Math.min(_3d2,Math.max(h1,h2)); +}else{ +if(_3d2>$(window)._outerHeight()){ +_3d2=$(window).height(); +_3d0+=";overflow:auto"; +}else{ +_3d0+=";overflow:hidden"; +} +} +} +var _3d3=Math.max(el.originalHeight,menu.outerHeight())-2; +menu._outerWidth(_3d1)._outerHeight(_3d2); +menu.children("div.menu-line")._outerHeight(_3d3); +_3d0+=";width:"+el.style.width+";height:"+el.style.height; +menu.attr("style",_3d0); +}; +function _3ce(_3d4,menu){ +var _3d5=$.data(_3d4,"menu"); +menu.unbind(".menu").bind("mouseenter.menu",function(){ +if(_3d5.timer){ +clearTimeout(_3d5.timer); +_3d5.timer=null; +} +}).bind("mouseleave.menu",function(){ +if(_3d5.options.hideOnUnhover){ +_3d5.timer=setTimeout(function(){ +_3d6(_3d4); +},_3d5.options.duration); +} +}); +}; +function _3cc(_3d7,item){ +if(!item.hasClass("menu-item")){ +return; +} +item.unbind(".menu"); +item.bind("click.menu",function(){ +if($(this).hasClass("menu-item-disabled")){ +return; +} +if(!this.submenu){ +_3d6(_3d7); +var href=this.itemHref; +if(href){ +location.href=href; +} +} +var item=$(_3d7).menu("getItem",this); +$.data(_3d7,"menu").options.onClick.call(_3d7,item); +}).bind("mouseenter.menu",function(e){ +item.siblings().each(function(){ +if(this.submenu){ +_3da(this.submenu); +} +$(this).removeClass("menu-active"); +}); +item.addClass("menu-active"); +if($(this).hasClass("menu-item-disabled")){ +item.addClass("menu-active-disabled"); +return; +} +var _3d8=item[0].submenu; +if(_3d8){ +$(_3d7).menu("show",{menu:_3d8,parent:item}); +} +}).bind("mouseleave.menu",function(e){ +item.removeClass("menu-active menu-active-disabled"); +var _3d9=item[0].submenu; +if(_3d9){ +if(e.pageX>=parseInt(_3d9.css("left"))){ +item.addClass("menu-active"); +}else{ +_3da(_3d9); +} +}else{ +item.removeClass("menu-active"); +} +}); +}; +function _3d6(_3db){ +var _3dc=$.data(_3db,"menu"); +if(_3dc){ +if($(_3db).is(":visible")){ +_3da($(_3db)); +_3dc.options.onHide.call(_3db); +} +} +return false; +}; +function _3dd(_3de,_3df){ +var left,top; +_3df=_3df||{}; +var menu=$(_3df.menu||_3de); +$(_3de).menu("resize",menu[0]); +if(menu.hasClass("menu-top")){ +var opts=$.data(_3de,"menu").options; +$.extend(opts,_3df); +left=opts.left; +top=opts.top; +if(opts.alignTo){ +var at=$(opts.alignTo); +left=at.offset().left; +top=at.offset().top+at._outerHeight(); +if(opts.align=="right"){ +left+=at.outerWidth()-menu.outerWidth(); +} +} +if(left+menu.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-menu.outerWidth()-5; +} +if(left<0){ +left=0; +} +top=_3e0(top,opts.alignTo); +}else{ +var _3e1=_3df.parent; +left=_3e1.offset().left+_3e1.outerWidth()-2; +if(left+menu.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ +left=_3e1.offset().left-menu.outerWidth()+2; +} +top=_3e0(_3e1.offset().top-3); +} +function _3e0(top,_3e2){ +if(top+menu.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +if(_3e2){ +top=$(_3e2).offset().top-menu._outerHeight(); +}else{ +top=$(window)._outerHeight()+$(document).scrollTop()-menu.outerHeight(); +} +} +if(top<0){ +top=0; +} +return top; +}; +menu.css({left:left,top:top}); +menu.show(0,function(){ +if(!menu[0].shadow){ +menu[0].shadow=$("
          ").insertAfter(menu); +} +menu[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:menu.css("left"),top:menu.css("top"),width:menu.outerWidth(),height:menu.outerHeight()}); +menu.css("z-index",$.fn.menu.defaults.zIndex++); +if(menu.hasClass("menu-top")){ +$.data(menu[0],"menu").options.onShow.call(menu[0]); +} +}); +}; +function _3da(menu){ +if(!menu){ +return; +} +_3e3(menu); +menu.find("div.menu-item").each(function(){ +if(this.submenu){ +_3da(this.submenu); +} +$(this).removeClass("menu-active"); +}); +function _3e3(m){ +m.stop(true,true); +if(m[0].shadow){ +m[0].shadow.hide(); +} +m.hide(); +}; +}; +function _3e4(_3e5,text){ +var _3e6=null; +var tmp=$("
          "); +function find(menu){ +menu.children("div.menu-item").each(function(){ +var item=$(_3e5).menu("getItem",this); +var s=tmp.empty().html(item.text).text(); +if(text==$.trim(s)){ +_3e6=item; +}else{ +if(this.submenu&&!_3e6){ +find(this.submenu); +} +} +}); +}; +find($(_3e5)); +tmp.remove(); +return _3e6; +}; +function _3cb(_3e7,_3e8,_3e9){ +var t=$(_3e8); +if(!t.hasClass("menu-item")){ +return; +} +if(_3e9){ +t.addClass("menu-item-disabled"); +if(_3e8.onclick){ +_3e8.onclick1=_3e8.onclick; +_3e8.onclick=null; +} +}else{ +t.removeClass("menu-item-disabled"); +if(_3e8.onclick1){ +_3e8.onclick=_3e8.onclick1; +_3e8.onclick1=null; +} +} +}; +function _3ea(_3eb,_3ec){ +var menu=$(_3eb); +if(_3ec.parent){ +if(!_3ec.parent.submenu){ +var _3ed=$("
          ").appendTo("body"); +_3ed.hide(); +_3ec.parent.submenu=_3ed; +$("
          ").appendTo(_3ec.parent); +} +menu=_3ec.parent.submenu; +} +if(_3ec.separator){ +var item=$("
          ").appendTo(menu); +}else{ +var item=$("
          ").appendTo(menu); +$("
          ").html(_3ec.text).appendTo(item); +} +if(_3ec.iconCls){ +$("
          ").addClass(_3ec.iconCls).appendTo(item); +} +if(_3ec.id){ +item.attr("id",_3ec.id); +} +if(_3ec.name){ +item[0].itemName=_3ec.name; +} +if(_3ec.href){ +item[0].itemHref=_3ec.href; +} +if(_3ec.onclick){ +if(typeof _3ec.onclick=="string"){ +item.attr("onclick",_3ec.onclick); +}else{ +item[0].onclick=eval(_3ec.onclick); +} +} +if(_3ec.handler){ +item[0].onclick=eval(_3ec.handler); +} +if(_3ec.disabled){ +_3cb(_3eb,item[0],true); +} +_3cc(_3eb,item); +_3ce(_3eb,menu); +_3cd(_3eb,menu); +}; +function _3ee(_3ef,_3f0){ +function _3f1(el){ +if(el.submenu){ +el.submenu.children("div.menu-item").each(function(){ +_3f1(this); +}); +var _3f2=el.submenu[0].shadow; +if(_3f2){ +_3f2.remove(); +} +el.submenu.remove(); +} +$(el).remove(); +}; +var menu=$(_3f0).parent(); +_3f1(_3f0); +_3cd(_3ef,menu); +}; +function _3f3(_3f4,_3f5,_3f6){ +var menu=$(_3f5).parent(); +if(_3f6){ +$(_3f5).show(); +}else{ +$(_3f5).hide(); +} +_3cd(_3f4,menu); +}; +function _3f7(_3f8){ +$(_3f8).children("div.menu-item").each(function(){ +_3ee(_3f8,this); +}); +if(_3f8.shadow){ +_3f8.shadow.remove(); +} +$(_3f8).remove(); +}; +$.fn.menu=function(_3f9,_3fa){ +if(typeof _3f9=="string"){ +return $.fn.menu.methods[_3f9](this,_3fa); +} +_3f9=_3f9||{}; +return this.each(function(){ +var _3fb=$.data(this,"menu"); +if(_3fb){ +$.extend(_3fb.options,_3f9); +}else{ +_3fb=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_3f9)}); +init(this); +} +$(this).css({left:_3fb.options.left,top:_3fb.options.top}); +}); +}; +$.fn.menu.methods={options:function(jq){ +return $.data(jq[0],"menu").options; +},show:function(jq,pos){ +return jq.each(function(){ +_3dd(this,pos); +}); +},hide:function(jq){ +return jq.each(function(){ +_3d6(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_3f7(this); +}); +},setText:function(jq,_3fc){ +return jq.each(function(){ +$(_3fc.target).children("div.menu-text").html(_3fc.text); +}); +},setIcon:function(jq,_3fd){ +return jq.each(function(){ +$(_3fd.target).children("div.menu-icon").remove(); +if(_3fd.iconCls){ +$("
          ").addClass(_3fd.iconCls).appendTo(_3fd.target); +} +}); +},getItem:function(jq,_3fe){ +var t=$(_3fe); +var item={target:_3fe,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_3fe.itemName,href:_3fe.itemHref,onclick:_3fe.onclick}; +var icon=t.children("div.menu-icon"); +if(icon.length){ +var cc=[]; +var aa=icon.attr("class").split(" "); +for(var i=0;i").addClass(opts.cls.arrow).appendTo(_408); +$("").addClass("m-btn-line").appendTo(_408); +if(opts.menu){ +$(opts.menu).menu({duration:opts.duration}); +var _409=$(opts.menu).menu("options"); +var _40a=_409.onShow; +var _40b=_409.onHide; +$.extend(_409,{onShow:function(){ +var _40c=$(this).menu("options"); +var btn=$(_40c.alignTo); +var opts=btn.menubutton("options"); +btn.addClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_40a.call(this); +},onHide:function(){ +var _40d=$(this).menu("options"); +var btn=$(_40d.alignTo); +var opts=btn.menubutton("options"); +btn.removeClass((opts.plain==true)?opts.cls.btn2:opts.cls.btn1); +_40b.call(this); +}}); +} +}; +function _40e(_40f){ +var opts=$.data(_40f,"menubutton").options; +var btn=$(_40f); +var t=btn.find("."+opts.cls.trigger); +if(!t.length){ +t=btn; +} +t.unbind(".menubutton"); +var _410=null; +t.bind("click.menubutton",function(){ +if(!_411()){ +_412(_40f); +return false; +} +}).bind("mouseenter.menubutton",function(){ +if(!_411()){ +_410=setTimeout(function(){ +_412(_40f); +},opts.duration); +return false; +} +}).bind("mouseleave.menubutton",function(){ +if(_410){ +clearTimeout(_410); +} +$(opts.menu).triggerHandler("mouseleave"); +}); +function _411(){ +return $(_40f).linkbutton("options").disabled; +}; +}; +function _412(_413){ +var opts=$(_413).menubutton("options"); +if(opts.disabled||!opts.menu){ +return; +} +$("body>div.menu-top").menu("hide"); +var btn=$(_413); +var mm=$(opts.menu); +if(mm.length){ +mm.menu("options").alignTo=btn; +mm.menu("show",{alignTo:btn,align:opts.menuAlign}); +} +btn.blur(); +}; +$.fn.menubutton=function(_414,_415){ +if(typeof _414=="string"){ +var _416=$.fn.menubutton.methods[_414]; +if(_416){ +return _416(this,_415); +}else{ +return this.linkbutton(_414,_415); +} +} +_414=_414||{}; +return this.each(function(){ +var _417=$.data(this,"menubutton"); +if(_417){ +$.extend(_417.options,_414); +}else{ +$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_414)}); +$(this).removeAttr("disabled"); +} +init(this); +_40e(this); +}); +}; +$.fn.menubutton.methods={options:function(jq){ +var _418=jq.linkbutton("options"); +return $.extend($.data(jq[0],"menubutton").options,{toggle:_418.toggle,selected:_418.selected,disabled:_418.disabled}); +},destroy:function(jq){ +return jq.each(function(){ +var opts=$(this).menubutton("options"); +if(opts.menu){ +$(opts.menu).menu("destroy"); +} +$(this).remove(); +}); +}}; +$.fn.menubutton.parseOptions=function(_419){ +var t=$(_419); +return $.extend({},$.fn.linkbutton.parseOptions(_419),$.parser.parseOptions(_419,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); +})(jQuery); +(function($){ +function init(_41a){ +var opts=$.data(_41a,"splitbutton").options; +$(_41a).menubutton(opts); +$(_41a).addClass("s-btn"); +}; +$.fn.splitbutton=function(_41b,_41c){ +if(typeof _41b=="string"){ +var _41d=$.fn.splitbutton.methods[_41b]; +if(_41d){ +return _41d(this,_41c); +}else{ +return this.menubutton(_41b,_41c); +} +} +_41b=_41b||{}; +return this.each(function(){ +var _41e=$.data(this,"splitbutton"); +if(_41e){ +$.extend(_41e.options,_41b); +}else{ +$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_41b)}); +$(this).removeAttr("disabled"); +} +init(this); +}); +}; +$.fn.splitbutton.methods={options:function(jq){ +var _41f=jq.menubutton("options"); +var _420=$.data(jq[0],"splitbutton").options; +$.extend(_420,{disabled:_41f.disabled,toggle:_41f.toggle,selected:_41f.selected}); +return _420; +}}; +$.fn.splitbutton.parseOptions=function(_421){ +var t=$(_421); +return $.extend({},$.fn.linkbutton.parseOptions(_421),$.parser.parseOptions(_421,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active s-btn-active",btn2:"m-btn-plain-active s-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn-line"}}); +})(jQuery); +(function($){ +function init(_422){ +$(_422).addClass("validatebox-text"); +}; +function _423(_424){ +var _425=$.data(_424,"validatebox"); +_425.validating=false; +if(_425.timer){ +clearTimeout(_425.timer); +} +$(_424).tooltip("destroy"); +$(_424).unbind(); +$(_424).remove(); +}; +function _426(_427){ +var opts=$.data(_427,"validatebox").options; +var box=$(_427); +box.unbind(".validatebox"); +if(opts.novalidate||box.is(":disabled")){ +return; +} +for(var _428 in opts.events){ +$(_427).bind(_428+".validatebox",{target:_427},opts.events[_428]); +} +}; +function _429(e){ +var _42a=e.data.target; +var _42b=$.data(_42a,"validatebox"); +var box=$(_42a); +if($(_42a).attr("readonly")){ +return; +} +_42b.validating=true; +_42b.value=undefined; +(function(){ +if(_42b.validating){ +if(_42b.value!=box.val()){ +_42b.value=box.val(); +if(_42b.timer){ +clearTimeout(_42b.timer); +} +_42b.timer=setTimeout(function(){ +$(_42a).validatebox("validate"); +},_42b.options.delay); +}else{ +_42c(_42a); +} +setTimeout(arguments.callee,200); +} +})(); +}; +function _42d(e){ +var _42e=e.data.target; +var _42f=$.data(_42e,"validatebox"); +if(_42f.timer){ +clearTimeout(_42f.timer); +_42f.timer=undefined; +} +_42f.validating=false; +_430(_42e); +}; +function _431(e){ +var _432=e.data.target; +if($(_432).hasClass("validatebox-invalid")){ +_433(_432); +} +}; +function _434(e){ +var _435=e.data.target; +var _436=$.data(_435,"validatebox"); +if(!_436.validating){ +_430(_435); +} +}; +function _433(_437){ +var _438=$.data(_437,"validatebox"); +var opts=_438.options; +$(_437).tooltip($.extend({},opts.tipOptions,{content:_438.message,position:opts.tipPosition,deltaX:opts.deltaX})).tooltip("show"); +_438.tip=true; +}; +function _42c(_439){ +var _43a=$.data(_439,"validatebox"); +if(_43a&&_43a.tip){ +$(_439).tooltip("reposition"); +} +}; +function _430(_43b){ +var _43c=$.data(_43b,"validatebox"); +_43c.tip=false; +$(_43b).tooltip("hide"); +}; +function _43d(_43e){ +var _43f=$.data(_43e,"validatebox"); +var opts=_43f.options; +var box=$(_43e); +opts.onBeforeValidate.call(_43e); +var _440=_441(); +opts.onValidate.call(_43e,_440); +return _440; +function _442(msg){ +_43f.message=msg; +}; +function _443(_444,_445){ +var _446=box.val(); +var _447=/([a-zA-Z_]+)(.*)/.exec(_444); +var rule=opts.rules[_447[1]]; +if(rule&&_446){ +var _448=_445||opts.validParams||eval(_447[2]); +if(!rule["validator"].call(_43e,_446,_448)){ +box.addClass("validatebox-invalid"); +var _449=rule["message"]; +if(_448){ +for(var i=0;i<_448.length;i++){ +_449=_449.replace(new RegExp("\\{"+i+"\\}","g"),_448[i]); +} +} +_442(opts.invalidMessage||_449); +if(_43f.validating){ +_433(_43e); +} +return false; +} +} +return true; +}; +function _441(){ +box.removeClass("validatebox-invalid"); +_430(_43e); +if(opts.novalidate||box.is(":disabled")){ +return true; +} +if(opts.required){ +if(box.val()==""){ +box.addClass("validatebox-invalid"); +_442(opts.missingMessage); +if(_43f.validating){ +_433(_43e); +} +return false; +} +} +if(opts.validType){ +if($.isArray(opts.validType)){ +for(var i=0;i=_456[0]&&len<=_456[1]; +},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_457,_458){ +var data={}; +data[_458[1]]=_457; +var _459=$.ajax({url:_458[0],dataType:"json",data:data,async:false,cache:false,type:"post"}).responseText; +return _459=="true"; +},message:"Please fix this field."}},onBeforeValidate:function(){ +},onValidate:function(_45a){ +}}; +})(jQuery); +(function($){ +function init(_45b){ +$(_45b).addClass("textbox-f").hide(); +var span=$(""+""+""+"").insertAfter(_45b); +var name=$(_45b).attr("name"); +if(name){ +span.find("input.textbox-value").attr("name",name); +$(_45b).removeAttr("name").attr("textboxName",name); +} +return span; +}; +function _45c(_45d){ +var _45e=$.data(_45d,"textbox"); +var opts=_45e.options; +var tb=_45e.textbox; +tb.find(".textbox-text").remove(); +if(opts.multiline){ +$("").prependTo(tb); +}else{ +$("").prependTo(tb); +} +tb.find(".textbox-addon").remove(); +var bb=opts.icons?$.extend(true,[],opts.icons):[]; +if(opts.iconCls){ +bb.push({iconCls:opts.iconCls,disabled:true}); +} +if(bb.length){ +var bc=$("").prependTo(tb); +bc.addClass("textbox-addon-"+opts.iconAlign); +for(var i=0;i"); +} +} +tb.find(".textbox-button").remove(); +if(opts.buttonText||opts.buttonIcon){ +var btn=$("").prependTo(tb); +btn.addClass("textbox-button-"+opts.buttonAlign).linkbutton({text:opts.buttonText,iconCls:opts.buttonIcon}); +} +_45f(_45d,opts.disabled); +_460(_45d,opts.readonly); +}; +function _461(_462){ +var tb=$.data(_462,"textbox").textbox; +tb.find(".textbox-text").validatebox("destroy"); +tb.remove(); +$(_462).remove(); +}; +function _463(_464,_465){ +var _466=$.data(_464,"textbox"); +var opts=_466.options; +var tb=_466.textbox; +var _467=tb.parent(); +if(_465){ +opts.width=_465; +} +if(isNaN(parseInt(opts.width))){ +var c=$(_464).clone(); +c.css("visibility","hidden"); +c.insertAfter(_464); +opts.width=c.outerWidth(); +c.remove(); +} +tb.appendTo("body"); +var _468=tb.find(".textbox-text"); +var btn=tb.find(".textbox-button"); +var _469=tb.find(".textbox-addon"); +var _46a=_469.find(".textbox-icon"); +tb._size(opts,_467); +btn.linkbutton("resize",{height:tb.height()}); +btn.css({left:(opts.buttonAlign=="left"?0:""),right:(opts.buttonAlign=="right"?0:"")}); +_469.css({left:(opts.iconAlign=="left"?(opts.buttonAlign=="left"?btn._outerWidth():0):""),right:(opts.iconAlign=="right"?(opts.buttonAlign=="right"?btn._outerWidth():0):"")}); +_46a.css({width:opts.iconWidth+"px",height:tb.height()+"px"}); +_468.css({paddingLeft:(_464.style.paddingLeft||""),paddingRight:(_464.style.paddingRight||""),marginLeft:_46b("left"),marginRight:_46b("right")}); +if(opts.multiline){ +_468.css({paddingTop:(_464.style.paddingTop||""),paddingBottom:(_464.style.paddingBottom||"")}); +_468._outerHeight(tb.height()); +}else{ +var _46c=Math.floor((tb.height()-_468.height())/2); +_468.css({paddingTop:_46c+"px",paddingBottom:_46c+"px"}); +} +_468._outerWidth(tb.width()-_46a.length*opts.iconWidth-btn._outerWidth()); +tb.insertAfter(_464); +opts.onResize.call(_464,opts.width,opts.height); +function _46b(_46d){ +return (opts.iconAlign==_46d?_469._outerWidth():0)+(opts.buttonAlign==_46d?btn._outerWidth():0); +}; +}; +function _46e(_46f){ +var opts=$(_46f).textbox("options"); +var _470=$(_46f).textbox("textbox"); +_470.validatebox($.extend({},opts,{deltaX:$(_46f).textbox("getTipX"),onBeforeValidate:function(){ +var box=$(this); +if(!box.is(":focus")){ +opts.oldInputValue=box.val(); +box.val(opts.value); +} +},onValidate:function(_471){ +var box=$(this); +if(opts.oldInputValue!=undefined){ +box.val(opts.oldInputValue); +opts.oldInputValue=undefined; +} +var tb=box.parent(); +if(_471){ +tb.removeClass("textbox-invalid"); +}else{ +tb.addClass("textbox-invalid"); +} +}})); +}; +function _472(_473){ +var _474=$.data(_473,"textbox"); +var opts=_474.options; +var tb=_474.textbox; +var _475=tb.find(".textbox-text"); +_475.attr("placeholder",opts.prompt); +_475.unbind(".textbox"); +if(!opts.disabled&&!opts.readonly){ +_475.bind("blur.textbox",function(e){ +if(!tb.hasClass("textbox-focused")){ +return; +} +opts.value=$(this).val(); +if(opts.value==""){ +$(this).val(opts.prompt).addClass("textbox-prompt"); +}else{ +$(this).removeClass("textbox-prompt"); +} +tb.removeClass("textbox-focused"); +}).bind("focus.textbox",function(e){ +if(tb.hasClass("textbox-focused")){ +return; +} +if($(this).val()!=opts.value){ +$(this).val(opts.value); +} +$(this).removeClass("textbox-prompt"); +tb.addClass("textbox-focused"); +}); +for(var _476 in opts.inputEvents){ +_475.bind(_476+".textbox",{target:_473},opts.inputEvents[_476]); +} +} +var _477=tb.find(".textbox-addon"); +_477.unbind().bind("click",{target:_473},function(e){ +var icon=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)"); +if(icon.length){ +var _478=parseInt(icon.attr("icon-index")); +var conf=opts.icons[_478]; +if(conf&&conf.handler){ +conf.handler.call(icon[0],e); +opts.onClickIcon.call(_473,_478); +} +} +}); +_477.find(".textbox-icon").each(function(_479){ +var conf=opts.icons[_479]; +var icon=$(this); +if(!conf||conf.disabled||opts.disabled||opts.readonly){ +icon.addClass("textbox-icon-disabled"); +}else{ +icon.removeClass("textbox-icon-disabled"); +} +}); +var btn=tb.find(".textbox-button"); +btn.unbind(".textbox").bind("click.textbox",function(){ +if(!btn.linkbutton("options").disabled){ +opts.onClickButton.call(_473); +} +}); +btn.linkbutton((opts.disabled||opts.readonly)?"disable":"enable"); +tb.unbind(".textbox").bind("_resize.textbox",function(e,_47a){ +if($(this).hasClass("easyui-fluid")||_47a){ +_463(_473); +} +return false; +}); +}; +function _45f(_47b,_47c){ +var _47d=$.data(_47b,"textbox"); +var opts=_47d.options; +var tb=_47d.textbox; +if(_47c){ +opts.disabled=true; +$(_47b).attr("disabled","disabled"); +tb.find(".textbox-text,.textbox-value").attr("disabled","disabled"); +}else{ +opts.disabled=false; +$(_47b).removeAttr("disabled"); +tb.find(".textbox-text,.textbox-value").removeAttr("disabled"); +} +}; +function _460(_47e,mode){ +var _47f=$.data(_47e,"textbox"); +var opts=_47f.options; +opts.readonly=mode==undefined?true:mode; +var _480=_47f.textbox.find(".textbox-text"); +_480.removeAttr("readonly").removeClass("textbox-text-readonly"); +if(opts.readonly||!opts.editable){ +_480.attr("readonly","readonly").addClass("textbox-text-readonly"); +} +}; +$.fn.textbox=function(_481,_482){ +if(typeof _481=="string"){ +var _483=$.fn.textbox.methods[_481]; +if(_483){ +return _483(this,_482); +}else{ +return this.each(function(){ +var _484=$(this).textbox("textbox"); +_484.validatebox(_481,_482); +}); +} +} +_481=_481||{}; +return this.each(function(){ +var _485=$.data(this,"textbox"); +if(_485){ +$.extend(_485.options,_481); +if(_481.value!=undefined){ +_485.options.originalValue=_481.value; +} +}else{ +_485=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_481),textbox:init(this)}); +_485.options.originalValue=_485.options.value; +} +_45c(this); +_472(this); +_463(this); +_46e(this); +$(this).textbox("initValue",_485.options.value); +}); +}; +$.fn.textbox.methods={options:function(jq){ +return $.data(jq[0],"textbox").options; +},cloneFrom:function(jq,from){ +return jq.each(function(){ +var t=$(this); +if(t.data("textbox")){ +return; +} +if(!$(from).data("textbox")){ +$(from).textbox(); +} +var name=t.attr("name")||""; +t.addClass("textbox-f").hide(); +t.removeAttr("name").attr("textboxName",name); +var span=$(from).next().clone().insertAfter(t); +span.find("input.textbox-value").attr("name",name); +$.data(this,"textbox",{options:$.extend(true,{},$(from).textbox("options")),textbox:span}); +var _486=$(from).textbox("button"); +if(_486.length){ +t.textbox("button").linkbutton($.extend(true,{},_486.linkbutton("options"))); +} +_472(this); +_46e(this); +}); +},textbox:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-text"); +},button:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-button"); +},destroy:function(jq){ +return jq.each(function(){ +_461(this); +}); +},resize:function(jq,_487){ +return jq.each(function(){ +_463(this,_487); +}); +},disable:function(jq){ +return jq.each(function(){ +_45f(this,true); +_472(this); +}); +},enable:function(jq){ +return jq.each(function(){ +_45f(this,false); +_472(this); +}); +},readonly:function(jq,mode){ +return jq.each(function(){ +_460(this,mode); +_472(this); +}); +},isValid:function(jq){ +return jq.textbox("textbox").validatebox("isValid"); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setValue",""); +}); +},setText:function(jq,_488){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +var _489=$(this).textbox("textbox"); +if($(this).textbox("getText")!=_488){ +opts.value=_488; +_489.val(_488); +} +if(!_489.is(":focus")){ +if(_488){ +_489.removeClass("textbox-prompt"); +}else{ +_489.val(opts.prompt).addClass("textbox-prompt"); +} +} +$(this).textbox("validate"); +}); +},initValue:function(jq,_48a){ +return jq.each(function(){ +var _48b=$.data(this,"textbox"); +_48b.options.value=""; +$(this).textbox("setText",_48a); +_48b.textbox.find(".textbox-value").val(_48a); +$(this).val(_48a); +}); +},setValue:function(jq,_48c){ +return jq.each(function(){ +var opts=$.data(this,"textbox").options; +var _48d=$(this).textbox("getValue"); +$(this).textbox("initValue",_48c); +if(_48d!=_48c){ +opts.onChange.call(this,_48c,_48d); +} +}); +},getText:function(jq){ +var _48e=jq.textbox("textbox"); +if(_48e.is(":focus")){ +return _48e.val(); +}else{ +return jq.textbox("options").value; +} +},getValue:function(jq){ +return jq.data("textbox").textbox.find(".textbox-value").val(); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).textbox("options"); +$(this).textbox("setValue",opts.originalValue); +}); +},getIcon:function(jq,_48f){ +return jq.data("textbox").textbox.find(".textbox-icon:eq("+_48f+")"); +},getTipX:function(jq){ +var _490=jq.data("textbox"); +var opts=_490.options; +var tb=_490.textbox; +var _491=tb.find(".textbox-text"); +var _492=tb.find(".textbox-addon")._outerWidth(); +var _493=tb.find(".textbox-button")._outerWidth(); +if(opts.tipPosition=="right"){ +return (opts.iconAlign=="right"?_492:0)+(opts.buttonAlign=="right"?_493:0)+1; +}else{ +if(opts.tipPosition=="left"){ +return (opts.iconAlign=="left"?-_492:0)+(opts.buttonAlign=="left"?-_493:0)-1; +}else{ +return _492/2*(opts.iconAlign=="right"?1:-1); +} +} +}}; +$.fn.textbox.parseOptions=function(_494){ +var t=$(_494); +return $.extend({},$.fn.validatebox.parseOptions(_494),$.parser.parseOptions(_494,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign",{multiline:"boolean",editable:"boolean",iconWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)}); +}; +$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,prompt:"",value:"",type:"text",multiline:false,editable:true,disabled:false,readonly:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",inputEvents:{blur:function(e){ +var t=$(e.data.target); +var opts=t.textbox("options"); +t.textbox("setValue",opts.value); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.textbox("setValue",t.textbox("getText")); +} +}},onChange:function(_495,_496){ +},onResize:function(_497,_498){ +},onClickButton:function(){ +},onClickIcon:function(_499){ +}}); +})(jQuery); +(function($){ +var _49a=0; +function _49b(_49c){ +var _49d=$.data(_49c,"filebox"); +var opts=_49d.options; +var id="filebox_file_id_"+(++_49a); +$(_49c).addClass("filebox-f").textbox($.extend({},opts,{buttonText:opts.buttonText?(""):""})); +$(_49c).textbox("textbox").attr("readonly","readonly"); +_49d.filebox=$(_49c).next().addClass("filebox"); +_49d.filebox.find(".textbox-value").remove(); +opts.oldValue=""; +var file=$("").appendTo(_49d.filebox); +file.attr("id",id).attr("name",$(_49c).attr("textboxName")||""); +file.change(function(){ +$(_49c).filebox("setText",this.value); +opts.onChange.call(_49c,this.value,opts.oldValue); +opts.oldValue=this.value; +}); +var btn=$(_49c).filebox("button"); +if(btn.length){ +if(btn.linkbutton("options").disabled){ +file.attr("disabled","disabled"); +}else{ +file.removeAttr("disabled"); +} +} +}; +$.fn.filebox=function(_49e,_49f){ +if(typeof _49e=="string"){ +var _4a0=$.fn.filebox.methods[_49e]; +if(_4a0){ +return _4a0(this,_49f); +}else{ +return this.textbox(_49e,_49f); +} +} +_49e=_49e||{}; +return this.each(function(){ +var _4a1=$.data(this,"filebox"); +if(_4a1){ +$.extend(_4a1.options,_49e); +}else{ +$.data(this,"filebox",{options:$.extend({},$.fn.filebox.defaults,$.fn.filebox.parseOptions(this),_49e)}); +} +_49b(this); +}); +}; +$.fn.filebox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"filebox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.filebox.parseOptions=function(_4a2){ +return $.extend({},$.fn.textbox.parseOptions(_4a2),{}); +}; +$.fn.filebox.defaults=$.extend({},$.fn.textbox.defaults,{buttonIcon:null,buttonText:"Choose File",buttonAlign:"right",inputEvents:{}}); +})(jQuery); +(function($){ +function _4a3(_4a4){ +var _4a5=$.data(_4a4,"searchbox"); +var opts=_4a5.options; +var _4a6=$.extend(true,[],opts.icons); +_4a6.push({iconCls:"searchbox-button",handler:function(e){ +var t=$(e.data.target); +var opts=t.searchbox("options"); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +}}); +_4a7(); +var _4a8=_4a9(); +$(_4a4).addClass("searchbox-f").textbox($.extend({},opts,{icons:_4a6,buttonText:(_4a8?_4a8.text:"")})); +$(_4a4).attr("searchboxName",$(_4a4).attr("textboxName")); +_4a5.searchbox=$(_4a4).next(); +_4a5.searchbox.addClass("searchbox"); +_4aa(_4a8); +function _4a7(){ +if(opts.menu){ +_4a5.menu=$(opts.menu).menu(); +var _4ab=_4a5.menu.menu("options"); +var _4ac=_4ab.onClick; +_4ab.onClick=function(item){ +_4aa(item); +_4ac.call(this,item); +}; +}else{ +if(_4a5.menu){ +_4a5.menu.menu("destroy"); +} +_4a5.menu=null; +} +}; +function _4a9(){ +if(_4a5.menu){ +var item=_4a5.menu.children("div.menu-item:first"); +_4a5.menu.children("div.menu-item").each(function(){ +var _4ad=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +if(_4ad.selected){ +item=$(this); +return false; +} +}); +return _4a5.menu.menu("getItem",item[0]); +}else{ +return null; +} +}; +function _4aa(item){ +if(!item){ +return; +} +$(_4a4).textbox("button").menubutton({text:item.text,iconCls:(item.iconCls||null),menu:_4a5.menu,menuAlign:opts.buttonAlign,plain:false}); +_4a5.searchbox.find("input.textbox-value").attr("name",item.name||item.text); +$(_4a4).searchbox("resize"); +}; +}; +$.fn.searchbox=function(_4ae,_4af){ +if(typeof _4ae=="string"){ +var _4b0=$.fn.searchbox.methods[_4ae]; +if(_4b0){ +return _4b0(this,_4af); +}else{ +return this.textbox(_4ae,_4af); +} +} +_4ae=_4ae||{}; +return this.each(function(){ +var _4b1=$.data(this,"searchbox"); +if(_4b1){ +$.extend(_4b1.options,_4ae); +}else{ +$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_4ae)}); +} +_4a3(this); +}); +}; +$.fn.searchbox.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"searchbox").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},menu:function(jq){ +return $.data(jq[0],"searchbox").menu; +},getName:function(jq){ +return $.data(jq[0],"searchbox").searchbox.find("input.textbox-value").attr("name"); +},selectName:function(jq,name){ +return jq.each(function(){ +var menu=$.data(this,"searchbox").menu; +if(menu){ +menu.children("div.menu-item").each(function(){ +var item=menu.menu("getItem",this); +if(item.name==name){ +$(this).triggerHandler("click"); +return false; +} +}); +} +}); +},destroy:function(jq){ +return jq.each(function(){ +var menu=$(this).searchbox("menu"); +if(menu){ +menu.menu("destroy"); +} +$(this).textbox("destroy"); +}); +}}; +$.fn.searchbox.parseOptions=function(_4b2){ +var t=$(_4b2); +return $.extend({},$.fn.textbox.parseOptions(_4b2),$.parser.parseOptions(_4b2,["menu"]),{searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); +}; +$.fn.searchbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:$.extend({},$.fn.textbox.defaults.inputEvents,{keydown:function(e){ +if(e.keyCode==13){ +e.preventDefault(); +var t=$(e.data.target); +var opts=t.searchbox("options"); +t.searchbox("setValue",$(this).val()); +opts.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +return false; +} +}}),buttonAlign:"left",menu:null,searcher:function(_4b3,name){ +}}); +})(jQuery); +(function($){ +function _4b4(_4b5,_4b6){ +var opts=$.data(_4b5,"form").options; +$.extend(opts,_4b6||{}); +var _4b7=$.extend({},opts.queryParams); +if(opts.onSubmit.call(_4b5,_4b7)==false){ +return; +} +$(_4b5).find(".textbox-text:focus").blur(); +var _4b8="easyui_frame_"+(new Date().getTime()); +var _4b9=$("").appendTo("body"); +_4b9.attr("src",window.ActiveXObject?"javascript:false":"about:blank"); +_4b9.css({position:"absolute",top:-1000,left:-1000}); +_4b9.bind("load",cb); +_4ba(_4b7); +function _4ba(_4bb){ +var form=$(_4b5); +if(opts.url){ +form.attr("action",opts.url); +} +var t=form.attr("target"),a=form.attr("action"); +form.attr("target",_4b8); +var _4bc=$(); +try{ +for(var n in _4bb){ +var _4bd=$("").val(_4bb[n]).appendTo(form); +_4bc=_4bc.add(_4bd); +} +_4be(); +form[0].submit(); +} +finally{ +form.attr("action",a); +t?form.attr("target",t):form.removeAttr("target"); +_4bc.remove(); +} +}; +function _4be(){ +var f=$("#"+_4b8); +if(!f.length){ +return; +} +try{ +var s=f.contents()[0].readyState; +if(s&&s.toLowerCase()=="uninitialized"){ +setTimeout(_4be,100); +} +} +catch(e){ +cb(); +} +}; +var _4bf=10; +function cb(){ +var f=$("#"+_4b8); +if(!f.length){ +return; +} +f.unbind(); +var data=""; +try{ +var body=f.contents().find("body"); +data=body.html(); +if(data==""){ +if(--_4bf){ +setTimeout(cb,100); +return; +} +} +var ta=body.find(">textarea"); +if(ta.length){ +data=ta.val(); +}else{ +var pre=body.find(">pre"); +if(pre.length){ +data=pre.html(); +} +} +} +catch(e){ +} +opts.success(data); +setTimeout(function(){ +f.unbind(); +f.remove(); +},100); +}; +}; +function load(_4c0,data){ +var opts=$.data(_4c0,"form").options; +if(typeof data=="string"){ +var _4c1={}; +if(opts.onBeforeLoad.call(_4c0,_4c1)==false){ +return; +} +$.ajax({url:data,data:_4c1,dataType:"json",success:function(data){ +_4c2(data); +},error:function(){ +opts.onLoadError.apply(_4c0,arguments); +}}); +}else{ +_4c2(data); +} +function _4c2(data){ +var form=$(_4c0); +for(var name in data){ +var val=data[name]; +var rr=_4c3(name,val); +if(!rr.length){ +var _4c4=_4c5(name,val); +if(!_4c4){ +$("input[name=\""+name+"\"]",form).val(val); +$("textarea[name=\""+name+"\"]",form).val(val); +$("select[name=\""+name+"\"]",form).val(val); +} +} +_4c6(name,val); +} +opts.onLoadSuccess.call(_4c0,data); +_4cd(_4c0); +}; +function _4c3(name,val){ +var rr=$(_4c0).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]"); +rr._propAttr("checked",false); +rr.each(function(){ +var f=$(this); +if(f.val()==String(val)||$.inArray(f.val(),$.isArray(val)?val:[val])>=0){ +f._propAttr("checked",true); +} +}); +return rr; +}; +function _4c5(name,val){ +var _4c7=0; +var pp=["textbox","numberbox","slider"]; +for(var i=0;i=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ +return true; +}else{ +if(e.ctrlKey==true&&(e.which==99||e.which==118)){ +return true; +}else{ +return false; +} +} +} +} +},formatter:function(_4f6){ +if(!_4f6){ +return _4f6; +} +_4f6=_4f6+""; +var opts=$(this).numberbox("options"); +var s1=_4f6,s2=""; +var dpos=_4f6.indexOf("."); +if(dpos>=0){ +s1=_4f6.substring(0,dpos); +s2=_4f6.substring(dpos+1,_4f6.length); +} +if(opts.groupSeparator){ +var p=/(\d+)(\d{3})/; +while(p.test(s1)){ +s1=s1.replace(p,"$1"+opts.groupSeparator+"$2"); +} +} +if(s2){ +return opts.prefix+s1+opts.decimalSeparator+s2+opts.suffix; +}else{ +return opts.prefix+s1+opts.suffix; +} +},parser:function(s){ +s=s+""; +var opts=$(this).numberbox("options"); +if(parseFloat(s)!=s){ +if(opts.prefix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.prefix),"g"),"")); +} +if(opts.suffix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(opts.suffix),"g"),"")); +} +if(opts.groupSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.groupSeparator,"g"),"")); +} +if(opts.decimalSeparator){ +s=$.trim(s.replace(new RegExp("\\"+opts.decimalSeparator,"g"),".")); +} +s=s.replace(/\s/g,""); +} +var val=parseFloat(s).toFixed(opts.precision); +if(isNaN(val)){ +val=""; +}else{ +if(typeof (opts.min)=="number"&&valopts.max){ +val=opts.max.toFixed(opts.precision); +} +} +} +return val; +}}); +})(jQuery); +(function($){ +function _4f7(_4f8,_4f9){ +var opts=$.data(_4f8,"calendar").options; +var t=$(_4f8); +if(_4f9){ +$.extend(opts,{width:_4f9.width,height:_4f9.height}); +} +t._size(opts,t.parent()); +t.find(".calendar-body")._outerHeight(t.height()-t.find(".calendar-header")._outerHeight()); +if(t.find(".calendar-menu").is(":visible")){ +_4fa(_4f8); +} +}; +function init(_4fb){ +$(_4fb).addClass("calendar").html("
          "+"
          "+"
          "+"
          "+"
          "+"
          "+""+"
          "+"
          "+"
          "+"
          "+"
          "+""+""+""+"
          "+"
          "+"
          "+"
          "+"
          "); +$(_4fb).bind("_resize",function(e,_4fc){ +if($(this).hasClass("easyui-fluid")||_4fc){ +_4f7(_4fb); +} +return false; +}); +}; +function _4fd(_4fe){ +var opts=$.data(_4fe,"calendar").options; +var menu=$(_4fe).find(".calendar-menu"); +menu.find(".calendar-menu-year").unbind(".calendar").bind("keypress.calendar",function(e){ +if(e.keyCode==13){ +_4ff(true); +} +}); +$(_4fe).unbind(".calendar").bind("mouseover.calendar",function(e){ +var t=_500(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.addClass("calendar-nav-hover"); +} +}).bind("mouseout.calendar",function(e){ +var t=_500(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.removeClass("calendar-nav-hover"); +} +}).bind("click.calendar",function(e){ +var t=_500(e.target); +if(t.hasClass("calendar-menu-next")||t.hasClass("calendar-nextyear")){ +_501(1); +}else{ +if(t.hasClass("calendar-menu-prev")||t.hasClass("calendar-prevyear")){ +_501(-1); +}else{ +if(t.hasClass("calendar-menu-month")){ +menu.find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +_4ff(true); +}else{ +if(t.hasClass("calendar-prevmonth")){ +_502(-1); +}else{ +if(t.hasClass("calendar-nextmonth")){ +_502(1); +}else{ +if(t.hasClass("calendar-text")){ +if(menu.is(":visible")){ +menu.hide(); +}else{ +_4fa(_4fe); +} +}else{ +if(t.hasClass("calendar-day")){ +if(t.hasClass("calendar-disabled")){ +return; +} +var _503=opts.current; +t.closest("div.calendar-body").find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +var _504=t.attr("abbr").split(","); +var y=parseInt(_504[0]); +var m=parseInt(_504[1]); +var d=parseInt(_504[2]); +opts.current=new Date(y,m-1,d); +opts.onSelect.call(_4fe,opts.current); +if(!_503||_503.getTime()!=opts.current.getTime()){ +opts.onChange.call(_4fe,opts.current,_503); +} +if(opts.year!=y||opts.month!=m){ +opts.year=y; +opts.month=m; +show(_4fe); +} +} +} +} +} +} +} +} +}); +function _500(t){ +var day=$(t).closest(".calendar-day"); +if(day.length){ +return day; +}else{ +return $(t); +} +}; +function _4ff(_505){ +var menu=$(_4fe).find(".calendar-menu"); +var year=menu.find(".calendar-menu-year").val(); +var _506=menu.find(".calendar-selected").attr("abbr"); +if(!isNaN(year)){ +opts.year=parseInt(year); +opts.month=parseInt(_506); +show(_4fe); +} +if(_505){ +menu.hide(); +} +}; +function _501(_507){ +opts.year+=_507; +show(_4fe); +menu.find(".calendar-menu-year").val(opts.year); +}; +function _502(_508){ +opts.month+=_508; +if(opts.month>12){ +opts.year++; +opts.month=1; +}else{ +if(opts.month<1){ +opts.year--; +opts.month=12; +} +} +show(_4fe); +menu.find("td.calendar-selected").removeClass("calendar-selected"); +menu.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +}; +}; +function _4fa(_509){ +var opts=$.data(_509,"calendar").options; +$(_509).find(".calendar-menu").show(); +if($(_509).find(".calendar-menu-month-inner").is(":empty")){ +$(_509).find(".calendar-menu-month-inner").empty(); +var t=$("
          ").appendTo($(_509).find(".calendar-menu-month-inner")); +var idx=0; +for(var i=0;i<3;i++){ +var tr=$("").appendTo(t); +for(var j=0;j<4;j++){ +$("").html(opts.months[idx++]).attr("abbr",idx).appendTo(tr); +} +} +} +var body=$(_509).find(".calendar-body"); +var sele=$(_509).find(".calendar-menu"); +var _50a=sele.find(".calendar-menu-year-inner"); +var _50b=sele.find(".calendar-menu-month-inner"); +_50a.find("input").val(opts.year).focus(); +_50b.find("td.calendar-selected").removeClass("calendar-selected"); +_50b.find("td:eq("+(opts.month-1)+")").addClass("calendar-selected"); +sele._outerWidth(body._outerWidth()); +sele._outerHeight(body._outerHeight()); +_50b._outerHeight(sele.height()-_50a._outerHeight()); +}; +function _50c(_50d,year,_50e){ +var opts=$.data(_50d,"calendar").options; +var _50f=[]; +var _510=new Date(year,_50e,0).getDate(); +for(var i=1;i<=_510;i++){ +_50f.push([year,_50e,i]); +} +var _511=[],week=[]; +var _512=-1; +while(_50f.length>0){ +var date=_50f.shift(); +week.push(date); +var day=new Date(date[0],date[1]-1,date[2]).getDay(); +if(_512==day){ +day=0; +}else{ +if(day==(opts.firstDay==0?7:opts.firstDay)-1){ +_511.push(week); +week=[]; +} +} +_512=day; +} +if(week.length){ +_511.push(week); +} +var _513=_511[0]; +if(_513.length<7){ +while(_513.length<7){ +var _514=_513[0]; +var date=new Date(_514[0],_514[1]-1,_514[2]-1); +_513.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +}else{ +var _514=_513[0]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_514[0],_514[1]-1,_514[2]-i); +week.unshift([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_511.unshift(week); +} +var _515=_511[_511.length-1]; +while(_515.length<7){ +var _516=_515[_515.length-1]; +var date=new Date(_516[0],_516[1]-1,_516[2]+1); +_515.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +if(_511.length<6){ +var _516=_515[_515.length-1]; +var week=[]; +for(var i=1;i<=7;i++){ +var date=new Date(_516[0],_516[1]-1,_516[2]+i); +week.push([date.getFullYear(),date.getMonth()+1,date.getDate()]); +} +_511.push(week); +} +return _511; +}; +function show(_517){ +var opts=$.data(_517,"calendar").options; +if(opts.current&&!opts.validator.call(_517,opts.current)){ +opts.current=null; +} +var now=new Date(); +var _518=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); +var _519=opts.current?(opts.current.getFullYear()+","+(opts.current.getMonth()+1)+","+opts.current.getDate()):""; +var _51a=6-opts.firstDay; +var _51b=_51a+1; +if(_51a>=7){ +_51a-=7; +} +if(_51b>=7){ +_51b-=7; +} +$(_517).find(".calendar-title span").html(opts.months[opts.month-1]+" "+opts.year); +var body=$(_517).find("div.calendar-body"); +body.children("table").remove(); +var data=[""]; +data.push(""); +for(var i=opts.firstDay;i"+opts.weeks[i]+""); +} +for(var i=0;i"+opts.weeks[i]+""); +} +data.push(""); +data.push(""); +var _51c=_50c(_517,opts.year,opts.month); +for(var i=0;i<_51c.length;i++){ +var week=_51c[i]; +var cls=""; +if(i==0){ +cls="calendar-first"; +}else{ +if(i==_51c.length-1){ +cls="calendar-last"; +} +} +data.push(""); +for(var j=0;j"+d+""); +} +data.push(""); +} +data.push(""); +data.push("
          "); +body.append(data.join("")); +body.children("table.calendar-dtable").prependTo(body); +opts.onNavigate.call(_517,opts.year,opts.month); +}; +$.fn.calendar=function(_520,_521){ +if(typeof _520=="string"){ +return $.fn.calendar.methods[_520](this,_521); +} +_520=_520||{}; +return this.each(function(){ +var _522=$.data(this,"calendar"); +if(_522){ +$.extend(_522.options,_520); +}else{ +_522=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_520)}); +init(this); +} +if(_522.options.border==false){ +$(this).addClass("calendar-noborder"); +} +_4f7(this); +_4fd(this); +show(this); +$(this).find("div.calendar-menu").hide(); +}); +}; +$.fn.calendar.methods={options:function(jq){ +return $.data(jq[0],"calendar").options; +},resize:function(jq,_523){ +return jq.each(function(){ +_4f7(this,_523); +}); +},moveTo:function(jq,date){ +return jq.each(function(){ +var opts=$(this).calendar("options"); +if(opts.validator.call(this,date)){ +var _524=opts.current; +$(this).calendar({year:date.getFullYear(),month:date.getMonth()+1,current:date}); +if(!_524||_524.getTime()!=date.getTime()){ +opts.onChange.call(this,opts.current,_524); +} +} +}); +}}; +$.fn.calendar.parseOptions=function(_525){ +var t=$(_525); +return $.extend({},$.parser.parseOptions(_525,[{firstDay:"number",fit:"boolean",border:"boolean"}])); +}; +$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:(function(){ +var d=new Date(); +return new Date(d.getFullYear(),d.getMonth(),d.getDate()); +})(),formatter:function(date){ +return date.getDate(); +},styler:function(date){ +return ""; +},validator:function(date){ +return true; +},onSelect:function(date){ +},onChange:function(_526,_527){ +},onNavigate:function(year,_528){ +}}; +})(jQuery); +(function($){ +function _529(_52a){ +var _52b=$.data(_52a,"spinner"); +var opts=_52b.options; +var _52c=$.extend(true,[],opts.icons); +_52c.push({iconCls:"spinner-arrow",handler:function(e){ +_52d(e); +}}); +$(_52a).addClass("spinner-f").textbox($.extend({},opts,{icons:_52c})); +var _52e=$(_52a).textbox("getIcon",_52c.length-1); +_52e.append(""); +_52e.append(""); +$(_52a).attr("spinnerName",$(_52a).attr("textboxName")); +_52b.spinner=$(_52a).next(); +_52b.spinner.addClass("spinner"); +}; +function _52d(e){ +var _52f=e.data.target; +var opts=$(_52f).spinner("options"); +var up=$(e.target).closest("a.spinner-arrow-up"); +if(up.length){ +opts.spin.call(_52f,false); +opts.onSpinUp.call(_52f); +$(_52f).spinner("validate"); +} +var down=$(e.target).closest("a.spinner-arrow-down"); +if(down.length){ +opts.spin.call(_52f,true); +opts.onSpinDown.call(_52f); +$(_52f).spinner("validate"); +} +}; +$.fn.spinner=function(_530,_531){ +if(typeof _530=="string"){ +var _532=$.fn.spinner.methods[_530]; +if(_532){ +return _532(this,_531); +}else{ +return this.textbox(_530,_531); +} +} +_530=_530||{}; +return this.each(function(){ +var _533=$.data(this,"spinner"); +if(_533){ +$.extend(_533.options,_530); +}else{ +_533=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_530)}); +} +_529(this); +}); +}; +$.fn.spinner.methods={options:function(jq){ +var opts=jq.textbox("options"); +return $.extend($.data(jq[0],"spinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.spinner.parseOptions=function(_534){ +return $.extend({},$.fn.textbox.parseOptions(_534),$.parser.parseOptions(_534,["min","max",{increment:"number"}])); +}; +$.fn.spinner.defaults=$.extend({},$.fn.textbox.defaults,{min:null,max:null,increment:1,spin:function(down){ +},onSpinUp:function(){ +},onSpinDown:function(){ +}}); +})(jQuery); +(function($){ +function _535(_536){ +$(_536).addClass("numberspinner-f"); +var opts=$.data(_536,"numberspinner").options; +$(_536).numberbox(opts).spinner(opts); +$(_536).numberbox("setValue",opts.value); +}; +function _537(_538,down){ +var opts=$.data(_538,"numberspinner").options; +var v=parseFloat($(_538).numberbox("getValue")||opts.value)||0; +if(down){ +v-=opts.increment; +}else{ +v+=opts.increment; +} +$(_538).numberbox("setValue",v); +}; +$.fn.numberspinner=function(_539,_53a){ +if(typeof _539=="string"){ +var _53b=$.fn.numberspinner.methods[_539]; +if(_53b){ +return _53b(this,_53a); +}else{ +return this.numberbox(_539,_53a); +} +} +_539=_539||{}; +return this.each(function(){ +var _53c=$.data(this,"numberspinner"); +if(_53c){ +$.extend(_53c.options,_539); +}else{ +$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_539)}); +} +_535(this); +}); +}; +$.fn.numberspinner.methods={options:function(jq){ +var opts=jq.numberbox("options"); +return $.extend($.data(jq[0],"numberspinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +}}; +$.fn.numberspinner.parseOptions=function(_53d){ +return $.extend({},$.fn.spinner.parseOptions(_53d),$.fn.numberbox.parseOptions(_53d),{}); +}; +$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(down){ +_537(this,down); +}}); +})(jQuery); +(function($){ +function _53e(_53f){ +var _540=0; +if(_53f.selectionStart){ +_540=_53f.selectionStart; +}else{ +if(_53f.createTextRange){ +var _541=_53f.createTextRange(); +var s=document.selection.createRange(); +s.setEndPoint("StartToStart",_541); +_540=s.text.length; +} +} +return _540; +}; +function _542(_543,_544,end){ +if(_543.selectionStart){ +_543.setSelectionRange(_544,end); +}else{ +if(_543.createTextRange){ +var _545=_543.createTextRange(); +_545.collapse(); +_545.moveEnd("character",end); +_545.moveStart("character",_544); +_545.select(); +} +} +}; +function _546(_547){ +var opts=$.data(_547,"timespinner").options; +$(_547).addClass("timespinner-f").spinner(opts); +var _548=opts.formatter.call(_547,opts.parser.call(_547,opts.value)); +$(_547).timespinner("initValue",_548); +}; +function _549(e){ +var _54a=e.data.target; +var opts=$.data(_54a,"timespinner").options; +var _54b=_53e(this); +for(var i=0;i=_54c[0]&&_54b<=_54c[1]){ +_54d(_54a,i); +return; +} +} +}; +function _54d(_54e,_54f){ +var opts=$.data(_54e,"timespinner").options; +if(_54f!=undefined){ +opts.highlight=_54f; +} +var _550=opts.selections[opts.highlight]; +if(_550){ +var tb=$(_54e).timespinner("textbox"); +_542(tb[0],_550[0],_550[1]); +tb.focus(); +} +}; +function _551(_552,_553){ +var opts=$.data(_552,"timespinner").options; +var _553=opts.parser.call(_552,_553); +var text=opts.formatter.call(_552,_553); +$(_552).spinner("setValue",text); +}; +function _554(_555,down){ +var opts=$.data(_555,"timespinner").options; +var s=$(_555).timespinner("getValue"); +var _556=opts.selections[opts.highlight]; +var s1=s.substring(0,_556[0]); +var s2=s.substring(_556[0],_556[1]); +var s3=s.substring(_556[1]); +var v=s1+((parseInt(s2)||0)+opts.increment*(down?-1:1))+s3; +$(_555).timespinner("setValue",v); +_54d(_555); +}; +$.fn.timespinner=function(_557,_558){ +if(typeof _557=="string"){ +var _559=$.fn.timespinner.methods[_557]; +if(_559){ +return _559(this,_558); +}else{ +return this.spinner(_557,_558); +} +} +_557=_557||{}; +return this.each(function(){ +var _55a=$.data(this,"timespinner"); +if(_55a){ +$.extend(_55a.options,_557); +}else{ +$.data(this,"timespinner",{options:$.extend({},$.fn.timespinner.defaults,$.fn.timespinner.parseOptions(this),_557)}); +} +_546(this); +}); +}; +$.fn.timespinner.methods={options:function(jq){ +var opts=jq.data("spinner")?jq.spinner("options"):{}; +return $.extend($.data(jq[0],"timespinner").options,{width:opts.width,value:opts.value,originalValue:opts.originalValue,disabled:opts.disabled,readonly:opts.readonly}); +},setValue:function(jq,_55b){ +return jq.each(function(){ +_551(this,_55b); +}); +},getHours:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[0],10); +},getMinutes:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[1],10); +},getSeconds:function(jq){ +var opts=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(opts.separator); +return parseInt(vv[2],10)||0; +}}; +$.fn.timespinner.parseOptions=function(_55c){ +return $.extend({},$.fn.spinner.parseOptions(_55c),$.parser.parseOptions(_55c,["separator",{showSeconds:"boolean",highlight:"number"}])); +}; +$.fn.timespinner.defaults=$.extend({},$.fn.spinner.defaults,{inputEvents:$.extend({},$.fn.spinner.defaults.inputEvents,{click:function(e){ +_549.call(this,e); +},blur:function(e){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +} +}}),formatter:function(date){ +if(!date){ +return ""; +} +var opts=$(this).timespinner("options"); +var tt=[_55d(date.getHours()),_55d(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_55d(date.getSeconds())); +} +return tt.join(opts.separator); +function _55d(_55e){ +return (_55e<10?"0":"")+_55e; +}; +},parser:function(s){ +var opts=$(this).timespinner("options"); +var date=_55f(s); +if(date){ +var min=_55f(opts.min); +var max=_55f(opts.max); +if(min&&min>date){ +date=min; +} +if(max&&max"]; +for(var i=0;i<_573.length;i++){ +_572.cache[_573[i][0]]={width:_573[i][1]}; +} +var _574=0; +for(var s in _572.cache){ +var item=_572.cache[s]; +item.index=_574++; +ss.push(s+"{width:"+item.width+"}"); +} +ss.push(""); +$(ss.join("\n")).appendTo(cc); +cc.children("style[easyui]:not(:last)").remove(); +},getRule:function(_575){ +var _576=cc.children("style[easyui]:last")[0]; +var _577=_576.styleSheet?_576.styleSheet:(_576.sheet||document.styleSheets[document.styleSheets.length-1]); +var _578=_577.cssRules||_577.rules; +return _578[_575]; +},set:function(_579,_57a){ +var item=_572.cache[_579]; +if(item){ +item.width=_57a; +var rule=this.getRule(item.index); +if(rule){ +rule.style["width"]=_57a; +} +} +},remove:function(_57b){ +var tmp=[]; +for(var s in _572.cache){ +if(s.indexOf(_57b)==-1){ +tmp.push([s,_572.cache[s].width]); +} +} +_572.cache={}; +this.add(tmp); +},dirty:function(_57c){ +if(_57c){ +_572.dirty.push(_57c); +} +},clean:function(){ +for(var i=0;i<_572.dirty.length;i++){ +this.remove(_572.dirty[i]); +} +_572.dirty=[]; +}}; +}; +function _57d(_57e,_57f){ +var _580=$.data(_57e,"datagrid"); +var opts=_580.options; +var _581=_580.panel; +if(_57f){ +$.extend(opts,_57f); +} +if(opts.fit==true){ +var p=_581.panel("panel").parent(); +opts.width=p.width(); +opts.height=p.height(); +} +_581.panel("resize",opts); +}; +function _582(_583){ +var _584=$.data(_583,"datagrid"); +var opts=_584.options; +var dc=_584.dc; +var wrap=_584.panel; +var _585=wrap.width(); +var _586=wrap.height(); +var view=dc.view; +var _587=dc.view1; +var _588=dc.view2; +var _589=_587.children("div.datagrid-header"); +var _58a=_588.children("div.datagrid-header"); +var _58b=_589.find("table"); +var _58c=_58a.find("table"); +view.width(_585); +var _58d=_589.children("div.datagrid-header-inner").show(); +_587.width(_58d.find("table").width()); +if(!opts.showHeader){ +_58d.hide(); +} +_588.width(_585-_587._outerWidth()); +_587.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_587.width()); +_588.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_588.width()); +var hh; +_589.add(_58a).css("height",""); +_58b.add(_58c).css("height",""); +hh=Math.max(_58b.height(),_58c.height()); +_58b.add(_58c).height(hh); +_589.add(_58a)._outerHeight(hh); +dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); +var _58e=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); +var _58f=_58e+_588.children("div.datagrid-header")._outerHeight()+_588.children("div.datagrid-footer")._outerHeight()+wrap.children("div.datagrid-toolbar")._outerHeight(); +wrap.children("div.datagrid-pager").each(function(){ +_58f+=$(this)._outerHeight(); +}); +var _590=wrap.outerHeight()-wrap.height(); +var _591=wrap._size("minHeight")||""; +var _592=wrap._size("maxHeight")||""; +_587.add(_588).children("div.datagrid-body").css({marginTop:_58e,height:(isNaN(parseInt(opts.height))?"":(_586-_58f)),minHeight:(_591?_591-_590-_58f:""),maxHeight:(_592?_592-_590-_58f:"")}); +view.height(_588.height()); +}; +function _593(_594,_595,_596){ +var rows=$.data(_594,"datagrid").data.rows; +var opts=$.data(_594,"datagrid").options; +var dc=$.data(_594,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!opts.nowrap||opts.autoRowHeight||_596)){ +if(_595!=undefined){ +var tr1=opts.finder.getTr(_594,_595,"body",1); +var tr2=opts.finder.getTr(_594,_595,"body",2); +_597(tr1,tr2); +}else{ +var tr1=opts.finder.getTr(_594,0,"allbody",1); +var tr2=opts.finder.getTr(_594,0,"allbody",2); +_597(tr1,tr2); +if(opts.showFooter){ +var tr1=opts.finder.getTr(_594,0,"allfooter",1); +var tr2=opts.finder.getTr(_594,0,"allfooter",2); +_597(tr1,tr2); +} +} +} +_582(_594); +if(opts.height=="auto"){ +var _598=dc.body1.parent(); +var _599=dc.body2; +var _59a=_59b(_599); +var _59c=_59a.height; +if(_59a.width>_599.width()){ +_59c+=18; +} +_59c-=parseInt(_599.css("marginTop"))||0; +_598.height(_59c); +_599.height(_59c); +dc.view.height(dc.view2.height()); +} +dc.body2.triggerHandler("scroll"); +function _597(trs1,trs2){ +for(var i=0;i"); +} +_5a4(true); +_5a4(false); +_582(_5a1); +function _5a4(_5a5){ +var _5a6=_5a5?1:2; +var tr=opts.finder.getTr(_5a1,_5a2,"body",_5a6); +(_5a5?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); +}; +}; +function _5a7(_5a8,_5a9){ +function _5aa(){ +var _5ab=[]; +var _5ac=[]; +$(_5a8).children("thead").each(function(){ +var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); +$(this).find("tr").each(function(){ +var cols=[]; +$(this).find("th").each(function(){ +var th=$(this); +var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order","width",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); +if(col.width&&String(col.width).indexOf("%")==-1){ +col.width=parseInt(col.width); +} +if(th.attr("editor")){ +var s=$.trim(th.attr("editor")); +if(s.substr(0,1)=="{"){ +col.editor=eval("("+s+")"); +}else{ +col.editor=s; +} +} +cols.push(col); +}); +opt.frozen?_5ab.push(cols):_5ac.push(cols); +}); +}); +return [_5ab,_5ac]; +}; +var _5ad=$("
          "+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+""+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+"
          "+""+"
          "+"
          "+"
          "+"
          ").insertAfter(_5a8); +_5ad.panel({doSize:false,cls:"datagrid"}); +$(_5a8).addClass("datagrid-f").hide().appendTo(_5ad.children("div.datagrid-view")); +var cc=_5aa(); +var view=_5ad.children("div.datagrid-view"); +var _5ae=view.children("div.datagrid-view1"); +var _5af=view.children("div.datagrid-view2"); +return {panel:_5ad,frozenColumns:cc[0],columns:cc[1],dc:{view:view,view1:_5ae,view2:_5af,header1:_5ae.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_5af.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_5ae.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_5af.children("div.datagrid-body"),footer1:_5ae.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_5af.children("div.datagrid-footer").children("div.datagrid-footer-inner")}}; +}; +function _5b0(_5b1){ +var _5b2=$.data(_5b1,"datagrid"); +var opts=_5b2.options; +var dc=_5b2.dc; +var _5b3=_5b2.panel; +_5b2.ss=$(_5b1).datagrid("createStyleSheet"); +_5b3.panel($.extend({},opts,{id:null,doSize:false,onResize:function(_5b4,_5b5){ +setTimeout(function(){ +if($.data(_5b1,"datagrid")){ +_582(_5b1); +_5f7(_5b1); +opts.onResize.call(_5b3,_5b4,_5b5); +} +},0); +},onExpand:function(){ +_593(_5b1); +opts.onExpand.call(_5b3); +}})); +_5b2.rowIdPrefix="datagrid-row-r"+(++_569); +_5b2.cellClassPrefix="datagrid-cell-c"+_569; +_5b6(dc.header1,opts.frozenColumns,true); +_5b6(dc.header2,opts.columns,false); +_5b7(); +dc.header1.add(dc.header2).css("display",opts.showHeader?"block":"none"); +dc.footer1.add(dc.footer2).css("display",opts.showFooter?"block":"none"); +if(opts.toolbar){ +if($.isArray(opts.toolbar)){ +$("div.datagrid-toolbar",_5b3).remove(); +var tb=$("
          ").prependTo(_5b3); +var tr=tb.find("tr"); +for(var i=0;i
          ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var tool=$("").appendTo(td); +tool[0].onclick=eval(btn.handler||function(){ +}); +tool.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(opts.toolbar).addClass("datagrid-toolbar").prependTo(_5b3); +$(opts.toolbar).show(); +} +}else{ +$("div.datagrid-toolbar",_5b3).remove(); +} +$("div.datagrid-pager",_5b3).remove(); +if(opts.pagination){ +var _5b8=$("
          "); +if(opts.pagePosition=="bottom"){ +_5b8.appendTo(_5b3); +}else{ +if(opts.pagePosition=="top"){ +_5b8.addClass("datagrid-pager-top").prependTo(_5b3); +}else{ +var ptop=$("
          ").prependTo(_5b3); +_5b8.appendTo(_5b3); +_5b8=_5b8.add(ptop); +} +} +_5b8.pagination({total:(opts.pageNumber*opts.pageSize),pageNumber:opts.pageNumber,pageSize:opts.pageSize,pageList:opts.pageList,onSelectPage:function(_5b9,_5ba){ +opts.pageNumber=_5b9||1; +opts.pageSize=_5ba; +_5b8.pagination("refresh",{pageNumber:_5b9,pageSize:_5ba}); +_5f5(_5b1); +}}); +opts.pageSize=_5b8.pagination("options").pageSize; +} +function _5b6(_5bb,_5bc,_5bd){ +if(!_5bc){ +return; +} +$(_5bb).show(); +$(_5bb).empty(); +var _5be=[]; +var _5bf=[]; +if(opts.sortName){ +_5be=opts.sortName.split(","); +_5bf=opts.sortOrder.split(","); +} +var t=$("
          ").appendTo(_5bb); +for(var i=0;i<_5bc.length;i++){ +var tr=$("").appendTo($("tbody",t)); +var cols=_5bc[i]; +for(var j=0;j").appendTo(tr); +if(col.checkbox){ +td.attr("field",col.field); +$("
          ").html("").appendTo(td); +}else{ +if(col.field){ +td.attr("field",col.field); +td.append("
          "); +$("span",td).html(col.title); +$("span.datagrid-sort-icon",td).html(" "); +var cell=td.find("div.datagrid-cell"); +var pos=_56a(_5be,col.field); +if(pos>=0){ +cell.addClass("datagrid-sort-"+_5bf[pos]); +} +if(col.resizable==false){ +cell.attr("resizable","false"); +} +if(col.width){ +var _5c0=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize); +cell._outerWidth(_5c0-1); +col.boxWidth=parseInt(cell[0].style.width); +col.deltaWidth=_5c0-col.boxWidth; +}else{ +col.auto=true; +} +cell.css("text-align",(col.halign||col.align||"")); +col.cellClass=_5b2.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); +cell.addClass(col.cellClass).css("width",""); +}else{ +$("
          ").html(col.title).appendTo(td); +} +} +if(col.hidden){ +td.hide(); +} +} +} +if(_5bd&&opts.rownumbers){ +var td=$("
          "); +if($("tr",t).length==0){ +td.wrap("").parent().appendTo($("tbody",t)); +}else{ +td.prependTo($("tr:first",t)); +} +} +}; +function _5b7(){ +var _5c1=[]; +var _5c2=_5c3(_5b1,true).concat(_5c3(_5b1)); +for(var i=0;i<_5c2.length;i++){ +var col=_5c4(_5b1,_5c2[i]); +if(col&&!col.checkbox){ +_5c1.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); +} +} +_5b2.ss.add(_5c1); +_5b2.ss.dirty(_5b2.cellSelectorPrefix); +_5b2.cellSelectorPrefix="."+_5b2.cellClassPrefix; +}; +}; +function _5c5(_5c6){ +var _5c7=$.data(_5c6,"datagrid"); +var _5c8=_5c7.panel; +var opts=_5c7.options; +var dc=_5c7.dc; +var _5c9=dc.header1.add(dc.header2); +_5c9.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ +if(opts.singleSelect&&opts.selectOnCheck){ +return false; +} +if($(this).is(":checked")){ +_65d(_5c6); +}else{ +_663(_5c6); +} +e.stopPropagation(); +}); +var _5ca=_5c9.find("div.datagrid-cell"); +_5ca.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ +if(_5c7.resizing){ +return; +} +$(this).addClass("datagrid-header-over"); +}).bind("mouseleave.datagrid",function(){ +$(this).removeClass("datagrid-header-over"); +}).bind("contextmenu.datagrid",function(e){ +var _5cb=$(this).attr("field"); +opts.onHeaderContextMenu.call(_5c6,e,_5cb); +}); +_5ca.unbind(".datagrid").bind("click.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +if(e.pageXp1){ +_5ea(_5c6,$(this).parent().attr("field")); +} +}).bind("dblclick.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +var cond=opts.resizeHandle=="right"?(e.pageX>p2):(opts.resizeHandle=="left"?(e.pageXp2)); +if(cond){ +var _5cc=$(this).parent().attr("field"); +var col=_5c4(_5c6,_5cc); +if(col.resizable==false){ +return; +} +$(_5c6).datagrid("autoSizeColumn",_5cc); +col.auto=false; +} +}); +var _5cd=opts.resizeHandle=="right"?"e":(opts.resizeHandle=="left"?"w":"e,w"); +_5ca.each(function(){ +$(this).resizable({handles:_5cd,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ +_5c7.resizing=true; +_5c9.css("cursor",$("body").css("cursor")); +if(!_5c7.proxy){ +_5c7.proxy=$("
          ").appendTo(dc.view); +} +_5c7.proxy.css({left:e.pageX-$(_5c8).offset().left-1,display:"none"}); +setTimeout(function(){ +if(_5c7.proxy){ +_5c7.proxy.show(); +} +},500); +},onResize:function(e){ +_5c7.proxy.css({left:e.pageX-$(_5c8).offset().left-1,display:"block"}); +return false; +},onStopResize:function(e){ +_5c9.css("cursor",""); +$(this).css("height",""); +var _5ce=$(this).parent().attr("field"); +var col=_5c4(_5c6,_5ce); +col.width=$(this)._outerWidth(); +col.boxWidth=col.width-col.deltaWidth; +col.auto=undefined; +$(this).css("width",""); +_613(_5c6,_5ce); +_5c7.proxy.remove(); +_5c7.proxy=null; +if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ +_582(_5c6); +} +_5f7(_5c6); +opts.onResizeColumn.call(_5c6,_5ce,col.width); +setTimeout(function(){ +_5c7.resizing=false; +},0); +}}); +}); +var bb=dc.body1.add(dc.body2); +bb.unbind(); +for(var _5cf in opts.rowEvents){ +bb.bind(_5cf,opts.rowEvents[_5cf]); +} +dc.body1.bind("mousewheel DOMMouseScroll",function(e){ +var e1=e.originalEvent||window.event; +var _5d0=e1.wheelDelta||e1.detail*(-1); +var dg=$(e.target).closest("div.datagrid-view").children(".datagrid-f"); +var dc=dg.data("datagrid").dc; +dc.body2.scrollTop(dc.body2.scrollTop()-_5d0); +}); +dc.body2.bind("scroll",function(){ +var b1=dc.view1.children("div.datagrid-body"); +b1.scrollTop($(this).scrollTop()); +var c1=dc.body1.children(":first"); +var c2=dc.body2.children(":first"); +if(c1.length&&c2.length){ +var top1=c1.offset().top; +var top2=c2.offset().top; +if(top1!=top2){ +b1.scrollTop(b1.scrollTop()+top1-top2); +} +} +dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); +dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); +}); +}; +function _5d1(_5d2){ +return function(e){ +var tr=_5d3(e.target); +if(!tr){ +return; +} +var _5d4=_5d5(tr); +if($.data(_5d4,"datagrid").resizing){ +return; +} +var _5d6=_5d7(tr); +if(_5d2){ +_5d8(_5d4,_5d6); +}else{ +var opts=$.data(_5d4,"datagrid").options; +opts.finder.getTr(_5d4,_5d6).removeClass("datagrid-row-over"); +} +}; +}; +function _5d9(e){ +var tr=_5d3(e.target); +if(!tr){ +return; +} +var _5da=_5d5(tr); +var opts=$.data(_5da,"datagrid").options; +var _5db=_5d7(tr); +var tt=$(e.target); +if(tt.parent().hasClass("datagrid-cell-check")){ +if(opts.singleSelect&&opts.selectOnCheck){ +tt._propAttr("checked",!tt.is(":checked")); +_5dc(_5da,_5db); +}else{ +if(tt.is(":checked")){ +tt._propAttr("checked",false); +_5dc(_5da,_5db); +}else{ +tt._propAttr("checked",true); +_5dd(_5da,_5db); +} +} +}else{ +var row=opts.finder.getRow(_5da,_5db); +var td=tt.closest("td[field]",tr); +if(td.length){ +var _5de=td.attr("field"); +opts.onClickCell.call(_5da,_5db,_5de,row[_5de]); +} +if(opts.singleSelect==true){ +_5df(_5da,_5db); +}else{ +if(opts.ctrlSelect){ +if(e.ctrlKey){ +if(tr.hasClass("datagrid-row-selected")){ +_5e0(_5da,_5db); +}else{ +_5df(_5da,_5db); +} +}else{ +if(e.shiftKey){ +$(_5da).datagrid("clearSelections"); +var _5e1=Math.min(opts.lastSelectedIndex||0,_5db); +var _5e2=Math.max(opts.lastSelectedIndex||0,_5db); +for(var i=_5e1;i<=_5e2;i++){ +_5df(_5da,i); +} +}else{ +$(_5da).datagrid("clearSelections"); +_5df(_5da,_5db); +opts.lastSelectedIndex=_5db; +} +} +}else{ +if(tr.hasClass("datagrid-row-selected")){ +_5e0(_5da,_5db); +}else{ +_5df(_5da,_5db); +} +} +} +opts.onClickRow.call(_5da,_5db,row); +} +}; +function _5e3(e){ +var tr=_5d3(e.target); +if(!tr){ +return; +} +var _5e4=_5d5(tr); +var opts=$.data(_5e4,"datagrid").options; +var _5e5=_5d7(tr); +var row=opts.finder.getRow(_5e4,_5e5); +var td=$(e.target).closest("td[field]",tr); +if(td.length){ +var _5e6=td.attr("field"); +opts.onDblClickCell.call(_5e4,_5e5,_5e6,row[_5e6]); +} +opts.onDblClickRow.call(_5e4,_5e5,row); +}; +function _5e7(e){ +var tr=_5d3(e.target); +if(!tr){ +return; +} +var _5e8=_5d5(tr); +var opts=$.data(_5e8,"datagrid").options; +var _5e9=_5d7(tr); +var row=opts.finder.getRow(_5e8,_5e9); +opts.onRowContextMenu.call(_5e8,e,_5e9,row); +}; +function _5d5(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _5d3(t){ +var tr=$(t).closest("tr.datagrid-row"); +if(tr.length&&tr.parent().length){ +return tr; +}else{ +return undefined; +} +}; +function _5d7(tr){ +if(tr.attr("datagrid-row-index")){ +return parseInt(tr.attr("datagrid-row-index")); +}else{ +return tr.attr("node-id"); +} +}; +function _5ea(_5eb,_5ec){ +var _5ed=$.data(_5eb,"datagrid"); +var opts=_5ed.options; +_5ec=_5ec||{}; +var _5ee={sortName:opts.sortName,sortOrder:opts.sortOrder}; +if(typeof _5ec=="object"){ +$.extend(_5ee,_5ec); +} +var _5ef=[]; +var _5f0=[]; +if(_5ee.sortName){ +_5ef=_5ee.sortName.split(","); +_5f0=_5ee.sortOrder.split(","); +} +if(typeof _5ec=="string"){ +var _5f1=_5ec; +var col=_5c4(_5eb,_5f1); +if(!col.sortable||_5ed.resizing){ +return; +} +var _5f2=col.order||"asc"; +var pos=_56a(_5ef,_5f1); +if(pos>=0){ +var _5f3=_5f0[pos]=="asc"?"desc":"asc"; +if(opts.multiSort&&_5f3==_5f2){ +_5ef.splice(pos,1); +_5f0.splice(pos,1); +}else{ +_5f0[pos]=_5f3; +} +}else{ +if(opts.multiSort){ +_5ef.push(_5f1); +_5f0.push(_5f2); +}else{ +_5ef=[_5f1]; +_5f0=[_5f2]; +} +} +_5ee.sortName=_5ef.join(","); +_5ee.sortOrder=_5f0.join(","); +} +if(opts.onBeforeSortColumn.call(_5eb,_5ee.sortName,_5ee.sortOrder)==false){ +return; +} +$.extend(opts,_5ee); +var dc=_5ed.dc; +var _5f4=dc.header1.add(dc.header2); +_5f4.find("div.datagrid-cell").removeClass("datagrid-sort-asc datagrid-sort-desc"); +for(var i=0;i<_5ef.length;i++){ +var col=_5c4(_5eb,_5ef[i]); +_5f4.find("div."+col.cellClass).addClass("datagrid-sort-"+_5f0[i]); +} +if(opts.remoteSort){ +_5f5(_5eb); +}else{ +_5f6(_5eb,$(_5eb).datagrid("getData")); +} +opts.onSortColumn.call(_5eb,opts.sortName,opts.sortOrder); +}; +function _5f7(_5f8){ +var _5f9=$.data(_5f8,"datagrid"); +var opts=_5f9.options; +var dc=_5f9.dc; +var _5fa=dc.view2.children("div.datagrid-header"); +dc.body2.css("overflow-x",""); +_5fb(); +_5fc(); +if(_5fa.width()>=_5fa.find("table").width()){ +dc.body2.css("overflow-x","hidden"); +} +function _5fc(){ +if(!opts.fitColumns){ +return; +} +if(!_5f9.leftWidth){ +_5f9.leftWidth=0; +} +var _5fd=0; +var cc=[]; +var _5fe=_5c3(_5f8,false); +for(var i=0;i<_5fe.length;i++){ +var col=_5c4(_5f8,_5fe[i]); +if(_5ff(col)){ +_5fd+=col.width; +cc.push({field:col.field,col:col,addingWidth:0}); +} +} +if(!_5fd){ +return; +} +cc[cc.length-1].addingWidth-=_5f9.leftWidth; +var _600=_5fa.children("div.datagrid-header-inner").show(); +var _601=_5fa.width()-_5fa.find("table").width()-opts.scrollbarSize+_5f9.leftWidth; +var rate=_601/_5fd; +if(!opts.showHeader){ +_600.hide(); +} +for(var i=0;i0){ +c.col.boxWidth+=c.addingWidth; +c.col.width+=c.addingWidth; +} +} +_5f9.leftWidth=_601; +_613(_5f8); +}; +function _5fb(){ +var _603=false; +var _604=_5c3(_5f8,true).concat(_5c3(_5f8,false)); +$.map(_604,function(_605){ +var col=_5c4(_5f8,_605); +if(String(col.width||"").indexOf("%")>=0){ +var _606=$.parser.parseValue("width",col.width,dc.view,opts.scrollbarSize)-col.deltaWidth; +if(_606>0){ +col.boxWidth=_606; +_603=true; +} +} +}); +if(_603){ +_613(_5f8); +} +}; +function _5ff(col){ +if(String(col.width||"").indexOf("%")>=0){ +return false; +} +if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ +return true; +} +}; +}; +function _607(_608,_609){ +var _60a=$.data(_608,"datagrid"); +var opts=_60a.options; +var dc=_60a.dc; +var tmp=$("
          ").appendTo("body"); +if(_609){ +_57d(_609); +if(opts.fitColumns){ +_582(_608); +_5f7(_608); +} +}else{ +var _60b=false; +var _60c=_5c3(_608,true).concat(_5c3(_608,false)); +for(var i=0;i<_60c.length;i++){ +var _609=_60c[i]; +var col=_5c4(_608,_609); +if(col.auto){ +_57d(_609); +_60b=true; +} +} +if(_60b&&opts.fitColumns){ +_582(_608); +_5f7(_608); +} +} +tmp.remove(); +function _57d(_60d){ +var _60e=dc.view.find("div.datagrid-header td[field=\""+_60d+"\"] div.datagrid-cell"); +_60e.css("width",""); +var col=$(_608).datagrid("getColumnOption",_60d); +col.width=undefined; +col.boxWidth=undefined; +col.auto=true; +$(_608).datagrid("fixColumnSize",_60d); +var _60f=Math.max(_610("header"),_610("allbody"),_610("allfooter"))+1; +_60e._outerWidth(_60f-1); +col.width=_60f; +col.boxWidth=parseInt(_60e[0].style.width); +col.deltaWidth=_60f-col.boxWidth; +_60e.css("width",""); +$(_608).datagrid("fixColumnSize",_60d); +opts.onResizeColumn.call(_608,_60d,col.width); +function _610(type){ +var _611=0; +if(type=="header"){ +_611=_612(_60e); +}else{ +opts.finder.getTr(_608,0,type).find("td[field=\""+_60d+"\"] div.datagrid-cell").each(function(){ +var w=_612($(this)); +if(_611=0){ +var _62b=col.field||""; +for(var c=0;c<(col.colspan||1);c++){ +for(var r=0;r<(col.rowspan||1);r++){ +aa[_628+r][_629]=_62b; +} +_629++; +} +} +}); +} +return aa[aa.length-1]; +function _627(){ +var _62c=0; +$.map(_625[0],function(col){ +_62c+=col.colspan||1; +}); +return _62c; +}; +function _62a(a){ +for(var i=0;ib?1:-1); +}; +r=_631(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_62d,data.rows); +} +opts.view.render.call(opts.view,_62d,dc.body2,false); +opts.view.render.call(opts.view,_62d,dc.body1,true); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_62d,dc.footer2,false); +opts.view.renderFooter.call(opts.view,_62d,dc.footer1,true); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_62d); +} +_62e.ss.clean(); +var _632=$(_62d).datagrid("getPager"); +if(_632.length){ +var _633=_632.pagination("options"); +if(_633.total!=data.total){ +_632.pagination("refresh",{total:data.total}); +if(opts.pageNumber!=_633.pageNumber&&_633.pageNumber>0){ +opts.pageNumber=_633.pageNumber; +_5f5(_62d); +} +} +} +_593(_62d); +dc.body2.triggerHandler("scroll"); +$(_62d).datagrid("setSelectionState"); +$(_62d).datagrid("autoSizeColumn"); +opts.onLoadSuccess.call(_62d,data); +}; +function _634(_635){ +var _636=$.data(_635,"datagrid"); +var opts=_636.options; +var dc=_636.dc; +dc.header1.add(dc.header2).find("input[type=checkbox]")._propAttr("checked",false); +if(opts.idField){ +var _637=$.data(_635,"treegrid")?true:false; +var _638=opts.onSelect; +var _639=opts.onCheck; +opts.onSelect=opts.onCheck=function(){ +}; +var rows=opts.finder.getRows(_635); +for(var i=0;i_64a.height()-18){ +_64a.scrollTop(_64a.scrollTop()+top+tr._outerHeight()-_64a.height()+18); +} +} +} +}; +function _5d8(_64c,_64d){ +var _64e=$.data(_64c,"datagrid"); +var opts=_64e.options; +opts.finder.getTr(_64c,_64e.highlightIndex).removeClass("datagrid-row-over"); +opts.finder.getTr(_64c,_64d).addClass("datagrid-row-over"); +_64e.highlightIndex=_64d; +}; +function _5df(_64f,_650,_651){ +var _652=$.data(_64f,"datagrid"); +var opts=_652.options; +var row=opts.finder.getRow(_64f,_650); +if(opts.onBeforeSelect.call(_64f,_650,row)==false){ +return; +} +if(opts.singleSelect){ +_653(_64f,true); +_652.selectedRows=[]; +} +if(!_651&&opts.checkOnSelect){ +_5dc(_64f,_650,true); +} +if(opts.idField){ +_56d(_652.selectedRows,opts.idField,row); +} +opts.finder.getTr(_64f,_650).addClass("datagrid-row-selected"); +opts.onSelect.call(_64f,_650,row); +_645(_64f,_650); +}; +function _5e0(_654,_655,_656){ +var _657=$.data(_654,"datagrid"); +var dc=_657.dc; +var opts=_657.options; +var row=opts.finder.getRow(_654,_655); +if(opts.onBeforeUnselect.call(_654,_655,row)==false){ +return; +} +if(!_656&&opts.checkOnSelect){ +_5dd(_654,_655,true); +} +opts.finder.getTr(_654,_655).removeClass("datagrid-row-selected"); +if(opts.idField){ +_56b(_657.selectedRows,opts.idField,row[opts.idField]); +} +opts.onUnselect.call(_654,_655,row); +}; +function _658(_659,_65a){ +var _65b=$.data(_659,"datagrid"); +var opts=_65b.options; +var rows=opts.finder.getRows(_659); +var _65c=$.data(_659,"datagrid").selectedRows; +if(!_65a&&opts.checkOnSelect){ +_65d(_659,true); +} +opts.finder.getTr(_659,"","allbody").addClass("datagrid-row-selected"); +if(opts.idField){ +for(var _65e=0;_65e"); +cell.children("table").bind("click dblclick contextmenu",function(e){ +e.stopPropagation(); +}); +$.data(cell[0],"datagrid.editor",{actions:_694,target:_694.init(cell.find("td"),_693),field:_691,type:_692,oldHtml:_695}); +} +} +}); +_593(_68f,_690,true); +}; +function _686(_697,_698){ +var opts=$.data(_697,"datagrid").options; +var tr=opts.finder.getTr(_697,_698); +tr.children("td").each(function(){ +var cell=$(this).find("div.datagrid-editable"); +if(cell.length){ +var ed=$.data(cell[0],"datagrid.editor"); +if(ed.actions.destroy){ +ed.actions.destroy(ed.target); +} +cell.html(ed.oldHtml); +$.removeData(cell[0],"datagrid.editor"); +cell.removeClass("datagrid-editable"); +cell.css("width",""); +} +}); +}; +function _679(_699,_69a){ +var tr=$.data(_699,"datagrid").options.finder.getTr(_699,_69a); +if(!tr.hasClass("datagrid-row-editing")){ +return true; +} +var vbox=tr.find(".validatebox-text"); +vbox.validatebox("validate"); +vbox.trigger("mouseleave"); +var _69b=tr.find(".validatebox-invalid"); +return _69b.length==0; +}; +function _69c(_69d,_69e){ +var _69f=$.data(_69d,"datagrid").insertedRows; +var _6a0=$.data(_69d,"datagrid").deletedRows; +var _6a1=$.data(_69d,"datagrid").updatedRows; +if(!_69e){ +var rows=[]; +rows=rows.concat(_69f); +rows=rows.concat(_6a0); +rows=rows.concat(_6a1); +return rows; +}else{ +if(_69e=="inserted"){ +return _69f; +}else{ +if(_69e=="deleted"){ +return _6a0; +}else{ +if(_69e=="updated"){ +return _6a1; +} +} +} +} +return []; +}; +function _6a2(_6a3,_6a4){ +var _6a5=$.data(_6a3,"datagrid"); +var opts=_6a5.options; +var data=_6a5.data; +var _6a6=_6a5.insertedRows; +var _6a7=_6a5.deletedRows; +$(_6a3).datagrid("cancelEdit",_6a4); +var row=opts.finder.getRow(_6a3,_6a4); +if(_56a(_6a6,row)>=0){ +_56b(_6a6,row); +}else{ +_6a7.push(row); +} +_56b(_6a5.selectedRows,opts.idField,row[opts.idField]); +_56b(_6a5.checkedRows,opts.idField,row[opts.idField]); +opts.view.deleteRow.call(opts.view,_6a3,_6a4); +if(opts.height=="auto"){ +_593(_6a3); +} +$(_6a3).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6a8(_6a9,_6aa){ +var data=$.data(_6a9,"datagrid").data; +var view=$.data(_6a9,"datagrid").options.view; +var _6ab=$.data(_6a9,"datagrid").insertedRows; +view.insertRow.call(view,_6a9,_6aa.index,_6aa.row); +_6ab.push(_6aa.row); +$(_6a9).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6ac(_6ad,row){ +var data=$.data(_6ad,"datagrid").data; +var view=$.data(_6ad,"datagrid").options.view; +var _6ae=$.data(_6ad,"datagrid").insertedRows; +view.insertRow.call(view,_6ad,null,row); +_6ae.push(row); +$(_6ad).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _6af(_6b0){ +var _6b1=$.data(_6b0,"datagrid"); +var data=_6b1.data; +var rows=data.rows; +var _6b2=[]; +for(var i=0;i=0){ +(_6bf=="s"?_5df:_5dc)(_6b6,_6c0,true); +} +} +}; +for(var i=0;i0){ +_5f6(this,data); +_6af(this); +} +} +_5f5(this); +}); +}; +function _6d1(_6d2){ +var _6d3={}; +$.map(_6d2,function(name){ +_6d3[name]=_6d4(name); +}); +return _6d3; +function _6d4(name){ +function isA(_6d5){ +return $.data($(_6d5)[0],name)!=undefined; +}; +return {init:function(_6d6,_6d7){ +var _6d8=$("").appendTo(_6d6); +if(_6d8[name]&&name!="text"){ +return _6d8[name](_6d7); +}else{ +return _6d8; +} +},destroy:function(_6d9){ +if(isA(_6d9,name)){ +$(_6d9)[name]("destroy"); +} +},getValue:function(_6da){ +if(isA(_6da,name)){ +var opts=$(_6da)[name]("options"); +if(opts.multiple){ +return $(_6da)[name]("getValues").join(opts.separator); +}else{ +return $(_6da)[name]("getValue"); +} +}else{ +return $(_6da).val(); +} +},setValue:function(_6db,_6dc){ +if(isA(_6db,name)){ +var opts=$(_6db)[name]("options"); +if(opts.multiple){ +if(_6dc){ +$(_6db)[name]("setValues",_6dc.split(opts.separator)); +}else{ +$(_6db)[name]("clear"); +} +}else{ +$(_6db)[name]("setValue",_6dc); +} +}else{ +$(_6db).val(_6dc); +} +},resize:function(_6dd,_6de){ +if(isA(_6dd,name)){ +$(_6dd)[name]("resize",_6de); +}else{ +$(_6dd)._outerWidth(_6de)._outerHeight(22); +} +}}; +}; +}; +var _6df=$.extend({},_6d1(["text","textbox","numberbox","numberspinner","combobox","combotree","combogrid","datebox","datetimebox","timespinner","datetimespinner"]),{textarea:{init:function(_6e0,_6e1){ +var _6e2=$("").appendTo(_6e0); +return _6e2; +},getValue:function(_6e3){ +return $(_6e3).val(); +},setValue:function(_6e4,_6e5){ +$(_6e4).val(_6e5); +},resize:function(_6e6,_6e7){ +$(_6e6)._outerWidth(_6e7); +}},checkbox:{init:function(_6e8,_6e9){ +var _6ea=$("").appendTo(_6e8); +_6ea.val(_6e9.on); +_6ea.attr("offval",_6e9.off); +return _6ea; +},getValue:function(_6eb){ +if($(_6eb).is(":checked")){ +return $(_6eb).val(); +}else{ +return $(_6eb).attr("offval"); +} +},setValue:function(_6ec,_6ed){ +var _6ee=false; +if($(_6ec).val()==_6ed){ +_6ee=true; +} +$(_6ec)._propAttr("checked",_6ee); +}},validatebox:{init:function(_6ef,_6f0){ +var _6f1=$("").appendTo(_6ef); +_6f1.validatebox(_6f0); +return _6f1; +},destroy:function(_6f2){ +$(_6f2).validatebox("destroy"); +},getValue:function(_6f3){ +return $(_6f3).val(); +},setValue:function(_6f4,_6f5){ +$(_6f4).val(_6f5); +},resize:function(_6f6,_6f7){ +$(_6f6)._outerWidth(_6f7)._outerHeight(22); +}}}); +$.fn.datagrid.methods={options:function(jq){ +var _6f8=$.data(jq[0],"datagrid").options; +var _6f9=$.data(jq[0],"datagrid").panel.panel("options"); +var opts=$.extend(_6f8,{width:_6f9.width,height:_6f9.height,closed:_6f9.closed,collapsed:_6f9.collapsed,minimized:_6f9.minimized,maximized:_6f9.maximized}); +return opts; +},setSelectionState:function(jq){ +return jq.each(function(){ +_634(this); +}); +},createStyleSheet:function(jq){ +return _56e(jq[0]); +},getPanel:function(jq){ +return $.data(jq[0],"datagrid").panel; +},getPager:function(jq){ +return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); +},getColumnFields:function(jq,_6fa){ +return _5c3(jq[0],_6fa); +},getColumnOption:function(jq,_6fb){ +return _5c4(jq[0],_6fb); +},resize:function(jq,_6fc){ +return jq.each(function(){ +_57d(this,_6fc); +}); +},load:function(jq,_6fd){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _6fd=="string"){ +opts.url=_6fd; +_6fd=null; +} +opts.pageNumber=1; +var _6fe=$(this).datagrid("getPager"); +_6fe.pagination("refresh",{pageNumber:1}); +_5f5(this,_6fd); +}); +},reload:function(jq,_6ff){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _6ff=="string"){ +opts.url=_6ff; +_6ff=null; +} +_5f5(this,_6ff); +}); +},reloadFooter:function(jq,_700){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +var dc=$.data(this,"datagrid").dc; +if(_700){ +$.data(this,"datagrid").footer=_700; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).datagrid("fixRowHeight"); +} +}); +},loading:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +$(this).datagrid("getPager").pagination("loading"); +if(opts.loadMsg){ +var _701=$(this).datagrid("getPanel"); +if(!_701.children("div.datagrid-mask").length){ +$("
          ").appendTo(_701); +var msg=$("
          ").html(opts.loadMsg).appendTo(_701); +msg._outerHeight(40); +msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); +} +} +}); +},loaded:function(jq){ +return jq.each(function(){ +$(this).datagrid("getPager").pagination("loaded"); +var _702=$(this).datagrid("getPanel"); +_702.children("div.datagrid-mask-msg").remove(); +_702.children("div.datagrid-mask").remove(); +}); +},fitColumns:function(jq){ +return jq.each(function(){ +_5f7(this); +}); +},fixColumnSize:function(jq,_703){ +return jq.each(function(){ +_613(this,_703); +}); +},fixRowHeight:function(jq,_704){ +return jq.each(function(){ +_593(this,_704); +}); +},freezeRow:function(jq,_705){ +return jq.each(function(){ +_5a0(this,_705); +}); +},autoSizeColumn:function(jq,_706){ +return jq.each(function(){ +_607(this,_706); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_5f6(this,data); +_6af(this); +}); +},getData:function(jq){ +return $.data(jq[0],"datagrid").data; +},getRows:function(jq){ +return $.data(jq[0],"datagrid").data.rows; +},getFooterRows:function(jq){ +return $.data(jq[0],"datagrid").footer; +},getRowIndex:function(jq,id){ +return _63c(jq[0],id); +},getChecked:function(jq){ +return _642(jq[0]); +},getSelected:function(jq){ +var rows=_63f(jq[0]); +return rows.length>0?rows[0]:null; +},getSelections:function(jq){ +return _63f(jq[0]); +},clearSelections:function(jq){ +return jq.each(function(){ +var _707=$.data(this,"datagrid"); +var _708=_707.selectedRows; +var _709=_707.checkedRows; +_708.splice(0,_708.length); +_653(this); +if(_707.options.checkOnSelect){ +_709.splice(0,_709.length); +} +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _70a=$.data(this,"datagrid"); +var _70b=_70a.selectedRows; +var _70c=_70a.checkedRows; +_70c.splice(0,_70c.length); +_663(this); +if(_70a.options.selectOnCheck){ +_70b.splice(0,_70b.length); +} +}); +},scrollTo:function(jq,_70d){ +return jq.each(function(){ +_645(this,_70d); +}); +},highlightRow:function(jq,_70e){ +return jq.each(function(){ +_5d8(this,_70e); +_645(this,_70e); +}); +},selectAll:function(jq){ +return jq.each(function(){ +_658(this); +}); +},unselectAll:function(jq){ +return jq.each(function(){ +_653(this); +}); +},selectRow:function(jq,_70f){ +return jq.each(function(){ +_5df(this,_70f); +}); +},selectRecord:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +if(opts.idField){ +var _710=_63c(this,id); +if(_710>=0){ +$(this).datagrid("selectRow",_710); +} +} +}); +},unselectRow:function(jq,_711){ +return jq.each(function(){ +_5e0(this,_711); +}); +},checkRow:function(jq,_712){ +return jq.each(function(){ +_5dc(this,_712); +}); +},uncheckRow:function(jq,_713){ +return jq.each(function(){ +_5dd(this,_713); +}); +},checkAll:function(jq){ +return jq.each(function(){ +_65d(this); +}); +},uncheckAll:function(jq){ +return jq.each(function(){ +_663(this); +}); +},beginEdit:function(jq,_714){ +return jq.each(function(){ +_674(this,_714); +}); +},endEdit:function(jq,_715){ +return jq.each(function(){ +_67a(this,_715,false); +}); +},cancelEdit:function(jq,_716){ +return jq.each(function(){ +_67a(this,_716,true); +}); +},getEditors:function(jq,_717){ +return _687(jq[0],_717); +},getEditor:function(jq,_718){ +return _68b(jq[0],_718); +},refreshRow:function(jq,_719){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.refreshRow.call(opts.view,this,_719); +}); +},validateRow:function(jq,_71a){ +return _679(jq[0],_71a); +},updateRow:function(jq,_71b){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.updateRow.call(opts.view,this,_71b.index,_71b.row); +}); +},appendRow:function(jq,row){ +return jq.each(function(){ +_6ac(this,row); +}); +},insertRow:function(jq,_71c){ +return jq.each(function(){ +_6a8(this,_71c); +}); +},deleteRow:function(jq,_71d){ +return jq.each(function(){ +_6a2(this,_71d); +}); +},getChanges:function(jq,_71e){ +return _69c(jq[0],_71e); +},acceptChanges:function(jq){ +return jq.each(function(){ +_6b3(this); +}); +},rejectChanges:function(jq){ +return jq.each(function(){ +_6b5(this); +}); +},mergeCells:function(jq,_71f){ +return jq.each(function(){ +_6c8(this,_71f); +}); +},showColumn:function(jq,_720){ +return jq.each(function(){ +var _721=$(this).datagrid("getPanel"); +_721.find("td[field=\""+_720+"\"]").show(); +$(this).datagrid("getColumnOption",_720).hidden=false; +$(this).datagrid("fitColumns"); +}); +},hideColumn:function(jq,_722){ +return jq.each(function(){ +var _723=$(this).datagrid("getPanel"); +_723.find("td[field=\""+_722+"\"]").hide(); +$(this).datagrid("getColumnOption",_722).hidden=true; +$(this).datagrid("fitColumns"); +}); +},sort:function(jq,_724){ +return jq.each(function(){ +_5ea(this,_724); +}); +}}; +$.fn.datagrid.parseOptions=function(_725){ +var t=$(_725); +return $.extend({},$.fn.panel.parseOptions(_725),$.parser.parseOptions(_725,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{sharedStyleSheet:"boolean",fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",ctrlSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); +}; +$.fn.datagrid.parseData=function(_726){ +var t=$(_726); +var data={total:0,rows:[]}; +var _727=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); +t.find("tbody tr").each(function(){ +data.total++; +var row={}; +$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); +for(var i=0;i<_727.length;i++){ +row[_727[i]]=$(this).find("td:eq("+i+")").html(); +} +data.rows.push(row); +}); +return data; +}; +var _728={render:function(_729,_72a,_72b){ +var _72c=$.data(_729,"datagrid"); +var opts=_72c.options; +var rows=_72c.data.rows; +var _72d=$(_729).datagrid("getColumnFields",_72b); +if(_72b){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return; +} +} +var _72e=[""]; +for(var i=0;i"); +_72e.push(this.renderRow.call(this,_729,_72d,_72b,i,rows[i])); +_72e.push(""); +} +_72e.push("
          "); +$(_72a).html(_72e.join("")); +},renderFooter:function(_733,_734,_735){ +var opts=$.data(_733,"datagrid").options; +var rows=$.data(_733,"datagrid").footer||[]; +var _736=$(_733).datagrid("getColumnFields",_735); +var _737=[""]; +for(var i=0;i"); +_737.push(this.renderRow.call(this,_733,_736,_735,i,rows[i])); +_737.push(""); +} +_737.push("
          "); +$(_734).html(_737.join("")); +},renderRow:function(_738,_739,_73a,_73b,_73c){ +var opts=$.data(_738,"datagrid").options; +var cc=[]; +if(_73a&&opts.rownumbers){ +var _73d=_73b+1; +if(opts.pagination){ +_73d+=(opts.pageNumber-1)*opts.pageSize; +} +cc.push("
          "+_73d+"
          "); +} +for(var i=0;i<_739.length;i++){ +var _73e=_739[i]; +var col=$(_738).datagrid("getColumnOption",_73e); +if(col){ +var _73f=_73c[_73e]; +var css=col.styler?(col.styler(_73f,_73c,_73b)||""):""; +var _740=""; +var _741=""; +if(typeof css=="string"){ +_741=css; +}else{ +if(css){ +_740=css["class"]||""; +_741=css["style"]||""; +} +} +var cls=_740?"class=\""+_740+"\"":""; +var _742=col.hidden?"style=\"display:none;"+_741+"\"":(_741?"style=\""+_741+"\"":""); +cc.push(""); +var _742=""; +if(!col.checkbox){ +if(col.align){ +_742+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_742+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_742+="height:auto;"; +} +} +} +cc.push("
          "); +if(col.checkbox){ +cc.push(""); +}else{ +if(col.formatter){ +cc.push(col.formatter(_73f,_73c,_73b)); +}else{ +cc.push(_73f); +} +} +cc.push("
          "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_743,_744){ +this.updateRow.call(this,_743,_744,{}); +},updateRow:function(_745,_746,row){ +var opts=$.data(_745,"datagrid").options; +var rows=$(_745).datagrid("getRows"); +var _747=_748(_746); +$.extend(rows[_746],row); +var _749=_748(_746); +var _74a=_747.c; +var _74b=_749.s; +var _74c="datagrid-row "+(_746%2&&opts.striped?"datagrid-row-alt ":" ")+_749.c; +function _748(_74d){ +var css=opts.rowStyler?opts.rowStyler.call(_745,_74d,rows[_74d]):""; +var _74e=""; +var _74f=""; +if(typeof css=="string"){ +_74f=css; +}else{ +if(css){ +_74e=css["class"]||""; +_74f=css["style"]||""; +} +} +return {c:_74e,s:_74f}; +}; +function _750(_751){ +var _752=$(_745).datagrid("getColumnFields",_751); +var tr=opts.finder.getTr(_745,_746,"body",(_751?1:2)); +var _753=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow.call(this,_745,_752,_751,_746,rows[_746])); +tr.attr("style",_74b).removeClass(_74a).addClass(_74c); +if(_753){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +}; +_750.call(this,true); +_750.call(this,false); +$(_745).datagrid("fixRowHeight",_746); +},insertRow:function(_754,_755,row){ +var _756=$.data(_754,"datagrid"); +var opts=_756.options; +var dc=_756.dc; +var data=_756.data; +if(_755==undefined||_755==null){ +_755=data.rows.length; +} +if(_755>data.rows.length){ +_755=data.rows.length; +} +function _757(_758){ +var _759=_758?1:2; +for(var i=data.rows.length-1;i>=_755;i--){ +var tr=opts.finder.getTr(_754,i,"body",_759); +tr.attr("datagrid-row-index",i+1); +tr.attr("id",_756.rowIdPrefix+"-"+_759+"-"+(i+1)); +if(_758&&opts.rownumbers){ +var _75a=i+2; +if(opts.pagination){ +_75a+=(opts.pageNumber-1)*opts.pageSize; +} +tr.find("div.datagrid-cell-rownumber").html(_75a); +} +if(opts.striped){ +tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); +} +} +}; +function _75b(_75c){ +var _75d=_75c?1:2; +var _75e=$(_754).datagrid("getColumnFields",_75c); +var _75f=_756.rowIdPrefix+"-"+_75d+"-"+_755; +var tr=""; +if(_755>=data.rows.length){ +if(data.rows.length){ +opts.finder.getTr(_754,"","last",_75d).after(tr); +}else{ +var cc=_75c?dc.body1:dc.body2; +cc.html(""+tr+"
          "); +} +}else{ +opts.finder.getTr(_754,_755+1,"body",_75d).before(tr); +} +}; +_757.call(this,true); +_757.call(this,false); +_75b.call(this,true); +_75b.call(this,false); +data.total+=1; +data.rows.splice(_755,0,row); +this.refreshRow.call(this,_754,_755); +},deleteRow:function(_760,_761){ +var _762=$.data(_760,"datagrid"); +var opts=_762.options; +var data=_762.data; +function _763(_764){ +var _765=_764?1:2; +for(var i=_761+1;itable>tbody>tr[datagrid-row-index="+_770+"]"); +} +return tr; +}else{ +if(type=="footer"){ +return (_771==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_770+"]"); +}else{ +if(type=="selected"){ +return (_771==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); +}else{ +if(type=="highlight"){ +return (_771==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); +}else{ +if(type=="checked"){ +return (_771==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); +}else{ +if(type=="editing"){ +return (_771==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-editing"); +}else{ +if(type=="last"){ +return (_771==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); +}else{ +if(type=="allbody"){ +return (_771==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); +}else{ +if(type=="allfooter"){ +return (_771==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); +} +} +} +} +} +} +} +} +} +} +},getRow:function(_773,p){ +var _774=(typeof p=="object")?p.attr("datagrid-row-index"):p; +return $.data(_773,"datagrid").data.rows[parseInt(_774)]; +},getRows:function(_775){ +return $(_775).datagrid("getRows"); +}},view:_728,onBeforeLoad:function(_776){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onClickRow:function(_777,_778){ +},onDblClickRow:function(_779,_77a){ +},onClickCell:function(_77b,_77c,_77d){ +},onDblClickCell:function(_77e,_77f,_780){ +},onBeforeSortColumn:function(sort,_781){ +},onSortColumn:function(sort,_782){ +},onResizeColumn:function(_783,_784){ +},onBeforeSelect:function(_785,_786){ +},onSelect:function(_787,_788){ +},onBeforeUnselect:function(_789,_78a){ +},onUnselect:function(_78b,_78c){ +},onSelectAll:function(rows){ +},onUnselectAll:function(rows){ +},onBeforeCheck:function(_78d,_78e){ +},onCheck:function(_78f,_790){ +},onBeforeUncheck:function(_791,_792){ +},onUncheck:function(_793,_794){ +},onCheckAll:function(rows){ +},onUncheckAll:function(rows){ +},onBeforeEdit:function(_795,_796){ +},onBeginEdit:function(_797,_798){ +},onEndEdit:function(_799,_79a,_79b){ +},onAfterEdit:function(_79c,_79d,_79e){ +},onCancelEdit:function(_79f,_7a0){ +},onHeaderContextMenu:function(e,_7a1){ +},onRowContextMenu:function(e,_7a2,_7a3){ +}}); +})(jQuery); +(function($){ +var _7a4; +$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ +var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); +if(p.length){ +return; +} +_7a5(_7a4); +_7a4=undefined; +}); +function _7a6(_7a7){ +var _7a8=$.data(_7a7,"propertygrid"); +var opts=$.data(_7a7,"propertygrid").options; +$(_7a7).datagrid($.extend({},opts,{cls:"propertygrid",view:(opts.showGroup?opts.groupView:opts.view),onBeforeEdit:function(_7a9,row){ +if(opts.onBeforeEdit.call(_7a7,_7a9,row)==false){ +return false; +} +var dg=$(this); +var row=dg.datagrid("getRows")[_7a9]; +var col=dg.datagrid("getColumnOption","value"); +col.editor=row.editor; +},onClickCell:function(_7aa,_7ab,_7ac){ +if(_7a4!=this){ +_7a5(_7a4); +_7a4=this; +} +if(opts.editIndex!=_7aa){ +_7a5(_7a4); +$(this).datagrid("beginEdit",_7aa); +var ed=$(this).datagrid("getEditor",{index:_7aa,field:_7ab}); +if(!ed){ +ed=$(this).datagrid("getEditor",{index:_7aa,field:"value"}); +} +if(ed){ +var t=$(ed.target); +var _7ad=t.data("textbox")?t.textbox("textbox"):t; +_7ad.focus(); +opts.editIndex=_7aa; +} +} +opts.onClickCell.call(_7a7,_7aa,_7ab,_7ac); +},loadFilter:function(data){ +_7a5(this); +return opts.loadFilter.call(this,data); +}})); +}; +function _7a5(_7ae){ +var t=$(_7ae); +if(!t.length){ +return; +} +var opts=$.data(_7ae,"propertygrid").options; +opts.finder.getTr(_7ae,null,"editing").each(function(){ +var _7af=parseInt($(this).attr("datagrid-row-index")); +if(t.datagrid("validateRow",_7af)){ +t.datagrid("endEdit",_7af); +}else{ +t.datagrid("cancelEdit",_7af); +} +}); +}; +$.fn.propertygrid=function(_7b0,_7b1){ +if(typeof _7b0=="string"){ +var _7b2=$.fn.propertygrid.methods[_7b0]; +if(_7b2){ +return _7b2(this,_7b1); +}else{ +return this.datagrid(_7b0,_7b1); +} +} +_7b0=_7b0||{}; +return this.each(function(){ +var _7b3=$.data(this,"propertygrid"); +if(_7b3){ +$.extend(_7b3.options,_7b0); +}else{ +var opts=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_7b0); +opts.frozenColumns=$.extend(true,[],opts.frozenColumns); +opts.columns=$.extend(true,[],opts.columns); +$.data(this,"propertygrid",{options:opts}); +} +_7a6(this); +}); +}; +$.fn.propertygrid.methods={options:function(jq){ +return $.data(jq[0],"propertygrid").options; +}}; +$.fn.propertygrid.parseOptions=function(_7b4){ +return $.extend({},$.fn.datagrid.parseOptions(_7b4),$.parser.parseOptions(_7b4,[{showGroup:"boolean"}])); +}; +var _7b5=$.extend({},$.fn.datagrid.defaults.view,{render:function(_7b6,_7b7,_7b8){ +var _7b9=[]; +var _7ba=this.groups; +for(var i=0;i<_7ba.length;i++){ +_7b9.push(this.renderGroup.call(this,_7b6,i,_7ba[i],_7b8)); +} +$(_7b7).html(_7b9.join("")); +},renderGroup:function(_7bb,_7bc,_7bd,_7be){ +var _7bf=$.data(_7bb,"datagrid"); +var opts=_7bf.options; +var _7c0=$(_7bb).datagrid("getColumnFields",_7be); +var _7c1=[]; +_7c1.push("
          "); +_7c1.push(""); +_7c1.push(""); +if((_7be&&(opts.rownumbers||opts.frozenColumns.length))||(!_7be&&!(opts.rownumbers||opts.frozenColumns.length))){ +_7c1.push(""); +} +_7c1.push(""); +_7c1.push(""); +_7c1.push("
           "); +if(!_7be){ +_7c1.push(""); +_7c1.push(opts.groupFormatter.call(_7bb,_7bd.value,_7bd.rows)); +_7c1.push(""); +} +_7c1.push("
          "); +_7c1.push("
          "); +_7c1.push(""); +var _7c2=_7bd.startIndex; +for(var j=0;j<_7bd.rows.length;j++){ +var css=opts.rowStyler?opts.rowStyler.call(_7bb,_7c2,_7bd.rows[j]):""; +var _7c3=""; +var _7c4=""; +if(typeof css=="string"){ +_7c4=css; +}else{ +if(css){ +_7c3=css["class"]||""; +_7c4=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_7c2%2&&opts.striped?"datagrid-row-alt ":" ")+_7c3+"\""; +var _7c5=_7c4?"style=\""+_7c4+"\"":""; +var _7c6=_7bf.rowIdPrefix+"-"+(_7be?1:2)+"-"+_7c2; +_7c1.push(""); +_7c1.push(this.renderRow.call(this,_7bb,_7c0,_7be,_7c2,_7bd.rows[j])); +_7c1.push(""); +_7c2++; +} +_7c1.push("
          "); +return _7c1.join(""); +},bindEvents:function(_7c7){ +var _7c8=$.data(_7c7,"datagrid"); +var dc=_7c8.dc; +var body=dc.body1.add(dc.body2); +var _7c9=($.data(body[0],"events")||$._data(body[0],"events")).click[0].handler; +body.unbind("click").bind("click",function(e){ +var tt=$(e.target); +var _7ca=tt.closest("span.datagrid-row-expander"); +if(_7ca.length){ +var _7cb=_7ca.closest("div.datagrid-group").attr("group-index"); +if(_7ca.hasClass("datagrid-row-collapse")){ +$(_7c7).datagrid("collapseGroup",_7cb); +}else{ +$(_7c7).datagrid("expandGroup",_7cb); +} +}else{ +_7c9(e); +} +e.stopPropagation(); +}); +},onBeforeRender:function(_7cc,rows){ +var _7cd=$.data(_7cc,"datagrid"); +var opts=_7cd.options; +_7ce(); +var _7cf=[]; +for(var i=0;i"+".datagrid-group{height:25px;overflow:hidden;font-weight:bold;border-bottom:1px solid #ccc;}"+""); +} +}; +}}); +$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_7d6){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _7d7=view.find(_7d6!=undefined?"div.datagrid-group[group-index=\""+_7d6+"\"]":"div.datagrid-group"); +var _7d8=_7d7.find("span.datagrid-row-expander"); +if(_7d8.hasClass("datagrid-row-expand")){ +_7d8.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); +_7d7.next("table").show(); +} +$(this).datagrid("fixRowHeight"); +}); +},collapseGroup:function(jq,_7d9){ +return jq.each(function(){ +var view=$.data(this,"datagrid").dc.view; +var _7da=view.find(_7d9!=undefined?"div.datagrid-group[group-index=\""+_7d9+"\"]":"div.datagrid-group"); +var _7db=_7da.find("span.datagrid-row-expander"); +if(_7db.hasClass("datagrid-row-collapse")){ +_7db.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); +_7da.next("table").hide(); +} +$(this).datagrid("fixRowHeight"); +}); +}}); +$.extend(_7b5,{refreshGroupTitle:function(_7dc,_7dd){ +var _7de=$.data(_7dc,"datagrid"); +var opts=_7de.options; +var dc=_7de.dc; +var _7df=this.groups[_7dd]; +var span=dc.body2.children("div.datagrid-group[group-index="+_7dd+"]").find("span.datagrid-group-title"); +span.html(opts.groupFormatter.call(_7dc,_7df.value,_7df.rows)); +},insertRow:function(_7e0,_7e1,row){ +var _7e2=$.data(_7e0,"datagrid"); +var opts=_7e2.options; +var dc=_7e2.dc; +var _7e3=null; +var _7e4; +for(var i=0;i_7e3.startIndex+_7e3.rows.length){ +_7e1=_7e3.startIndex+_7e3.rows.length; +} +} +$.fn.datagrid.defaults.view.insertRow.call(this,_7e0,_7e1,row); +if(_7e1>=_7e3.startIndex+_7e3.rows.length){ +_7e5(_7e1,true); +_7e5(_7e1,false); +} +_7e3.rows.splice(_7e1-_7e3.startIndex,0,row); +}else{ +_7e3={value:row[opts.groupField],rows:[row],startIndex:_7e2.data.rows.length}; +_7e4=this.groups.length; +dc.body1.append(this.renderGroup.call(this,_7e0,_7e4,_7e3,true)); +dc.body2.append(this.renderGroup.call(this,_7e0,_7e4,_7e3,false)); +this.groups.push(_7e3); +_7e2.data.rows.push(row); +} +this.refreshGroupTitle(_7e0,_7e4); +function _7e5(_7e6,_7e7){ +var _7e8=_7e7?1:2; +var _7e9=opts.finder.getTr(_7e0,_7e6-1,"body",_7e8); +var tr=opts.finder.getTr(_7e0,_7e6,"body",_7e8); +tr.insertAfter(_7e9); +}; +},updateRow:function(_7ea,_7eb,row){ +var opts=$.data(_7ea,"datagrid").options; +$.fn.datagrid.defaults.view.updateRow.call(this,_7ea,_7eb,row); +var tb=opts.finder.getTr(_7ea,_7eb,"body",2).closest("table.datagrid-btable"); +var _7ec=parseInt(tb.prev().attr("group-index")); +this.refreshGroupTitle(_7ea,_7ec); +},deleteRow:function(_7ed,_7ee){ +var _7ef=$.data(_7ed,"datagrid"); +var opts=_7ef.options; +var dc=_7ef.dc; +var body=dc.body1.add(dc.body2); +var tb=opts.finder.getTr(_7ed,_7ee,"body",2).closest("table.datagrid-btable"); +var _7f0=parseInt(tb.prev().attr("group-index")); +$.fn.datagrid.defaults.view.deleteRow.call(this,_7ed,_7ee); +var _7f1=this.groups[_7f0]; +if(_7f1.rows.length>1){ +_7f1.rows.splice(_7ee-_7f1.startIndex,1); +this.refreshGroupTitle(_7ed,_7f0); +}else{ +body.children("div.datagrid-group[group-index="+_7f0+"]").remove(); +for(var i=_7f0+1;i"+""+"
          "+""+"").insertAfter(tr); +}; +}; +function _828(_829,_82a,data,_82b){ +var _82c=$.data(_829,"treegrid"); +var opts=_82c.options; +var dc=_82c.dc; +data=opts.loadFilter.call(_829,data,_82a); +var node=find(_829,_82a); +if(node){ +var _82d=opts.finder.getTr(_829,_82a,"body",1); +var _82e=opts.finder.getTr(_829,_82a,"body",2); +var cc1=_82d.next("tr.treegrid-tr-tree").children("td").children("div"); +var cc2=_82e.next("tr.treegrid-tr-tree").children("td").children("div"); +if(!_82b){ +node.children=[]; +} +}else{ +var cc1=dc.body1; +var cc2=dc.body2; +if(!_82b){ +_82c.data=[]; +} +} +if(!_82b){ +cc1.empty(); +cc2.empty(); +} +if(opts.view.onBeforeRender){ +opts.view.onBeforeRender.call(opts.view,_829,_82a,data); +} +opts.view.render.call(opts.view,_829,cc1,true); +opts.view.render.call(opts.view,_829,cc2,false); +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,_829,dc.footer1,true); +opts.view.renderFooter.call(opts.view,_829,dc.footer2,false); +} +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,_829); +} +if(!_82a&&opts.pagination){ +var _82f=$.data(_829,"treegrid").total; +var _830=$(_829).datagrid("getPager"); +if(_830.pagination("options").total!=_82f){ +_830.pagination({total:_82f}); +} +} +_812(_829); +_81a(_829); +$(_829).treegrid("showLines"); +$(_829).treegrid("setSelectionState"); +$(_829).treegrid("autoSizeColumn"); +opts.onLoadSuccess.call(_829,node,data); +}; +function _811(_831,_832,_833,_834,_835){ +var opts=$.data(_831,"treegrid").options; +var body=$(_831).datagrid("getPanel").find("div.datagrid-body"); +if(_833){ +opts.queryParams=_833; +} +var _836=$.extend({},opts.queryParams); +if(opts.pagination){ +$.extend(_836,{page:opts.pageNumber,rows:opts.pageSize}); +} +if(opts.sortName){ +$.extend(_836,{sort:opts.sortName,order:opts.sortOrder}); +} +var row=find(_831,_832); +if(opts.onBeforeLoad.call(_831,row,_836)==false){ +return; +} +var _837=body.find("tr[node-id=\""+_832+"\"] span.tree-folder"); +_837.addClass("tree-loading"); +$(_831).treegrid("loading"); +var _838=opts.loader.call(_831,_836,function(data){ +_837.removeClass("tree-loading"); +$(_831).treegrid("loaded"); +_828(_831,_832,data,_834); +if(_835){ +_835(); +} +},function(){ +_837.removeClass("tree-loading"); +$(_831).treegrid("loaded"); +opts.onLoadError.apply(_831,arguments); +if(_835){ +_835(); +} +}); +if(_838==false){ +_837.removeClass("tree-loading"); +$(_831).treegrid("loaded"); +} +}; +function _839(_83a){ +var rows=_83b(_83a); +if(rows.length){ +return rows[0]; +}else{ +return null; +} +}; +function _83b(_83c){ +return $.data(_83c,"treegrid").data; +}; +function _83d(_83e,_83f){ +var row=find(_83e,_83f); +if(row._parentId){ +return find(_83e,row._parentId); +}else{ +return null; +} +}; +function _816(_840,_841){ +var opts=$.data(_840,"treegrid").options; +var body=$(_840).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); +var _842=[]; +if(_841){ +_843(_841); +}else{ +var _844=_83b(_840); +for(var i=0;i<_844.length;i++){ +_842.push(_844[i]); +_843(_844[i][opts.idField]); +} +} +function _843(_845){ +var _846=find(_840,_845); +if(_846&&_846.children){ +for(var i=0,len=_846.children.length;i").insertBefore(_866); +if(hit.prev().length){ +hit.prev().remove(); +} +} +} +_828(_864,_865.parent,_865.data,true); +}; +function _867(_868,_869){ +var ref=_869.before||_869.after; +var opts=$.data(_868,"treegrid").options; +var _86a=_83d(_868,ref); +_863(_868,{parent:(_86a?_86a[opts.idField]:null),data:[_869.data]}); +var _86b=_86a?_86a.children:$(_868).treegrid("getRoots"); +for(var i=0;i<_86b.length;i++){ +if(_86b[i][opts.idField]==ref){ +var _86c=_86b[_86b.length-1]; +_86b.splice(_869.before?i:(i+1),0,_86c); +_86b.splice(_86b.length-1,1); +break; +} +} +_86d(true); +_86d(false); +_81a(_868); +$(_868).treegrid("showLines"); +function _86d(_86e){ +var _86f=_86e?1:2; +var tr=opts.finder.getTr(_868,_869.data[opts.idField],"body",_86f); +var _870=tr.closest("table.datagrid-btable"); +tr=tr.parent().children(); +var dest=opts.finder.getTr(_868,ref,"body",_86f); +if(_869.before){ +tr.insertBefore(dest); +}else{ +var sub=dest.next("tr.treegrid-tr-tree"); +tr.insertAfter(sub.length?sub:dest); +} +_870.remove(); +}; +}; +function _871(_872,_873){ +var _874=$.data(_872,"treegrid"); +$(_872).datagrid("deleteRow",_873); +_81a(_872); +_874.total-=1; +$(_872).datagrid("getPager").pagination("refresh",{total:_874.total}); +$(_872).treegrid("showLines"); +}; +function _875(_876){ +var t=$(_876); +var opts=t.treegrid("options"); +if(opts.lines){ +t.treegrid("getPanel").addClass("tree-lines"); +}else{ +t.treegrid("getPanel").removeClass("tree-lines"); +return; +} +t.treegrid("getPanel").find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +t.treegrid("getPanel").find("div.datagrid-cell").removeClass("tree-node-last tree-root-first tree-root-one"); +var _877=t.treegrid("getRoots"); +if(_877.length>1){ +_878(_877[0]).addClass("tree-root-first"); +}else{ +if(_877.length==1){ +_878(_877[0]).addClass("tree-root-one"); +} +} +_879(_877); +_87a(_877); +function _879(_87b){ +$.map(_87b,function(node){ +if(node.children&&node.children.length){ +_879(node.children); +}else{ +var cell=_878(node); +cell.find(".tree-icon").prev().addClass("tree-join"); +} +}); +if(_87b.length){ +var cell=_878(_87b[_87b.length-1]); +cell.addClass("tree-node-last"); +cell.find(".tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +} +}; +function _87a(_87c){ +$.map(_87c,function(node){ +if(node.children&&node.children.length){ +_87a(node.children); +} +}); +for(var i=0;i<_87c.length-1;i++){ +var node=_87c[i]; +var _87d=t.treegrid("getLevel",node[opts.idField]); +var tr=opts.finder.getTr(_876,node[opts.idField]); +var cc=tr.next().find("tr.datagrid-row td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +cc.find("span:eq("+(_87d-1)+")").addClass("tree-line"); +} +}; +function _878(node){ +var tr=opts.finder.getTr(_876,node[opts.idField]); +var cell=tr.find("td[field=\""+opts.treeField+"\"] div.datagrid-cell"); +return cell; +}; +}; +$.fn.treegrid=function(_87e,_87f){ +if(typeof _87e=="string"){ +var _880=$.fn.treegrid.methods[_87e]; +if(_880){ +return _880(this,_87f); +}else{ +return this.datagrid(_87e,_87f); +} +} +_87e=_87e||{}; +return this.each(function(){ +var _881=$.data(this,"treegrid"); +if(_881){ +$.extend(_881.options,_87e); +}else{ +_881=$.data(this,"treegrid",{options:$.extend({},$.fn.treegrid.defaults,$.fn.treegrid.parseOptions(this),_87e),data:[]}); +} +_7f3(this); +if(_881.options.data){ +$(this).treegrid("loadData",_881.options.data); +} +_811(this); +}); +}; +$.fn.treegrid.methods={options:function(jq){ +return $.data(jq[0],"treegrid").options; +},resize:function(jq,_882){ +return jq.each(function(){ +$(this).datagrid("resize",_882); +}); +},fixRowHeight:function(jq,_883){ +return jq.each(function(){ +_812(this,_883); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_828(this,data.parent,data); +}); +},load:function(jq,_884){ +return jq.each(function(){ +$(this).treegrid("options").pageNumber=1; +$(this).treegrid("getPager").pagination({pageNumber:1}); +$(this).treegrid("reload",_884); +}); +},reload:function(jq,id){ +return jq.each(function(){ +var opts=$(this).treegrid("options"); +var _885={}; +if(typeof id=="object"){ +_885=id; +}else{ +_885=$.extend({},opts.queryParams); +_885.id=id; +} +if(_885.id){ +var node=$(this).treegrid("find",_885.id); +if(node.children){ +node.children.splice(0,node.children.length); +} +opts.queryParams=_885; +var tr=opts.finder.getTr(this,_885.id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.find("span.tree-hit").removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_850(this,_885.id); +}else{ +_811(this,null,_885); +} +}); +},reloadFooter:function(jq,_886){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +var dc=$.data(this,"datagrid").dc; +if(_886){ +$.data(this,"treegrid").footer=_886; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).treegrid("fixRowHeight"); +} +}); +},getData:function(jq){ +return $.data(jq[0],"treegrid").data; +},getFooterRows:function(jq){ +return $.data(jq[0],"treegrid").footer; +},getRoot:function(jq){ +return _839(jq[0]); +},getRoots:function(jq){ +return _83b(jq[0]); +},getParent:function(jq,id){ +return _83d(jq[0],id); +},getChildren:function(jq,id){ +return _816(jq[0],id); +},getLevel:function(jq,id){ +return _848(jq[0],id); +},find:function(jq,id){ +return find(jq[0],id); +},isLeaf:function(jq,id){ +var opts=$.data(jq[0],"treegrid").options; +var tr=opts.finder.getTr(jq[0],id); +var hit=tr.find("span.tree-hit"); +return hit.length==0; +},select:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("selectRow",id); +}); +},unselect:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("unselectRow",id); +}); +},collapse:function(jq,id){ +return jq.each(function(){ +_84d(this,id); +}); +},expand:function(jq,id){ +return jq.each(function(){ +_850(this,id); +}); +},toggle:function(jq,id){ +return jq.each(function(){ +_820(this,id); +}); +},collapseAll:function(jq,id){ +return jq.each(function(){ +_858(this,id); +}); +},expandAll:function(jq,id){ +return jq.each(function(){ +_85c(this,id); +}); +},expandTo:function(jq,id){ +return jq.each(function(){ +_860(this,id); +}); +},append:function(jq,_887){ +return jq.each(function(){ +_863(this,_887); +}); +},insert:function(jq,_888){ +return jq.each(function(){ +_867(this,_888); +}); +},remove:function(jq,id){ +return jq.each(function(){ +_871(this,id); +}); +},pop:function(jq,id){ +var row=jq.treegrid("find",id); +jq.treegrid("remove",id); +return row; +},refresh:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.refreshRow.call(opts.view,this,id); +}); +},update:function(jq,_889){ +return jq.each(function(){ +var opts=$.data(this,"treegrid").options; +opts.view.updateRow.call(opts.view,this,_889.id,_889.row); +}); +},beginEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("beginEdit",id); +$(this).treegrid("fixRowHeight",id); +}); +},endEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("endEdit",id); +}); +},cancelEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("cancelEdit",id); +}); +},showLines:function(jq){ +return jq.each(function(){ +_875(this); +}); +}}; +$.fn.treegrid.parseOptions=function(_88a){ +return $.extend({},$.fn.datagrid.parseOptions(_88a),$.parser.parseOptions(_88a,["treeField",{animate:"boolean"}])); +}; +var _88b=$.extend({},$.fn.datagrid.defaults.view,{render:function(_88c,_88d,_88e){ +var opts=$.data(_88c,"treegrid").options; +var _88f=$(_88c).datagrid("getColumnFields",_88e); +var _890=$.data(_88c,"datagrid").rowIdPrefix; +if(_88e){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return; +} +} +var view=this; +if(this.treeNodes&&this.treeNodes.length){ +var _891=_892(_88e,this.treeLevel,this.treeNodes); +$(_88d).append(_891.join("")); +} +function _892(_893,_894,_895){ +var _896=$(_88c).treegrid("getParent",_895[0][opts.idField]); +var _897=(_896?_896.children.length:$(_88c).treegrid("getRoots").length)-_895.length; +var _898=[""]; +for(var i=0;i<_895.length;i++){ +var row=_895[i]; +if(row.state!="open"&&row.state!="closed"){ +row.state="open"; +} +var css=opts.rowStyler?opts.rowStyler.call(_88c,row):""; +var _899=""; +var _89a=""; +if(typeof css=="string"){ +_89a=css; +}else{ +if(css){ +_899=css["class"]||""; +_89a=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_897++%2&&opts.striped?"datagrid-row-alt ":" ")+_899+"\""; +var _89b=_89a?"style=\""+_89a+"\"":""; +var _89c=_890+"-"+(_893?1:2)+"-"+row[opts.idField]; +_898.push(""); +_898=_898.concat(view.renderRow.call(view,_88c,_88f,_893,_894,row)); +_898.push(""); +if(row.children&&row.children.length){ +var tt=_892(_893,_894+1,row.children); +var v=row.state=="closed"?"none":"block"; +_898.push(""); +} +} +_898.push("
          "); +_898=_898.concat(tt); +_898.push("
          "); +return _898; +}; +},renderFooter:function(_89d,_89e,_89f){ +var opts=$.data(_89d,"treegrid").options; +var rows=$.data(_89d,"treegrid").footer||[]; +var _8a0=$(_89d).datagrid("getColumnFields",_89f); +var _8a1=[""]; +for(var i=0;i"); +_8a1.push(this.renderRow.call(this,_89d,_8a0,_89f,0,row)); +_8a1.push(""); +} +_8a1.push("
          "); +$(_89e).html(_8a1.join("")); +},renderRow:function(_8a2,_8a3,_8a4,_8a5,row){ +var opts=$.data(_8a2,"treegrid").options; +var cc=[]; +if(_8a4&&opts.rownumbers){ +cc.push("
          0
          "); +} +for(var i=0;i<_8a3.length;i++){ +var _8a6=_8a3[i]; +var col=$(_8a2).datagrid("getColumnOption",_8a6); +if(col){ +var css=col.styler?(col.styler(row[_8a6],row)||""):""; +var _8a7=""; +var _8a8=""; +if(typeof css=="string"){ +_8a8=css; +}else{ +if(cc){ +_8a7=css["class"]||""; +_8a8=css["style"]||""; +} +} +var cls=_8a7?"class=\""+_8a7+"\"":""; +var _8a9=col.hidden?"style=\"display:none;"+_8a8+"\"":(_8a8?"style=\""+_8a8+"\"":""); +cc.push(""); +var _8a9=""; +if(!col.checkbox){ +if(col.align){ +_8a9+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_8a9+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_8a9+="height:auto;"; +} +} +} +cc.push("
          "); +if(col.checkbox){ +if(row.checked){ +cc.push(""); +}else{ +var val=null; +if(col.formatter){ +val=col.formatter(row[_8a6],row); +}else{ +val=row[_8a6]; +} +if(_8a6==opts.treeField){ +for(var j=0;j<_8a5;j++){ +cc.push(""); +} +if(row.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(row.children&&row.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +cc.push(""+val+""); +}else{ +cc.push(val); +} +} +cc.push("
          "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_8aa,id){ +this.updateRow.call(this,_8aa,id,{}); +},updateRow:function(_8ab,id,row){ +var opts=$.data(_8ab,"treegrid").options; +var _8ac=$(_8ab).treegrid("find",id); +$.extend(_8ac,row); +var _8ad=$(_8ab).treegrid("getLevel",id)-1; +var _8ae=opts.rowStyler?opts.rowStyler.call(_8ab,_8ac):""; +var _8af=$.data(_8ab,"datagrid").rowIdPrefix; +var _8b0=_8ac[opts.idField]; +function _8b1(_8b2){ +var _8b3=$(_8ab).treegrid("getColumnFields",_8b2); +var tr=opts.finder.getTr(_8ab,id,"body",(_8b2?1:2)); +var _8b4=tr.find("div.datagrid-cell-rownumber").html(); +var _8b5=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow(_8ab,_8b3,_8b2,_8ad,_8ac)); +tr.attr("style",_8ae||""); +tr.find("div.datagrid-cell-rownumber").html(_8b4); +if(_8b5){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +if(_8b0!=id){ +tr.attr("id",_8af+"-"+(_8b2?1:2)+"-"+_8b0); +tr.attr("node-id",_8b0); +} +}; +_8b1.call(this,true); +_8b1.call(this,false); +$(_8ab).treegrid("fixRowHeight",id); +},deleteRow:function(_8b6,id){ +var opts=$.data(_8b6,"treegrid").options; +var tr=opts.finder.getTr(_8b6,id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.remove(); +var _8b7=del(id); +if(_8b7){ +if(_8b7.children.length==0){ +tr=opts.finder.getTr(_8b6,_8b7[opts.idField]); +tr.next("tr.treegrid-tr-tree").remove(); +var cell=tr.children("td[field=\""+opts.treeField+"\"]").children("div.datagrid-cell"); +cell.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +cell.find(".tree-hit").remove(); +$("").prependTo(cell); +} +} +function del(id){ +var cc; +var _8b8=$(_8b6).treegrid("getParent",id); +if(_8b8){ +cc=_8b8.children; +}else{ +cc=$(_8b6).treegrid("getData"); +} +for(var i=0;ib?1:-1); +}; +r=_8c3(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +for(var i=0;idiv.combo-p>div.combo-panel:visible").panel("close"); +}); +}); +function _8d5(_8d6){ +var _8d7=$.data(_8d6,"combo"); +var opts=_8d7.options; +if(!_8d7.panel){ +_8d7.panel=$("
          ").appendTo("body"); +_8d7.panel.panel({minWidth:opts.panelMinWidth,maxWidth:opts.panelMaxWidth,minHeight:opts.panelMinHeight,maxHeight:opts.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ +var _8d8=$(this).panel("options").comboTarget; +var _8d9=$.data(_8d8,"combo"); +if(_8d9){ +_8d9.options.onShowPanel.call(_8d8); +} +},onBeforeClose:function(){ +_8d4(this); +},onClose:function(){ +var _8da=$(this).panel("options").comboTarget; +var _8db=$.data(_8da,"combo"); +if(_8db){ +_8db.options.onHidePanel.call(_8da); +} +}}); +} +var _8dc=$.extend(true,[],opts.icons); +if(opts.hasDownArrow){ +_8dc.push({iconCls:"combo-arrow",handler:function(e){ +_8e0(e.data.target); +}}); +} +$(_8d6).addClass("combo-f").textbox($.extend({},opts,{icons:_8dc,onChange:function(){ +}})); +$(_8d6).attr("comboName",$(_8d6).attr("textboxName")); +_8d7.combo=$(_8d6).next(); +_8d7.combo.addClass("combo"); +}; +function _8dd(_8de){ +var _8df=$.data(_8de,"combo"); +var opts=_8df.options; +var p=_8df.panel; +if(p.is(":visible")){ +p.panel("close"); +} +if(!opts.cloned){ +p.panel("destroy"); +} +$(_8de).textbox("destroy"); +}; +function _8e0(_8e1){ +var _8e2=$.data(_8e1,"combo").panel; +if(_8e2.is(":visible")){ +_8e3(_8e1); +}else{ +var p=$(_8e1).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_8e2).not(p).panel("close"); +$(_8e1).combo("showPanel"); +} +$(_8e1).combo("textbox").focus(); +}; +function _8d4(_8e4){ +$(_8e4).find(".combo-f").each(function(){ +var p=$(this).combo("panel"); +if(p.is(":visible")){ +p.panel("close"); +} +}); +}; +function _8e5(e){ +var _8e6=e.data.target; +var _8e7=$.data(_8e6,"combo"); +var opts=_8e7.options; +var _8e8=_8e7.panel; +if(!opts.editable){ +_8e0(_8e6); +}else{ +var p=$(_8e6).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_8e8).not(p).panel("close"); +} +}; +function _8e9(e){ +var _8ea=e.data.target; +var t=$(_8ea); +var _8eb=t.data("combo"); +var opts=t.combo("options"); +switch(e.keyCode){ +case 38: +opts.keyHandler.up.call(_8ea,e); +break; +case 40: +opts.keyHandler.down.call(_8ea,e); +break; +case 37: +opts.keyHandler.left.call(_8ea,e); +break; +case 39: +opts.keyHandler.right.call(_8ea,e); +break; +case 13: +e.preventDefault(); +opts.keyHandler.enter.call(_8ea,e); +return false; +case 9: +case 27: +_8e3(_8ea); +break; +default: +if(opts.editable){ +if(_8eb.timer){ +clearTimeout(_8eb.timer); +} +_8eb.timer=setTimeout(function(){ +var q=t.combo("getText"); +if(_8eb.previousText!=q){ +_8eb.previousText=q; +t.combo("showPanel"); +opts.keyHandler.query.call(_8ea,q,e); +t.combo("validate"); +} +},opts.delay); +} +} +}; +function _8ec(_8ed){ +var _8ee=$.data(_8ed,"combo"); +var _8ef=_8ee.combo; +var _8f0=_8ee.panel; +var opts=$(_8ed).combo("options"); +var _8f1=_8f0.panel("options"); +_8f1.comboTarget=_8ed; +if(_8f1.closed){ +_8f0.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:$.fn.window.defaults.zIndex++),left:-999999}); +_8f0.panel("resize",{width:(opts.panelWidth?opts.panelWidth:_8ef._outerWidth()),height:opts.panelHeight}); +_8f0.panel("panel").hide(); +_8f0.panel("open"); +} +(function(){ +if(_8f0.is(":visible")){ +_8f0.panel("move",{left:_8f2(),top:_8f3()}); +setTimeout(arguments.callee,200); +} +})(); +function _8f2(){ +var left=_8ef.offset().left; +if(opts.panelAlign=="right"){ +left+=_8ef._outerWidth()-_8f0._outerWidth(); +} +if(left+_8f0._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ +left=$(window)._outerWidth()+$(document).scrollLeft()-_8f0._outerWidth(); +} +if(left<0){ +left=0; +} +return left; +}; +function _8f3(){ +var top=_8ef.offset().top+_8ef._outerHeight(); +if(top+_8f0._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +top=_8ef.offset().top-_8f0._outerHeight(); +} +if(top<$(document).scrollTop()){ +top=_8ef.offset().top+_8ef._outerHeight(); +} +return top; +}; +}; +function _8e3(_8f4){ +var _8f5=$.data(_8f4,"combo").panel; +_8f5.panel("close"); +}; +function _8f6(_8f7){ +var _8f8=$.data(_8f7,"combo"); +var opts=_8f8.options; +var _8f9=_8f8.combo; +$(_8f7).textbox("clear"); +if(opts.multiple){ +_8f9.find(".textbox-value").remove(); +}else{ +_8f9.find(".textbox-value").val(""); +} +}; +function _8fa(_8fb,text){ +var _8fc=$.data(_8fb,"combo"); +var _8fd=$(_8fb).textbox("getText"); +if(_8fd!=text){ +$(_8fb).textbox("setText",text); +_8fc.previousText=text; +} +}; +function _8fe(_8ff){ +var _900=[]; +var _901=$.data(_8ff,"combo").combo; +_901.find(".textbox-value").each(function(){ +_900.push($(this).val()); +}); +return _900; +}; +function _902(_903,_904){ +var _905=$.data(_903,"combo"); +var opts=_905.options; +var _906=_905.combo; +if(!$.isArray(_904)){ +_904=_904.split(opts.separator); +} +var _907=_8fe(_903); +_906.find(".textbox-value").remove(); +var name=$(_903).attr("textboxName")||""; +for(var i=0;i<_904.length;i++){ +var _908=$("").appendTo(_906); +_908.attr("name",name); +if(opts.disabled){ +_908.attr("disabled","disabled"); +} +_908.val(_904[i]); +} +var _909=(function(){ +if(_907.length!=_904.length){ +return true; +} +var a1=$.extend(true,[],_907); +var a2=$.extend(true,[],_904); +a1.sort(); +a2.sort(); +for(var i=0;i_924.height()){ +var h=_924.scrollTop()+item.position().top+item.outerHeight()-_924.height(); +_924.scrollTop(h); +} +} +} +}; +function nav(_925,dir){ +var opts=$.data(_925,"combobox").options; +var _926=$(_925).combobox("panel"); +var item=_926.children("div.combobox-item-hover"); +if(!item.length){ +item=_926.children("div.combobox-item-selected"); +} +item.removeClass("combobox-item-hover"); +var _927="div.combobox-item:visible:not(.combobox-item-disabled):first"; +var _928="div.combobox-item:visible:not(.combobox-item-disabled):last"; +if(!item.length){ +item=_926.children(dir=="next"?_927:_928); +}else{ +if(dir=="next"){ +item=item.nextAll(_927); +if(!item.length){ +item=_926.children(_927); +} +}else{ +item=item.prevAll(_927); +if(!item.length){ +item=_926.children(_928); +} +} +} +if(item.length){ +item.addClass("combobox-item-hover"); +var row=opts.finder.getRow(_925,item); +if(row){ +_921(_925,row[opts.valueField]); +if(opts.selectOnNavigation){ +_929(_925,row[opts.valueField]); +} +} +} +}; +function _929(_92a,_92b){ +var opts=$.data(_92a,"combobox").options; +var _92c=$(_92a).combo("getValues"); +if($.inArray(_92b+"",_92c)==-1){ +if(opts.multiple){ +_92c.push(_92b); +}else{ +_92c=[_92b]; +} +_92d(_92a,_92c); +opts.onSelect.call(_92a,opts.finder.getRow(_92a,_92b)); +} +}; +function _92e(_92f,_930){ +var opts=$.data(_92f,"combobox").options; +var _931=$(_92f).combo("getValues"); +var _932=$.inArray(_930+"",_931); +if(_932>=0){ +_931.splice(_932,1); +_92d(_92f,_931); +opts.onUnselect.call(_92f,opts.finder.getRow(_92f,_930)); +} +}; +function _92d(_933,_934,_935){ +var opts=$.data(_933,"combobox").options; +var _936=$(_933).combo("panel"); +if(!$.isArray(_934)){ +_934=_934.split(opts.separator); +} +_936.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +var vv=[],ss=[]; +for(var i=0;i<_934.length;i++){ +var v=_934[i]; +var s=v; +opts.finder.getEl(_933,v).addClass("combobox-item-selected"); +var row=opts.finder.getRow(_933,v); +if(row){ +s=row[opts.textField]; +} +vv.push(v); +ss.push(s); +} +$(_933).combo("setValues",vv); +if(!_935){ +$(_933).combo("setText",ss.join(opts.separator)); +} +}; +function _937(_938,data,_939){ +var _93a=$.data(_938,"combobox"); +var opts=_93a.options; +_93a.data=opts.loadFilter.call(_938,data); +_93a.groups=[]; +data=_93a.data; +var _93b=$(_938).combobox("getValues"); +var dd=[]; +var _93c=undefined; +for(var i=0;i"); +dd.push(opts.groupFormatter?opts.groupFormatter.call(_938,g):g); +dd.push("
          "); +} +}else{ +_93c=undefined; +} +var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); +dd.push("
          "); +dd.push(opts.formatter?opts.formatter.call(_938,row):s); +dd.push("
          "); +if(row["selected"]&&$.inArray(v,_93b)==-1){ +_93b.push(v); +} +} +$(_938).combo("panel").html(dd.join("")); +if(opts.multiple){ +_92d(_938,_93b,_939); +}else{ +_92d(_938,_93b.length?[_93b[_93b.length-1]]:[],_939); +} +opts.onLoadSuccess.call(_938,data); +}; +function _93d(_93e,url,_93f,_940){ +var opts=$.data(_93e,"combobox").options; +if(url){ +opts.url=url; +} +_93f=_93f||{}; +if(opts.onBeforeLoad.call(_93e,_93f)==false){ +return; +} +opts.loader.call(_93e,_93f,function(data){ +_937(_93e,data,_940); +},function(){ +opts.onLoadError.apply(this,arguments); +}); +}; +function _941(_942,q){ +var _943=$.data(_942,"combobox"); +var opts=_943.options; +if(opts.multiple&&!q){ +_92d(_942,[],true); +}else{ +_92d(_942,[q],true); +} +if(opts.mode=="remote"){ +_93d(_942,null,{q:q},true); +}else{ +var _944=$(_942).combo("panel"); +_944.find("div.combobox-item-selected,div.combobox-item-hover").removeClass("combobox-item-selected combobox-item-hover"); +_944.find("div.combobox-item,div.combobox-group").hide(); +var data=_943.data; +var vv=[]; +var qq=opts.multiple?q.split(opts.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +var _945=undefined; +for(var i=0;i=0){ +vv.push(v); +} +}); +t.combobox("setValues",vv); +if(!opts.multiple){ +t.combobox("hidePanel"); +} +}; +function _94a(_94b){ +var _94c=$.data(_94b,"combobox"); +var opts=_94c.options; +_91c++; +_94c.itemIdPrefix="_easyui_combobox_i"+_91c; +_94c.groupIdPrefix="_easyui_combobox_g"+_91c; +$(_94b).addClass("combobox-f"); +$(_94b).combo($.extend({},opts,{onShowPanel:function(){ +$(_94b).combo("panel").find("div.combobox-item,div.combobox-group").show(); +_921(_94b,$(_94b).combobox("getValue")); +opts.onShowPanel.call(_94b); +}})); +$(_94b).combo("panel").unbind().bind("mouseover",function(e){ +$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); +var item=$(e.target).closest("div.combobox-item"); +if(!item.hasClass("combobox-item-disabled")){ +item.addClass("combobox-item-hover"); +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); +e.stopPropagation(); +}).bind("click",function(e){ +var item=$(e.target).closest("div.combobox-item"); +if(!item.length||item.hasClass("combobox-item-disabled")){ +return; +} +var row=opts.finder.getRow(_94b,item); +if(!row){ +return; +} +var _94d=row[opts.valueField]; +if(opts.multiple){ +if(item.hasClass("combobox-item-selected")){ +_92e(_94b,_94d); +}else{ +_929(_94b,_94d); +} +}else{ +_929(_94b,_94d); +$(_94b).combo("hidePanel"); +} +e.stopPropagation(); +}); +}; +$.fn.combobox=function(_94e,_94f){ +if(typeof _94e=="string"){ +var _950=$.fn.combobox.methods[_94e]; +if(_950){ +return _950(this,_94f); +}else{ +return this.combo(_94e,_94f); +} +} +_94e=_94e||{}; +return this.each(function(){ +var _951=$.data(this,"combobox"); +if(_951){ +$.extend(_951.options,_94e); +_94a(this); +}else{ +_951=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_94e),data:[]}); +_94a(this); +var data=$.fn.combobox.parseData(this); +if(data.length){ +_937(this,data); +} +} +if(_951.options.data){ +_937(this,_951.options.data); +} +_93d(this); +}); +}; +$.fn.combobox.methods={options:function(jq){ +var _952=jq.combo("options"); +return $.extend($.data(jq[0],"combobox").options,{width:_952.width,height:_952.height,originalValue:_952.originalValue,disabled:_952.disabled,readonly:_952.readonly}); +},getData:function(jq){ +return $.data(jq[0],"combobox").data; +},setValues:function(jq,_953){ +return jq.each(function(){ +_92d(this,_953); +}); +},setValue:function(jq,_954){ +return jq.each(function(){ +_92d(this,[_954]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combo("clear"); +var _955=$(this).combo("panel"); +_955.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combobox("options"); +if(opts.multiple){ +$(this).combobox("setValues",opts.originalValue); +}else{ +$(this).combobox("setValue",opts.originalValue); +} +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_937(this,data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +_93d(this,url); +}); +},select:function(jq,_956){ +return jq.each(function(){ +_929(this,_956); +}); +},unselect:function(jq,_957){ +return jq.each(function(){ +_92e(this,_957); +}); +}}; +$.fn.combobox.parseOptions=function(_958){ +var t=$(_958); +return $.extend({},$.fn.combo.parseOptions(_958),$.parser.parseOptions(_958,["valueField","textField","groupField","mode","method","url"])); +}; +$.fn.combobox.parseData=function(_959){ +var data=[]; +var opts=$(_959).combobox("options"); +$(_959).children().each(function(){ +if(this.tagName.toLowerCase()=="optgroup"){ +var _95a=$(this).attr("label"); +$(this).children().each(function(){ +_95b(this,_95a); +}); +}else{ +_95b(this); +} +}); +return data; +function _95b(el,_95c){ +var t=$(el); +var row={}; +row[opts.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); +row[opts.textField]=t.text(); +row["selected"]=t.is(":selected"); +row["disabled"]=t.is(":disabled"); +if(_95c){ +opts.groupField=opts.groupField||"group"; +row[opts.groupField]=_95c; +} +data.push(row); +}; +}; +$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupField:null,groupFormatter:function(_95d){ +return _95d; +},mode:"local",method:"post",url:null,data:null,keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_946(this); +},query:function(q,e){ +_941(this,q); +}},filter:function(q,row){ +var opts=$(this).combobox("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())==0; +},formatter:function(row){ +var opts=$(this).combobox("options"); +return row[opts.textField]; +},loader:function(_95e,_95f,_960){ +var opts=$(this).combobox("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_95e,dataType:"json",success:function(data){ +_95f(data); +},error:function(){ +_960.apply(this,arguments); +}}); +},loadFilter:function(data){ +return data; +},finder:{getEl:function(_961,_962){ +var _963=_91d(_961,_962); +var id=$.data(_961,"combobox").itemIdPrefix+"_"+_963; +return $("#"+id); +},getRow:function(_964,p){ +var _965=$.data(_964,"combobox"); +var _966=(p instanceof jQuery)?p.attr("id").substr(_965.itemIdPrefix.length+1):_91d(_964,p); +return _965.data[parseInt(_966)]; +}},onBeforeLoad:function(_967){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onSelect:function(_968){ +},onUnselect:function(_969){ +}}); +})(jQuery); +(function($){ +function _96a(_96b){ +var _96c=$.data(_96b,"combotree"); +var opts=_96c.options; +var tree=_96c.tree; +$(_96b).addClass("combotree-f"); +$(_96b).combo(opts); +var _96d=$(_96b).combo("panel"); +if(!tree){ +tree=$("
            ").appendTo(_96d); +$.data(_96b,"combotree").tree=tree; +} +tree.tree($.extend({},opts,{checkbox:opts.multiple,onLoadSuccess:function(node,data){ +var _96e=$(_96b).combotree("getValues"); +if(opts.multiple){ +var _96f=tree.tree("getChecked"); +for(var i=0;i<_96f.length;i++){ +var id=_96f[i].id; +(function(){ +for(var i=0;i<_96e.length;i++){ +if(id==_96e[i]){ +return; +} +} +_96e.push(id); +})(); +} +} +$(_96b).combotree("setValues",_96e); +opts.onLoadSuccess.call(this,node,data); +},onClick:function(node){ +if(opts.multiple){ +$(this).tree(node.checked?"uncheck":"check",node.target); +}else{ +$(_96b).combo("hidePanel"); +} +_971(_96b); +opts.onClick.call(this,node); +},onCheck:function(node,_970){ +_971(_96b); +opts.onCheck.call(this,node,_970); +}})); +}; +function _971(_972){ +var _973=$.data(_972,"combotree"); +var opts=_973.options; +var tree=_973.tree; +var vv=[],ss=[]; +if(opts.multiple){ +var _974=tree.tree("getChecked"); +for(var i=0;i<_974.length;i++){ +vv.push(_974[i].id); +ss.push(_974[i].text); +} +}else{ +var node=tree.tree("getSelected"); +if(node){ +vv.push(node.id); +ss.push(node.text); +} +} +$(_972).combo("setValues",vv).combo("setText",ss.join(opts.separator)); +}; +function _975(_976,_977){ +var _978=$.data(_976,"combotree"); +var opts=_978.options; +var tree=_978.tree; +var _979=tree.tree("options"); +var _97a=_979.onCheck; +var _97b=_979.onSelect; +_979.onCheck=_979.onSelect=function(){ +}; +tree.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); +if(!$.isArray(_977)){ +_977=_977.split(opts.separator); +} +for(var i=0;i<_977.length;i++){ +var node=tree.tree("find",_977[i]); +if(node){ +tree.tree("check",node.target); +tree.tree("select",node.target); +} +} +_979.onCheck=_97a; +_979.onSelect=_97b; +_971(_976); +}; +$.fn.combotree=function(_97c,_97d){ +if(typeof _97c=="string"){ +var _97e=$.fn.combotree.methods[_97c]; +if(_97e){ +return _97e(this,_97d); +}else{ +return this.combo(_97c,_97d); +} +} +_97c=_97c||{}; +return this.each(function(){ +var _97f=$.data(this,"combotree"); +if(_97f){ +$.extend(_97f.options,_97c); +}else{ +$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_97c)}); +} +_96a(this); +}); +}; +$.fn.combotree.methods={options:function(jq){ +var _980=jq.combo("options"); +return $.extend($.data(jq[0],"combotree").options,{width:_980.width,height:_980.height,originalValue:_980.originalValue,disabled:_980.disabled,readonly:_980.readonly}); +},clone:function(jq,_981){ +var t=jq.combo("clone",_981); +t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")}); +return t; +},tree:function(jq){ +return $.data(jq[0],"combotree").tree; +},loadData:function(jq,data){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +opts.data=data; +var tree=$.data(this,"combotree").tree; +tree.tree("loadData",data); +}); +},reload:function(jq,url){ +return jq.each(function(){ +var opts=$.data(this,"combotree").options; +var tree=$.data(this,"combotree").tree; +if(url){ +opts.url=url; +} +tree.tree({url:opts.url}); +}); +},setValues:function(jq,_982){ +return jq.each(function(){ +_975(this,_982); +}); +},setValue:function(jq,_983){ +return jq.each(function(){ +_975(this,[_983]); +}); +},clear:function(jq){ +return jq.each(function(){ +var tree=$.data(this,"combotree").tree; +tree.find("div.tree-node-selected").removeClass("tree-node-selected"); +var cc=tree.tree("getChecked"); +for(var i=0;i").appendTo(_98b); +_987.grid=grid; +} +grid.datagrid($.extend({},opts,{border:false,singleSelect:(!opts.multiple),onLoadSuccess:function(data){ +var _98c=$(_986).combo("getValues"); +var _98d=opts.onSelect; +opts.onSelect=function(){ +}; +_997(_986,_98c,_987.remainText); +opts.onSelect=_98d; +opts.onLoadSuccess.apply(_986,arguments); +},onClickRow:_98e,onSelect:function(_98f,row){ +_990(); +opts.onSelect.call(this,_98f,row); +},onUnselect:function(_991,row){ +_990(); +opts.onUnselect.call(this,_991,row); +},onSelectAll:function(rows){ +_990(); +opts.onSelectAll.call(this,rows); +},onUnselectAll:function(rows){ +if(opts.multiple){ +_990(); +} +opts.onUnselectAll.call(this,rows); +}})); +function _98e(_992,row){ +_987.remainText=false; +_990(); +if(!opts.multiple){ +$(_986).combo("hidePanel"); +} +opts.onClickRow.call(this,_992,row); +}; +function _990(){ +var rows=grid.datagrid("getSelections"); +var vv=[],ss=[]; +for(var i=0;i=_995){ +_996=0; +} +} +grid.datagrid("highlightRow",_996); +if(opts.selectOnNavigation){ +_994.remainText=false; +grid.datagrid("selectRow",_996); +} +}; +function _997(_998,_999,_99a){ +var _99b=$.data(_998,"combogrid"); +var opts=_99b.options; +var grid=_99b.grid; +var rows=grid.datagrid("getRows"); +var ss=[]; +var _99c=$(_998).combo("getValues"); +var _99d=$(_998).combo("options"); +var _99e=_99d.onChange; +_99d.onChange=function(){ +}; +grid.datagrid("clearSelections"); +if(!$.isArray(_999)){ +_999=_999.split(opts.separator); +} +for(var i=0;i<_999.length;i++){ +var _99f=grid.datagrid("getRowIndex",_999[i]); +if(_99f>=0){ +grid.datagrid("selectRow",_99f); +ss.push(rows[_99f][opts.textField]); +}else{ +ss.push(_999[i]); +} +} +$(_998).combo("setValues",_99c); +_99d.onChange=_99e; +$(_998).combo("setValues",_999); +if(!_99a){ +var s=ss.join(opts.separator); +if($(_998).combo("getText")!=s){ +$(_998).combo("setText",s); +} +} +}; +function _9a0(_9a1,q){ +var _9a2=$.data(_9a1,"combogrid"); +var opts=_9a2.options; +var grid=_9a2.grid; +_9a2.remainText=true; +if(opts.multiple&&!q){ +_997(_9a1,[],true); +}else{ +_997(_9a1,[q],true); +} +if(opts.mode=="remote"){ +grid.datagrid("clearSelections"); +grid.datagrid("load",$.extend({},opts.queryParams,{q:q})); +}else{ +if(!q){ +return; +} +grid.datagrid("clearSelections").datagrid("highlightRow",-1); +var rows=grid.datagrid("getRows"); +var qq=opts.multiple?q.split(opts.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +if(q){ +$.map(rows,function(row,i){ +if(q==row[opts.textField]){ +grid.datagrid("selectRow",i); +}else{ +if(opts.filter.call(_9a1,q,row)){ +grid.datagrid("highlightRow",i); +} +} +}); +} +}); +} +}; +function _9a3(_9a4){ +var _9a5=$.data(_9a4,"combogrid"); +var opts=_9a5.options; +var grid=_9a5.grid; +var tr=opts.finder.getTr(grid[0],null,"highlight"); +_9a5.remainText=false; +if(tr.length){ +var _9a6=parseInt(tr.attr("datagrid-row-index")); +if(opts.multiple){ +if(tr.hasClass("datagrid-row-selected")){ +grid.datagrid("unselectRow",_9a6); +}else{ +grid.datagrid("selectRow",_9a6); +} +}else{ +grid.datagrid("selectRow",_9a6); +} +} +var vv=[]; +$.map(grid.datagrid("getSelections"),function(row){ +vv.push(row[opts.idField]); +}); +$(_9a4).combogrid("setValues",vv); +if(!opts.multiple){ +$(_9a4).combogrid("hidePanel"); +} +}; +$.fn.combogrid=function(_9a7,_9a8){ +if(typeof _9a7=="string"){ +var _9a9=$.fn.combogrid.methods[_9a7]; +if(_9a9){ +return _9a9(this,_9a8); +}else{ +return this.combo(_9a7,_9a8); +} +} +_9a7=_9a7||{}; +return this.each(function(){ +var _9aa=$.data(this,"combogrid"); +if(_9aa){ +$.extend(_9aa.options,_9a7); +}else{ +_9aa=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_9a7)}); +} +_985(this); +}); +}; +$.fn.combogrid.methods={options:function(jq){ +var _9ab=jq.combo("options"); +return $.extend($.data(jq[0],"combogrid").options,{width:_9ab.width,height:_9ab.height,originalValue:_9ab.originalValue,disabled:_9ab.disabled,readonly:_9ab.readonly}); +},grid:function(jq){ +return $.data(jq[0],"combogrid").grid; +},setValues:function(jq,_9ac){ +return jq.each(function(){ +_997(this,_9ac); +}); +},setValue:function(jq,_9ad){ +return jq.each(function(){ +_997(this,[_9ad]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combogrid("grid").datagrid("clearSelections"); +$(this).combo("clear"); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).combogrid("options"); +if(opts.multiple){ +$(this).combogrid("setValues",opts.originalValue); +}else{ +$(this).combogrid("setValue",opts.originalValue); +} +}); +}}; +$.fn.combogrid.parseOptions=function(_9ae){ +var t=$(_9ae); +return $.extend({},$.fn.combo.parseOptions(_9ae),$.fn.datagrid.parseOptions(_9ae),$.parser.parseOptions(_9ae,["idField","textField","mode"])); +}; +$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{height:22,loadMsg:null,idField:null,textField:null,mode:"local",keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9a3(this); +},query:function(q,e){ +_9a0(this,q); +}},filter:function(q,row){ +var opts=$(this).combogrid("options"); +return row[opts.textField].toLowerCase().indexOf(q.toLowerCase())==0; +}}); +})(jQuery); +(function($){ +function _9af(_9b0){ +var _9b1=$.data(_9b0,"datebox"); +var opts=_9b1.options; +$(_9b0).addClass("datebox-f").combo($.extend({},opts,{onShowPanel:function(){ +_9b2(this); +_9b3(this); +_9b4(this); +_9c2(this,$(this).datebox("getText"),true); +opts.onShowPanel.call(this); +}})); +if(!_9b1.calendar){ +var _9b5=$(_9b0).combo("panel").css("overflow","hidden"); +_9b5.panel("options").onBeforeDestroy=function(){ +var c=$(this).find(".calendar-shared"); +if(c.length){ +c.insertBefore(c[0].pholder); +} +}; +var cc=$("
            ").prependTo(_9b5); +if(opts.sharedCalendar){ +var c=$(opts.sharedCalendar); +if(!c[0].pholder){ +c[0].pholder=$("
            ").insertAfter(c); +} +c.addClass("calendar-shared").appendTo(cc); +if(!c.hasClass("calendar")){ +c.calendar(); +} +_9b1.calendar=c; +}else{ +_9b1.calendar=$("
            ").appendTo(cc).calendar(); +} +$.extend(_9b1.calendar.calendar("options"),{fit:true,border:false,onSelect:function(date){ +var _9b6=this.target; +var opts=$(_9b6).datebox("options"); +_9c2(_9b6,opts.formatter.call(_9b6,date)); +$(_9b6).combo("hidePanel"); +opts.onSelect.call(_9b6,date); +}}); +} +$(_9b0).combo("textbox").parent().addClass("datebox"); +$(_9b0).datebox("initValue",opts.value); +function _9b2(_9b7){ +var opts=$(_9b7).datebox("options"); +var _9b8=$(_9b7).combo("panel"); +_9b8.unbind(".datebox").bind("click.datebox",function(e){ +if($(e.target).hasClass("datebox-button-a")){ +var _9b9=parseInt($(e.target).attr("datebox-button-index")); +opts.buttons[_9b9].handler.call(e.target,_9b7); +} +}); +}; +function _9b3(_9ba){ +var _9bb=$(_9ba).combo("panel"); +if(_9bb.children("div.datebox-button").length){ +return; +} +var _9bc=$("
            ").appendTo(_9bb); +var tr=_9bc.find("tr"); +for(var i=0;i").appendTo(tr); +var btn=opts.buttons[i]; +var t=$("").html($.isFunction(btn.text)?btn.text(_9ba):btn.text).appendTo(td); +t.attr("datebox-button-index",i); +} +tr.find("td").css("width",(100/opts.buttons.length)+"%"); +}; +function _9b4(_9bd){ +var _9be=$(_9bd).combo("panel"); +var cc=_9be.children("div.datebox-calendar-inner"); +_9be.children()._outerWidth(_9be.width()); +_9b1.calendar.appendTo(cc); +_9b1.calendar[0].target=_9bd; +if(opts.panelHeight!="auto"){ +var _9bf=_9be.height(); +_9be.children().not(cc).each(function(){ +_9bf-=$(this).outerHeight(); +}); +cc._outerHeight(_9bf); +} +_9b1.calendar.calendar("resize"); +}; +}; +function _9c0(_9c1,q){ +_9c2(_9c1,q,true); +}; +function _9c3(_9c4){ +var _9c5=$.data(_9c4,"datebox"); +var opts=_9c5.options; +var _9c6=_9c5.calendar.calendar("options").current; +if(_9c6){ +_9c2(_9c4,opts.formatter.call(_9c4,_9c6)); +$(_9c4).combo("hidePanel"); +} +}; +function _9c2(_9c7,_9c8,_9c9){ +var _9ca=$.data(_9c7,"datebox"); +var opts=_9ca.options; +var _9cb=_9ca.calendar; +$(_9c7).combo("setValue",_9c8); +_9cb.calendar("moveTo",opts.parser.call(_9c7,_9c8)); +if(!_9c9){ +if(_9c8){ +_9c8=opts.formatter.call(_9c7,_9cb.calendar("options").current); +$(_9c7).combo("setValue",_9c8).combo("setText",_9c8); +}else{ +$(_9c7).combo("setText",_9c8); +} +} +}; +$.fn.datebox=function(_9cc,_9cd){ +if(typeof _9cc=="string"){ +var _9ce=$.fn.datebox.methods[_9cc]; +if(_9ce){ +return _9ce(this,_9cd); +}else{ +return this.combo(_9cc,_9cd); +} +} +_9cc=_9cc||{}; +return this.each(function(){ +var _9cf=$.data(this,"datebox"); +if(_9cf){ +$.extend(_9cf.options,_9cc); +}else{ +$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_9cc)}); +} +_9af(this); +}); +}; +$.fn.datebox.methods={options:function(jq){ +var _9d0=jq.combo("options"); +return $.extend($.data(jq[0],"datebox").options,{width:_9d0.width,height:_9d0.height,originalValue:_9d0.originalValue,disabled:_9d0.disabled,readonly:_9d0.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).combo("cloneFrom",from); +$.data(this,"datebox",{options:$.extend(true,{},$(from).datebox("options")),calendar:$(from).datebox("calendar")}); +$(this).addClass("datebox-f"); +}); +},calendar:function(jq){ +return $.data(jq[0],"datebox").calendar; +},initValue:function(jq,_9d1){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +var _9d2=opts.value; +if(_9d2){ +_9d2=opts.formatter.call(this,opts.parser.call(this,_9d2)); +} +$(this).combo("initValue",_9d2).combo("setText",_9d2); +}); +},setValue:function(jq,_9d3){ +return jq.each(function(){ +_9c2(this,_9d3); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datebox("options"); +$(this).datebox("setValue",opts.originalValue); +}); +}}; +$.fn.datebox.parseOptions=function(_9d4){ +return $.extend({},$.fn.combo.parseOptions(_9d4),$.parser.parseOptions(_9d4,["sharedCalendar"])); +}; +$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9c3(this); +},query:function(q,e){ +_9c0(this,q); +}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_9d5){ +return $(_9d5).datebox("options").currentText; +},handler:function(_9d6){ +$(_9d6).datebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); +_9c3(_9d6); +}},{text:function(_9d7){ +return $(_9d7).datebox("options").closeText; +},handler:function(_9d8){ +$(this).closest("div.combo-panel").panel("close"); +}}],formatter:function(date){ +var y=date.getFullYear(); +var m=date.getMonth()+1; +var d=date.getDate(); +return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y; +},parser:function(s){ +if(!s){ +return new Date(); +} +var ss=s.split("/"); +var m=parseInt(ss[0],10); +var d=parseInt(ss[1],10); +var y=parseInt(ss[2],10); +if(!isNaN(y)&&!isNaN(m)&&!isNaN(d)){ +return new Date(y,m-1,d); +}else{ +return new Date(); +} +},onSelect:function(date){ +}}); +})(jQuery); +(function($){ +function _9d9(_9da){ +var _9db=$.data(_9da,"datetimebox"); +var opts=_9db.options; +$(_9da).datebox($.extend({},opts,{onShowPanel:function(){ +var _9dc=$(this).datetimebox("getValue"); +_9e2(this,_9dc,true); +opts.onShowPanel.call(this); +},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); +$(_9da).removeClass("datebox-f").addClass("datetimebox-f"); +$(_9da).datebox("calendar").calendar({onSelect:function(date){ +opts.onSelect.call(this.target,date); +}}); +if(!_9db.spinner){ +var _9dd=$(_9da).datebox("panel"); +var p=$("
            ").insertAfter(_9dd.children("div.datebox-calendar-inner")); +_9db.spinner=p.children("input"); +} +_9db.spinner.timespinner({width:opts.spinnerWidth,showSeconds:opts.showSeconds,separator:opts.timeSeparator}); +$(_9da).datetimebox("initValue",opts.value); +}; +function _9de(_9df){ +var c=$(_9df).datetimebox("calendar"); +var t=$(_9df).datetimebox("spinner"); +var date=c.calendar("options").current; +return new Date(date.getFullYear(),date.getMonth(),date.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); +}; +function _9e0(_9e1,q){ +_9e2(_9e1,q,true); +}; +function _9e3(_9e4){ +var opts=$.data(_9e4,"datetimebox").options; +var date=_9de(_9e4); +_9e2(_9e4,opts.formatter.call(_9e4,date)); +$(_9e4).combo("hidePanel"); +}; +function _9e2(_9e5,_9e6,_9e7){ +var opts=$.data(_9e5,"datetimebox").options; +$(_9e5).combo("setValue",_9e6); +if(!_9e7){ +if(_9e6){ +var date=opts.parser.call(_9e5,_9e6); +$(_9e5).combo("setValue",opts.formatter.call(_9e5,date)); +$(_9e5).combo("setText",opts.formatter.call(_9e5,date)); +}else{ +$(_9e5).combo("setText",_9e6); +} +} +var date=opts.parser.call(_9e5,_9e6); +$(_9e5).datetimebox("calendar").calendar("moveTo",date); +$(_9e5).datetimebox("spinner").timespinner("setValue",_9e8(date)); +function _9e8(date){ +function _9e9(_9ea){ +return (_9ea<10?"0":"")+_9ea; +}; +var tt=[_9e9(date.getHours()),_9e9(date.getMinutes())]; +if(opts.showSeconds){ +tt.push(_9e9(date.getSeconds())); +} +return tt.join($(_9e5).datetimebox("spinner").timespinner("options").separator); +}; +}; +$.fn.datetimebox=function(_9eb,_9ec){ +if(typeof _9eb=="string"){ +var _9ed=$.fn.datetimebox.methods[_9eb]; +if(_9ed){ +return _9ed(this,_9ec); +}else{ +return this.datebox(_9eb,_9ec); +} +} +_9eb=_9eb||{}; +return this.each(function(){ +var _9ee=$.data(this,"datetimebox"); +if(_9ee){ +$.extend(_9ee.options,_9eb); +}else{ +$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_9eb)}); +} +_9d9(this); +}); +}; +$.fn.datetimebox.methods={options:function(jq){ +var _9ef=jq.datebox("options"); +return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_9ef.originalValue,disabled:_9ef.disabled,readonly:_9ef.readonly}); +},cloneFrom:function(jq,from){ +return jq.each(function(){ +$(this).datebox("cloneFrom",from); +$.data(this,"datetimebox",{options:$.extend(true,{},$(from).datetimebox("options")),spinner:$(from).datetimebox("spinner")}); +$(this).removeClass("datebox-f").addClass("datetimebox-f"); +}); +},spinner:function(jq){ +return $.data(jq[0],"datetimebox").spinner; +},initValue:function(jq,_9f0){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +var _9f1=opts.value; +if(_9f1){ +_9f1=opts.formatter.call(this,opts.parser.call(this,_9f1)); +} +$(this).combo("initValue",_9f1).combo("setText",_9f1); +}); +},setValue:function(jq,_9f2){ +return jq.each(function(){ +_9e2(this,_9f2); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).datetimebox("options"); +$(this).datetimebox("setValue",opts.originalValue); +}); +}}; +$.fn.datetimebox.parseOptions=function(_9f3){ +var t=$(_9f3); +return $.extend({},$.fn.datebox.parseOptions(_9f3),$.parser.parseOptions(_9f3,["timeSeparator","spinnerWidth",{showSeconds:"boolean"}])); +}; +$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{spinnerWidth:"100%",showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_9e3(this); +},query:function(q,e){ +_9e0(this,q); +}},buttons:[{text:function(_9f4){ +return $(_9f4).datetimebox("options").currentText; +},handler:function(_9f5){ +var opts=$(_9f5).datetimebox("options"); +_9e2(_9f5,opts.formatter.call(_9f5,new Date())); +$(_9f5).datetimebox("hidePanel"); +}},{text:function(_9f6){ +return $(_9f6).datetimebox("options").okText; +},handler:function(_9f7){ +_9e3(_9f7); +}},{text:function(_9f8){ +return $(_9f8).datetimebox("options").closeText; +},handler:function(_9f9){ +$(_9f9).datetimebox("hidePanel"); +}}],formatter:function(date){ +var h=date.getHours(); +var M=date.getMinutes(); +var s=date.getSeconds(); +function _9fa(_9fb){ +return (_9fb<10?"0":"")+_9fb; +}; +var _9fc=$(this).datetimebox("spinner").timespinner("options").separator; +var r=$.fn.datebox.defaults.formatter(date)+" "+_9fa(h)+_9fc+_9fa(M); +if($(this).datetimebox("options").showSeconds){ +r+=_9fc+_9fa(s); +} +return r; +},parser:function(s){ +if($.trim(s)==""){ +return new Date(); +} +var dt=s.split(" "); +var d=$.fn.datebox.defaults.parser(dt[0]); +if(dt.length<2){ +return d; +} +var _9fd=$(this).datetimebox("spinner").timespinner("options").separator; +var tt=dt[1].split(_9fd); +var hour=parseInt(tt[0],10)||0; +var _9fe=parseInt(tt[1],10)||0; +var _9ff=parseInt(tt[2],10)||0; +return new Date(d.getFullYear(),d.getMonth(),d.getDate(),hour,_9fe,_9ff); +}}); +})(jQuery); +(function($){ +function init(_a00){ +var _a01=$("
            "+"
            "+""+""+"
            "+"
            "+"
            "+"
            "+""+"
            ").insertAfter(_a00); +var t=$(_a00); +t.addClass("slider-f").hide(); +var name=t.attr("name"); +if(name){ +_a01.find("input.slider-value").attr("name",name); +t.removeAttr("name").attr("sliderName",name); +} +_a01.bind("_resize",function(e,_a02){ +if($(this).hasClass("easyui-fluid")||_a02){ +_a03(_a00); +} +return false; +}); +return _a01; +}; +function _a03(_a04,_a05){ +var _a06=$.data(_a04,"slider"); +var opts=_a06.options; +var _a07=_a06.slider; +if(_a05){ +if(_a05.width){ +opts.width=_a05.width; +} +if(_a05.height){ +opts.height=_a05.height; +} +} +_a07._size(opts); +if(opts.mode=="h"){ +_a07.css("height",""); +_a07.children("div").css("height",""); +}else{ +_a07.css("width",""); +_a07.children("div").css("width",""); +_a07.children("div.slider-rule,div.slider-rulelabel,div.slider-inner")._outerHeight(_a07._outerHeight()); +} +_a08(_a04); +}; +function _a09(_a0a){ +var _a0b=$.data(_a0a,"slider"); +var opts=_a0b.options; +var _a0c=_a0b.slider; +var aa=opts.mode=="h"?opts.rule:opts.rule.slice(0).reverse(); +if(opts.reversed){ +aa=aa.slice(0).reverse(); +} +_a0d(aa); +function _a0d(aa){ +var rule=_a0c.find("div.slider-rule"); +var _a0e=_a0c.find("div.slider-rulelabel"); +rule.empty(); +_a0e.empty(); +for(var i=0;i").appendTo(rule); +span.css((opts.mode=="h"?"left":"top"),_a0f); +if(aa[i]!="|"){ +span=$("").appendTo(_a0e); +span.html(aa[i]); +if(opts.mode=="h"){ +span.css({left:_a0f,marginLeft:-Math.round(span.outerWidth()/2)}); +}else{ +span.css({top:_a0f,marginTop:-Math.round(span.outerHeight()/2)}); +} +} +} +}; +}; +function _a10(_a11){ +var _a12=$.data(_a11,"slider"); +var opts=_a12.options; +var _a13=_a12.slider; +_a13.removeClass("slider-h slider-v slider-disabled"); +_a13.addClass(opts.mode=="h"?"slider-h":"slider-v"); +_a13.addClass(opts.disabled?"slider-disabled":""); +_a13.find("a.slider-handle").draggable({axis:opts.mode,cursor:"pointer",disabled:opts.disabled,onDrag:function(e){ +var left=e.data.left; +var _a14=_a13.width(); +if(opts.mode!="h"){ +left=e.data.top; +_a14=_a13.height(); +} +if(left<0||left>_a14){ +return false; +}else{ +var _a15=_a27(_a11,left); +_a16(_a15); +return false; +} +},onBeforeDrag:function(){ +_a12.isDragging=true; +},onStartDrag:function(){ +opts.onSlideStart.call(_a11,opts.value); +},onStopDrag:function(e){ +var _a17=_a27(_a11,(opts.mode=="h"?e.data.left:e.data.top)); +_a16(_a17); +opts.onSlideEnd.call(_a11,opts.value); +opts.onComplete.call(_a11,opts.value); +_a12.isDragging=false; +}}); +_a13.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ +if(_a12.isDragging||opts.disabled){ +return; +} +var pos=$(this).offset(); +var _a18=_a27(_a11,(opts.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); +_a16(_a18); +opts.onComplete.call(_a11,opts.value); +}); +function _a16(_a19){ +var s=Math.abs(_a19%opts.step); +if(sopts.max){ +_a1c=opts.max; +} +opts.value=_a1c; +$(_a1b).val(_a1c); +_a1e.find("input.slider-value").val(_a1c); +var pos=_a20(_a1b,_a1c); +var tip=_a1e.find(".slider-tip"); +if(opts.showTip){ +tip.show(); +tip.html(opts.tipFormatter.call(_a1b,opts.value)); +}else{ +tip.hide(); +} +if(opts.mode=="h"){ +var _a21="left:"+pos+"px;"; +_a1e.find(".slider-handle").attr("style",_a21); +tip.attr("style",_a21+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); +}else{ +var _a21="top:"+pos+"px;"; +_a1e.find(".slider-handle").attr("style",_a21); +tip.attr("style",_a21+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); +} +if(_a1f!=_a1c){ +opts.onChange.call(_a1b,_a1c,_a1f); +} +}; +function _a08(_a22){ +var opts=$.data(_a22,"slider").options; +var fn=opts.onChange; +opts.onChange=function(){ +}; +_a1a(_a22,opts.value); +opts.onChange=fn; +}; +function _a20(_a23,_a24){ +var _a25=$.data(_a23,"slider"); +var opts=_a25.options; +var _a26=_a25.slider; +var size=opts.mode=="h"?_a26.width():_a26.height(); +var pos=opts.converter.toPosition.call(_a23,_a24,size); +if(opts.mode=="v"){ +pos=_a26.height()-pos; +} +if(opts.reversed){ +pos=size-pos; +} +return pos.toFixed(0); +}; +function _a27(_a28,pos){ +var _a29=$.data(_a28,"slider"); +var opts=_a29.options; +var _a2a=_a29.slider; +var size=opts.mode=="h"?_a2a.width():_a2a.height(); +var _a2b=opts.converter.toValue.call(_a28,opts.mode=="h"?(opts.reversed?(size-pos):pos):(size-pos),size); +return _a2b.toFixed(0); +}; +$.fn.slider=function(_a2c,_a2d){ +if(typeof _a2c=="string"){ +return $.fn.slider.methods[_a2c](this,_a2d); +} +_a2c=_a2c||{}; +return this.each(function(){ +var _a2e=$.data(this,"slider"); +if(_a2e){ +$.extend(_a2e.options,_a2c); +}else{ +_a2e=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_a2c),slider:init(this)}); +$(this).removeAttr("disabled"); +} +var opts=_a2e.options; +opts.min=parseFloat(opts.min); +opts.max=parseFloat(opts.max); +opts.value=parseFloat(opts.value); +opts.step=parseFloat(opts.step); +opts.originalValue=opts.value; +_a10(this); +_a09(this); +_a03(this); +}); +}; +$.fn.slider.methods={options:function(jq){ +return $.data(jq[0],"slider").options; +},destroy:function(jq){ +return jq.each(function(){ +$.data(this,"slider").slider.remove(); +$(this).remove(); +}); +},resize:function(jq,_a2f){ +return jq.each(function(){ +_a03(this,_a2f); +}); +},getValue:function(jq){ +return jq.slider("options").value; +},setValue:function(jq,_a30){ +return jq.each(function(){ +_a1a(this,_a30); +}); +},clear:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +_a1a(this,opts.min); +}); +},reset:function(jq){ +return jq.each(function(){ +var opts=$(this).slider("options"); +_a1a(this,opts.originalValue); +}); +},enable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=false; +_a10(this); +}); +},disable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=true; +_a10(this); +}); +}}; +$.fn.slider.parseOptions=function(_a31){ +var t=$(_a31); +return $.extend({},$.parser.parseOptions(_a31,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); +}; +$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_a32){ +return _a32; +},converter:{toPosition:function(_a33,size){ +var opts=$(this).slider("options"); +return (_a33-opts.min)/(opts.max-opts.min)*size; +},toValue:function(pos,size){ +var opts=$(this).slider("options"); +return opts.min+(opts.max-opts.min)*(pos/size); +}},onChange:function(_a34,_a35){ +},onSlideStart:function(_a36){ +},onSlideEnd:function(_a37){ +},onComplete:function(_a38){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/licence_gpl.txt b/assets/js/easy-ui/licence_gpl.txt new file mode 100755 index 0000000000..2f6e875180 --- /dev/null +++ b/assets/js/easy-ui/licence_gpl.txt @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + Galleria is a javascript image gallery written in jQuery + Copyright (C) 2008 David Hellsing + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + Galleria Copyright (C) 2008 David Hellsing + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +. diff --git a/assets/js/easy-ui/locale/easyui-lang-af.js b/assets/js/easy-ui/locale/easyui-lang-af.js new file mode 100755 index 0000000000..b8d6c49922 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-af.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Bladsy'; + $.fn.pagination.defaults.afterPageText = 'Van {pages}'; + $.fn.pagination.defaults.displayMsg = 'Wys (from) tot (to) van (total) items'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Verwerking, wag asseblief ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Die styl'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Die veld is verpligtend.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = "Gee 'n geldige e-pos adres."; + $.fn.validatebox.defaults.rules.url.message = "Gee 'n geldige URL nie."; + $.fn.validatebox.defaults.rules.length.message = "Voer 'n waarde tussen {0} en {1}."; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Vandag'; + $.fn.datebox.defaults.closeText = 'Sluit'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-am.js b/assets/js/easy-ui/locale/easyui-lang-am.js new file mode 100755 index 0000000000..c028b52f18 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-am.js @@ -0,0 +1,48 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Էջ'; + $.fn.pagination.defaults.afterPageText = 'ից {pages}'; + $.fn.pagination.defaults.displayMsg = 'Դիտել {from}-ից {to}-ը {total} գրառումից'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Մշակվում է, խնդրում ենք սպասել ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Այո'; + $.messager.defaults.cancel = 'Փակել'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Այս դաշտը պարտադիր է.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Խնդրում ենք մուտքագրել գործող e-mail հասցե.'; + $.fn.validatebox.defaults.rules.url.message = 'Խնդրում ենք մուտքագրել գործող URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Խնդրում ենք մուտքագրել արժեք {0} {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Խնդրում ենք ուղղել այս դաշտը.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['Կ.','Ե.','Ե.','Չ.','Հ.','Ու.','Շ.']; + $.fn.calendar.defaults.months = ['Հունվար', 'Փետրվար', 'Մարտ', 'Ապրիլ', 'Մայիս', 'Հունիս', 'Հուլիս', 'Օգոստոս', 'Սեպտեմբեր', 'Հոկտեմբեր', 'Նոյեմբեր', 'Դեկտեմբեր']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Այսօր'; + $.fn.datebox.defaults.closeText = 'Փակել'; + $.fn.datebox.defaults.okText = 'Այո'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-ar.js b/assets/js/easy-ui/locale/easyui-lang-ar.js new file mode 100755 index 0000000000..f58f8f789c --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-ar.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'صفحة'; + $.fn.pagination.defaults.afterPageText = 'من {pages}'; + $.fn.pagination.defaults.displayMsg = 'عرض {from} إلى {to} من {total} عنصر'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'معالجة, الرجاء الإنتظار ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'موافق'; + $.messager.defaults.cancel = 'إلغاء'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'هذا الحقل مطلوب.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'الرجاء إدخال بريد إلكتروني صحيح.'; + $.fn.validatebox.defaults.rules.url.message = 'الرجاء إدخال رابط صحيح.'; + $.fn.validatebox.defaults.rules.length.message = 'الرجاء إدخال قيمة بين {0} و {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'الرجاء التأكد من الحقل.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'اليوم'; + $.fn.datebox.defaults.closeText = 'إغلاق'; + $.fn.datebox.defaults.okText = 'موافق'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) diff --git a/assets/js/easy-ui/locale/easyui-lang-bg.js b/assets/js/easy-ui/locale/easyui-lang-bg.js new file mode 100755 index 0000000000..4fd45d0a9c --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-bg.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Страница'; + $.fn.pagination.defaults.afterPageText = 'от {pages}'; + $.fn.pagination.defaults.displayMsg = 'Показани {from} за {to} от {total} продукти'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Обработка, моля изчакайте ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Добре'; + $.messager.defaults.cancel = 'Задрасквам'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Това поле е задължително.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Моля, въведете валиден имейл адрес.'; + $.fn.validatebox.defaults.rules.url.message = 'Моля въведете валиден URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Моля, въведете стойност между {0} и {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Днес'; + $.fn.datebox.defaults.closeText = 'Близо'; + $.fn.datebox.defaults.okText = 'Добре'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) diff --git a/assets/js/easy-ui/locale/easyui-lang-ca.js b/assets/js/easy-ui/locale/easyui-lang-ca.js new file mode 100755 index 0000000000..0961ccb390 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-ca.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Pàgina'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = "Veient {from} a {to} de {total} d'articles"; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Elaboració, si us plau esperi ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancel'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Aquest camp és obligatori.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Introduïu una adreça de correu electrònic vàlida.'; + $.fn.validatebox.defaults.rules.url.message = 'Si us plau, introduïu un URL vàlida.'; + $.fn.validatebox.defaults.rules.length.message = 'Si us plau, introduïu un valor entre {0} i {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Avui'; + $.fn.datebox.defaults.closeText = 'Tancar'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-cs.js b/assets/js/easy-ui/locale/easyui-lang-cs.js new file mode 100755 index 0000000000..f0fa3bd3bd --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-cs.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Strana'; + $.fn.pagination.defaults.afterPageText = 'z {pages}'; + $.fn.pagination.defaults.displayMsg = 'Zobrazuji {from} do {to} z {total} položky'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Zpracování, čekejte prosím ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Zrušit'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Toto pole je vyžadováno.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Zadejte prosím platnou e-mailovou adresu.'; + $.fn.validatebox.defaults.rules.url.message = 'Zadejte prosím platnou adresu URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Prosím, zadejte hodnotu mezi {0} a {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Dnes'; + $.fn.datebox.defaults.closeText = 'Zavřít'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-cz.js b/assets/js/easy-ui/locale/easyui-lang-cz.js new file mode 100755 index 0000000000..2d8d7cfe6e --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-cz.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Strana'; + $.fn.pagination.defaults.afterPageText = 'z {pages}'; + $.fn.pagination.defaults.displayMsg = 'Zobrazuji záznam {from} až {to} z {total}.'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Pracuji, čekejte prosím…'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Zrušit'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Toto pole je vyžadováno.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Zadejte, prosím, platnou e-mailovou adresu.'; + $.fn.validatebox.defaults.rules.url.message = 'Zadejte, prosím, platnou adresu URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Zadejte, prosím, hodnotu mezi {0} a {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['N','P','Ú','S','Č','P','S']; //neděle pondělí úterý středa čtvrtek pátek sobota + $.fn.calendar.defaults.months = ['led', 'únr', 'bře', 'dub', 'kvě', 'čvn', 'čvc', 'srp', 'zář', 'říj', 'lis', 'pro']; //leden únor březen duben květen červen červenec srpen září říjen listopad prosinec +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Dnes'; + $.fn.datebox.defaults.closeText = 'Zavřít'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-da.js b/assets/js/easy-ui/locale/easyui-lang-da.js new file mode 100755 index 0000000000..f574ad0eba --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-da.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Page'; + $.fn.pagination.defaults.afterPageText = 'af {pages}'; + $.fn.pagination.defaults.displayMsg = 'Viser {from} til {to} af {total} poster'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Behandling, vent venligst ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annuller'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Dette felt er påkrævet.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Angiv en gyldig e-mail-adresse.'; + $.fn.validatebox.defaults.rules.url.message = 'Angiv en gyldig webadresse.'; + $.fn.validatebox.defaults.rules.length.message = 'Angiv en værdi mellem {0} og {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'I dag'; + $.fn.datebox.defaults.closeText = 'Luk'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-de.js b/assets/js/easy-ui/locale/easyui-lang-de.js new file mode 100755 index 0000000000..d02752df7f --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-de.js @@ -0,0 +1,65 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Seite'; + $.fn.pagination.defaults.afterPageText = 'von {pages}'; + $.fn.pagination.defaults.displayMsg = '{from} bis {to} von {total} Datensätzen'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Verarbeitung läuft, bitte warten ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'OK'; + $.messager.defaults.cancel = 'Abbruch'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Dieses Feld wird benötigt.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Bitte geben Sie eine gültige E-Mail-Adresse ein.'; + $.fn.validatebox.defaults.rules.url.message = 'Bitte geben Sie eine gültige URL ein.'; + $.fn.validatebox.defaults.rules.length.message = 'Bitte geben Sie einen Wert zwischen {0} und {1} ein.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['S','M','D','M','D','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Heute'; + $.fn.datebox.defaults.closeText = 'Schließen'; + $.fn.datebox.defaults.okText = 'OK'; + $.fn.datebox.defaults.formatter = function(date){ + var y = date.getFullYear(); + var m = date.getMonth()+1; + var d = date.getDate(); + return (d<10?('0'+d):d)+'.'+(m<10?('0'+m):m)+'.'+y; + }; + $.fn.datebox.defaults.parser = function(s){ + if (!s) return new Date(); + var ss = s.split('.'); + var m = parseInt(ss[1],10); + var d = parseInt(ss[0],10); + var y = parseInt(ss[2],10); + if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ + return new Date(y,m-1,d); + } else { + return new Date(); + } + }; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-el.js b/assets/js/easy-ui/locale/easyui-lang-el.js new file mode 100755 index 0000000000..0ea11d95d2 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-el.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Σελίδα'; + $.fn.pagination.defaults.afterPageText = 'από {pages}'; + $.fn.pagination.defaults.displayMsg = 'Εμφάνιση {from} εώς {to} από {total} αντικείμενα'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Γίνεται Επεξεργασία, Παρακαλώ Περιμένετε ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Εντάξει'; + $.messager.defaults.cancel = 'Άκυρο'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Το πεδίο είναι υποχρεωτικό.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Παρακαλώ εισάγετε σωστή Ηλ.Διεύθυνση.'; + $.fn.validatebox.defaults.rules.url.message = 'Παρακαλώ εισάγετε σωστό σύνδεσμο.'; + $.fn.validatebox.defaults.rules.length.message = 'Παρακαλώ εισάγετε τιμή μεταξύ {0} και {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Παρακαλώ διορθώστε αυτό το πεδίο.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['Κυρ','Δευ','Τρι','Τετ','Πεμ','Παρ','Σαβ']; + $.fn.calendar.defaults.months = ['Ιαν', 'Φεβ', 'Μαρ', 'Απρ', 'Μαϊ', 'Ιου', 'Ιου', 'Αυγ', 'Σεπ', 'Οκτ', 'Νοε', 'Δεκ']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Σήμερα'; + $.fn.datebox.defaults.closeText = 'Κλείσιμο'; + $.fn.datebox.defaults.okText = 'Εντάξει'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-en.js b/assets/js/easy-ui/locale/easyui-lang-en.js new file mode 100755 index 0000000000..7c09413388 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-en.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Page'; + $.fn.pagination.defaults.afterPageText = 'of {pages}'; + $.fn.pagination.defaults.displayMsg = 'Displaying {from} to {to} of {total} items'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Processing, please wait ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancel'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'This field is required.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Please enter a valid email address.'; + $.fn.validatebox.defaults.rules.url.message = 'Please enter a valid URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Please enter a value between {0} and {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Please fix this field.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Today'; + $.fn.datebox.defaults.closeText = 'Close'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-es.js b/assets/js/easy-ui/locale/easyui-lang-es.js new file mode 100755 index 0000000000..423a7b0e12 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-es.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Página'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} elementos'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Procesando, por favor espere ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Aceptar'; + $.messager.defaults.cancel = 'Cancelar'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Este campo es obligatorio.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Por favor ingrese una dirección de correo válida.'; + $.fn.validatebox.defaults.rules.url.message = 'Por favor ingrese una URL válida.'; + $.fn.validatebox.defaults.rules.length.message = 'Por favor ingrese un valor entre {0} y {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Por favor corrija este campo.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['Do','Lu','Ma','Mi','Ju','Vi','Sá']; + $.fn.calendar.defaults.months = ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Hoy'; + $.fn.datebox.defaults.closeText = 'Cerrar'; + $.fn.datebox.defaults.okText = 'Aceptar'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-fr.js b/assets/js/easy-ui/locale/easyui-lang-fr.js new file mode 100755 index 0000000000..d638ed8557 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-fr.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Page'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = 'Affichage de {from} et {to} au {total} des articles'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = "Traitement, s'il vous plaît patienter ..."; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annuler'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Ce champ est obligatoire.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = "S'il vous plaît entrer une adresse email valide."; + $.fn.validatebox.defaults.rules.url.message = "S'il vous plaît entrer une URL valide."; + $.fn.validatebox.defaults.rules.length.message = "S'il vous plaît entrez une valeur comprise entre {0} et {1}."; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = "Aujourd'hui"; + $.fn.datebox.defaults.closeText = 'Fermer'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-it.js b/assets/js/easy-ui/locale/easyui-lang-it.js new file mode 100755 index 0000000000..a969325e5a --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-it.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Pagina'; + $.fn.pagination.defaults.afterPageText = 'di {pages}'; + $.fn.pagination.defaults.displayMsg = 'Visualizzazione {from} a {to} di {total} elementi'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'In lavorazione, attendere ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annulla'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Questo campo è richiesto.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Inserisci un indirizzo email valido.'; + $.fn.validatebox.defaults.rules.url.message = 'Inserisci un URL valido.'; + $.fn.validatebox.defaults.rules.length.message = 'Inserisci un valore tra {0} e {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Aggiusta questo campo.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Gen', 'Feb', 'Mar', 'Apr', 'Mag', 'Giu', 'Lug', 'Ago', 'Set', 'Ott', 'Nov', 'Dic']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Oggi'; + $.fn.datebox.defaults.closeText = 'Chiudi'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-jp.js b/assets/js/easy-ui/locale/easyui-lang-jp.js new file mode 100755 index 0000000000..bb5c5503db --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-jp.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'ページ'; + $.fn.pagination.defaults.afterPageText = '{pages} 中'; + $.fn.pagination.defaults.displayMsg = '全 {total} アイテム中 {from} から {to} を表示中'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '処理中です。少々お待ちください...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'OK'; + $.messager.defaults.cancel = 'キャンセル'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '入力は必須です。'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '正しいメールアドレスを入力してください。'; + $.fn.validatebox.defaults.rules.url.message = '正しいURLを入力してください。'; + $.fn.validatebox.defaults.rules.length.message = '{0} から {1} の範囲の正しい値を入力してください。'; + $.fn.validatebox.defaults.rules.remote.message = 'このフィールドを修正してください。'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','月','火','水','木','金','土']; + $.fn.calendar.defaults.months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今日'; + $.fn.datebox.defaults.closeText = '閉じる'; + $.fn.datebox.defaults.okText = 'OK'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-nl.js b/assets/js/easy-ui/locale/easyui-lang-nl.js new file mode 100755 index 0000000000..953eb56530 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-nl.js @@ -0,0 +1,46 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Pagina'; + $.fn.pagination.defaults.afterPageText = 'van {pages}'; + $.fn.pagination.defaults.displayMsg = 'Tonen van {from} tot {to} van de {total} items'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Verwerking, even geduld ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Annuleren'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Dit veld is verplicht.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Geef een geldig e-mailadres.'; + $.fn.validatebox.defaults.rules.url.message = 'Vul een geldige URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Voer een waarde tussen {0} en {1}.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['S','M','T','W','T','F','S']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Vandaag'; + $.fn.datebox.defaults.closeText = 'Dicht'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-pl.js b/assets/js/easy-ui/locale/easyui-lang-pl.js new file mode 100755 index 0000000000..d17650fe7f --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-pl.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Strona'; + $.fn.pagination.defaults.afterPageText = 'z {pages}'; + $.fn.pagination.defaults.displayMsg = 'Wyświetlono elementy od {from} do {to} z {total}'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Przetwarzanie, proszę czekać ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancel'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'To pole jest wymagane.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Wprowadź poprawny adres email.'; + $.fn.validatebox.defaults.rules.url.message = 'Wprowadź poprawny adres URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Wprowadź wartość z zakresu od {0} do {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Proszę poprawić to pole.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['N','P','W','Ś','C','P','S']; + $.fn.calendar.defaults.months = ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Dzisiaj'; + $.fn.datebox.defaults.closeText = 'Zamknij'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-pt_BR.js b/assets/js/easy-ui/locale/easyui-lang-pt_BR.js new file mode 100755 index 0000000000..a1f5f6828f --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-pt_BR.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Página'; + $.fn.pagination.defaults.afterPageText = 'de {pages}'; + $.fn.pagination.defaults.displayMsg = 'Mostrando {from} a {to} de {total} itens'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Processando, aguarde ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Cancelar'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Esse campo é requerido.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Insira um endereço de email válido.'; + $.fn.validatebox.defaults.rules.url.message = 'Insira uma URL válida.'; + $.fn.validatebox.defaults.rules.length.message = 'Insira uma valor entre {0} e {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Corrija esse campo.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['D','S','T','Q','Q','S','S']; + $.fn.calendar.defaults.months = ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Hoje'; + $.fn.datebox.defaults.closeText = 'Fechar'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-ru.js b/assets/js/easy-ui/locale/easyui-lang-ru.js new file mode 100755 index 0000000000..2fb5ef18a9 --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-ru.js @@ -0,0 +1,48 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Страница'; + $.fn.pagination.defaults.afterPageText = 'из {pages}'; + $.fn.pagination.defaults.displayMsg = 'Просмотр {from} до {to} из {total} записей'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = 'Обрабатывается, пожалуйста ждите ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Ок'; + $.messager.defaults.cancel = 'Закрыть'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Это поле необходимо.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Пожалуйста введите корректный e-mail адрес.'; + $.fn.validatebox.defaults.rules.url.message = 'Пожалуйста введите корректный URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Пожалуйста введите зачение между {0} и {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Пожалуйста исправте это поле.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.firstDay = 1; + $.fn.calendar.defaults.weeks = ['В','П','В','С','Ч','П','С']; + $.fn.calendar.defaults.months = ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Сегодня'; + $.fn.datebox.defaults.closeText = 'Закрыть'; + $.fn.datebox.defaults.okText = 'Ок'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-sv_SE.js b/assets/js/easy-ui/locale/easyui-lang-sv_SE.js new file mode 100755 index 0000000000..a3cfa36b8c --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-sv_SE.js @@ -0,0 +1,47 @@ +(function($){ +if ($.fn.pagination) { + $.fn.pagination.defaults.beforePageText = 'Sida'; + $.fn.pagination.defaults.afterPageText = 'av {pages}'; + $.fn.pagination.defaults.displayMsg = 'Visar {from} till {to} av {total} poster'; +} +if ($.fn.datagrid) { + $.fn.datagrid.defaults.loadMsg = 'Bearbetar, vänligen vänta ...'; +} +if ($.fn.treegrid && $.fn.datagrid) { + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager) { + $.messager.defaults.ok = 'Ok'; + $.messager.defaults.cancel = 'Avbryt'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Detta fält är obligatoriskt.'; + } +}); +if ($.fn.validatebox) { + $.fn.validatebox.defaults.rules.email.message = 'Vänligen ange en korrekt e-post adress.'; + $.fn.validatebox.defaults.rules.url.message = 'Vänligen ange en korrekt URL.'; + $.fn.validatebox.defaults.rules.length.message = 'Vänligen ange ett nummer mellan {0} och {1}.'; + $.fn.validatebox.defaults.rules.remote.message = 'Vänligen åtgärda detta fält.'; +} +if ($.fn.calendar) { + $.fn.calendar.defaults.weeks = ['Sön', 'Mån', 'Tis', 'Ons', 'Tors', 'Fre', 'Lör']; + $.fn.calendar.defaults.months = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec']; +} +if ($.fn.datebox) { + $.fn.datebox.defaults.currentText = 'I dag'; + $.fn.datebox.defaults.closeText = 'Stäng'; + $.fn.datebox.defaults.okText = 'Ok'; +} +if ($.fn.datetimebox && $.fn.datebox) { + $.extend($.fn.datetimebox.defaults, { + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-tr.js b/assets/js/easy-ui/locale/easyui-lang-tr.js new file mode 100755 index 0000000000..24f34e4b5c --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-tr.js @@ -0,0 +1,61 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = 'Sayfa'; + $.fn.pagination.defaults.afterPageText = ' / {pages}'; + $.fn.pagination.defaults.displayMsg = '{from} ile {to} arası gösteriliyor, toplam {total} kayıt'; +} +if ($.fn.datagrid){ + $.fn.panel.defaults.loadingMessage = "Yükleniyor..."; +} + +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadingMessage = "Yükleniyor..."; + $.fn.datagrid.defaults.loadMsg = 'İşleminiz Yapılıyor, lütfen bekleyin ...'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = 'Tamam'; + $.messager.defaults.cancel = 'İptal'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = 'Bu alan zorunludur.'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = 'Lütfen geçerli bir email adresi giriniz.'; + $.fn.validatebox.defaults.rules.url.message = 'Lütfen geçerli bir URL giriniz.'; + $.fn.validatebox.defaults.rules.length.message = 'Lütfen {0} ile {1} arasında bir değer giriniz.'; + $.fn.validatebox.defaults.rules.remote.message = 'Lütfen bu alanı düzeltiniz.'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['Pz','Pt','Sa','Ça','Pe','Cu','Ct']; + $.fn.calendar.defaults.months = ['Oca', 'Şub', 'Mar', 'Nis', 'May', 'Haz', 'Tem', 'Ağu', 'Eyl', 'Eki', 'Kas', 'Ara']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = 'Bugün'; + $.fn.datebox.defaults.closeText = 'Kapat'; + $.fn.datebox.defaults.okText = 'Tamam'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); + + $.fn.datebox.defaults.formatter=function(date){ + var y=date.getFullYear(); + var m=date.getMonth()+1; + var d=date.getDate(); + if(m<10){m="0"+m;} + if(d<10){d="0"+d;} + return d+"."+m+"."+y; + }; +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-zh_CN.js b/assets/js/easy-ui/locale/easyui-lang-zh_CN.js new file mode 100755 index 0000000000..81b7f6ae3b --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-zh_CN.js @@ -0,0 +1,68 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = '第'; + $.fn.pagination.defaults.afterPageText = '共{pages}页'; + $.fn.pagination.defaults.displayMsg = '显示{from}到{to},共{total}记录'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '正在处理,请稍待。。。'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = '确定'; + $.messager.defaults.cancel = '取消'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '该输入项为必输项'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '请输入有效的电子邮件地址'; + $.fn.validatebox.defaults.rules.url.message = '请输入有效的URL地址'; + $.fn.validatebox.defaults.rules.length.message = '输入内容长度必须介于{0}和{1}之间'; + $.fn.validatebox.defaults.rules.remote.message = '请修正该字段'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; + $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今天'; + $.fn.datebox.defaults.closeText = '关闭'; + $.fn.datebox.defaults.okText = '确定'; + $.fn.datebox.defaults.formatter = function(date){ + var y = date.getFullYear(); + var m = date.getMonth()+1; + var d = date.getDate(); + return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d); + }; + $.fn.datebox.defaults.parser = function(s){ + if (!s) return new Date(); + var ss = s.split('-'); + var y = parseInt(ss[0],10); + var m = parseInt(ss[1],10); + var d = parseInt(ss[2],10); + if (!isNaN(y) && !isNaN(m) && !isNaN(d)){ + return new Date(y,m-1,d); + } else { + return new Date(); + } + }; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +if ($.fn.datetimespinner){ + $.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]] +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/locale/easyui-lang-zh_TW.js b/assets/js/easy-ui/locale/easyui-lang-zh_TW.js new file mode 100755 index 0000000000..254baa3dce --- /dev/null +++ b/assets/js/easy-ui/locale/easyui-lang-zh_TW.js @@ -0,0 +1,50 @@ +(function($){ +if ($.fn.pagination){ + $.fn.pagination.defaults.beforePageText = '第'; + $.fn.pagination.defaults.afterPageText = '共{pages}頁'; + $.fn.pagination.defaults.displayMsg = '顯示{from}到{to},共{total}記錄'; +} +if ($.fn.datagrid){ + $.fn.datagrid.defaults.loadMsg = '正在處理,請稍待。。。'; +} +if ($.fn.treegrid && $.fn.datagrid){ + $.fn.treegrid.defaults.loadMsg = $.fn.datagrid.defaults.loadMsg; +} +if ($.messager){ + $.messager.defaults.ok = '確定'; + $.messager.defaults.cancel = '取消'; +} +$.map(['validatebox','textbox','filebox','searchbox', + 'combo','combobox','combogrid','combotree', + 'datebox','datetimebox','numberbox', + 'spinner','numberspinner','timespinner','datetimespinner'], function(plugin){ + if ($.fn[plugin]){ + $.fn[plugin].defaults.missingMessage = '該輸入項為必輸項'; + } +}); +if ($.fn.validatebox){ + $.fn.validatebox.defaults.rules.email.message = '請輸入有效的電子郵件地址'; + $.fn.validatebox.defaults.rules.url.message = '請輸入有效的URL地址'; + $.fn.validatebox.defaults.rules.length.message = '輸入內容長度必須介於{0}和{1}之間'; + $.fn.validatebox.defaults.rules.remote.message = '請修正此欄位'; +} +if ($.fn.calendar){ + $.fn.calendar.defaults.weeks = ['日','一','二','三','四','五','六']; + $.fn.calendar.defaults.months = ['一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月']; +} +if ($.fn.datebox){ + $.fn.datebox.defaults.currentText = '今天'; + $.fn.datebox.defaults.closeText = '關閉'; + $.fn.datebox.defaults.okText = '確定'; +} +if ($.fn.datetimebox && $.fn.datebox){ + $.extend($.fn.datetimebox.defaults,{ + currentText: $.fn.datebox.defaults.currentText, + closeText: $.fn.datebox.defaults.closeText, + okText: $.fn.datebox.defaults.okText + }); +} +if ($.fn.datetimespinner){ + $.fn.datetimespinner.defaults.selections = [[0,4],[5,7],[8,10],[11,13],[14,16],[17,19]] +} +})(jQuery) \ No newline at end of file diff --git a/assets/js/easy-ui/plugins/jquery.accordion.js b/assets/js/easy-ui/plugins/jquery.accordion.js new file mode 100755 index 0000000000..53664c8acc --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.accordion.js @@ -0,0 +1,314 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"accordion"); +var _5=_4.options; +var _6=_4.panels; +var cc=$(_2); +if(_3){ +$.extend(_5,{width:_3.width,height:_3.height}); +} +cc._size(_5); +var _7=0; +var _8="auto"; +var _9=cc.find(">div.panel>div.accordion-header"); +if(_9.length){ +_7=$(_9[0]).css("height","")._outerHeight(); +} +if(!isNaN(parseInt(_5.height))){ +_8=cc.height()-_7*_9.length; +} +_a(true,_8-_a(false)+1); +function _a(_b,_c){ +var _d=0; +for(var i=0;i<_6.length;i++){ +var p=_6[i]; +var h=p.panel("header")._outerHeight(_7); +if(p.panel("options").collapsible==_b){ +var _e=isNaN(_c)?undefined:(_c+_7*h.length); +p.panel("resize",{width:cc.width(),height:(_b?_e:undefined)}); +_d+=p.panel("panel").outerHeight()-_7*h.length; +} +} +return _d; +}; +}; +function _f(_10,_11,_12,all){ +var _13=$.data(_10,"accordion").panels; +var pp=[]; +for(var i=0;i<_13.length;i++){ +var p=_13[i]; +if(_11){ +if(p.panel("options")[_11]==_12){ +pp.push(p); +} +}else{ +if(p[0]==$(_12)[0]){ +return i; +} +} +} +if(_11){ +return all?pp:(pp.length?pp[0]:null); +}else{ +return -1; +} +}; +function _14(_15){ +return _f(_15,"collapsed",false,true); +}; +function _16(_17){ +var pp=_14(_17); +return pp.length?pp[0]:null; +}; +function _18(_19,_1a){ +return _f(_19,null,_1a); +}; +function _1b(_1c,_1d){ +var _1e=$.data(_1c,"accordion").panels; +if(typeof _1d=="number"){ +if(_1d<0||_1d>=_1e.length){ +return null; +}else{ +return _1e[_1d]; +} +} +return _f(_1c,"title",_1d); +}; +function _1f(_20){ +var _21=$.data(_20,"accordion").options; +var cc=$(_20); +if(_21.border){ +cc.removeClass("accordion-noborder"); +}else{ +cc.addClass("accordion-noborder"); +} +}; +function _22(_23){ +var _24=$.data(_23,"accordion"); +var cc=$(_23); +cc.addClass("accordion"); +_24.panels=[]; +cc.children("div").each(function(){ +var _25=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_24.panels.push(pp); +_27(_23,pp,_25); +}); +cc.bind("_resize",function(e,_26){ +if($(this).hasClass("easyui-fluid")||_26){ +_1(_23); +} +return false; +}); +}; +function _27(_28,pp,_29){ +var _2a=$.data(_28,"accordion").options; +pp.panel($.extend({},{collapsible:true,minimizable:false,maximizable:false,closable:false,doSize:false,collapsed:true,headerCls:"accordion-header",bodyCls:"accordion-body"},_29,{onBeforeExpand:function(){ +if(_29.onBeforeExpand){ +if(_29.onBeforeExpand.call(this)==false){ +return false; +} +} +if(!_2a.multiple){ +var all=$.grep(_14(_28),function(p){ +return p.panel("options").collapsible; +}); +for(var i=0;i").addClass("accordion-collapse accordion-expand").appendTo(_2e); +t.bind("click",function(){ +var _2f=_18(_28,pp); +if(pp.panel("options").collapsed){ +_30(_28,_2f); +}else{ +_35(_28,_2f); +} +return false; +}); +pp.panel("options").collapsible?t.show():t.hide(); +_2d.click(function(){ +$(this).find("a.accordion-collapse:visible").triggerHandler("click"); +return false; +}); +}; +function _30(_31,_32){ +var p=_1b(_31,_32); +if(!p){ +return; +} +_33(_31); +var _34=$.data(_31,"accordion").options; +p.panel("expand",_34.animate); +}; +function _35(_36,_37){ +var p=_1b(_36,_37); +if(!p){ +return; +} +_33(_36); +var _38=$.data(_36,"accordion").options; +p.panel("collapse",_38.animate); +}; +function _39(_3a){ +var _3b=$.data(_3a,"accordion").options; +var p=_f(_3a,"selected",true); +if(p){ +_3c(_18(_3a,p)); +}else{ +_3c(_3b.selected); +} +function _3c(_3d){ +var _3e=_3b.animate; +_3b.animate=false; +_30(_3a,_3d); +_3b.animate=_3e; +}; +}; +function _33(_3f){ +var _40=$.data(_3f,"accordion").panels; +for(var i=0;i<_40.length;i++){ +_40[i].stop(true,true); +} +}; +function add(_41,_42){ +var _43=$.data(_41,"accordion"); +var _44=_43.options; +var _45=_43.panels; +if(_42.selected==undefined){ +_42.selected=true; +} +_33(_41); +var pp=$("
            ").appendTo(_41); +_45.push(pp); +_27(_41,pp,_42); +_1(_41); +_44.onAdd.call(_41,_42.title,_45.length-1); +if(_42.selected){ +_30(_41,_45.length-1); +} +}; +function _46(_47,_48){ +var _49=$.data(_47,"accordion"); +var _4a=_49.options; +var _4b=_49.panels; +_33(_47); +var _4c=_1b(_47,_48); +var _4d=_4c.panel("options").title; +var _4e=_18(_47,_4c); +if(!_4c){ +return; +} +if(_4a.onBeforeRemove.call(_47,_4d,_4e)==false){ +return; +} +_4b.splice(_4e,1); +_4c.panel("destroy"); +if(_4b.length){ +_1(_47); +var _4f=_16(_47); +if(!_4f){ +_30(_47,0); +} +} +_4a.onRemove.call(_47,_4d,_4e); +}; +$.fn.accordion=function(_50,_51){ +if(typeof _50=="string"){ +return $.fn.accordion.methods[_50](this,_51); +} +_50=_50||{}; +return this.each(function(){ +var _52=$.data(this,"accordion"); +if(_52){ +$.extend(_52.options,_50); +}else{ +$.data(this,"accordion",{options:$.extend({},$.fn.accordion.defaults,$.fn.accordion.parseOptions(this),_50),accordion:$(this).addClass("accordion"),panels:[]}); +_22(this); +} +_1f(this); +_1(this); +_39(this); +}); +}; +$.fn.accordion.methods={options:function(jq){ +return $.data(jq[0],"accordion").options; +},panels:function(jq){ +return $.data(jq[0],"accordion").panels; +},resize:function(jq,_53){ +return jq.each(function(){ +_1(this,_53); +}); +},getSelections:function(jq){ +return _14(jq[0]); +},getSelected:function(jq){ +return _16(jq[0]); +},getPanel:function(jq,_54){ +return _1b(jq[0],_54); +},getPanelIndex:function(jq,_55){ +return _18(jq[0],_55); +},select:function(jq,_56){ +return jq.each(function(){ +_30(this,_56); +}); +},unselect:function(jq,_57){ +return jq.each(function(){ +_35(this,_57); +}); +},add:function(jq,_58){ +return jq.each(function(){ +add(this,_58); +}); +},remove:function(jq,_59){ +return jq.each(function(){ +_46(this,_59); +}); +}}; +$.fn.accordion.parseOptions=function(_5a){ +var t=$(_5a); +return $.extend({},$.parser.parseOptions(_5a,["width","height",{fit:"boolean",border:"boolean",animate:"boolean",multiple:"boolean",selected:"number"}])); +}; +$.fn.accordion.defaults={width:"auto",height:"auto",fit:false,border:true,animate:true,multiple:false,selected:0,onSelect:function(_5b,_5c){ +},onUnselect:function(_5d,_5e){ +},onAdd:function(_5f,_60){ +},onBeforeRemove:function(_61,_62){ +},onRemove:function(_63,_64){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.calendar.js b/assets/js/easy-ui/plugins/jquery.calendar.js new file mode 100755 index 0000000000..b157edcbef --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.calendar.js @@ -0,0 +1,384 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"calendar").options; +var t=$(_2); +if(_3){ +$.extend(_4,{width:_3.width,height:_3.height}); +} +t._size(_4,t.parent()); +t.find(".calendar-body")._outerHeight(t.height()-t.find(".calendar-header")._outerHeight()); +if(t.find(".calendar-menu").is(":visible")){ +_5(_2); +} +}; +function _6(_7){ +$(_7).addClass("calendar").html("
            "+"
            "+"
            "+"
            "+"
            "+"
            "+""+"
            "+"
            "+"
            "+"
            "+"
            "+""+""+""+"
            "+"
            "+"
            "+"
            "+"
            "); +$(_7).bind("_resize",function(e,_8){ +if($(this).hasClass("easyui-fluid")||_8){ +_1(_7); +} +return false; +}); +}; +function _9(_a){ +var _b=$.data(_a,"calendar").options; +var _c=$(_a).find(".calendar-menu"); +_c.find(".calendar-menu-year").unbind(".calendar").bind("keypress.calendar",function(e){ +if(e.keyCode==13){ +_d(true); +} +}); +$(_a).unbind(".calendar").bind("mouseover.calendar",function(e){ +var t=_e(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.addClass("calendar-nav-hover"); +} +}).bind("mouseout.calendar",function(e){ +var t=_e(e.target); +if(t.hasClass("calendar-nav")||t.hasClass("calendar-text")||(t.hasClass("calendar-day")&&!t.hasClass("calendar-disabled"))){ +t.removeClass("calendar-nav-hover"); +} +}).bind("click.calendar",function(e){ +var t=_e(e.target); +if(t.hasClass("calendar-menu-next")||t.hasClass("calendar-nextyear")){ +_f(1); +}else{ +if(t.hasClass("calendar-menu-prev")||t.hasClass("calendar-prevyear")){ +_f(-1); +}else{ +if(t.hasClass("calendar-menu-month")){ +_c.find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +_d(true); +}else{ +if(t.hasClass("calendar-prevmonth")){ +_10(-1); +}else{ +if(t.hasClass("calendar-nextmonth")){ +_10(1); +}else{ +if(t.hasClass("calendar-text")){ +if(_c.is(":visible")){ +_c.hide(); +}else{ +_5(_a); +} +}else{ +if(t.hasClass("calendar-day")){ +if(t.hasClass("calendar-disabled")){ +return; +} +var _11=_b.current; +t.closest("div.calendar-body").find(".calendar-selected").removeClass("calendar-selected"); +t.addClass("calendar-selected"); +var _12=t.attr("abbr").split(","); +var y=parseInt(_12[0]); +var m=parseInt(_12[1]); +var d=parseInt(_12[2]); +_b.current=new Date(y,m-1,d); +_b.onSelect.call(_a,_b.current); +if(!_11||_11.getTime()!=_b.current.getTime()){ +_b.onChange.call(_a,_b.current,_11); +} +if(_b.year!=y||_b.month!=m){ +_b.year=y; +_b.month=m; +_19(_a); +} +} +} +} +} +} +} +} +}); +function _e(t){ +var day=$(t).closest(".calendar-day"); +if(day.length){ +return day; +}else{ +return $(t); +} +}; +function _d(_13){ +var _14=$(_a).find(".calendar-menu"); +var _15=_14.find(".calendar-menu-year").val(); +var _16=_14.find(".calendar-selected").attr("abbr"); +if(!isNaN(_15)){ +_b.year=parseInt(_15); +_b.month=parseInt(_16); +_19(_a); +} +if(_13){ +_14.hide(); +} +}; +function _f(_17){ +_b.year+=_17; +_19(_a); +_c.find(".calendar-menu-year").val(_b.year); +}; +function _10(_18){ +_b.month+=_18; +if(_b.month>12){ +_b.year++; +_b.month=1; +}else{ +if(_b.month<1){ +_b.year--; +_b.month=12; +} +} +_19(_a); +_c.find("td.calendar-selected").removeClass("calendar-selected"); +_c.find("td:eq("+(_b.month-1)+")").addClass("calendar-selected"); +}; +}; +function _5(_1a){ +var _1b=$.data(_1a,"calendar").options; +$(_1a).find(".calendar-menu").show(); +if($(_1a).find(".calendar-menu-month-inner").is(":empty")){ +$(_1a).find(".calendar-menu-month-inner").empty(); +var t=$("
            ").appendTo($(_1a).find(".calendar-menu-month-inner")); +var idx=0; +for(var i=0;i<3;i++){ +var tr=$("").appendTo(t); +for(var j=0;j<4;j++){ +$("").html(_1b.months[idx++]).attr("abbr",idx).appendTo(tr); +} +} +} +var _1c=$(_1a).find(".calendar-body"); +var _1d=$(_1a).find(".calendar-menu"); +var _1e=_1d.find(".calendar-menu-year-inner"); +var _1f=_1d.find(".calendar-menu-month-inner"); +_1e.find("input").val(_1b.year).focus(); +_1f.find("td.calendar-selected").removeClass("calendar-selected"); +_1f.find("td:eq("+(_1b.month-1)+")").addClass("calendar-selected"); +_1d._outerWidth(_1c._outerWidth()); +_1d._outerHeight(_1c._outerHeight()); +_1f._outerHeight(_1d.height()-_1e._outerHeight()); +}; +function _20(_21,_22,_23){ +var _24=$.data(_21,"calendar").options; +var _25=[]; +var _26=new Date(_22,_23,0).getDate(); +for(var i=1;i<=_26;i++){ +_25.push([_22,_23,i]); +} +var _27=[],_28=[]; +var _29=-1; +while(_25.length>0){ +var _2a=_25.shift(); +_28.push(_2a); +var day=new Date(_2a[0],_2a[1]-1,_2a[2]).getDay(); +if(_29==day){ +day=0; +}else{ +if(day==(_24.firstDay==0?7:_24.firstDay)-1){ +_27.push(_28); +_28=[]; +} +} +_29=day; +} +if(_28.length){ +_27.push(_28); +} +var _2b=_27[0]; +if(_2b.length<7){ +while(_2b.length<7){ +var _2c=_2b[0]; +var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-1); +_2b.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +}else{ +var _2c=_2b[0]; +var _28=[]; +for(var i=1;i<=7;i++){ +var _2a=new Date(_2c[0],_2c[1]-1,_2c[2]-i); +_28.unshift([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +_27.unshift(_28); +} +var _2d=_27[_27.length-1]; +while(_2d.length<7){ +var _2e=_2d[_2d.length-1]; +var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+1); +_2d.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +if(_27.length<6){ +var _2e=_2d[_2d.length-1]; +var _28=[]; +for(var i=1;i<=7;i++){ +var _2a=new Date(_2e[0],_2e[1]-1,_2e[2]+i); +_28.push([_2a.getFullYear(),_2a.getMonth()+1,_2a.getDate()]); +} +_27.push(_28); +} +return _27; +}; +function _19(_2f){ +var _30=$.data(_2f,"calendar").options; +if(_30.current&&!_30.validator.call(_2f,_30.current)){ +_30.current=null; +} +var now=new Date(); +var _31=now.getFullYear()+","+(now.getMonth()+1)+","+now.getDate(); +var _32=_30.current?(_30.current.getFullYear()+","+(_30.current.getMonth()+1)+","+_30.current.getDate()):""; +var _33=6-_30.firstDay; +var _34=_33+1; +if(_33>=7){ +_33-=7; +} +if(_34>=7){ +_34-=7; +} +$(_2f).find(".calendar-title span").html(_30.months[_30.month-1]+" "+_30.year); +var _35=$(_2f).find("div.calendar-body"); +_35.children("table").remove(); +var _36=[""]; +_36.push(""); +for(var i=_30.firstDay;i<_30.weeks.length;i++){ +_36.push(""); +} +for(var i=0;i<_30.firstDay;i++){ +_36.push(""); +} +_36.push(""); +_36.push(""); +var _37=_20(_2f,_30.year,_30.month); +for(var i=0;i<_37.length;i++){ +var _38=_37[i]; +var cls=""; +if(i==0){ +cls="calendar-first"; +}else{ +if(i==_37.length-1){ +cls="calendar-last"; +} +} +_36.push(""); +for(var j=0;j<_38.length;j++){ +var day=_38[j]; +var s=day[0]+","+day[1]+","+day[2]; +var _39=new Date(day[0],parseInt(day[1])-1,day[2]); +var d=_30.formatter.call(_2f,_39); +var css=_30.styler.call(_2f,_39); +var _3a=""; +var _3b=""; +if(typeof css=="string"){ +_3b=css; +}else{ +if(css){ +_3a=css["class"]||""; +_3b=css["style"]||""; +} +} +var cls="calendar-day"; +if(!(_30.year==day[0]&&_30.month==day[1])){ +cls+=" calendar-other-month"; +} +if(s==_31){ +cls+=" calendar-today"; +} +if(s==_32){ +cls+=" calendar-selected"; +} +if(j==_33){ +cls+=" calendar-saturday"; +}else{ +if(j==_34){ +cls+=" calendar-sunday"; +} +} +if(j==0){ +cls+=" calendar-first"; +}else{ +if(j==_38.length-1){ +cls+=" calendar-last"; +} +} +cls+=" "+_3a; +if(!_30.validator.call(_2f,_39)){ +cls+=" calendar-disabled"; +} +_36.push(""); +} +_36.push(""); +} +_36.push(""); +_36.push("
            "+_30.weeks[i]+""+_30.weeks[i]+"
            "+d+"
            "); +_35.append(_36.join("")); +_35.children("table.calendar-dtable").prependTo(_35); +_30.onNavigate.call(_2f,_30.year,_30.month); +}; +$.fn.calendar=function(_3c,_3d){ +if(typeof _3c=="string"){ +return $.fn.calendar.methods[_3c](this,_3d); +} +_3c=_3c||{}; +return this.each(function(){ +var _3e=$.data(this,"calendar"); +if(_3e){ +$.extend(_3e.options,_3c); +}else{ +_3e=$.data(this,"calendar",{options:$.extend({},$.fn.calendar.defaults,$.fn.calendar.parseOptions(this),_3c)}); +_6(this); +} +if(_3e.options.border==false){ +$(this).addClass("calendar-noborder"); +} +_1(this); +_9(this); +_19(this); +$(this).find("div.calendar-menu").hide(); +}); +}; +$.fn.calendar.methods={options:function(jq){ +return $.data(jq[0],"calendar").options; +},resize:function(jq,_3f){ +return jq.each(function(){ +_1(this,_3f); +}); +},moveTo:function(jq,_40){ +return jq.each(function(){ +var _41=$(this).calendar("options"); +if(_41.validator.call(this,_40)){ +var _42=_41.current; +$(this).calendar({year:_40.getFullYear(),month:_40.getMonth()+1,current:_40}); +if(!_42||_42.getTime()!=_40.getTime()){ +_41.onChange.call(this,_41.current,_42); +} +} +}); +}}; +$.fn.calendar.parseOptions=function(_43){ +var t=$(_43); +return $.extend({},$.parser.parseOptions(_43,[{firstDay:"number",fit:"boolean",border:"boolean"}])); +}; +$.fn.calendar.defaults={width:180,height:180,fit:false,border:true,firstDay:0,weeks:["S","M","T","W","T","F","S"],months:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],year:new Date().getFullYear(),month:new Date().getMonth()+1,current:(function(){ +var d=new Date(); +return new Date(d.getFullYear(),d.getMonth(),d.getDate()); +})(),formatter:function(_44){ +return _44.getDate(); +},styler:function(_45){ +return ""; +},validator:function(_46){ +return true; +},onSelect:function(_47){ +},onChange:function(_48,_49){ +},onNavigate:function(_4a,_4b){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.combo.js b/assets/js/easy-ui/plugins/jquery.combo.js new file mode 100755 index 0000000000..b66b9fc2a6 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.combo.js @@ -0,0 +1,367 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +$(function(){ +$(document).unbind(".combo").bind("mousedown.combo mousewheel.combo",function(e){ +var p=$(e.target).closest("span.combo,div.combo-p"); +if(p.length){ +_1(p); +return; +} +$("body>div.combo-p>div.combo-panel:visible").panel("close"); +}); +}); +function _2(_3){ +var _4=$.data(_3,"combo"); +var _5=_4.options; +if(!_4.panel){ +_4.panel=$("
            ").appendTo("body"); +_4.panel.panel({minWidth:_5.panelMinWidth,maxWidth:_5.panelMaxWidth,minHeight:_5.panelMinHeight,maxHeight:_5.panelMaxHeight,doSize:false,closed:true,cls:"combo-p",style:{position:"absolute",zIndex:10},onOpen:function(){ +var _6=$(this).panel("options").comboTarget; +var _7=$.data(_6,"combo"); +if(_7){ +_7.options.onShowPanel.call(_6); +} +},onBeforeClose:function(){ +_1(this); +},onClose:function(){ +var _8=$(this).panel("options").comboTarget; +var _9=$.data(_8,"combo"); +if(_9){ +_9.options.onHidePanel.call(_8); +} +}}); +} +var _a=$.extend(true,[],_5.icons); +if(_5.hasDownArrow){ +_a.push({iconCls:"combo-arrow",handler:function(e){ +_f(e.data.target); +}}); +} +$(_3).addClass("combo-f").textbox($.extend({},_5,{icons:_a,onChange:function(){ +}})); +$(_3).attr("comboName",$(_3).attr("textboxName")); +_4.combo=$(_3).next(); +_4.combo.addClass("combo"); +}; +function _b(_c){ +var _d=$.data(_c,"combo"); +var _e=_d.options; +var p=_d.panel; +if(p.is(":visible")){ +p.panel("close"); +} +if(!_e.cloned){ +p.panel("destroy"); +} +$(_c).textbox("destroy"); +}; +function _f(_10){ +var _11=$.data(_10,"combo").panel; +if(_11.is(":visible")){ +_12(_10); +}else{ +var p=$(_10).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_11).not(p).panel("close"); +$(_10).combo("showPanel"); +} +$(_10).combo("textbox").focus(); +}; +function _1(_13){ +$(_13).find(".combo-f").each(function(){ +var p=$(this).combo("panel"); +if(p.is(":visible")){ +p.panel("close"); +} +}); +}; +function _14(e){ +var _15=e.data.target; +var _16=$.data(_15,"combo"); +var _17=_16.options; +var _18=_16.panel; +if(!_17.editable){ +_f(_15); +}else{ +var p=$(_15).closest("div.combo-panel"); +$("div.combo-panel:visible").not(_18).not(p).panel("close"); +} +}; +function _19(e){ +var _1a=e.data.target; +var t=$(_1a); +var _1b=t.data("combo"); +var _1c=t.combo("options"); +switch(e.keyCode){ +case 38: +_1c.keyHandler.up.call(_1a,e); +break; +case 40: +_1c.keyHandler.down.call(_1a,e); +break; +case 37: +_1c.keyHandler.left.call(_1a,e); +break; +case 39: +_1c.keyHandler.right.call(_1a,e); +break; +case 13: +e.preventDefault(); +_1c.keyHandler.enter.call(_1a,e); +return false; +case 9: +case 27: +_12(_1a); +break; +default: +if(_1c.editable){ +if(_1b.timer){ +clearTimeout(_1b.timer); +} +_1b.timer=setTimeout(function(){ +var q=t.combo("getText"); +if(_1b.previousText!=q){ +_1b.previousText=q; +t.combo("showPanel"); +_1c.keyHandler.query.call(_1a,q,e); +t.combo("validate"); +} +},_1c.delay); +} +} +}; +function _1d(_1e){ +var _1f=$.data(_1e,"combo"); +var _20=_1f.combo; +var _21=_1f.panel; +var _22=$(_1e).combo("options"); +var _23=_21.panel("options"); +_23.comboTarget=_1e; +if(_23.closed){ +_21.panel("panel").show().css({zIndex:($.fn.menu?$.fn.menu.defaults.zIndex++:$.fn.window.defaults.zIndex++),left:-999999}); +_21.panel("resize",{width:(_22.panelWidth?_22.panelWidth:_20._outerWidth()),height:_22.panelHeight}); +_21.panel("panel").hide(); +_21.panel("open"); +} +(function(){ +if(_21.is(":visible")){ +_21.panel("move",{left:_24(),top:_25()}); +setTimeout(arguments.callee,200); +} +})(); +function _24(){ +var _26=_20.offset().left; +if(_22.panelAlign=="right"){ +_26+=_20._outerWidth()-_21._outerWidth(); +} +if(_26+_21._outerWidth()>$(window)._outerWidth()+$(document).scrollLeft()){ +_26=$(window)._outerWidth()+$(document).scrollLeft()-_21._outerWidth(); +} +if(_26<0){ +_26=0; +} +return _26; +}; +function _25(){ +var top=_20.offset().top+_20._outerHeight(); +if(top+_21._outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +top=_20.offset().top-_21._outerHeight(); +} +if(top<$(document).scrollTop()){ +top=_20.offset().top+_20._outerHeight(); +} +return top; +}; +}; +function _12(_27){ +var _28=$.data(_27,"combo").panel; +_28.panel("close"); +}; +function _29(_2a){ +var _2b=$.data(_2a,"combo"); +var _2c=_2b.options; +var _2d=_2b.combo; +$(_2a).textbox("clear"); +if(_2c.multiple){ +_2d.find(".textbox-value").remove(); +}else{ +_2d.find(".textbox-value").val(""); +} +}; +function _2e(_2f,_30){ +var _31=$.data(_2f,"combo"); +var _32=$(_2f).textbox("getText"); +if(_32!=_30){ +$(_2f).textbox("setText",_30); +_31.previousText=_30; +} +}; +function _33(_34){ +var _35=[]; +var _36=$.data(_34,"combo").combo; +_36.find(".textbox-value").each(function(){ +_35.push($(this).val()); +}); +return _35; +}; +function _37(_38,_39){ +var _3a=$.data(_38,"combo"); +var _3b=_3a.options; +var _3c=_3a.combo; +if(!$.isArray(_39)){ +_39=_39.split(_3b.separator); +} +var _3d=_33(_38); +_3c.find(".textbox-value").remove(); +var _3e=$(_38).attr("textboxName")||""; +for(var i=0;i<_39.length;i++){ +var _3f=$("").appendTo(_3c); +_3f.attr("name",_3e); +if(_3b.disabled){ +_3f.attr("disabled","disabled"); +} +_3f.val(_39[i]); +} +var _40=(function(){ +if(_3d.length!=_39.length){ +return true; +} +var a1=$.extend(true,[],_3d); +var a2=$.extend(true,[],_39); +a1.sort(); +a2.sort(); +for(var i=0;i_c.height()){ +var h=_c.scrollTop()+_d.position().top+_d.outerHeight()-_c.height(); +_c.scrollTop(h); +} +} +} +}; +function _e(_f,dir){ +var _10=$.data(_f,"combobox").options; +var _11=$(_f).combobox("panel"); +var _12=_11.children("div.combobox-item-hover"); +if(!_12.length){ +_12=_11.children("div.combobox-item-selected"); +} +_12.removeClass("combobox-item-hover"); +var _13="div.combobox-item:visible:not(.combobox-item-disabled):first"; +var _14="div.combobox-item:visible:not(.combobox-item-disabled):last"; +if(!_12.length){ +_12=_11.children(dir=="next"?_13:_14); +}else{ +if(dir=="next"){ +_12=_12.nextAll(_13); +if(!_12.length){ +_12=_11.children(_13); +} +}else{ +_12=_12.prevAll(_13); +if(!_12.length){ +_12=_11.children(_14); +} +} +} +if(_12.length){ +_12.addClass("combobox-item-hover"); +var row=_10.finder.getRow(_f,_12); +if(row){ +_8(_f,row[_10.valueField]); +if(_10.selectOnNavigation){ +_15(_f,row[_10.valueField]); +} +} +} +}; +function _15(_16,_17){ +var _18=$.data(_16,"combobox").options; +var _19=$(_16).combo("getValues"); +if($.inArray(_17+"",_19)==-1){ +if(_18.multiple){ +_19.push(_17); +}else{ +_19=[_17]; +} +_1a(_16,_19); +_18.onSelect.call(_16,_18.finder.getRow(_16,_17)); +} +}; +function _1b(_1c,_1d){ +var _1e=$.data(_1c,"combobox").options; +var _1f=$(_1c).combo("getValues"); +var _20=$.inArray(_1d+"",_1f); +if(_20>=0){ +_1f.splice(_20,1); +_1a(_1c,_1f); +_1e.onUnselect.call(_1c,_1e.finder.getRow(_1c,_1d)); +} +}; +function _1a(_21,_22,_23){ +var _24=$.data(_21,"combobox").options; +var _25=$(_21).combo("panel"); +if(!$.isArray(_22)){ +_22=_22.split(_24.separator); +} +_25.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +var vv=[],ss=[]; +for(var i=0;i<_22.length;i++){ +var v=_22[i]; +var s=v; +_24.finder.getEl(_21,v).addClass("combobox-item-selected"); +var row=_24.finder.getRow(_21,v); +if(row){ +s=row[_24.textField]; +} +vv.push(v); +ss.push(s); +} +$(_21).combo("setValues",vv); +if(!_23){ +$(_21).combo("setText",ss.join(_24.separator)); +} +}; +function _26(_27,_28,_29){ +var _2a=$.data(_27,"combobox"); +var _2b=_2a.options; +_2a.data=_2b.loadFilter.call(_27,_28); +_2a.groups=[]; +_28=_2a.data; +var _2c=$(_27).combobox("getValues"); +var dd=[]; +var _2d=undefined; +for(var i=0;i<_28.length;i++){ +var row=_28[i]; +var v=row[_2b.valueField]+""; +var s=row[_2b.textField]; +var g=row[_2b.groupField]; +if(g){ +if(_2d!=g){ +_2d=g; +_2a.groups.push(g); +dd.push("
            "); +dd.push(_2b.groupFormatter?_2b.groupFormatter.call(_27,g):g); +dd.push("
            "); +} +}else{ +_2d=undefined; +} +var cls="combobox-item"+(row.disabled?" combobox-item-disabled":"")+(g?" combobox-gitem":""); +dd.push("
            "); +dd.push(_2b.formatter?_2b.formatter.call(_27,row):s); +dd.push("
            "); +if(row["selected"]&&$.inArray(v,_2c)==-1){ +_2c.push(v); +} +} +$(_27).combo("panel").html(dd.join("")); +if(_2b.multiple){ +_1a(_27,_2c,_29); +}else{ +_1a(_27,_2c.length?[_2c[_2c.length-1]]:[],_29); +} +_2b.onLoadSuccess.call(_27,_28); +}; +function _2e(_2f,url,_30,_31){ +var _32=$.data(_2f,"combobox").options; +if(url){ +_32.url=url; +} +_30=_30||{}; +if(_32.onBeforeLoad.call(_2f,_30)==false){ +return; +} +_32.loader.call(_2f,_30,function(_33){ +_26(_2f,_33,_31); +},function(){ +_32.onLoadError.apply(this,arguments); +}); +}; +function _34(_35,q){ +var _36=$.data(_35,"combobox"); +var _37=_36.options; +if(_37.multiple&&!q){ +_1a(_35,[],true); +}else{ +_1a(_35,[q],true); +} +if(_37.mode=="remote"){ +_2e(_35,null,{q:q},true); +}else{ +var _38=$(_35).combo("panel"); +_38.find("div.combobox-item-selected,div.combobox-item-hover").removeClass("combobox-item-selected combobox-item-hover"); +_38.find("div.combobox-item,div.combobox-group").hide(); +var _39=_36.data; +var vv=[]; +var qq=_37.multiple?q.split(_37.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +var _3a=undefined; +for(var i=0;i<_39.length;i++){ +var row=_39[i]; +if(_37.filter.call(_35,q,row)){ +var v=row[_37.valueField]; +var s=row[_37.textField]; +var g=row[_37.groupField]; +var _3b=_37.finder.getEl(_35,v).show(); +if(s.toLowerCase()==q.toLowerCase()){ +vv.push(v); +_3b.addClass("combobox-item-selected"); +} +if(_37.groupField&&_3a!=g){ +$("#"+_36.groupIdPrefix+"_"+$.inArray(g,_36.groups)).show(); +_3a=g; +} +} +} +}); +_1a(_35,vv,true); +} +}; +function _3c(_3d){ +var t=$(_3d); +var _3e=t.combobox("options"); +var _3f=t.combobox("panel"); +var _40=_3f.children("div.combobox-item-hover"); +if(_40.length){ +var row=_3e.finder.getRow(_3d,_40); +var _41=row[_3e.valueField]; +if(_3e.multiple){ +if(_40.hasClass("combobox-item-selected")){ +t.combobox("unselect",_41); +}else{ +t.combobox("select",_41); +} +}else{ +t.combobox("select",_41); +} +} +var vv=[]; +$.map(t.combobox("getValues"),function(v){ +if(_2(_3d,v)>=0){ +vv.push(v); +} +}); +t.combobox("setValues",vv); +if(!_3e.multiple){ +t.combobox("hidePanel"); +} +}; +function _42(_43){ +var _44=$.data(_43,"combobox"); +var _45=_44.options; +_1++; +_44.itemIdPrefix="_easyui_combobox_i"+_1; +_44.groupIdPrefix="_easyui_combobox_g"+_1; +$(_43).addClass("combobox-f"); +$(_43).combo($.extend({},_45,{onShowPanel:function(){ +$(_43).combo("panel").find("div.combobox-item,div.combobox-group").show(); +_8(_43,$(_43).combobox("getValue")); +_45.onShowPanel.call(_43); +}})); +$(_43).combo("panel").unbind().bind("mouseover",function(e){ +$(this).children("div.combobox-item-hover").removeClass("combobox-item-hover"); +var _46=$(e.target).closest("div.combobox-item"); +if(!_46.hasClass("combobox-item-disabled")){ +_46.addClass("combobox-item-hover"); +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +$(e.target).closest("div.combobox-item").removeClass("combobox-item-hover"); +e.stopPropagation(); +}).bind("click",function(e){ +var _47=$(e.target).closest("div.combobox-item"); +if(!_47.length||_47.hasClass("combobox-item-disabled")){ +return; +} +var row=_45.finder.getRow(_43,_47); +if(!row){ +return; +} +var _48=row[_45.valueField]; +if(_45.multiple){ +if(_47.hasClass("combobox-item-selected")){ +_1b(_43,_48); +}else{ +_15(_43,_48); +} +}else{ +_15(_43,_48); +$(_43).combo("hidePanel"); +} +e.stopPropagation(); +}); +}; +$.fn.combobox=function(_49,_4a){ +if(typeof _49=="string"){ +var _4b=$.fn.combobox.methods[_49]; +if(_4b){ +return _4b(this,_4a); +}else{ +return this.combo(_49,_4a); +} +} +_49=_49||{}; +return this.each(function(){ +var _4c=$.data(this,"combobox"); +if(_4c){ +$.extend(_4c.options,_49); +_42(this); +}else{ +_4c=$.data(this,"combobox",{options:$.extend({},$.fn.combobox.defaults,$.fn.combobox.parseOptions(this),_49),data:[]}); +_42(this); +var _4d=$.fn.combobox.parseData(this); +if(_4d.length){ +_26(this,_4d); +} +} +if(_4c.options.data){ +_26(this,_4c.options.data); +} +_2e(this); +}); +}; +$.fn.combobox.methods={options:function(jq){ +var _4e=jq.combo("options"); +return $.extend($.data(jq[0],"combobox").options,{width:_4e.width,height:_4e.height,originalValue:_4e.originalValue,disabled:_4e.disabled,readonly:_4e.readonly}); +},getData:function(jq){ +return $.data(jq[0],"combobox").data; +},setValues:function(jq,_4f){ +return jq.each(function(){ +_1a(this,_4f); +}); +},setValue:function(jq,_50){ +return jq.each(function(){ +_1a(this,[_50]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combo("clear"); +var _51=$(this).combo("panel"); +_51.find("div.combobox-item-selected").removeClass("combobox-item-selected"); +}); +},reset:function(jq){ +return jq.each(function(){ +var _52=$(this).combobox("options"); +if(_52.multiple){ +$(this).combobox("setValues",_52.originalValue); +}else{ +$(this).combobox("setValue",_52.originalValue); +} +}); +},loadData:function(jq,_53){ +return jq.each(function(){ +_26(this,_53); +}); +},reload:function(jq,url){ +return jq.each(function(){ +_2e(this,url); +}); +},select:function(jq,_54){ +return jq.each(function(){ +_15(this,_54); +}); +},unselect:function(jq,_55){ +return jq.each(function(){ +_1b(this,_55); +}); +}}; +$.fn.combobox.parseOptions=function(_56){ +var t=$(_56); +return $.extend({},$.fn.combo.parseOptions(_56),$.parser.parseOptions(_56,["valueField","textField","groupField","mode","method","url"])); +}; +$.fn.combobox.parseData=function(_57){ +var _58=[]; +var _59=$(_57).combobox("options"); +$(_57).children().each(function(){ +if(this.tagName.toLowerCase()=="optgroup"){ +var _5a=$(this).attr("label"); +$(this).children().each(function(){ +_5b(this,_5a); +}); +}else{ +_5b(this); +} +}); +return _58; +function _5b(el,_5c){ +var t=$(el); +var row={}; +row[_59.valueField]=t.attr("value")!=undefined?t.attr("value"):t.text(); +row[_59.textField]=t.text(); +row["selected"]=t.is(":selected"); +row["disabled"]=t.is(":disabled"); +if(_5c){ +_59.groupField=_59.groupField||"group"; +row[_59.groupField]=_5c; +} +_58.push(row); +}; +}; +$.fn.combobox.defaults=$.extend({},$.fn.combo.defaults,{valueField:"value",textField:"text",groupField:null,groupFormatter:function(_5d){ +return _5d; +},mode:"local",method:"post",url:null,data:null,keyHandler:{up:function(e){ +_e(this,"prev"); +e.preventDefault(); +},down:function(e){ +_e(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_3c(this); +},query:function(q,e){ +_34(this,q); +}},filter:function(q,row){ +var _5e=$(this).combobox("options"); +return row[_5e.textField].toLowerCase().indexOf(q.toLowerCase())==0; +},formatter:function(row){ +var _5f=$(this).combobox("options"); +return row[_5f.textField]; +},loader:function(_60,_61,_62){ +var _63=$(this).combobox("options"); +if(!_63.url){ +return false; +} +$.ajax({type:_63.method,url:_63.url,data:_60,dataType:"json",success:function(_64){ +_61(_64); +},error:function(){ +_62.apply(this,arguments); +}}); +},loadFilter:function(_65){ +return _65; +},finder:{getEl:function(_66,_67){ +var _68=_2(_66,_67); +var id=$.data(_66,"combobox").itemIdPrefix+"_"+_68; +return $("#"+id); +},getRow:function(_69,p){ +var _6a=$.data(_69,"combobox"); +var _6b=(p instanceof jQuery)?p.attr("id").substr(_6a.itemIdPrefix.length+1):_2(_69,p); +return _6a.data[parseInt(_6b)]; +}},onBeforeLoad:function(_6c){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onSelect:function(_6d){ +},onUnselect:function(_6e){ +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.combogrid.js b/assets/js/easy-ui/plugins/jquery.combogrid.js new file mode 100755 index 0000000000..dc8f39e6f1 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.combogrid.js @@ -0,0 +1,273 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"combogrid"); +var _4=_3.options; +var _5=_3.grid; +$(_2).addClass("combogrid-f").combo($.extend({},_4,{onShowPanel:function(){ +var p=$(this).combogrid("panel"); +var _6=p.outerHeight()-p.height(); +var _7=p._size("minHeight"); +var _8=p._size("maxHeight"); +$(this).combogrid("grid").datagrid("resize",{width:"100%",height:(isNaN(parseInt(_4.panelHeight))?"auto":"100%"),minHeight:(_7?_7-_6:""),maxHeight:(_8?_8-_6:"")}); +_4.onShowPanel.call(this); +}})); +var _9=$(_2).combo("panel"); +if(!_5){ +_5=$("
            ").appendTo(_9); +_3.grid=_5; +} +_5.datagrid($.extend({},_4,{border:false,singleSelect:(!_4.multiple),onLoadSuccess:function(_a){ +var _b=$(_2).combo("getValues"); +var _c=_4.onSelect; +_4.onSelect=function(){ +}; +_1c(_2,_b,_3.remainText); +_4.onSelect=_c; +_4.onLoadSuccess.apply(_2,arguments); +},onClickRow:_d,onSelect:function(_e,_f){ +_10(); +_4.onSelect.call(this,_e,_f); +},onUnselect:function(_11,row){ +_10(); +_4.onUnselect.call(this,_11,row); +},onSelectAll:function(_12){ +_10(); +_4.onSelectAll.call(this,_12); +},onUnselectAll:function(_13){ +if(_4.multiple){ +_10(); +} +_4.onUnselectAll.call(this,_13); +}})); +function _d(_14,row){ +_3.remainText=false; +_10(); +if(!_4.multiple){ +$(_2).combo("hidePanel"); +} +_4.onClickRow.call(this,_14,row); +}; +function _10(){ +var _15=_5.datagrid("getSelections"); +var vv=[],ss=[]; +for(var i=0;i<_15.length;i++){ +vv.push(_15[i][_4.idField]); +ss.push(_15[i][_4.textField]); +} +if(!_4.multiple){ +$(_2).combo("setValues",(vv.length?vv:[""])); +}else{ +$(_2).combo("setValues",vv); +} +if(!_3.remainText){ +$(_2).combo("setText",ss.join(_4.separator)); +} +}; +}; +function nav(_16,dir){ +var _17=$.data(_16,"combogrid"); +var _18=_17.options; +var _19=_17.grid; +var _1a=_19.datagrid("getRows").length; +if(!_1a){ +return; +} +var tr=_18.finder.getTr(_19[0],null,"highlight"); +if(!tr.length){ +tr=_18.finder.getTr(_19[0],null,"selected"); +} +var _1b; +if(!tr.length){ +_1b=(dir=="next"?0:_1a-1); +}else{ +var _1b=parseInt(tr.attr("datagrid-row-index")); +_1b+=(dir=="next"?1:-1); +if(_1b<0){ +_1b=_1a-1; +} +if(_1b>=_1a){ +_1b=0; +} +} +_19.datagrid("highlightRow",_1b); +if(_18.selectOnNavigation){ +_17.remainText=false; +_19.datagrid("selectRow",_1b); +} +}; +function _1c(_1d,_1e,_1f){ +var _20=$.data(_1d,"combogrid"); +var _21=_20.options; +var _22=_20.grid; +var _23=_22.datagrid("getRows"); +var ss=[]; +var _24=$(_1d).combo("getValues"); +var _25=$(_1d).combo("options"); +var _26=_25.onChange; +_25.onChange=function(){ +}; +_22.datagrid("clearSelections"); +if(!$.isArray(_1e)){ +_1e=_1e.split(_21.separator); +} +for(var i=0;i<_1e.length;i++){ +var _27=_22.datagrid("getRowIndex",_1e[i]); +if(_27>=0){ +_22.datagrid("selectRow",_27); +ss.push(_23[_27][_21.textField]); +}else{ +ss.push(_1e[i]); +} +} +$(_1d).combo("setValues",_24); +_25.onChange=_26; +$(_1d).combo("setValues",_1e); +if(!_1f){ +var s=ss.join(_21.separator); +if($(_1d).combo("getText")!=s){ +$(_1d).combo("setText",s); +} +} +}; +function _28(_29,q){ +var _2a=$.data(_29,"combogrid"); +var _2b=_2a.options; +var _2c=_2a.grid; +_2a.remainText=true; +if(_2b.multiple&&!q){ +_1c(_29,[],true); +}else{ +_1c(_29,[q],true); +} +if(_2b.mode=="remote"){ +_2c.datagrid("clearSelections"); +_2c.datagrid("load",$.extend({},_2b.queryParams,{q:q})); +}else{ +if(!q){ +return; +} +_2c.datagrid("clearSelections").datagrid("highlightRow",-1); +var _2d=_2c.datagrid("getRows"); +var qq=_2b.multiple?q.split(_2b.separator):[q]; +$.map(qq,function(q){ +q=$.trim(q); +if(q){ +$.map(_2d,function(row,i){ +if(q==row[_2b.textField]){ +_2c.datagrid("selectRow",i); +}else{ +if(_2b.filter.call(_29,q,row)){ +_2c.datagrid("highlightRow",i); +} +} +}); +} +}); +} +}; +function _2e(_2f){ +var _30=$.data(_2f,"combogrid"); +var _31=_30.options; +var _32=_30.grid; +var tr=_31.finder.getTr(_32[0],null,"highlight"); +_30.remainText=false; +if(tr.length){ +var _33=parseInt(tr.attr("datagrid-row-index")); +if(_31.multiple){ +if(tr.hasClass("datagrid-row-selected")){ +_32.datagrid("unselectRow",_33); +}else{ +_32.datagrid("selectRow",_33); +} +}else{ +_32.datagrid("selectRow",_33); +} +} +var vv=[]; +$.map(_32.datagrid("getSelections"),function(row){ +vv.push(row[_31.idField]); +}); +$(_2f).combogrid("setValues",vv); +if(!_31.multiple){ +$(_2f).combogrid("hidePanel"); +} +}; +$.fn.combogrid=function(_34,_35){ +if(typeof _34=="string"){ +var _36=$.fn.combogrid.methods[_34]; +if(_36){ +return _36(this,_35); +}else{ +return this.combo(_34,_35); +} +} +_34=_34||{}; +return this.each(function(){ +var _37=$.data(this,"combogrid"); +if(_37){ +$.extend(_37.options,_34); +}else{ +_37=$.data(this,"combogrid",{options:$.extend({},$.fn.combogrid.defaults,$.fn.combogrid.parseOptions(this),_34)}); +} +_1(this); +}); +}; +$.fn.combogrid.methods={options:function(jq){ +var _38=jq.combo("options"); +return $.extend($.data(jq[0],"combogrid").options,{width:_38.width,height:_38.height,originalValue:_38.originalValue,disabled:_38.disabled,readonly:_38.readonly}); +},grid:function(jq){ +return $.data(jq[0],"combogrid").grid; +},setValues:function(jq,_39){ +return jq.each(function(){ +_1c(this,_39); +}); +},setValue:function(jq,_3a){ +return jq.each(function(){ +_1c(this,[_3a]); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).combogrid("grid").datagrid("clearSelections"); +$(this).combo("clear"); +}); +},reset:function(jq){ +return jq.each(function(){ +var _3b=$(this).combogrid("options"); +if(_3b.multiple){ +$(this).combogrid("setValues",_3b.originalValue); +}else{ +$(this).combogrid("setValue",_3b.originalValue); +} +}); +}}; +$.fn.combogrid.parseOptions=function(_3c){ +var t=$(_3c); +return $.extend({},$.fn.combo.parseOptions(_3c),$.fn.datagrid.parseOptions(_3c),$.parser.parseOptions(_3c,["idField","textField","mode"])); +}; +$.fn.combogrid.defaults=$.extend({},$.fn.combo.defaults,$.fn.datagrid.defaults,{height:22,loadMsg:null,idField:null,textField:null,mode:"local",keyHandler:{up:function(e){ +nav(this,"prev"); +e.preventDefault(); +},down:function(e){ +nav(this,"next"); +e.preventDefault(); +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_2e(this); +},query:function(q,e){ +_28(this,q); +}},filter:function(q,row){ +var _3d=$(this).combogrid("options"); +return row[_3d.textField].toLowerCase().indexOf(q.toLowerCase())==0; +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.combotree.js b/assets/js/easy-ui/plugins/jquery.combotree.js new file mode 100755 index 0000000000..d08feb934a --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.combotree.js @@ -0,0 +1,175 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"combotree"); +var _4=_3.options; +var _5=_3.tree; +$(_2).addClass("combotree-f"); +$(_2).combo(_4); +var _6=$(_2).combo("panel"); +if(!_5){ +_5=$("
              ").appendTo(_6); +$.data(_2,"combotree").tree=_5; +} +_5.tree($.extend({},_4,{checkbox:_4.multiple,onLoadSuccess:function(_7,_8){ +var _9=$(_2).combotree("getValues"); +if(_4.multiple){ +var _a=_5.tree("getChecked"); +for(var i=0;i<_a.length;i++){ +var id=_a[i].id; +(function(){ +for(var i=0;i<_9.length;i++){ +if(id==_9[i]){ +return; +} +} +_9.push(id); +})(); +} +} +$(_2).combotree("setValues",_9); +_4.onLoadSuccess.call(this,_7,_8); +},onClick:function(_b){ +if(_4.multiple){ +$(this).tree(_b.checked?"uncheck":"check",_b.target); +}else{ +$(_2).combo("hidePanel"); +} +_e(_2); +_4.onClick.call(this,_b); +},onCheck:function(_c,_d){ +_e(_2); +_4.onCheck.call(this,_c,_d); +}})); +}; +function _e(_f){ +var _10=$.data(_f,"combotree"); +var _11=_10.options; +var _12=_10.tree; +var vv=[],ss=[]; +if(_11.multiple){ +var _13=_12.tree("getChecked"); +for(var i=0;i<_13.length;i++){ +vv.push(_13[i].id); +ss.push(_13[i].text); +} +}else{ +var _14=_12.tree("getSelected"); +if(_14){ +vv.push(_14.id); +ss.push(_14.text); +} +} +$(_f).combo("setValues",vv).combo("setText",ss.join(_11.separator)); +}; +function _15(_16,_17){ +var _18=$.data(_16,"combotree"); +var _19=_18.options; +var _1a=_18.tree; +var _1b=_1a.tree("options"); +var _1c=_1b.onCheck; +var _1d=_1b.onSelect; +_1b.onCheck=_1b.onSelect=function(){ +}; +_1a.find("span.tree-checkbox").addClass("tree-checkbox0").removeClass("tree-checkbox1 tree-checkbox2"); +if(!$.isArray(_17)){ +_17=_17.split(_19.separator); +} +for(var i=0;i<_17.length;i++){ +var _1e=_1a.tree("find",_17[i]); +if(_1e){ +_1a.tree("check",_1e.target); +_1a.tree("select",_1e.target); +} +} +_1b.onCheck=_1c; +_1b.onSelect=_1d; +_e(_16); +}; +$.fn.combotree=function(_1f,_20){ +if(typeof _1f=="string"){ +var _21=$.fn.combotree.methods[_1f]; +if(_21){ +return _21(this,_20); +}else{ +return this.combo(_1f,_20); +} +} +_1f=_1f||{}; +return this.each(function(){ +var _22=$.data(this,"combotree"); +if(_22){ +$.extend(_22.options,_1f); +}else{ +$.data(this,"combotree",{options:$.extend({},$.fn.combotree.defaults,$.fn.combotree.parseOptions(this),_1f)}); +} +_1(this); +}); +}; +$.fn.combotree.methods={options:function(jq){ +var _23=jq.combo("options"); +return $.extend($.data(jq[0],"combotree").options,{width:_23.width,height:_23.height,originalValue:_23.originalValue,disabled:_23.disabled,readonly:_23.readonly}); +},clone:function(jq,_24){ +var t=jq.combo("clone",_24); +t.data("combotree",{options:$.extend(true,{},jq.combotree("options")),tree:jq.combotree("tree")}); +return t; +},tree:function(jq){ +return $.data(jq[0],"combotree").tree; +},loadData:function(jq,_25){ +return jq.each(function(){ +var _26=$.data(this,"combotree").options; +_26.data=_25; +var _27=$.data(this,"combotree").tree; +_27.tree("loadData",_25); +}); +},reload:function(jq,url){ +return jq.each(function(){ +var _28=$.data(this,"combotree").options; +var _29=$.data(this,"combotree").tree; +if(url){ +_28.url=url; +} +_29.tree({url:_28.url}); +}); +},setValues:function(jq,_2a){ +return jq.each(function(){ +_15(this,_2a); +}); +},setValue:function(jq,_2b){ +return jq.each(function(){ +_15(this,[_2b]); +}); +},clear:function(jq){ +return jq.each(function(){ +var _2c=$.data(this,"combotree").tree; +_2c.find("div.tree-node-selected").removeClass("tree-node-selected"); +var cc=_2c.tree("getChecked"); +for(var i=0;i
              ').appendTo('body'); + var draggingRow = getDraggingRow(source); + var rows = $.isArray(draggingRow) ? draggingRow : [draggingRow]; + $.map(rows, function(row,i){ + var index = dg.datagrid('getRowIndex', row); + var tr1 = opts.finder.getTr(target, index, 'body', 1); + var tr2 = opts.finder.getTr(target, index, 'body', 2); + tr2.clone().removeAttr('id').removeClass('droppable').appendTo(p); + tr1.clone().removeAttr('id').removeClass('droppable').find('td').insertBefore(p.find('tr:eq('+i+') td:first')); + $(' ').insertBefore(p.find('tr:eq('+i+') td:first')); + }); + p.find('td').css('vertical-align','middle'); + p.hide(); + return p; + }, + deltaX: 15, + deltaY: 15, + onBeforeDrag:function(e){ + var draggingRow = getDraggingRow(this); + if (opts.onBeforeDrag.call(target, draggingRow) == false){return false;} + if ($(e.target).parent().hasClass('datagrid-cell-check')){return false;} + if (e.which != 1){return false;} + $.map($.isArray(draggingRow)?draggingRow:[draggingRow], function(row){ + var index = $(target).datagrid('getRowIndex', row); + opts.finder.getTr(target, index).droppable({accept:'no-accept'}); + }); + }, + onStartDrag: function() { + $(this).draggable('proxy').css({ + left: -10000, + top: -10000 + }); + var draggingRow = getDraggingRow(this); + opts.onStartDrag.call(target, draggingRow); + state.draggingRow = draggingRow; + }, + onDrag: function(e) { + var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; + var d = Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); + if (d>3){ // when drag a little distance, show the proxy object + $(this).draggable('proxy').show(); + var tr = opts.finder.getTr(target, parseInt($(this).attr('datagrid-row-index')), 'body'); + $.extend(e.data, { + startX: tr.offset().left, + startY: tr.offset().top, + offsetWidth: 0, + offsetHeight: 0 + }); + } + this.pageY = e.pageY; + }, + onStopDrag:function(){ + $.map(disabledDroppingRows, function(row){ + var r = $(row); + if (r.hasClass('datagrid-row')){ + r.droppable('enable'); + } else if (r.find('tr.datagrid-row:first').length == 0){ + r.droppable('enable'); + } + }); + disabledDroppingRows = []; + + $.map($.isArray(state.draggingRow) ? state.draggingRow : [state.draggingRow], function(row){ + var index = dg.datagrid('getRowIndex', row); + dg.datagrid('enableDnd', index); + }); + opts.onStopDrag.call(target, state.draggingRow); + } + }; + var droppableOptions = { + accept: 'tr.datagrid-row', + onDragEnter: function(e, source){ + if ($(this).droppable('options').disabled){return;} + if (opts.onDragEnter.call(target, getRow(this), getDraggingRow(source)) == false){ + setProxyFlag(source, false); + var tr = opts.finder.getTr(target, $(this).attr('datagrid-row-index')); + tr.find('td').css('border', ''); + tr.droppable('disable'); + $(this).droppable('disable'); + disabledDroppingRows.push(this); + } + }, + onDragOver: function(e, source) { + if ($(this).droppable('options').disabled){ + return; + } + if ($.inArray(this, disabledDroppingRows) >= 0){ + return; + } + var pageY = source.pageY; + var top = $(this).offset().top; + var bottom = top + $(this).outerHeight(); + + setProxyFlag(source, true); + var tr = opts.finder.getTr(target, $(this).attr('datagrid-row-index')); + tr.children('td').css('border',''); + if (pageY > top + (bottom - top) / 2) { + tr.children('td').css('border-bottom','1px solid red'); + } else { + tr.children('td').css('border-top','1px solid red'); + } + + if (opts.onDragOver.call(target, getRow(this), getDraggingRow(source)) == false){ + setProxyFlag(source, false); + tr.find('td').css('border', ''); + tr.droppable('disable'); + $(this).droppable('disable'); + disabledDroppingRows.push(this); + } + }, + onDragLeave: function(e, source) { + if ($(this).droppable('options').disabled){ + return; + } + setProxyFlag(source, false); + var tr = opts.finder.getTr(target, $(this).attr('datagrid-row-index')); + tr.children('td').css('border',''); + opts.onDragLeave.call(target, getRow(this), getDraggingRow(source)); + }, + onDrop: function(e, source) { + if ($(this).droppable('options').disabled){ + return; + } + + var tr = opts.finder.getTr(target, $(this).attr('datagrid-row-index')); + var td = tr.children('td'); + var point = parseInt(td.css('border-top-width')) ? 'top' : 'bottom'; + td.css('border',''); + var dRow = getRow(this); + var sRow = getDraggingRow(source); + + if (opts.onBeforeDrop.call(target, dRow, sRow, point) == false){ + return; + } + insert.call(this); + opts.onDrop.call(target, dRow, sRow, point); + + function insert(){ + var sourceIndex = parseInt($(source).attr('datagrid-row-index')); + var destIndex = parseInt($(this).attr('datagrid-row-index')); + var sourceTarget = $(source).closest('div.datagrid-view').children('table')[0]; + var target = $(this).closest('div.datagrid-view').children('table')[0]; + + if ($(this).hasClass('datagrid-view')){ + $(target).datagrid('_appendRow', sRow); + $(sourceTarget).datagrid('_deleteRow', sRow); + if ($(sourceTarget).datagrid('getRows').length == 0){ + $(sourceTarget).datagrid('enableDnd'); + } + } else if (target != sourceTarget){ + var index = point == 'top' ? destIndex : (destIndex+1); + if (index >= 0){ + $(sourceTarget).datagrid('_deleteRow', sRow); + $(target).datagrid('_insertRow', { + index: index, + row: sRow + }); + } + } else { + var dg = $(target); + var index = point == 'top' ? destIndex : (destIndex+1); + if (index >= 0){ + dg.datagrid('_deleteRow', sRow); + var destIndex = parseInt($(this).attr('datagrid-row-index')); + var index = point == 'top' ? destIndex : (destIndex+1); + if (index >= 0){ + dg.datagrid('_insertRow', { + index: index, + row: sRow + }); + } + } + } + } + } + } + + if (index != undefined){ + var trs = opts.finder.getTr(this, index); + } else { + var trs = opts.finder.getTr(this, 0, 'allbody'); + } + trs.draggable(draggableOptions); + trs.droppable(droppableOptions); + setDroppable(target); + + function setProxyFlag(source, allowed){ + var icon = $(source).draggable('proxy').find('span.tree-dnd-icon'); + icon.removeClass('tree-dnd-yes tree-dnd-no').addClass(allowed ? 'tree-dnd-yes' : 'tree-dnd-no'); + } + function getRow(tr){ + if (!$(tr).hasClass('datagrid-row')){return null} + var target = $(tr).closest('div.datagrid-view').children('table')[0]; + var opts = $(target).datagrid('options'); + return opts.finder.getRow(target, $(tr)); + } + function getDraggingRow(tr){ + if (!$(tr).hasClass('datagrid-row')){return null} + var target = $(tr).closest('div.datagrid-view').children('table')[0]; + var opts = $(target).datagrid('options'); + if (opts.dragSelection){ + var rows = $(target).datagrid('getSelections'); + $.map(rows, function(row){ + row._selected = true; + }); + if (!rows.length){ + var row = opts.finder.getRow(target, $(tr)); + row._selected = false; + return row; + } + return rows; + } else { + var row = opts.finder.getRow(target, $(tr)); + if ($(tr).hasClass('datagrid-row-selected')){ + row._selected = true; + } + return row; + } + } + function setDroppable(target){ + var c = $(target).datagrid('getPanel').find('div.datagrid-view'); + c.droppable(droppableOptions); + if (c.find('tr.datagrid-row:first').length){ + c.droppable('disable'); + } else { + c.droppable('enable'); + } + } + }); + } + + }); +})(jQuery); diff --git a/assets/js/easy-ui/plugins/jquery.datagrid.js b/assets/js/easy-ui/plugins/jquery.datagrid.js new file mode 100755 index 0000000000..7cd6a86bf0 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.datagrid.js @@ -0,0 +1,2423 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +var _1=0; +function _2(a,o){ +for(var i=0,_3=a.length;i<_3;i++){ +if(a[i]==o){ +return i; +} +} +return -1; +}; +function _4(a,o,id){ +if(typeof o=="string"){ +for(var i=0,_5=a.length;i<_5;i++){ +if(a[i][o]==id){ +a.splice(i,1); +return; +} +} +}else{ +var _6=_2(a,o); +if(_6!=-1){ +a.splice(_6,1); +} +} +}; +function _7(a,o,r){ +for(var i=0,_8=a.length;i<_8;i++){ +if(a[i][o]==r[o]){ +return; +} +} +a.push(r); +}; +function _9(_a){ +var _b=$.data(_a,"datagrid"); +var _c=_b.options; +var _d=_b.panel; +var dc=_b.dc; +var ss=null; +if(_c.sharedStyleSheet){ +ss=typeof _c.sharedStyleSheet=="boolean"?"head":_c.sharedStyleSheet; +}else{ +ss=_d.closest("div.datagrid-view"); +if(!ss.length){ +ss=dc.view; +} +} +var cc=$(ss); +var _e=$.data(cc[0],"ss"); +if(!_e){ +_e=$.data(cc[0],"ss",{cache:{},dirty:[]}); +} +return {add:function(_f){ +var ss=[""); +$(ss.join("\n")).appendTo(cc); +cc.children("style[easyui]:not(:last)").remove(); +},getRule:function(_12){ +var _13=cc.children("style[easyui]:last")[0]; +var _14=_13.styleSheet?_13.styleSheet:(_13.sheet||document.styleSheets[document.styleSheets.length-1]); +var _15=_14.cssRules||_14.rules; +return _15[_12]; +},set:function(_16,_17){ +var _18=_e.cache[_16]; +if(_18){ +_18.width=_17; +var _19=this.getRule(_18.index); +if(_19){ +_19.style["width"]=_17; +} +} +},remove:function(_1a){ +var tmp=[]; +for(var s in _e.cache){ +if(s.indexOf(_1a)==-1){ +tmp.push([s,_e.cache[s].width]); +} +} +_e.cache={}; +this.add(tmp); +},dirty:function(_1b){ +if(_1b){ +_e.dirty.push(_1b); +} +},clean:function(){ +for(var i=0;i<_e.dirty.length;i++){ +this.remove(_e.dirty[i]); +} +_e.dirty=[]; +}}; +}; +function _1c(_1d,_1e){ +var _1f=$.data(_1d,"datagrid"); +var _20=_1f.options; +var _21=_1f.panel; +if(_1e){ +$.extend(_20,_1e); +} +if(_20.fit==true){ +var p=_21.panel("panel").parent(); +_20.width=p.width(); +_20.height=p.height(); +} +_21.panel("resize",_20); +}; +function _22(_23){ +var _24=$.data(_23,"datagrid"); +var _25=_24.options; +var dc=_24.dc; +var _26=_24.panel; +var _27=_26.width(); +var _28=_26.height(); +var _29=dc.view; +var _2a=dc.view1; +var _2b=dc.view2; +var _2c=_2a.children("div.datagrid-header"); +var _2d=_2b.children("div.datagrid-header"); +var _2e=_2c.find("table"); +var _2f=_2d.find("table"); +_29.width(_27); +var _30=_2c.children("div.datagrid-header-inner").show(); +_2a.width(_30.find("table").width()); +if(!_25.showHeader){ +_30.hide(); +} +_2b.width(_27-_2a._outerWidth()); +_2a.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_2a.width()); +_2b.children("div.datagrid-header,div.datagrid-body,div.datagrid-footer").width(_2b.width()); +var hh; +_2c.add(_2d).css("height",""); +_2e.add(_2f).css("height",""); +hh=Math.max(_2e.height(),_2f.height()); +_2e.add(_2f).height(hh); +_2c.add(_2d)._outerHeight(hh); +dc.body1.add(dc.body2).children("table.datagrid-btable-frozen").css({position:"absolute",top:dc.header2._outerHeight()}); +var _31=dc.body2.children("table.datagrid-btable-frozen")._outerHeight(); +var _32=_31+_2b.children("div.datagrid-header")._outerHeight()+_2b.children("div.datagrid-footer")._outerHeight()+_26.children("div.datagrid-toolbar")._outerHeight(); +_26.children("div.datagrid-pager").each(function(){ +_32+=$(this)._outerHeight(); +}); +var _33=_26.outerHeight()-_26.height(); +var _34=_26._size("minHeight")||""; +var _35=_26._size("maxHeight")||""; +_2a.add(_2b).children("div.datagrid-body").css({marginTop:_31,height:(isNaN(parseInt(_25.height))?"":(_28-_32)),minHeight:(_34?_34-_33-_32:""),maxHeight:(_35?_35-_33-_32:"")}); +_29.height(_2b.height()); +}; +function _36(_37,_38,_39){ +var _3a=$.data(_37,"datagrid").data.rows; +var _3b=$.data(_37,"datagrid").options; +var dc=$.data(_37,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!_3b.nowrap||_3b.autoRowHeight||_39)){ +if(_38!=undefined){ +var tr1=_3b.finder.getTr(_37,_38,"body",1); +var tr2=_3b.finder.getTr(_37,_38,"body",2); +_3c(tr1,tr2); +}else{ +var tr1=_3b.finder.getTr(_37,0,"allbody",1); +var tr2=_3b.finder.getTr(_37,0,"allbody",2); +_3c(tr1,tr2); +if(_3b.showFooter){ +var tr1=_3b.finder.getTr(_37,0,"allfooter",1); +var tr2=_3b.finder.getTr(_37,0,"allfooter",2); +_3c(tr1,tr2); +} +} +} +_22(_37); +if(_3b.height=="auto"){ +var _3d=dc.body1.parent(); +var _3e=dc.body2; +var _3f=_40(_3e); +var _41=_3f.height; +if(_3f.width>_3e.width()){ +_41+=18; +} +_41-=parseInt(_3e.css("marginTop"))||0; +_3d.height(_41); +_3e.height(_41); +dc.view.height(dc.view2.height()); +} +dc.body2.triggerHandler("scroll"); +function _3c(_42,_43){ +for(var i=0;i<_43.length;i++){ +var tr1=$(_42[i]); +var tr2=$(_43[i]); +tr1.css("height",""); +tr2.css("height",""); +var _44=Math.max(tr1.height(),tr2.height()); +tr1.css("height",_44); +tr2.css("height",_44); +} +}; +function _40(cc){ +var _45=0; +var _46=0; +$(cc).children().each(function(){ +var c=$(this); +if(c.is(":visible")){ +_46+=c._outerHeight(); +if(_45"); +} +_4c(true); +_4c(false); +_22(_48); +function _4c(_4d){ +var _4e=_4d?1:2; +var tr=_4b.finder.getTr(_48,_49,"body",_4e); +(_4d?dc.body1:dc.body2).children("table.datagrid-btable-frozen").append(tr); +}; +}; +function _4f(_50,_51){ +function _52(){ +var _53=[]; +var _54=[]; +$(_50).children("thead").each(function(){ +var opt=$.parser.parseOptions(this,[{frozen:"boolean"}]); +$(this).find("tr").each(function(){ +var _55=[]; +$(this).find("th").each(function(){ +var th=$(this); +var col=$.extend({},$.parser.parseOptions(this,["field","align","halign","order","width",{sortable:"boolean",checkbox:"boolean",resizable:"boolean",fixed:"boolean"},{rowspan:"number",colspan:"number"}]),{title:(th.html()||undefined),hidden:(th.attr("hidden")?true:undefined),formatter:(th.attr("formatter")?eval(th.attr("formatter")):undefined),styler:(th.attr("styler")?eval(th.attr("styler")):undefined),sorter:(th.attr("sorter")?eval(th.attr("sorter")):undefined)}); +if(col.width&&String(col.width).indexOf("%")==-1){ +col.width=parseInt(col.width); +} +if(th.attr("editor")){ +var s=$.trim(th.attr("editor")); +if(s.substr(0,1)=="{"){ +col.editor=eval("("+s+")"); +}else{ +col.editor=s; +} +} +_55.push(col); +}); +opt.frozen?_53.push(_55):_54.push(_55); +}); +}); +return [_53,_54]; +}; +var _56=$("
              "+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+""+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+"
              "+""+"
              "+"
              "+"
              "+"
              ").insertAfter(_50); +_56.panel({doSize:false,cls:"datagrid"}); +$(_50).addClass("datagrid-f").hide().appendTo(_56.children("div.datagrid-view")); +var cc=_52(); +var _57=_56.children("div.datagrid-view"); +var _58=_57.children("div.datagrid-view1"); +var _59=_57.children("div.datagrid-view2"); +return {panel:_56,frozenColumns:cc[0],columns:cc[1],dc:{view:_57,view1:_58,view2:_59,header1:_58.children("div.datagrid-header").children("div.datagrid-header-inner"),header2:_59.children("div.datagrid-header").children("div.datagrid-header-inner"),body1:_58.children("div.datagrid-body").children("div.datagrid-body-inner"),body2:_59.children("div.datagrid-body"),footer1:_58.children("div.datagrid-footer").children("div.datagrid-footer-inner"),footer2:_59.children("div.datagrid-footer").children("div.datagrid-footer-inner")}}; +}; +function _5a(_5b){ +var _5c=$.data(_5b,"datagrid"); +var _5d=_5c.options; +var dc=_5c.dc; +var _5e=_5c.panel; +_5c.ss=$(_5b).datagrid("createStyleSheet"); +_5e.panel($.extend({},_5d,{id:null,doSize:false,onResize:function(_5f,_60){ +setTimeout(function(){ +if($.data(_5b,"datagrid")){ +_22(_5b); +_b0(_5b); +_5d.onResize.call(_5e,_5f,_60); +} +},0); +},onExpand:function(){ +_36(_5b); +_5d.onExpand.call(_5e); +}})); +_5c.rowIdPrefix="datagrid-row-r"+(++_1); +_5c.cellClassPrefix="datagrid-cell-c"+_1; +_61(dc.header1,_5d.frozenColumns,true); +_61(dc.header2,_5d.columns,false); +_62(); +dc.header1.add(dc.header2).css("display",_5d.showHeader?"block":"none"); +dc.footer1.add(dc.footer2).css("display",_5d.showFooter?"block":"none"); +if(_5d.toolbar){ +if($.isArray(_5d.toolbar)){ +$("div.datagrid-toolbar",_5e).remove(); +var tb=$("
              ").prependTo(_5e); +var tr=tb.find("tr"); +for(var i=0;i<_5d.toolbar.length;i++){ +var btn=_5d.toolbar[i]; +if(btn=="-"){ +$("
              ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var _63=$("").appendTo(td); +_63[0].onclick=eval(btn.handler||function(){ +}); +_63.linkbutton($.extend({},btn,{plain:true})); +} +} +}else{ +$(_5d.toolbar).addClass("datagrid-toolbar").prependTo(_5e); +$(_5d.toolbar).show(); +} +}else{ +$("div.datagrid-toolbar",_5e).remove(); +} +$("div.datagrid-pager",_5e).remove(); +if(_5d.pagination){ +var _64=$("
              "); +if(_5d.pagePosition=="bottom"){ +_64.appendTo(_5e); +}else{ +if(_5d.pagePosition=="top"){ +_64.addClass("datagrid-pager-top").prependTo(_5e); +}else{ +var _65=$("
              ").prependTo(_5e); +_64.appendTo(_5e); +_64=_64.add(_65); +} +} +_64.pagination({total:(_5d.pageNumber*_5d.pageSize),pageNumber:_5d.pageNumber,pageSize:_5d.pageSize,pageList:_5d.pageList,onSelectPage:function(_66,_67){ +_5d.pageNumber=_66||1; +_5d.pageSize=_67; +_64.pagination("refresh",{pageNumber:_66,pageSize:_67}); +_ae(_5b); +}}); +_5d.pageSize=_64.pagination("options").pageSize; +} +function _61(_68,_69,_6a){ +if(!_69){ +return; +} +$(_68).show(); +$(_68).empty(); +var _6b=[]; +var _6c=[]; +if(_5d.sortName){ +_6b=_5d.sortName.split(","); +_6c=_5d.sortOrder.split(","); +} +var t=$("
              ").appendTo(_68); +for(var i=0;i<_69.length;i++){ +var tr=$("").appendTo($("tbody",t)); +var _6d=_69[i]; +for(var j=0;j<_6d.length;j++){ +var col=_6d[j]; +var _6e=""; +if(col.rowspan){ +_6e+="rowspan=\""+col.rowspan+"\" "; +} +if(col.colspan){ +_6e+="colspan=\""+col.colspan+"\" "; +} +var td=$("").appendTo(tr); +if(col.checkbox){ +td.attr("field",col.field); +$("
              ").html("").appendTo(td); +}else{ +if(col.field){ +td.attr("field",col.field); +td.append("
              "); +$("span",td).html(col.title); +$("span.datagrid-sort-icon",td).html(" "); +var _6f=td.find("div.datagrid-cell"); +var pos=_2(_6b,col.field); +if(pos>=0){ +_6f.addClass("datagrid-sort-"+_6c[pos]); +} +if(col.resizable==false){ +_6f.attr("resizable","false"); +} +if(col.width){ +var _70=$.parser.parseValue("width",col.width,dc.view,_5d.scrollbarSize); +_6f._outerWidth(_70-1); +col.boxWidth=parseInt(_6f[0].style.width); +col.deltaWidth=_70-col.boxWidth; +}else{ +col.auto=true; +} +_6f.css("text-align",(col.halign||col.align||"")); +col.cellClass=_5c.cellClassPrefix+"-"+col.field.replace(/[\.|\s]/g,"-"); +_6f.addClass(col.cellClass).css("width",""); +}else{ +$("
              ").html(col.title).appendTo(td); +} +} +if(col.hidden){ +td.hide(); +} +} +} +if(_6a&&_5d.rownumbers){ +var td=$("
              "); +if($("tr",t).length==0){ +td.wrap("").parent().appendTo($("tbody",t)); +}else{ +td.prependTo($("tr:first",t)); +} +} +}; +function _62(){ +var _71=[]; +var _72=_73(_5b,true).concat(_73(_5b)); +for(var i=0;i<_72.length;i++){ +var col=_74(_5b,_72[i]); +if(col&&!col.checkbox){ +_71.push(["."+col.cellClass,col.boxWidth?col.boxWidth+"px":"auto"]); +} +} +_5c.ss.add(_71); +_5c.ss.dirty(_5c.cellSelectorPrefix); +_5c.cellSelectorPrefix="."+_5c.cellClassPrefix; +}; +}; +function _75(_76){ +var _77=$.data(_76,"datagrid"); +var _78=_77.panel; +var _79=_77.options; +var dc=_77.dc; +var _7a=dc.header1.add(dc.header2); +_7a.find("input[type=checkbox]").unbind(".datagrid").bind("click.datagrid",function(e){ +if(_79.singleSelect&&_79.selectOnCheck){ +return false; +} +if($(this).is(":checked")){ +_123(_76); +}else{ +_129(_76); +} +e.stopPropagation(); +}); +var _7b=_7a.find("div.datagrid-cell"); +_7b.closest("td").unbind(".datagrid").bind("mouseenter.datagrid",function(){ +if(_77.resizing){ +return; +} +$(this).addClass("datagrid-header-over"); +}).bind("mouseleave.datagrid",function(){ +$(this).removeClass("datagrid-header-over"); +}).bind("contextmenu.datagrid",function(e){ +var _7c=$(this).attr("field"); +_79.onHeaderContextMenu.call(_76,e,_7c); +}); +_7b.unbind(".datagrid").bind("click.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +if(e.pageXp1){ +_a2(_76,$(this).parent().attr("field")); +} +}).bind("dblclick.datagrid",function(e){ +var p1=$(this).offset().left+5; +var p2=$(this).offset().left+$(this)._outerWidth()-5; +var _7d=_79.resizeHandle=="right"?(e.pageX>p2):(_79.resizeHandle=="left"?(e.pageXp2)); +if(_7d){ +var _7e=$(this).parent().attr("field"); +var col=_74(_76,_7e); +if(col.resizable==false){ +return; +} +$(_76).datagrid("autoSizeColumn",_7e); +col.auto=false; +} +}); +var _7f=_79.resizeHandle=="right"?"e":(_79.resizeHandle=="left"?"w":"e,w"); +_7b.each(function(){ +$(this).resizable({handles:_7f,disabled:($(this).attr("resizable")?$(this).attr("resizable")=="false":false),minWidth:25,onStartResize:function(e){ +_77.resizing=true; +_7a.css("cursor",$("body").css("cursor")); +if(!_77.proxy){ +_77.proxy=$("
              ").appendTo(dc.view); +} +_77.proxy.css({left:e.pageX-$(_78).offset().left-1,display:"none"}); +setTimeout(function(){ +if(_77.proxy){ +_77.proxy.show(); +} +},500); +},onResize:function(e){ +_77.proxy.css({left:e.pageX-$(_78).offset().left-1,display:"block"}); +return false; +},onStopResize:function(e){ +_7a.css("cursor",""); +$(this).css("height",""); +var _80=$(this).parent().attr("field"); +var col=_74(_76,_80); +col.width=$(this)._outerWidth(); +col.boxWidth=col.width-col.deltaWidth; +col.auto=undefined; +$(this).css("width",""); +_d1(_76,_80); +_77.proxy.remove(); +_77.proxy=null; +if($(this).parents("div:first.datagrid-header").parent().hasClass("datagrid-view1")){ +_22(_76); +} +_b0(_76); +_79.onResizeColumn.call(_76,_80,col.width); +setTimeout(function(){ +_77.resizing=false; +},0); +}}); +}); +var bb=dc.body1.add(dc.body2); +bb.unbind(); +for(var _81 in _79.rowEvents){ +bb.bind(_81,_79.rowEvents[_81]); +} +dc.body1.bind("mousewheel DOMMouseScroll",function(e){ +var e1=e.originalEvent||window.event; +var _82=e1.wheelDelta||e1.detail*(-1); +var dg=$(e.target).closest("div.datagrid-view").children(".datagrid-f"); +var dc=dg.data("datagrid").dc; +dc.body2.scrollTop(dc.body2.scrollTop()-_82); +}); +dc.body2.bind("scroll",function(){ +var b1=dc.view1.children("div.datagrid-body"); +b1.scrollTop($(this).scrollTop()); +var c1=dc.body1.children(":first"); +var c2=dc.body2.children(":first"); +if(c1.length&&c2.length){ +var _83=c1.offset().top; +var _84=c2.offset().top; +if(_83!=_84){ +b1.scrollTop(b1.scrollTop()+_83-_84); +} +} +dc.view2.children("div.datagrid-header,div.datagrid-footer")._scrollLeft($(this)._scrollLeft()); +dc.body2.children("table.datagrid-btable-frozen").css("left",-$(this)._scrollLeft()); +}); +}; +function _85(_86){ +return function(e){ +var tr=_87(e.target); +if(!tr){ +return; +} +var _88=_89(tr); +if($.data(_88,"datagrid").resizing){ +return; +} +var _8a=_8b(tr); +if(_86){ +_8c(_88,_8a); +}else{ +var _8d=$.data(_88,"datagrid").options; +_8d.finder.getTr(_88,_8a).removeClass("datagrid-row-over"); +} +}; +}; +function _8e(e){ +var tr=_87(e.target); +if(!tr){ +return; +} +var _8f=_89(tr); +var _90=$.data(_8f,"datagrid").options; +var _91=_8b(tr); +var tt=$(e.target); +if(tt.parent().hasClass("datagrid-cell-check")){ +if(_90.singleSelect&&_90.selectOnCheck){ +tt._propAttr("checked",!tt.is(":checked")); +_92(_8f,_91); +}else{ +if(tt.is(":checked")){ +tt._propAttr("checked",false); +_92(_8f,_91); +}else{ +tt._propAttr("checked",true); +_93(_8f,_91); +} +} +}else{ +var row=_90.finder.getRow(_8f,_91); +var td=tt.closest("td[field]",tr); +if(td.length){ +var _94=td.attr("field"); +_90.onClickCell.call(_8f,_91,_94,row[_94]); +} +if(_90.singleSelect==true){ +_95(_8f,_91); +}else{ +if(_90.ctrlSelect){ +if(e.ctrlKey){ +if(tr.hasClass("datagrid-row-selected")){ +_96(_8f,_91); +}else{ +_95(_8f,_91); +} +}else{ +if(e.shiftKey){ +$(_8f).datagrid("clearSelections"); +var _97=Math.min(_90.lastSelectedIndex||0,_91); +var _98=Math.max(_90.lastSelectedIndex||0,_91); +for(var i=_97;i<=_98;i++){ +_95(_8f,i); +} +}else{ +$(_8f).datagrid("clearSelections"); +_95(_8f,_91); +_90.lastSelectedIndex=_91; +} +} +}else{ +if(tr.hasClass("datagrid-row-selected")){ +_96(_8f,_91); +}else{ +_95(_8f,_91); +} +} +} +_90.onClickRow.call(_8f,_91,row); +} +}; +function _99(e){ +var tr=_87(e.target); +if(!tr){ +return; +} +var _9a=_89(tr); +var _9b=$.data(_9a,"datagrid").options; +var _9c=_8b(tr); +var row=_9b.finder.getRow(_9a,_9c); +var td=$(e.target).closest("td[field]",tr); +if(td.length){ +var _9d=td.attr("field"); +_9b.onDblClickCell.call(_9a,_9c,_9d,row[_9d]); +} +_9b.onDblClickRow.call(_9a,_9c,row); +}; +function _9e(e){ +var tr=_87(e.target); +if(!tr){ +return; +} +var _9f=_89(tr); +var _a0=$.data(_9f,"datagrid").options; +var _a1=_8b(tr); +var row=_a0.finder.getRow(_9f,_a1); +_a0.onRowContextMenu.call(_9f,e,_a1,row); +}; +function _89(t){ +return $(t).closest("div.datagrid-view").children(".datagrid-f")[0]; +}; +function _87(t){ +var tr=$(t).closest("tr.datagrid-row"); +if(tr.length&&tr.parent().length){ +return tr; +}else{ +return undefined; +} +}; +function _8b(tr){ +if(tr.attr("datagrid-row-index")){ +return parseInt(tr.attr("datagrid-row-index")); +}else{ +return tr.attr("node-id"); +} +}; +function _a2(_a3,_a4){ +var _a5=$.data(_a3,"datagrid"); +var _a6=_a5.options; +_a4=_a4||{}; +var _a7={sortName:_a6.sortName,sortOrder:_a6.sortOrder}; +if(typeof _a4=="object"){ +$.extend(_a7,_a4); +} +var _a8=[]; +var _a9=[]; +if(_a7.sortName){ +_a8=_a7.sortName.split(","); +_a9=_a7.sortOrder.split(","); +} +if(typeof _a4=="string"){ +var _aa=_a4; +var col=_74(_a3,_aa); +if(!col.sortable||_a5.resizing){ +return; +} +var _ab=col.order||"asc"; +var pos=_2(_a8,_aa); +if(pos>=0){ +var _ac=_a9[pos]=="asc"?"desc":"asc"; +if(_a6.multiSort&&_ac==_ab){ +_a8.splice(pos,1); +_a9.splice(pos,1); +}else{ +_a9[pos]=_ac; +} +}else{ +if(_a6.multiSort){ +_a8.push(_aa); +_a9.push(_ab); +}else{ +_a8=[_aa]; +_a9=[_ab]; +} +} +_a7.sortName=_a8.join(","); +_a7.sortOrder=_a9.join(","); +} +if(_a6.onBeforeSortColumn.call(_a3,_a7.sortName,_a7.sortOrder)==false){ +return; +} +$.extend(_a6,_a7); +var dc=_a5.dc; +var _ad=dc.header1.add(dc.header2); +_ad.find("div.datagrid-cell").removeClass("datagrid-sort-asc datagrid-sort-desc"); +for(var i=0;i<_a8.length;i++){ +var col=_74(_a3,_a8[i]); +_ad.find("div."+col.cellClass).addClass("datagrid-sort-"+_a9[i]); +} +if(_a6.remoteSort){ +_ae(_a3); +}else{ +_af(_a3,$(_a3).datagrid("getData")); +} +_a6.onSortColumn.call(_a3,_a6.sortName,_a6.sortOrder); +}; +function _b0(_b1){ +var _b2=$.data(_b1,"datagrid"); +var _b3=_b2.options; +var dc=_b2.dc; +var _b4=dc.view2.children("div.datagrid-header"); +dc.body2.css("overflow-x",""); +_b5(); +_b6(); +if(_b4.width()>=_b4.find("table").width()){ +dc.body2.css("overflow-x","hidden"); +} +function _b6(){ +if(!_b3.fitColumns){ +return; +} +if(!_b2.leftWidth){ +_b2.leftWidth=0; +} +var _b7=0; +var cc=[]; +var _b8=_73(_b1,false); +for(var i=0;i<_b8.length;i++){ +var col=_74(_b1,_b8[i]); +if(_b9(col)){ +_b7+=col.width; +cc.push({field:col.field,col:col,addingWidth:0}); +} +} +if(!_b7){ +return; +} +cc[cc.length-1].addingWidth-=_b2.leftWidth; +var _ba=_b4.children("div.datagrid-header-inner").show(); +var _bb=_b4.width()-_b4.find("table").width()-_b3.scrollbarSize+_b2.leftWidth; +var _bc=_bb/_b7; +if(!_b3.showHeader){ +_ba.hide(); +} +for(var i=0;i0){ +c.col.boxWidth+=c.addingWidth; +c.col.width+=c.addingWidth; +} +} +_b2.leftWidth=_bb; +_d1(_b1); +}; +function _b5(){ +var _be=false; +var _bf=_73(_b1,true).concat(_73(_b1,false)); +$.map(_bf,function(_c0){ +var col=_74(_b1,_c0); +if(String(col.width||"").indexOf("%")>=0){ +var _c1=$.parser.parseValue("width",col.width,dc.view,_b3.scrollbarSize)-col.deltaWidth; +if(_c1>0){ +col.boxWidth=_c1; +_be=true; +} +} +}); +if(_be){ +_d1(_b1); +} +}; +function _b9(col){ +if(String(col.width||"").indexOf("%")>=0){ +return false; +} +if(!col.hidden&&!col.checkbox&&!col.auto&&!col.fixed){ +return true; +} +}; +}; +function _c2(_c3,_c4){ +var _c5=$.data(_c3,"datagrid"); +var _c6=_c5.options; +var dc=_c5.dc; +var tmp=$("
              ").appendTo("body"); +if(_c4){ +_1c(_c4); +if(_c6.fitColumns){ +_22(_c3); +_b0(_c3); +} +}else{ +var _c7=false; +var _c8=_73(_c3,true).concat(_73(_c3,false)); +for(var i=0;i<_c8.length;i++){ +var _c4=_c8[i]; +var col=_74(_c3,_c4); +if(col.auto){ +_1c(_c4); +_c7=true; +} +} +if(_c7&&_c6.fitColumns){ +_22(_c3); +_b0(_c3); +} +} +tmp.remove(); +function _1c(_c9){ +var _ca=dc.view.find("div.datagrid-header td[field=\""+_c9+"\"] div.datagrid-cell"); +_ca.css("width",""); +var col=$(_c3).datagrid("getColumnOption",_c9); +col.width=undefined; +col.boxWidth=undefined; +col.auto=true; +$(_c3).datagrid("fixColumnSize",_c9); +var _cb=Math.max(_cc("header"),_cc("allbody"),_cc("allfooter"))+1; +_ca._outerWidth(_cb-1); +col.width=_cb; +col.boxWidth=parseInt(_ca[0].style.width); +col.deltaWidth=_cb-col.boxWidth; +_ca.css("width",""); +$(_c3).datagrid("fixColumnSize",_c9); +_c6.onResizeColumn.call(_c3,_c9,col.width); +function _cc(_cd){ +var _ce=0; +if(_cd=="header"){ +_ce=_cf(_ca); +}else{ +_c6.finder.getTr(_c3,0,_cd).find("td[field=\""+_c9+"\"] div.datagrid-cell").each(function(){ +var w=_cf($(this)); +if(_ce=0){ +var _ee=col.field||""; +for(var c=0;c<(col.colspan||1);c++){ +for(var r=0;r<(col.rowspan||1);r++){ +aa[_eb+r][_ec]=_ee; +} +_ec++; +} +} +}); +} +return aa[aa.length-1]; +function _ea(){ +var _ef=0; +$.map(_e8[0],function(col){ +_ef+=col.colspan||1; +}); +return _ef; +}; +function _ed(a){ +for(var i=0;ib?1:-1); +}; +r=_f6(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +} +if(_f3.view.onBeforeRender){ +_f3.view.onBeforeRender.call(_f3.view,_f0,_f1.rows); +} +_f3.view.render.call(_f3.view,_f0,dc.body2,false); +_f3.view.render.call(_f3.view,_f0,dc.body1,true); +if(_f3.showFooter){ +_f3.view.renderFooter.call(_f3.view,_f0,dc.footer2,false); +_f3.view.renderFooter.call(_f3.view,_f0,dc.footer1,true); +} +if(_f3.view.onAfterRender){ +_f3.view.onAfterRender.call(_f3.view,_f0); +} +_f2.ss.clean(); +var _f7=$(_f0).datagrid("getPager"); +if(_f7.length){ +var _f8=_f7.pagination("options"); +if(_f8.total!=_f1.total){ +_f7.pagination("refresh",{total:_f1.total}); +if(_f3.pageNumber!=_f8.pageNumber&&_f8.pageNumber>0){ +_f3.pageNumber=_f8.pageNumber; +_ae(_f0); +} +} +} +_36(_f0); +dc.body2.triggerHandler("scroll"); +$(_f0).datagrid("setSelectionState"); +$(_f0).datagrid("autoSizeColumn"); +_f3.onLoadSuccess.call(_f0,_f1); +}; +function _f9(_fa){ +var _fb=$.data(_fa,"datagrid"); +var _fc=_fb.options; +var dc=_fb.dc; +dc.header1.add(dc.header2).find("input[type=checkbox]")._propAttr("checked",false); +if(_fc.idField){ +var _fd=$.data(_fa,"treegrid")?true:false; +var _fe=_fc.onSelect; +var _ff=_fc.onCheck; +_fc.onSelect=_fc.onCheck=function(){ +}; +var rows=_fc.finder.getRows(_fa); +for(var i=0;i_110.height()-18){ +_110.scrollTop(_110.scrollTop()+top+tr._outerHeight()-_110.height()+18); +} +} +} +}; +function _8c(_112,_113){ +var _114=$.data(_112,"datagrid"); +var opts=_114.options; +opts.finder.getTr(_112,_114.highlightIndex).removeClass("datagrid-row-over"); +opts.finder.getTr(_112,_113).addClass("datagrid-row-over"); +_114.highlightIndex=_113; +}; +function _95(_115,_116,_117){ +var _118=$.data(_115,"datagrid"); +var opts=_118.options; +var row=opts.finder.getRow(_115,_116); +if(opts.onBeforeSelect.call(_115,_116,row)==false){ +return; +} +if(opts.singleSelect){ +_119(_115,true); +_118.selectedRows=[]; +} +if(!_117&&opts.checkOnSelect){ +_92(_115,_116,true); +} +if(opts.idField){ +_7(_118.selectedRows,opts.idField,row); +} +opts.finder.getTr(_115,_116).addClass("datagrid-row-selected"); +opts.onSelect.call(_115,_116,row); +_10b(_115,_116); +}; +function _96(_11a,_11b,_11c){ +var _11d=$.data(_11a,"datagrid"); +var dc=_11d.dc; +var opts=_11d.options; +var row=opts.finder.getRow(_11a,_11b); +if(opts.onBeforeUnselect.call(_11a,_11b,row)==false){ +return; +} +if(!_11c&&opts.checkOnSelect){ +_93(_11a,_11b,true); +} +opts.finder.getTr(_11a,_11b).removeClass("datagrid-row-selected"); +if(opts.idField){ +_4(_11d.selectedRows,opts.idField,row[opts.idField]); +} +opts.onUnselect.call(_11a,_11b,row); +}; +function _11e(_11f,_120){ +var _121=$.data(_11f,"datagrid"); +var opts=_121.options; +var rows=opts.finder.getRows(_11f); +var _122=$.data(_11f,"datagrid").selectedRows; +if(!_120&&opts.checkOnSelect){ +_123(_11f,true); +} +opts.finder.getTr(_11f,"","allbody").addClass("datagrid-row-selected"); +if(opts.idField){ +for(var _124=0;_124"); +cell.children("table").bind("click dblclick contextmenu",function(e){ +e.stopPropagation(); +}); +$.data(cell[0],"datagrid.editor",{actions:_15a,target:_15a.init(cell.find("td"),_159),field:_157,type:_158,oldHtml:_15b}); +} +} +}); +_36(_155,_156,true); +}; +function _14c(_15d,_15e){ +var opts=$.data(_15d,"datagrid").options; +var tr=opts.finder.getTr(_15d,_15e); +tr.children("td").each(function(){ +var cell=$(this).find("div.datagrid-editable"); +if(cell.length){ +var ed=$.data(cell[0],"datagrid.editor"); +if(ed.actions.destroy){ +ed.actions.destroy(ed.target); +} +cell.html(ed.oldHtml); +$.removeData(cell[0],"datagrid.editor"); +cell.removeClass("datagrid-editable"); +cell.css("width",""); +} +}); +}; +function _13f(_15f,_160){ +var tr=$.data(_15f,"datagrid").options.finder.getTr(_15f,_160); +if(!tr.hasClass("datagrid-row-editing")){ +return true; +} +var vbox=tr.find(".validatebox-text"); +vbox.validatebox("validate"); +vbox.trigger("mouseleave"); +var _161=tr.find(".validatebox-invalid"); +return _161.length==0; +}; +function _162(_163,_164){ +var _165=$.data(_163,"datagrid").insertedRows; +var _166=$.data(_163,"datagrid").deletedRows; +var _167=$.data(_163,"datagrid").updatedRows; +if(!_164){ +var rows=[]; +rows=rows.concat(_165); +rows=rows.concat(_166); +rows=rows.concat(_167); +return rows; +}else{ +if(_164=="inserted"){ +return _165; +}else{ +if(_164=="deleted"){ +return _166; +}else{ +if(_164=="updated"){ +return _167; +} +} +} +} +return []; +}; +function _168(_169,_16a){ +var _16b=$.data(_169,"datagrid"); +var opts=_16b.options; +var data=_16b.data; +var _16c=_16b.insertedRows; +var _16d=_16b.deletedRows; +$(_169).datagrid("cancelEdit",_16a); +var row=opts.finder.getRow(_169,_16a); +if(_2(_16c,row)>=0){ +_4(_16c,row); +}else{ +_16d.push(row); +} +_4(_16b.selectedRows,opts.idField,row[opts.idField]); +_4(_16b.checkedRows,opts.idField,row[opts.idField]); +opts.view.deleteRow.call(opts.view,_169,_16a); +if(opts.height=="auto"){ +_36(_169); +} +$(_169).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _16e(_16f,_170){ +var data=$.data(_16f,"datagrid").data; +var view=$.data(_16f,"datagrid").options.view; +var _171=$.data(_16f,"datagrid").insertedRows; +view.insertRow.call(view,_16f,_170.index,_170.row); +_171.push(_170.row); +$(_16f).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _172(_173,row){ +var data=$.data(_173,"datagrid").data; +var view=$.data(_173,"datagrid").options.view; +var _174=$.data(_173,"datagrid").insertedRows; +view.insertRow.call(view,_173,null,row); +_174.push(row); +$(_173).datagrid("getPager").pagination("refresh",{total:data.total}); +}; +function _175(_176){ +var _177=$.data(_176,"datagrid"); +var data=_177.data; +var rows=data.rows; +var _178=[]; +for(var i=0;i=0){ +(_185=="s"?_95:_92)(_17c,_186,true); +} +} +}; +for(var i=0;i0){ +_af(this,data); +_175(this); +} +} +_ae(this); +}); +}; +function _197(_198){ +var _199={}; +$.map(_198,function(name){ +_199[name]=_19a(name); +}); +return _199; +function _19a(name){ +function isA(_19b){ +return $.data($(_19b)[0],name)!=undefined; +}; +return {init:function(_19c,_19d){ +var _19e=$("").appendTo(_19c); +if(_19e[name]&&name!="text"){ +return _19e[name](_19d); +}else{ +return _19e; +} +},destroy:function(_19f){ +if(isA(_19f,name)){ +$(_19f)[name]("destroy"); +} +},getValue:function(_1a0){ +if(isA(_1a0,name)){ +var opts=$(_1a0)[name]("options"); +if(opts.multiple){ +return $(_1a0)[name]("getValues").join(opts.separator); +}else{ +return $(_1a0)[name]("getValue"); +} +}else{ +return $(_1a0).val(); +} +},setValue:function(_1a1,_1a2){ +if(isA(_1a1,name)){ +var opts=$(_1a1)[name]("options"); +if(opts.multiple){ +if(_1a2){ +$(_1a1)[name]("setValues",_1a2.split(opts.separator)); +}else{ +$(_1a1)[name]("clear"); +} +}else{ +$(_1a1)[name]("setValue",_1a2); +} +}else{ +$(_1a1).val(_1a2); +} +},resize:function(_1a3,_1a4){ +if(isA(_1a3,name)){ +$(_1a3)[name]("resize",_1a4); +}else{ +$(_1a3)._outerWidth(_1a4)._outerHeight(22); +} +}}; +}; +}; +var _1a5=$.extend({},_197(["text","textbox","numberbox","numberspinner","combobox","combotree","combogrid","datebox","datetimebox","timespinner","datetimespinner"]),{textarea:{init:function(_1a6,_1a7){ +var _1a8=$("").appendTo(_1a6); +return _1a8; +},getValue:function(_1a9){ +return $(_1a9).val(); +},setValue:function(_1aa,_1ab){ +$(_1aa).val(_1ab); +},resize:function(_1ac,_1ad){ +$(_1ac)._outerWidth(_1ad); +}},checkbox:{init:function(_1ae,_1af){ +var _1b0=$("").appendTo(_1ae); +_1b0.val(_1af.on); +_1b0.attr("offval",_1af.off); +return _1b0; +},getValue:function(_1b1){ +if($(_1b1).is(":checked")){ +return $(_1b1).val(); +}else{ +return $(_1b1).attr("offval"); +} +},setValue:function(_1b2,_1b3){ +var _1b4=false; +if($(_1b2).val()==_1b3){ +_1b4=true; +} +$(_1b2)._propAttr("checked",_1b4); +}},validatebox:{init:function(_1b5,_1b6){ +var _1b7=$("").appendTo(_1b5); +_1b7.validatebox(_1b6); +return _1b7; +},destroy:function(_1b8){ +$(_1b8).validatebox("destroy"); +},getValue:function(_1b9){ +return $(_1b9).val(); +},setValue:function(_1ba,_1bb){ +$(_1ba).val(_1bb); +},resize:function(_1bc,_1bd){ +$(_1bc)._outerWidth(_1bd)._outerHeight(22); +}}}); +$.fn.datagrid.methods={options:function(jq){ +var _1be=$.data(jq[0],"datagrid").options; +var _1bf=$.data(jq[0],"datagrid").panel.panel("options"); +var opts=$.extend(_1be,{width:_1bf.width,height:_1bf.height,closed:_1bf.closed,collapsed:_1bf.collapsed,minimized:_1bf.minimized,maximized:_1bf.maximized}); +return opts; +},setSelectionState:function(jq){ +return jq.each(function(){ +_f9(this); +}); +},createStyleSheet:function(jq){ +return _9(jq[0]); +},getPanel:function(jq){ +return $.data(jq[0],"datagrid").panel; +},getPager:function(jq){ +return $.data(jq[0],"datagrid").panel.children("div.datagrid-pager"); +},getColumnFields:function(jq,_1c0){ +return _73(jq[0],_1c0); +},getColumnOption:function(jq,_1c1){ +return _74(jq[0],_1c1); +},resize:function(jq,_1c2){ +return jq.each(function(){ +_1c(this,_1c2); +}); +},load:function(jq,_1c3){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _1c3=="string"){ +opts.url=_1c3; +_1c3=null; +} +opts.pageNumber=1; +var _1c4=$(this).datagrid("getPager"); +_1c4.pagination("refresh",{pageNumber:1}); +_ae(this,_1c3); +}); +},reload:function(jq,_1c5){ +return jq.each(function(){ +var opts=$(this).datagrid("options"); +if(typeof _1c5=="string"){ +opts.url=_1c5; +_1c5=null; +} +_ae(this,_1c5); +}); +},reloadFooter:function(jq,_1c6){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +var dc=$.data(this,"datagrid").dc; +if(_1c6){ +$.data(this,"datagrid").footer=_1c6; +} +if(opts.showFooter){ +opts.view.renderFooter.call(opts.view,this,dc.footer2,false); +opts.view.renderFooter.call(opts.view,this,dc.footer1,true); +if(opts.view.onAfterRender){ +opts.view.onAfterRender.call(opts.view,this); +} +$(this).datagrid("fixRowHeight"); +} +}); +},loading:function(jq){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +$(this).datagrid("getPager").pagination("loading"); +if(opts.loadMsg){ +var _1c7=$(this).datagrid("getPanel"); +if(!_1c7.children("div.datagrid-mask").length){ +$("
              ").appendTo(_1c7); +var msg=$("
              ").html(opts.loadMsg).appendTo(_1c7); +msg._outerHeight(40); +msg.css({marginLeft:(-msg.outerWidth()/2),lineHeight:(msg.height()+"px")}); +} +} +}); +},loaded:function(jq){ +return jq.each(function(){ +$(this).datagrid("getPager").pagination("loaded"); +var _1c8=$(this).datagrid("getPanel"); +_1c8.children("div.datagrid-mask-msg").remove(); +_1c8.children("div.datagrid-mask").remove(); +}); +},fitColumns:function(jq){ +return jq.each(function(){ +_b0(this); +}); +},fixColumnSize:function(jq,_1c9){ +return jq.each(function(){ +_d1(this,_1c9); +}); +},fixRowHeight:function(jq,_1ca){ +return jq.each(function(){ +_36(this,_1ca); +}); +},freezeRow:function(jq,_1cb){ +return jq.each(function(){ +_47(this,_1cb); +}); +},autoSizeColumn:function(jq,_1cc){ +return jq.each(function(){ +_c2(this,_1cc); +}); +},loadData:function(jq,data){ +return jq.each(function(){ +_af(this,data); +_175(this); +}); +},getData:function(jq){ +return $.data(jq[0],"datagrid").data; +},getRows:function(jq){ +return $.data(jq[0],"datagrid").data.rows; +},getFooterRows:function(jq){ +return $.data(jq[0],"datagrid").footer; +},getRowIndex:function(jq,id){ +return _102(jq[0],id); +},getChecked:function(jq){ +return _108(jq[0]); +},getSelected:function(jq){ +var rows=_105(jq[0]); +return rows.length>0?rows[0]:null; +},getSelections:function(jq){ +return _105(jq[0]); +},clearSelections:function(jq){ +return jq.each(function(){ +var _1cd=$.data(this,"datagrid"); +var _1ce=_1cd.selectedRows; +var _1cf=_1cd.checkedRows; +_1ce.splice(0,_1ce.length); +_119(this); +if(_1cd.options.checkOnSelect){ +_1cf.splice(0,_1cf.length); +} +}); +},clearChecked:function(jq){ +return jq.each(function(){ +var _1d0=$.data(this,"datagrid"); +var _1d1=_1d0.selectedRows; +var _1d2=_1d0.checkedRows; +_1d2.splice(0,_1d2.length); +_129(this); +if(_1d0.options.selectOnCheck){ +_1d1.splice(0,_1d1.length); +} +}); +},scrollTo:function(jq,_1d3){ +return jq.each(function(){ +_10b(this,_1d3); +}); +},highlightRow:function(jq,_1d4){ +return jq.each(function(){ +_8c(this,_1d4); +_10b(this,_1d4); +}); +},selectAll:function(jq){ +return jq.each(function(){ +_11e(this); +}); +},unselectAll:function(jq){ +return jq.each(function(){ +_119(this); +}); +},selectRow:function(jq,_1d5){ +return jq.each(function(){ +_95(this,_1d5); +}); +},selectRecord:function(jq,id){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +if(opts.idField){ +var _1d6=_102(this,id); +if(_1d6>=0){ +$(this).datagrid("selectRow",_1d6); +} +} +}); +},unselectRow:function(jq,_1d7){ +return jq.each(function(){ +_96(this,_1d7); +}); +},checkRow:function(jq,_1d8){ +return jq.each(function(){ +_92(this,_1d8); +}); +},uncheckRow:function(jq,_1d9){ +return jq.each(function(){ +_93(this,_1d9); +}); +},checkAll:function(jq){ +return jq.each(function(){ +_123(this); +}); +},uncheckAll:function(jq){ +return jq.each(function(){ +_129(this); +}); +},beginEdit:function(jq,_1da){ +return jq.each(function(){ +_13a(this,_1da); +}); +},endEdit:function(jq,_1db){ +return jq.each(function(){ +_140(this,_1db,false); +}); +},cancelEdit:function(jq,_1dc){ +return jq.each(function(){ +_140(this,_1dc,true); +}); +},getEditors:function(jq,_1dd){ +return _14d(jq[0],_1dd); +},getEditor:function(jq,_1de){ +return _151(jq[0],_1de); +},refreshRow:function(jq,_1df){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.refreshRow.call(opts.view,this,_1df); +}); +},validateRow:function(jq,_1e0){ +return _13f(jq[0],_1e0); +},updateRow:function(jq,_1e1){ +return jq.each(function(){ +var opts=$.data(this,"datagrid").options; +opts.view.updateRow.call(opts.view,this,_1e1.index,_1e1.row); +}); +},appendRow:function(jq,row){ +return jq.each(function(){ +_172(this,row); +}); +},insertRow:function(jq,_1e2){ +return jq.each(function(){ +_16e(this,_1e2); +}); +},deleteRow:function(jq,_1e3){ +return jq.each(function(){ +_168(this,_1e3); +}); +},getChanges:function(jq,_1e4){ +return _162(jq[0],_1e4); +},acceptChanges:function(jq){ +return jq.each(function(){ +_179(this); +}); +},rejectChanges:function(jq){ +return jq.each(function(){ +_17b(this); +}); +},mergeCells:function(jq,_1e5){ +return jq.each(function(){ +_18e(this,_1e5); +}); +},showColumn:function(jq,_1e6){ +return jq.each(function(){ +var _1e7=$(this).datagrid("getPanel"); +_1e7.find("td[field=\""+_1e6+"\"]").show(); +$(this).datagrid("getColumnOption",_1e6).hidden=false; +$(this).datagrid("fitColumns"); +}); +},hideColumn:function(jq,_1e8){ +return jq.each(function(){ +var _1e9=$(this).datagrid("getPanel"); +_1e9.find("td[field=\""+_1e8+"\"]").hide(); +$(this).datagrid("getColumnOption",_1e8).hidden=true; +$(this).datagrid("fitColumns"); +}); +},sort:function(jq,_1ea){ +return jq.each(function(){ +_a2(this,_1ea); +}); +}}; +$.fn.datagrid.parseOptions=function(_1eb){ +var t=$(_1eb); +return $.extend({},$.fn.panel.parseOptions(_1eb),$.parser.parseOptions(_1eb,["url","toolbar","idField","sortName","sortOrder","pagePosition","resizeHandle",{sharedStyleSheet:"boolean",fitColumns:"boolean",autoRowHeight:"boolean",striped:"boolean",nowrap:"boolean"},{rownumbers:"boolean",singleSelect:"boolean",ctrlSelect:"boolean",checkOnSelect:"boolean",selectOnCheck:"boolean"},{pagination:"boolean",pageSize:"number",pageNumber:"number"},{multiSort:"boolean",remoteSort:"boolean",showHeader:"boolean",showFooter:"boolean"},{scrollbarSize:"number"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined),loadMsg:(t.attr("loadMsg")!=undefined?t.attr("loadMsg"):undefined),rowStyler:(t.attr("rowStyler")?eval(t.attr("rowStyler")):undefined)}); +}; +$.fn.datagrid.parseData=function(_1ec){ +var t=$(_1ec); +var data={total:0,rows:[]}; +var _1ed=t.datagrid("getColumnFields",true).concat(t.datagrid("getColumnFields",false)); +t.find("tbody tr").each(function(){ +data.total++; +var row={}; +$.extend(row,$.parser.parseOptions(this,["iconCls","state"])); +for(var i=0;i<_1ed.length;i++){ +row[_1ed[i]]=$(this).find("td:eq("+i+")").html(); +} +data.rows.push(row); +}); +return data; +}; +var _1ee={render:function(_1ef,_1f0,_1f1){ +var _1f2=$.data(_1ef,"datagrid"); +var opts=_1f2.options; +var rows=_1f2.data.rows; +var _1f3=$(_1ef).datagrid("getColumnFields",_1f1); +if(_1f1){ +if(!(opts.rownumbers||(opts.frozenColumns&&opts.frozenColumns.length))){ +return; +} +} +var _1f4=[""]; +for(var i=0;i"); +_1f4.push(this.renderRow.call(this,_1ef,_1f3,_1f1,i,rows[i])); +_1f4.push(""); +} +_1f4.push("
              "); +$(_1f0).html(_1f4.join("")); +},renderFooter:function(_1f9,_1fa,_1fb){ +var opts=$.data(_1f9,"datagrid").options; +var rows=$.data(_1f9,"datagrid").footer||[]; +var _1fc=$(_1f9).datagrid("getColumnFields",_1fb); +var _1fd=[""]; +for(var i=0;i"); +_1fd.push(this.renderRow.call(this,_1f9,_1fc,_1fb,i,rows[i])); +_1fd.push(""); +} +_1fd.push("
              "); +$(_1fa).html(_1fd.join("")); +},renderRow:function(_1fe,_1ff,_200,_201,_202){ +var opts=$.data(_1fe,"datagrid").options; +var cc=[]; +if(_200&&opts.rownumbers){ +var _203=_201+1; +if(opts.pagination){ +_203+=(opts.pageNumber-1)*opts.pageSize; +} +cc.push("
              "+_203+"
              "); +} +for(var i=0;i<_1ff.length;i++){ +var _204=_1ff[i]; +var col=$(_1fe).datagrid("getColumnOption",_204); +if(col){ +var _205=_202[_204]; +var css=col.styler?(col.styler(_205,_202,_201)||""):""; +var _206=""; +var _207=""; +if(typeof css=="string"){ +_207=css; +}else{ +if(css){ +_206=css["class"]||""; +_207=css["style"]||""; +} +} +var cls=_206?"class=\""+_206+"\"":""; +var _208=col.hidden?"style=\"display:none;"+_207+"\"":(_207?"style=\""+_207+"\"":""); +cc.push(""); +var _208=""; +if(!col.checkbox){ +if(col.align){ +_208+="text-align:"+col.align+";"; +} +if(!opts.nowrap){ +_208+="white-space:normal;height:auto;"; +}else{ +if(opts.autoRowHeight){ +_208+="height:auto;"; +} +} +} +cc.push("
              "); +if(col.checkbox){ +cc.push(""); +}else{ +if(col.formatter){ +cc.push(col.formatter(_205,_202,_201)); +}else{ +cc.push(_205); +} +} +cc.push("
              "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_209,_20a){ +this.updateRow.call(this,_209,_20a,{}); +},updateRow:function(_20b,_20c,row){ +var opts=$.data(_20b,"datagrid").options; +var rows=$(_20b).datagrid("getRows"); +var _20d=_20e(_20c); +$.extend(rows[_20c],row); +var _20f=_20e(_20c); +var _210=_20d.c; +var _211=_20f.s; +var _212="datagrid-row "+(_20c%2&&opts.striped?"datagrid-row-alt ":" ")+_20f.c; +function _20e(_213){ +var css=opts.rowStyler?opts.rowStyler.call(_20b,_213,rows[_213]):""; +var _214=""; +var _215=""; +if(typeof css=="string"){ +_215=css; +}else{ +if(css){ +_214=css["class"]||""; +_215=css["style"]||""; +} +} +return {c:_214,s:_215}; +}; +function _216(_217){ +var _218=$(_20b).datagrid("getColumnFields",_217); +var tr=opts.finder.getTr(_20b,_20c,"body",(_217?1:2)); +var _219=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow.call(this,_20b,_218,_217,_20c,rows[_20c])); +tr.attr("style",_211).removeClass(_210).addClass(_212); +if(_219){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +}; +_216.call(this,true); +_216.call(this,false); +$(_20b).datagrid("fixRowHeight",_20c); +},insertRow:function(_21a,_21b,row){ +var _21c=$.data(_21a,"datagrid"); +var opts=_21c.options; +var dc=_21c.dc; +var data=_21c.data; +if(_21b==undefined||_21b==null){ +_21b=data.rows.length; +} +if(_21b>data.rows.length){ +_21b=data.rows.length; +} +function _21d(_21e){ +var _21f=_21e?1:2; +for(var i=data.rows.length-1;i>=_21b;i--){ +var tr=opts.finder.getTr(_21a,i,"body",_21f); +tr.attr("datagrid-row-index",i+1); +tr.attr("id",_21c.rowIdPrefix+"-"+_21f+"-"+(i+1)); +if(_21e&&opts.rownumbers){ +var _220=i+2; +if(opts.pagination){ +_220+=(opts.pageNumber-1)*opts.pageSize; +} +tr.find("div.datagrid-cell-rownumber").html(_220); +} +if(opts.striped){ +tr.removeClass("datagrid-row-alt").addClass((i+1)%2?"datagrid-row-alt":""); +} +} +}; +function _221(_222){ +var _223=_222?1:2; +var _224=$(_21a).datagrid("getColumnFields",_222); +var _225=_21c.rowIdPrefix+"-"+_223+"-"+_21b; +var tr=""; +if(_21b>=data.rows.length){ +if(data.rows.length){ +opts.finder.getTr(_21a,"","last",_223).after(tr); +}else{ +var cc=_222?dc.body1:dc.body2; +cc.html(""+tr+"
              "); +} +}else{ +opts.finder.getTr(_21a,_21b+1,"body",_223).before(tr); +} +}; +_21d.call(this,true); +_21d.call(this,false); +_221.call(this,true); +_221.call(this,false); +data.total+=1; +data.rows.splice(_21b,0,row); +this.refreshRow.call(this,_21a,_21b); +},deleteRow:function(_226,_227){ +var _228=$.data(_226,"datagrid"); +var opts=_228.options; +var data=_228.data; +function _229(_22a){ +var _22b=_22a?1:2; +for(var i=_227+1;itable>tbody>tr[datagrid-row-index="+_236+"]"); +} +return tr; +}else{ +if(type=="footer"){ +return (_237==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index="+_236+"]"); +}else{ +if(type=="selected"){ +return (_237==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-selected"); +}else{ +if(type=="highlight"){ +return (_237==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-over"); +}else{ +if(type=="checked"){ +return (_237==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-checked"); +}else{ +if(type=="editing"){ +return (_237==1?dc.body1:dc.body2).find(">table>tbody>tr.datagrid-row-editing"); +}else{ +if(type=="last"){ +return (_237==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]:last"); +}else{ +if(type=="allbody"){ +return (_237==1?dc.body1:dc.body2).find(">table>tbody>tr[datagrid-row-index]"); +}else{ +if(type=="allfooter"){ +return (_237==1?dc.footer1:dc.footer2).find(">table>tbody>tr[datagrid-row-index]"); +} +} +} +} +} +} +} +} +} +} +},getRow:function(_239,p){ +var _23a=(typeof p=="object")?p.attr("datagrid-row-index"):p; +return $.data(_239,"datagrid").data.rows[parseInt(_23a)]; +},getRows:function(_23b){ +return $(_23b).datagrid("getRows"); +}},view:_1ee,onBeforeLoad:function(_23c){ +},onLoadSuccess:function(){ +},onLoadError:function(){ +},onClickRow:function(_23d,_23e){ +},onDblClickRow:function(_23f,_240){ +},onClickCell:function(_241,_242,_243){ +},onDblClickCell:function(_244,_245,_246){ +},onBeforeSortColumn:function(sort,_247){ +},onSortColumn:function(sort,_248){ +},onResizeColumn:function(_249,_24a){ +},onBeforeSelect:function(_24b,_24c){ +},onSelect:function(_24d,_24e){ +},onBeforeUnselect:function(_24f,_250){ +},onUnselect:function(_251,_252){ +},onSelectAll:function(rows){ +},onUnselectAll:function(rows){ +},onBeforeCheck:function(_253,_254){ +},onCheck:function(_255,_256){ +},onBeforeUncheck:function(_257,_258){ +},onUncheck:function(_259,_25a){ +},onCheckAll:function(rows){ +},onUncheckAll:function(rows){ +},onBeforeEdit:function(_25b,_25c){ +},onBeginEdit:function(_25d,_25e){ +},onEndEdit:function(_25f,_260,_261){ +},onAfterEdit:function(_262,_263,_264){ +},onCancelEdit:function(_265,_266){ +},onHeaderContextMenu:function(e,_267){ +},onRowContextMenu:function(e,_268,_269){ +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.datebox.js b/assets/js/easy-ui/plugins/jquery.datebox.js new file mode 100755 index 0000000000..f12bc42d73 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.datebox.js @@ -0,0 +1,212 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datebox"); +var _4=_3.options; +$(_2).addClass("datebox-f").combo($.extend({},_4,{onShowPanel:function(){ +_5(this); +_6(this); +_7(this); +_18(this,$(this).datebox("getText"),true); +_4.onShowPanel.call(this); +}})); +if(!_3.calendar){ +var _8=$(_2).combo("panel").css("overflow","hidden"); +_8.panel("options").onBeforeDestroy=function(){ +var c=$(this).find(".calendar-shared"); +if(c.length){ +c.insertBefore(c[0].pholder); +} +}; +var cc=$("
              ").prependTo(_8); +if(_4.sharedCalendar){ +var c=$(_4.sharedCalendar); +if(!c[0].pholder){ +c[0].pholder=$("
              ").insertAfter(c); +} +c.addClass("calendar-shared").appendTo(cc); +if(!c.hasClass("calendar")){ +c.calendar(); +} +_3.calendar=c; +}else{ +_3.calendar=$("
              ").appendTo(cc).calendar(); +} +$.extend(_3.calendar.calendar("options"),{fit:true,border:false,onSelect:function(_9){ +var _a=this.target; +var _b=$(_a).datebox("options"); +_18(_a,_b.formatter.call(_a,_9)); +$(_a).combo("hidePanel"); +_b.onSelect.call(_a,_9); +}}); +} +$(_2).combo("textbox").parent().addClass("datebox"); +$(_2).datebox("initValue",_4.value); +function _5(_c){ +var _d=$(_c).datebox("options"); +var _e=$(_c).combo("panel"); +_e.unbind(".datebox").bind("click.datebox",function(e){ +if($(e.target).hasClass("datebox-button-a")){ +var _f=parseInt($(e.target).attr("datebox-button-index")); +_d.buttons[_f].handler.call(e.target,_c); +} +}); +}; +function _6(_10){ +var _11=$(_10).combo("panel"); +if(_11.children("div.datebox-button").length){ +return; +} +var _12=$("
              ").appendTo(_11); +var tr=_12.find("tr"); +for(var i=0;i<_4.buttons.length;i++){ +var td=$("").appendTo(tr); +var btn=_4.buttons[i]; +var t=$("").html($.isFunction(btn.text)?btn.text(_10):btn.text).appendTo(td); +t.attr("datebox-button-index",i); +} +tr.find("td").css("width",(100/_4.buttons.length)+"%"); +}; +function _7(_13){ +var _14=$(_13).combo("panel"); +var cc=_14.children("div.datebox-calendar-inner"); +_14.children()._outerWidth(_14.width()); +_3.calendar.appendTo(cc); +_3.calendar[0].target=_13; +if(_4.panelHeight!="auto"){ +var _15=_14.height(); +_14.children().not(cc).each(function(){ +_15-=$(this).outerHeight(); +}); +cc._outerHeight(_15); +} +_3.calendar.calendar("resize"); +}; +}; +function _16(_17,q){ +_18(_17,q,true); +}; +function _19(_1a){ +var _1b=$.data(_1a,"datebox"); +var _1c=_1b.options; +var _1d=_1b.calendar.calendar("options").current; +if(_1d){ +_18(_1a,_1c.formatter.call(_1a,_1d)); +$(_1a).combo("hidePanel"); +} +}; +function _18(_1e,_1f,_20){ +var _21=$.data(_1e,"datebox"); +var _22=_21.options; +var _23=_21.calendar; +$(_1e).combo("setValue",_1f); +_23.calendar("moveTo",_22.parser.call(_1e,_1f)); +if(!_20){ +if(_1f){ +_1f=_22.formatter.call(_1e,_23.calendar("options").current); +$(_1e).combo("setValue",_1f).combo("setText",_1f); +}else{ +$(_1e).combo("setText",_1f); +} +} +}; +$.fn.datebox=function(_24,_25){ +if(typeof _24=="string"){ +var _26=$.fn.datebox.methods[_24]; +if(_26){ +return _26(this,_25); +}else{ +return this.combo(_24,_25); +} +} +_24=_24||{}; +return this.each(function(){ +var _27=$.data(this,"datebox"); +if(_27){ +$.extend(_27.options,_24); +}else{ +$.data(this,"datebox",{options:$.extend({},$.fn.datebox.defaults,$.fn.datebox.parseOptions(this),_24)}); +} +_1(this); +}); +}; +$.fn.datebox.methods={options:function(jq){ +var _28=jq.combo("options"); +return $.extend($.data(jq[0],"datebox").options,{width:_28.width,height:_28.height,originalValue:_28.originalValue,disabled:_28.disabled,readonly:_28.readonly}); +},cloneFrom:function(jq,_29){ +return jq.each(function(){ +$(this).combo("cloneFrom",_29); +$.data(this,"datebox",{options:$.extend(true,{},$(_29).datebox("options")),calendar:$(_29).datebox("calendar")}); +$(this).addClass("datebox-f"); +}); +},calendar:function(jq){ +return $.data(jq[0],"datebox").calendar; +},initValue:function(jq,_2a){ +return jq.each(function(){ +var _2b=$(this).datebox("options"); +var _2c=_2b.value; +if(_2c){ +_2c=_2b.formatter.call(this,_2b.parser.call(this,_2c)); +} +$(this).combo("initValue",_2c).combo("setText",_2c); +}); +},setValue:function(jq,_2d){ +return jq.each(function(){ +_18(this,_2d); +}); +},reset:function(jq){ +return jq.each(function(){ +var _2e=$(this).datebox("options"); +$(this).datebox("setValue",_2e.originalValue); +}); +}}; +$.fn.datebox.parseOptions=function(_2f){ +return $.extend({},$.fn.combo.parseOptions(_2f),$.parser.parseOptions(_2f,["sharedCalendar"])); +}; +$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:180,panelHeight:"auto",sharedCalendar:null,keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_19(this); +},query:function(q,e){ +_16(this,q); +}},currentText:"Today",closeText:"Close",okText:"Ok",buttons:[{text:function(_30){ +return $(_30).datebox("options").currentText; +},handler:function(_31){ +$(_31).datebox("calendar").calendar({year:new Date().getFullYear(),month:new Date().getMonth()+1,current:new Date()}); +_19(_31); +}},{text:function(_32){ +return $(_32).datebox("options").closeText; +},handler:function(_33){ +$(this).closest("div.combo-panel").panel("close"); +}}],formatter:function(_34){ +var y=_34.getFullYear(); +var m=_34.getMonth()+1; +var d=_34.getDate(); +return (m<10?("0"+m):m)+"/"+(d<10?("0"+d):d)+"/"+y; +},parser:function(s){ +if(!s){ +return new Date(); +} +var ss=s.split("/"); +var m=parseInt(ss[0],10); +var d=parseInt(ss[1],10); +var y=parseInt(ss[2],10); +if(!isNaN(y)&&!isNaN(m)&&!isNaN(d)){ +return new Date(y,m-1,d); +}else{ +return new Date(); +} +},onSelect:function(_35){ +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.datetimebox.js b/assets/js/easy-ui/plugins/jquery.datetimebox.js new file mode 100755 index 0000000000..9ed5854e54 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.datetimebox.js @@ -0,0 +1,178 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datetimebox"); +var _4=_3.options; +$(_2).datebox($.extend({},_4,{onShowPanel:function(){ +var _5=$(this).datetimebox("getValue"); +_d(this,_5,true); +_4.onShowPanel.call(this); +},formatter:$.fn.datebox.defaults.formatter,parser:$.fn.datebox.defaults.parser})); +$(_2).removeClass("datebox-f").addClass("datetimebox-f"); +$(_2).datebox("calendar").calendar({onSelect:function(_6){ +_4.onSelect.call(this.target,_6); +}}); +if(!_3.spinner){ +var _7=$(_2).datebox("panel"); +var p=$("
              ").insertAfter(_7.children("div.datebox-calendar-inner")); +_3.spinner=p.children("input"); +} +_3.spinner.timespinner({width:_4.spinnerWidth,showSeconds:_4.showSeconds,separator:_4.timeSeparator}); +$(_2).datetimebox("initValue",_4.value); +}; +function _8(_9){ +var c=$(_9).datetimebox("calendar"); +var t=$(_9).datetimebox("spinner"); +var _a=c.calendar("options").current; +return new Date(_a.getFullYear(),_a.getMonth(),_a.getDate(),t.timespinner("getHours"),t.timespinner("getMinutes"),t.timespinner("getSeconds")); +}; +function _b(_c,q){ +_d(_c,q,true); +}; +function _e(_f){ +var _10=$.data(_f,"datetimebox").options; +var _11=_8(_f); +_d(_f,_10.formatter.call(_f,_11)); +$(_f).combo("hidePanel"); +}; +function _d(_12,_13,_14){ +var _15=$.data(_12,"datetimebox").options; +$(_12).combo("setValue",_13); +if(!_14){ +if(_13){ +var _16=_15.parser.call(_12,_13); +$(_12).combo("setValue",_15.formatter.call(_12,_16)); +$(_12).combo("setText",_15.formatter.call(_12,_16)); +}else{ +$(_12).combo("setText",_13); +} +} +var _16=_15.parser.call(_12,_13); +$(_12).datetimebox("calendar").calendar("moveTo",_16); +$(_12).datetimebox("spinner").timespinner("setValue",_17(_16)); +function _17(_18){ +function _19(_1a){ +return (_1a<10?"0":"")+_1a; +}; +var tt=[_19(_18.getHours()),_19(_18.getMinutes())]; +if(_15.showSeconds){ +tt.push(_19(_18.getSeconds())); +} +return tt.join($(_12).datetimebox("spinner").timespinner("options").separator); +}; +}; +$.fn.datetimebox=function(_1b,_1c){ +if(typeof _1b=="string"){ +var _1d=$.fn.datetimebox.methods[_1b]; +if(_1d){ +return _1d(this,_1c); +}else{ +return this.datebox(_1b,_1c); +} +} +_1b=_1b||{}; +return this.each(function(){ +var _1e=$.data(this,"datetimebox"); +if(_1e){ +$.extend(_1e.options,_1b); +}else{ +$.data(this,"datetimebox",{options:$.extend({},$.fn.datetimebox.defaults,$.fn.datetimebox.parseOptions(this),_1b)}); +} +_1(this); +}); +}; +$.fn.datetimebox.methods={options:function(jq){ +var _1f=jq.datebox("options"); +return $.extend($.data(jq[0],"datetimebox").options,{originalValue:_1f.originalValue,disabled:_1f.disabled,readonly:_1f.readonly}); +},cloneFrom:function(jq,_20){ +return jq.each(function(){ +$(this).datebox("cloneFrom",_20); +$.data(this,"datetimebox",{options:$.extend(true,{},$(_20).datetimebox("options")),spinner:$(_20).datetimebox("spinner")}); +$(this).removeClass("datebox-f").addClass("datetimebox-f"); +}); +},spinner:function(jq){ +return $.data(jq[0],"datetimebox").spinner; +},initValue:function(jq,_21){ +return jq.each(function(){ +var _22=$(this).datetimebox("options"); +var _23=_22.value; +if(_23){ +_23=_22.formatter.call(this,_22.parser.call(this,_23)); +} +$(this).combo("initValue",_23).combo("setText",_23); +}); +},setValue:function(jq,_24){ +return jq.each(function(){ +_d(this,_24); +}); +},reset:function(jq){ +return jq.each(function(){ +var _25=$(this).datetimebox("options"); +$(this).datetimebox("setValue",_25.originalValue); +}); +}}; +$.fn.datetimebox.parseOptions=function(_26){ +var t=$(_26); +return $.extend({},$.fn.datebox.parseOptions(_26),$.parser.parseOptions(_26,["timeSeparator","spinnerWidth",{showSeconds:"boolean"}])); +}; +$.fn.datetimebox.defaults=$.extend({},$.fn.datebox.defaults,{spinnerWidth:"100%",showSeconds:true,timeSeparator:":",keyHandler:{up:function(e){ +},down:function(e){ +},left:function(e){ +},right:function(e){ +},enter:function(e){ +_e(this); +},query:function(q,e){ +_b(this,q); +}},buttons:[{text:function(_27){ +return $(_27).datetimebox("options").currentText; +},handler:function(_28){ +var _29=$(_28).datetimebox("options"); +_d(_28,_29.formatter.call(_28,new Date())); +$(_28).datetimebox("hidePanel"); +}},{text:function(_2a){ +return $(_2a).datetimebox("options").okText; +},handler:function(_2b){ +_e(_2b); +}},{text:function(_2c){ +return $(_2c).datetimebox("options").closeText; +},handler:function(_2d){ +$(_2d).datetimebox("hidePanel"); +}}],formatter:function(_2e){ +var h=_2e.getHours(); +var M=_2e.getMinutes(); +var s=_2e.getSeconds(); +function _2f(_30){ +return (_30<10?"0":"")+_30; +}; +var _31=$(this).datetimebox("spinner").timespinner("options").separator; +var r=$.fn.datebox.defaults.formatter(_2e)+" "+_2f(h)+_31+_2f(M); +if($(this).datetimebox("options").showSeconds){ +r+=_31+_2f(s); +} +return r; +},parser:function(s){ +if($.trim(s)==""){ +return new Date(); +} +var dt=s.split(" "); +var d=$.fn.datebox.defaults.parser(dt[0]); +if(dt.length<2){ +return d; +} +var _32=$(this).datetimebox("spinner").timespinner("options").separator; +var tt=dt[1].split(_32); +var _33=parseInt(tt[0],10)||0; +var _34=parseInt(tt[1],10)||0; +var _35=parseInt(tt[2],10)||0; +return new Date(d.getFullYear(),d.getMonth(),d.getDate(),_33,_34,_35); +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.datetimespinner.js b/assets/js/easy-ui/plugins/jquery.datetimespinner.js new file mode 100755 index 0000000000..79f2d9df7b --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.datetimespinner.js @@ -0,0 +1,61 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"datetimespinner").options; +$(_2).addClass("datetimespinner-f").timespinner(_3); +}; +$.fn.datetimespinner=function(_4,_5){ +if(typeof _4=="string"){ +var _6=$.fn.datetimespinner.methods[_4]; +if(_6){ +return _6(this,_5); +}else{ +return this.timespinner(_4,_5); +} +} +_4=_4||{}; +return this.each(function(){ +var _7=$.data(this,"datetimespinner"); +if(_7){ +$.extend(_7.options,_4); +}else{ +$.data(this,"datetimespinner",{options:$.extend({},$.fn.datetimespinner.defaults,$.fn.datetimespinner.parseOptions(this),_4)}); +} +_1(this); +}); +}; +$.fn.datetimespinner.methods={options:function(jq){ +var _8=jq.timespinner("options"); +return $.extend($.data(jq[0],"datetimespinner").options,{width:_8.width,value:_8.value,originalValue:_8.originalValue,disabled:_8.disabled,readonly:_8.readonly}); +}}; +$.fn.datetimespinner.parseOptions=function(_9){ +return $.extend({},$.fn.timespinner.parseOptions(_9),$.parser.parseOptions(_9,[])); +}; +$.fn.datetimespinner.defaults=$.extend({},$.fn.timespinner.defaults,{formatter:function(_a){ +if(!_a){ +return ""; +} +return $.fn.datebox.defaults.formatter.call(this,_a)+" "+$.fn.timespinner.defaults.formatter.call(this,_a); +},parser:function(s){ +s=$.trim(s); +if(!s){ +return null; +} +var dt=s.split(" "); +var _b=$.fn.datebox.defaults.parser.call(this,dt[0]); +if(dt.length<2){ +return _b; +} +var _c=$.fn.timespinner.defaults.parser.call(this,dt[1]); +return new Date(_b.getFullYear(),_b.getMonth(),_b.getDate(),_c.getHours(),_c.getMinutes(),_c.getSeconds()); +},selections:[[0,2],[3,5],[6,10],[11,13],[14,16],[17,19]]}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.dialog.js b/assets/js/easy-ui/plugins/jquery.dialog.js new file mode 100755 index 0000000000..a13db9097b --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.dialog.js @@ -0,0 +1,122 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"dialog").options; +_3.inited=false; +$(_2).window($.extend({},_3,{onResize:function(w,h){ +if(_3.inited){ +_a(this); +_3.onResize.call(this,w,h); +} +}})); +var _4=$(_2).window("window"); +if(_3.toolbar){ +if($.isArray(_3.toolbar)){ +$(_2).siblings("div.dialog-toolbar").remove(); +var _5=$("
              ").appendTo(_4); +var tr=_5.find("tr"); +for(var i=0;i<_3.toolbar.length;i++){ +var _6=_3.toolbar[i]; +if(_6=="-"){ +$("
              ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var _7=$("").appendTo(td); +_7[0].onclick=eval(_6.handler||function(){ +}); +_7.linkbutton($.extend({},_6,{plain:true})); +} +} +}else{ +$(_3.toolbar).addClass("dialog-toolbar").appendTo(_4); +$(_3.toolbar).show(); +} +}else{ +$(_2).siblings("div.dialog-toolbar").remove(); +} +if(_3.buttons){ +if($.isArray(_3.buttons)){ +$(_2).siblings("div.dialog-button").remove(); +var _8=$("
              ").appendTo(_4); +for(var i=0;i<_3.buttons.length;i++){ +var p=_3.buttons[i]; +var _9=$("").appendTo(_8); +if(p.handler){ +_9[0].onclick=p.handler; +} +_9.linkbutton(p); +} +}else{ +$(_3.buttons).addClass("dialog-button").appendTo(_4); +$(_3.buttons).show(); +} +}else{ +$(_2).siblings("div.dialog-button").remove(); +} +_3.inited=true; +_4.show(); +$(_2).window("resize"); +if(_3.closed){ +_4.hide(); +} +}; +function _a(_b,_c){ +var t=$(_b); +var _d=t.dialog("options"); +var _e=_d.noheader; +var tb=t.siblings(".dialog-toolbar"); +var bb=t.siblings(".dialog-button"); +tb.insertBefore(_b).css({position:"relative",borderTopWidth:(_e?1:0),top:(_e?tb.length:0)}); +bb.insertAfter(_b).css({position:"relative",top:-1}); +if(!isNaN(parseInt(_d.height))){ +t._outerHeight(t._outerHeight()-tb._outerHeight()-bb._outerHeight()); +} +tb.add(bb)._outerWidth(t._outerWidth()); +var _f=$.data(_b,"window").shadow; +if(_f){ +var cc=t.panel("panel"); +_f.css({width:cc._outerWidth(),height:cc._outerHeight()}); +} +}; +$.fn.dialog=function(_10,_11){ +if(typeof _10=="string"){ +var _12=$.fn.dialog.methods[_10]; +if(_12){ +return _12(this,_11); +}else{ +return this.window(_10,_11); +} +} +_10=_10||{}; +return this.each(function(){ +var _13=$.data(this,"dialog"); +if(_13){ +$.extend(_13.options,_10); +}else{ +$.data(this,"dialog",{options:$.extend({},$.fn.dialog.defaults,$.fn.dialog.parseOptions(this),_10)}); +} +_1(this); +}); +}; +$.fn.dialog.methods={options:function(jq){ +var _14=$.data(jq[0],"dialog").options; +var _15=jq.panel("options"); +$.extend(_14,{width:_15.width,height:_15.height,left:_15.left,top:_15.top,closed:_15.closed,collapsed:_15.collapsed,minimized:_15.minimized,maximized:_15.maximized}); +return _14; +},dialog:function(jq){ +return jq.window("window"); +}}; +$.fn.dialog.parseOptions=function(_16){ +return $.extend({},$.fn.window.parseOptions(_16),$.parser.parseOptions(_16,["toolbar","buttons"])); +}; +$.fn.dialog.defaults=$.extend({},$.fn.window.defaults,{title:"New Dialog",collapsible:false,minimizable:false,maximizable:false,resizable:false,toolbar:null,buttons:null}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.draggable.js b/assets/js/easy-ui/plugins/jquery.draggable.js new file mode 100755 index 0000000000..5f7e346034 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.draggable.js @@ -0,0 +1,283 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(e){ +var _2=$.data(e.data.target,"draggable"); +var _3=_2.options; +var _4=_2.proxy; +var _5=e.data; +var _6=_5.startLeft+e.pageX-_5.startX; +var _7=_5.startTop+e.pageY-_5.startY; +if(_4){ +if(_4.parent()[0]==document.body){ +if(_3.deltaX!=null&&_3.deltaX!=undefined){ +_6=e.pageX+_3.deltaX; +}else{ +_6=e.pageX-e.data.offsetWidth; +} +if(_3.deltaY!=null&&_3.deltaY!=undefined){ +_7=e.pageY+_3.deltaY; +}else{ +_7=e.pageY-e.data.offsetHeight; +} +}else{ +if(_3.deltaX!=null&&_3.deltaX!=undefined){ +_6+=e.data.offsetWidth+_3.deltaX; +} +if(_3.deltaY!=null&&_3.deltaY!=undefined){ +_7+=e.data.offsetHeight+_3.deltaY; +} +} +} +if(e.data.parent!=document.body){ +_6+=$(e.data.parent).scrollLeft(); +_7+=$(e.data.parent).scrollTop(); +} +if(_3.axis=="h"){ +_5.left=_6; +}else{ +if(_3.axis=="v"){ +_5.top=_7; +}else{ +_5.left=_6; +_5.top=_7; +} +} +}; +function _8(e){ +var _9=$.data(e.data.target,"draggable"); +var _a=_9.options; +var _b=_9.proxy; +if(!_b){ +_b=$(e.data.target); +} +_b.css({left:e.data.left,top:e.data.top}); +$("body").css("cursor",_a.cursor); +}; +function _c(e){ +$.fn.draggable.isDragging=true; +var _d=$.data(e.data.target,"draggable"); +var _e=_d.options; +var _f=$(".droppable").filter(function(){ +return e.data.target!=this; +}).filter(function(){ +var _10=$.data(this,"droppable").options.accept; +if(_10){ +return $(_10).filter(function(){ +return this==e.data.target; +}).length>0; +}else{ +return true; +} +}); +_d.droppables=_f; +var _11=_d.proxy; +if(!_11){ +if(_e.proxy){ +if(_e.proxy=="clone"){ +_11=$(e.data.target).clone().insertAfter(e.data.target); +}else{ +_11=_e.proxy.call(e.data.target,e.data.target); +} +_d.proxy=_11; +}else{ +_11=$(e.data.target); +} +} +_11.css("position","absolute"); +_1(e); +_8(e); +_e.onStartDrag.call(e.data.target,e); +return false; +}; +function _12(e){ +var _13=$.data(e.data.target,"draggable"); +_1(e); +if(_13.options.onDrag.call(e.data.target,e)!=false){ +_8(e); +} +var _14=e.data.target; +_13.droppables.each(function(){ +var _15=$(this); +if(_15.droppable("options").disabled){ +return; +} +var p2=_15.offset(); +if(e.pageX>p2.left&&e.pageXp2.top&&e.pageYp2.left&&e.pageXp2.top&&e.pageY_2a.options.edge; +}; +}); +}; +$.fn.draggable.methods={options:function(jq){ +return $.data(jq[0],"draggable").options; +},proxy:function(jq){ +return $.data(jq[0],"draggable").proxy; +},enable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).draggable({disabled:true}); +}); +}}; +$.fn.draggable.parseOptions=function(_2f){ +var t=$(_2f); +return $.extend({},$.parser.parseOptions(_2f,["cursor","handle","axis",{"revert":"boolean","deltaX":"number","deltaY":"number","edge":"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.draggable.defaults={proxy:null,revert:false,cursor:"move",deltaX:null,deltaY:null,handle:null,disabled:false,edge:0,axis:null,onBeforeDrag:function(e){ +},onStartDrag:function(e){ +},onDrag:function(e){ +},onStopDrag:function(e){ +}}; +$.fn.draggable.isDragging=false; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.droppable.js b/assets/js/easy-ui/plugins/jquery.droppable.js new file mode 100755 index 0000000000..5fa08fec48 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.droppable.js @@ -0,0 +1,62 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("droppable"); +$(_2).bind("_dragenter",function(e,_3){ +$.data(_2,"droppable").options.onDragEnter.apply(_2,[e,_3]); +}); +$(_2).bind("_dragleave",function(e,_4){ +$.data(_2,"droppable").options.onDragLeave.apply(_2,[e,_4]); +}); +$(_2).bind("_dragover",function(e,_5){ +$.data(_2,"droppable").options.onDragOver.apply(_2,[e,_5]); +}); +$(_2).bind("_drop",function(e,_6){ +$.data(_2,"droppable").options.onDrop.apply(_2,[e,_6]); +}); +}; +$.fn.droppable=function(_7,_8){ +if(typeof _7=="string"){ +return $.fn.droppable.methods[_7](this,_8); +} +_7=_7||{}; +return this.each(function(){ +var _9=$.data(this,"droppable"); +if(_9){ +$.extend(_9.options,_7); +}else{ +_1(this); +$.data(this,"droppable",{options:$.extend({},$.fn.droppable.defaults,$.fn.droppable.parseOptions(this),_7)}); +} +}); +}; +$.fn.droppable.methods={options:function(jq){ +return $.data(jq[0],"droppable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).droppable({disabled:true}); +}); +}}; +$.fn.droppable.parseOptions=function(_a){ +var t=$(_a); +return $.extend({},$.parser.parseOptions(_a,["accept"]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.droppable.defaults={accept:null,disabled:false,onDragEnter:function(e,_b){ +},onDragOver:function(e,_c){ +},onDragLeave:function(e,_d){ +},onDrop:function(e,_e){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.edatagrid.js b/assets/js/easy-ui/plugins/jquery.edatagrid.js new file mode 100755 index 0000000000..61e0572bd9 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.edatagrid.js @@ -0,0 +1,461 @@ +/** + * edatagrid - jQuery EasyUI + * + * Licensed under the GPL: + * http://www.gnu.org/licenses/gpl.txt + * + * Copyright 2011 stworthy [ stworthy@gmail.com ] + * + * Dependencies: + * datagrid + * messager + * + */ +(function($){ + // var oldLoadDataMethod = $.fn.datagrid.methods.loadData; + // $.fn.datagrid.methods.loadData = function(jq, data){ + // jq.each(function(){ + // $.data(this, 'datagrid').filterSource = null; + // }); + // return oldLoadDataMethod.call($.fn.datagrid.methods, jq, data); + // }; + + var currTarget; + $(function(){ + $(document).unbind('.edatagrid').bind('mousedown.edatagrid', function(e){ + var p = $(e.target).closest('div.datagrid-view,div.combo-panel'); + if (p.length){ + if (p.hasClass('datagrid-view')){ + var dg = p.children('table'); + if (dg.length && currTarget != dg[0]){ + _save(); + } + } + return; + } + _save(); + + function _save(){ + var dg = $(currTarget); + if (dg.length){ + dg.edatagrid('saveRow'); + currTarget = undefined; + } + } + }); + }); + + function buildGrid(target){ + var opts = $.data(target, 'edatagrid').options; + $(target).datagrid($.extend({}, opts, { + onDblClickCell:function(index,field,value){ + if (opts.editing){ + $(this).edatagrid('editRow', index); + focusEditor(target, field); + } + if (opts.onDblClickCell){ + opts.onDblClickCell.call(target, index, field, value); + } + }, + onClickCell:function(index,field,value){ + if (opts.editing && opts.editIndex >= 0){ + $(this).edatagrid('editRow', index); + focusEditor(target, field); + } + if (opts.onClickCell){ + opts.onClickCell.call(target, index, field, value); + } + }, + onAfterEdit: function(index, row){ + opts.editIndex = -1; + var url = row.isNewRecord ? opts.saveUrl : opts.updateUrl; + if (url){ + $.post(url, row, function(data){ + if (data.isError){ + $(target).edatagrid('cancelRow',index); + $(target).edatagrid('selectRow',index); + $(target).edatagrid('editRow',index); + opts.onError.call(target, index, data); + return; + } + data.isNewRecord = null; + $(target).datagrid('updateRow', { + index: index, + row: data + }); + if (opts.tree){ + var idValue = row[opts.idField||'id']; + var t = $(opts.tree); + var node = t.tree('find', idValue); + if (node){ + node.text = row[opts.treeTextField]; + t.tree('update', node); + } else { + var pnode = t.tree('find', row[opts.treeParentField]); + t.tree('append', { + parent: (pnode ? pnode.target : null), + data: [{id:idValue,text:row[opts.treeTextField]}] + }); + } + } + opts.onSave.call(target, index, row); + },'json'); + } else { + opts.onSave.call(target, index, row); + } + if (opts.onAfterEdit) opts.onAfterEdit.call(target, index, row); + }, + onCancelEdit: function(index, row){ + opts.editIndex = -1; + if (row.isNewRecord) { + $(this).datagrid('deleteRow', index); + } + if (opts.onCancelEdit) opts.onCancelEdit.call(target, index, row); + }, + onBeforeLoad: function(param){ + if (opts.onBeforeLoad.call(target, param) == false){return false} + $(this).edatagrid('cancelRow'); + if (opts.tree){ + var node = $(opts.tree).tree('getSelected'); + param[opts.treeParentField] = node ? node.id : undefined; + } + } + })); + + + + if (opts.tree){ + $(opts.tree).tree({ + url: opts.treeUrl, + onClick: function(node){ + $(target).datagrid('load'); + }, + onDrop: function(dest,source,point){ + var targetId = $(this).tree('getNode', dest).id; + $.ajax({ + url: opts.treeDndUrl, + type:'post', + data:{ + id:source.id, + targetId:targetId, + point:point + }, + dataType:'json', + success:function(){ + $(target).datagrid('load'); + } + }); + } + }); + } + } + + function focusEditor(target, field){ + var opts = $(target).edatagrid('options'); + var t; + var editor = $(target).datagrid('getEditor', {index:opts.editIndex,field:field}); + if (editor){ + t = editor.target; + } else { + var editors = $(target).datagrid('getEditors', opts.editIndex); + if (editors.length){ + t = editors[0].target; + } + } + if (t){ + if ($(t).hasClass('textbox-f')){ + $(t).textbox('textbox').focus(); + } else { + $(t).focus(); + } + } + } + + $.fn.edatagrid = function(options, param){ + if (typeof options == 'string'){ + var method = $.fn.edatagrid.methods[options]; + if (method){ + return method(this, param); + } else { + return this.datagrid(options, param); + } + } + + options = options || {}; + return this.each(function(){ + var state = $.data(this, 'edatagrid'); + if (state){ + $.extend(state.options, options); + } else { + $.data(this, 'edatagrid', { + options: $.extend({}, $.fn.edatagrid.defaults, $.fn.edatagrid.parseOptions(this), options) + }); + } + buildGrid(this); + }); + }; + + $.fn.edatagrid.parseOptions = function(target){ + return $.extend({}, $.fn.datagrid.parseOptions(target), { + }); + }; + + $.fn.edatagrid.methods = { + options: function(jq){ + var opts = $.data(jq[0], 'edatagrid').options; + return opts; + }, + loadData: function(jq, data){ + return jq.each(function(){ + $(this).edatagrid('cancelRow'); + $(this).datagrid('loadData', data); + }); + }, + enableEditing: function(jq){ + return jq.each(function(){ + var opts = $.data(this, 'edatagrid').options; + opts.editing = true; + }); + }, + disableEditing: function(jq){ + return jq.each(function(){ + var opts = $.data(this, 'edatagrid').options; + opts.editing = false; + }); + }, + editRow: function(jq, index){ + return jq.each(function(){ + var dg = $(this); + var opts = $.data(this, 'edatagrid').options; + var editIndex = opts.editIndex; + if (editIndex != index){ + if (dg.datagrid('validateRow', editIndex)){ + if (editIndex>=0){ + if (opts.onBeforeSave.call(this, editIndex) == false) { + setTimeout(function(){ + dg.datagrid('selectRow', editIndex); + },0); + return; + } + } + dg.datagrid('endEdit', editIndex); + dg.datagrid('beginEdit', index); + opts.editIndex = index; + focusEditor(this); + + if (currTarget != this && $(currTarget).length){ + $(currTarget).edatagrid('saveRow'); + currTarget = undefined; + } + if (opts.autoSave){ + currTarget = this; + } + + var rows = dg.datagrid('getRows'); + opts.onEdit.call(this, index, rows[index]); + } else { + setTimeout(function(){ + dg.datagrid('selectRow', editIndex); + }, 0); + } + } + }); + }, + addRow: function(jq, index){ + return jq.each(function(){ + var dg = $(this); + var opts = $.data(this, 'edatagrid').options; + if (opts.editIndex >= 0){ + if (!dg.datagrid('validateRow', opts.editIndex)){ + dg.datagrid('selectRow', opts.editIndex); + return; + } + if (opts.onBeforeSave.call(this, opts.editIndex) == false){ + setTimeout(function(){ + dg.datagrid('selectRow', opts.editIndex); + },0); + return; + } + dg.datagrid('endEdit', opts.editIndex); + } + var rows = dg.datagrid('getRows'); + + function _add(index, row){ + if (index == undefined){ + dg.datagrid('appendRow', row); + opts.editIndex = rows.length - 1; + } else { + dg.datagrid('insertRow', {index:index,row:row}); + opts.editIndex = index; + } + } + if (typeof index == 'object'){ + _add(index.index, $.extend(index.row, {isNewRecord:true})) + } else { + _add(index, {isNewRecord:true}); + } + +// if (index == undefined){ +// dg.datagrid('appendRow', {isNewRecord:true}); +// opts.editIndex = rows.length - 1; +// } else { +// dg.datagrid('insertRow', { +// index: index, +// row: {isNewRecord:true} +// }); +// opts.editIndex = index; +// } + + dg.datagrid('beginEdit', opts.editIndex); + dg.datagrid('selectRow', opts.editIndex); + + if (opts.tree){ + var node = $(opts.tree).tree('getSelected'); + rows[opts.editIndex][opts.treeParentField] = (node ? node.id : 0); + } + + opts.onAdd.call(this, opts.editIndex, rows[opts.editIndex]); + }); + }, + saveRow: function(jq){ + return jq.each(function(){ + var dg = $(this); + var opts = $.data(this, 'edatagrid').options; + if (opts.editIndex >= 0){ + if (opts.onBeforeSave.call(this, opts.editIndex) == false) { + setTimeout(function(){ + dg.datagrid('selectRow', opts.editIndex); + },0); + return; + } + $(this).datagrid('endEdit', opts.editIndex); + } + }); + }, + cancelRow: function(jq){ + return jq.each(function(){ + var opts = $.data(this, 'edatagrid').options; + if (opts.editIndex >= 0){ + $(this).datagrid('cancelEdit', opts.editIndex); + } + }); + }, + destroyRow: function(jq, index){ + return jq.each(function(){ + var dg = $(this); + var opts = $.data(this, 'edatagrid').options; + + var rows = []; + if (index == undefined){ + rows = dg.datagrid('getSelections'); + } else { + var rowIndexes = $.isArray(index) ? index : [index]; + for(var i=0; i"+_5.buttonText+""):""})); +$(_3).textbox("textbox").attr("readonly","readonly"); +_4.filebox=$(_3).next().addClass("filebox"); +_4.filebox.find(".textbox-value").remove(); +_5.oldValue=""; +var _6=$("").appendTo(_4.filebox); +_6.attr("id",id).attr("name",$(_3).attr("textboxName")||""); +_6.change(function(){ +$(_3).filebox("setText",this.value); +_5.onChange.call(_3,this.value,_5.oldValue); +_5.oldValue=this.value; +}); +var _7=$(_3).filebox("button"); +if(_7.length){ +if(_7.linkbutton("options").disabled){ +_6.attr("disabled","disabled"); +}else{ +_6.removeAttr("disabled"); +} +} +}; +$.fn.filebox=function(_8,_9){ +if(typeof _8=="string"){ +var _a=$.fn.filebox.methods[_8]; +if(_a){ +return _a(this,_9); +}else{ +return this.textbox(_8,_9); +} +} +_8=_8||{}; +return this.each(function(){ +var _b=$.data(this,"filebox"); +if(_b){ +$.extend(_b.options,_8); +}else{ +$.data(this,"filebox",{options:$.extend({},$.fn.filebox.defaults,$.fn.filebox.parseOptions(this),_8)}); +} +_2(this); +}); +}; +$.fn.filebox.methods={options:function(jq){ +var _c=jq.textbox("options"); +return $.extend($.data(jq[0],"filebox").options,{width:_c.width,value:_c.value,originalValue:_c.originalValue,disabled:_c.disabled,readonly:_c.readonly}); +}}; +$.fn.filebox.parseOptions=function(_d){ +return $.extend({},$.fn.textbox.parseOptions(_d),{}); +}; +$.fn.filebox.defaults=$.extend({},$.fn.textbox.defaults,{buttonIcon:null,buttonText:"Choose File",buttonAlign:"right",inputEvents:{}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.form.js b/assets/js/easy-ui/plugins/jquery.form.js new file mode 100755 index 0000000000..aed2df2353 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.form.js @@ -0,0 +1,317 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"form").options; +$.extend(_4,_3||{}); +var _5=$.extend({},_4.queryParams); +if(_4.onSubmit.call(_2,_5)==false){ +return; +} +$(_2).find(".textbox-text:focus").blur(); +var _6="easyui_frame_"+(new Date().getTime()); +var _7=$("").appendTo("body"); +_7.attr("src",window.ActiveXObject?"javascript:false":"about:blank"); +_7.css({position:"absolute",top:-1000,left:-1000}); +_7.bind("load",cb); +_8(_5); +function _8(_9){ +var _a=$(_2); +if(_4.url){ +_a.attr("action",_4.url); +} +var t=_a.attr("target"),a=_a.attr("action"); +_a.attr("target",_6); +var _b=$(); +try{ +for(var n in _9){ +var _c=$("").val(_9[n]).appendTo(_a); +_b=_b.add(_c); +} +_d(); +_a[0].submit(); +} +finally{ +_a.attr("action",a); +t?_a.attr("target",t):_a.removeAttr("target"); +_b.remove(); +} +}; +function _d(){ +var f=$("#"+_6); +if(!f.length){ +return; +} +try{ +var s=f.contents()[0].readyState; +if(s&&s.toLowerCase()=="uninitialized"){ +setTimeout(_d,100); +} +} +catch(e){ +cb(); +} +}; +var _e=10; +function cb(){ +var f=$("#"+_6); +if(!f.length){ +return; +} +f.unbind(); +var _f=""; +try{ +var _10=f.contents().find("body"); +_f=_10.html(); +if(_f==""){ +if(--_e){ +setTimeout(cb,100); +return; +} +} +var ta=_10.find(">textarea"); +if(ta.length){ +_f=ta.val(); +}else{ +var pre=_10.find(">pre"); +if(pre.length){ +_f=pre.html(); +} +} +} +catch(e){ +} +_4.success(_f); +setTimeout(function(){ +f.unbind(); +f.remove(); +},100); +}; +}; +function _11(_12,_13){ +var _14=$.data(_12,"form").options; +if(typeof _13=="string"){ +var _15={}; +if(_14.onBeforeLoad.call(_12,_15)==false){ +return; +} +$.ajax({url:_13,data:_15,dataType:"json",success:function(_16){ +_17(_16); +},error:function(){ +_14.onLoadError.apply(_12,arguments); +}}); +}else{ +_17(_13); +} +function _17(_18){ +var _19=$(_12); +for(var _1a in _18){ +var val=_18[_1a]; +var rr=_1b(_1a,val); +if(!rr.length){ +var _1c=_1d(_1a,val); +if(!_1c){ +$("input[name=\""+_1a+"\"]",_19).val(val); +$("textarea[name=\""+_1a+"\"]",_19).val(val); +$("select[name=\""+_1a+"\"]",_19).val(val); +} +} +_1e(_1a,val); +} +_14.onLoadSuccess.call(_12,_18); +_2b(_12); +}; +function _1b(_1f,val){ +var rr=$(_12).find("input[name=\""+_1f+"\"][type=radio], input[name=\""+_1f+"\"][type=checkbox]"); +rr._propAttr("checked",false); +rr.each(function(){ +var f=$(this); +if(f.val()==String(val)||$.inArray(f.val(),$.isArray(val)?val:[val])>=0){ +f._propAttr("checked",true); +} +}); +return rr; +}; +function _1d(_20,val){ +var _21=0; +var pp=["textbox","numberbox","slider"]; +for(var i=0;i=0){ +_17(_13,_15,this); +} +}); +}; +cc.children("form").length?_14(cc.children("form")):_14(cc); +cc.append("
              "); +cc.bind("_resize",function(e,_16){ +if($(this).hasClass("easyui-fluid")||_16){ +_2(_13); +} +return false; +}); +}; +function _17(_18,_19,el){ +_19.region=_19.region||"center"; +var _1a=$.data(_18,"layout").panels; +var cc=$(_18); +var dir=_19.region; +if(_1a[dir].length){ +return; +} +var pp=$(el); +if(!pp.length){ +pp=$("
              ").appendTo(cc); +} +var _1b=$.extend({},$.fn.layout.paneldefaults,{width:(pp.length?parseInt(pp[0].style.width)||pp.outerWidth():"auto"),height:(pp.length?parseInt(pp[0].style.height)||pp.outerHeight():"auto"),doSize:false,collapsible:true,cls:("layout-panel layout-panel-"+dir),bodyCls:"layout-body",onOpen:function(){ +var _1c=$(this).panel("header").children("div.panel-tool"); +_1c.children("a.panel-tool-collapse").hide(); +var _1d={north:"up",south:"down",east:"right",west:"left"}; +if(!_1d[dir]){ +return; +} +var _1e="layout-button-"+_1d[dir]; +var t=_1c.children("a."+_1e); +if(!t.length){ +t=$("").addClass(_1e).appendTo(_1c); +t.bind("click",{dir:dir},function(e){ +_2b(_18,e.data.dir); +return false; +}); +} +$(this).panel("options").collapsible?t.show():t.hide(); +}},_19); +pp.panel(_1b); +_1a[dir]=pp; +if(pp.panel("options").split){ +var _1f=pp.panel("panel"); +_1f.addClass("layout-split-"+dir); +var _20=""; +if(dir=="north"){ +_20="s"; +} +if(dir=="south"){ +_20="n"; +} +if(dir=="east"){ +_20="w"; +} +if(dir=="west"){ +_20="e"; +} +_1f.resizable($.extend({},{handles:_20,onStartResize:function(e){ +_1=true; +if(dir=="north"||dir=="south"){ +var _21=$(">div.layout-split-proxy-v",_18); +}else{ +var _21=$(">div.layout-split-proxy-h",_18); +} +var top=0,_22=0,_23=0,_24=0; +var pos={display:"block"}; +if(dir=="north"){ +pos.top=parseInt(_1f.css("top"))+_1f.outerHeight()-_21.height(); +pos.left=parseInt(_1f.css("left")); +pos.width=_1f.outerWidth(); +pos.height=_21.height(); +}else{ +if(dir=="south"){ +pos.top=parseInt(_1f.css("top")); +pos.left=parseInt(_1f.css("left")); +pos.width=_1f.outerWidth(); +pos.height=_21.height(); +}else{ +if(dir=="east"){ +pos.top=parseInt(_1f.css("top"))||0; +pos.left=parseInt(_1f.css("left"))||0; +pos.width=_21.width(); +pos.height=_1f.outerHeight(); +}else{ +if(dir=="west"){ +pos.top=parseInt(_1f.css("top"))||0; +pos.left=_1f.outerWidth()-_21.width(); +pos.width=_21.width(); +pos.height=_1f.outerHeight(); +} +} +} +} +_21.css(pos); +$("
              ").css({left:0,top:0,width:cc.width(),height:cc.height()}).appendTo(cc); +},onResize:function(e){ +if(dir=="north"||dir=="south"){ +var _25=$(">div.layout-split-proxy-v",_18); +_25.css("top",e.pageY-$(_18).offset().top-_25.height()/2); +}else{ +var _25=$(">div.layout-split-proxy-h",_18); +_25.css("left",e.pageX-$(_18).offset().left-_25.width()/2); +} +return false; +},onStopResize:function(e){ +cc.children("div.layout-split-proxy-v,div.layout-split-proxy-h").hide(); +pp.panel("resize",e.data); +_2(_18); +_1=false; +cc.find(">div.layout-mask").remove(); +}},_19)); +} +}; +function _26(_27,_28){ +var _29=$.data(_27,"layout").panels; +if(_29[_28].length){ +_29[_28].panel("destroy"); +_29[_28]=$(); +var _2a="expand"+_28.substring(0,1).toUpperCase()+_28.substring(1); +if(_29[_2a]){ +_29[_2a].panel("destroy"); +_29[_2a]=undefined; +} +} +}; +function _2b(_2c,_2d,_2e){ +if(_2e==undefined){ +_2e="normal"; +} +var _2f=$.data(_2c,"layout").panels; +var p=_2f[_2d]; +var _30=p.panel("options"); +if(_30.onBeforeCollapse.call(p)==false){ +return; +} +var _31="expand"+_2d.substring(0,1).toUpperCase()+_2d.substring(1); +if(!_2f[_31]){ +_2f[_31]=_32(_2d); +_2f[_31].panel("panel").bind("click",function(){ +p.panel("expand",false).panel("open"); +var _33=_34(); +p.panel("resize",_33.collapse); +p.panel("panel").animate(_33.expand,function(){ +$(this).unbind(".layout").bind("mouseleave.layout",{region:_2d},function(e){ +if(_1==true){ +return; +} +if($("body>div.combo-p>div.combo-panel:visible").length){ +return; +} +_2b(_2c,e.data.region); +}); +}); +return false; +}); +} +var _35=_34(); +if(!_a(_2f[_31])){ +_2f.center.panel("resize",_35.resizeC); +} +p.panel("panel").animate(_35.collapse,_2e,function(){ +p.panel("collapse",false).panel("close"); +_2f[_31].panel("open").panel("resize",_35.expandP); +$(this).unbind(".layout"); +}); +function _32(dir){ +var _36; +if(dir=="east"){ +_36="layout-button-left"; +}else{ +if(dir=="west"){ +_36="layout-button-right"; +}else{ +if(dir=="north"){ +_36="layout-button-down"; +}else{ +if(dir=="south"){ +_36="layout-button-up"; +} +} +} +} +var p=$("
              ").appendTo(_2c); +p.panel($.extend({},$.fn.layout.paneldefaults,{cls:("layout-expand layout-expand-"+dir),title:" ",closed:true,minWidth:0,minHeight:0,doSize:false,tools:[{iconCls:_36,handler:function(){ +_3c(_2c,_2d); +return false; +}}]})); +p.panel("panel").hover(function(){ +$(this).addClass("layout-expand-over"); +},function(){ +$(this).removeClass("layout-expand-over"); +}); +return p; +}; +function _34(){ +var cc=$(_2c); +var _37=_2f.center.panel("options"); +var _38=_30.collapsedSize; +if(_2d=="east"){ +var _39=p.panel("panel")._outerWidth(); +var _3a=_37.width+_39-_38; +if(_30.split||!_30.border){ +_3a++; +} +return {resizeC:{width:_3a},expand:{left:cc.width()-_39},expandP:{top:_37.top,left:cc.width()-_38,width:_38,height:_37.height},collapse:{left:cc.width(),top:_37.top,height:_37.height}}; +}else{ +if(_2d=="west"){ +var _39=p.panel("panel")._outerWidth(); +var _3a=_37.width+_39-_38; +if(_30.split||!_30.border){ +_3a++; +} +return {resizeC:{width:_3a,left:_38-1},expand:{left:0},expandP:{left:0,top:_37.top,width:_38,height:_37.height},collapse:{left:-_39,top:_37.top,height:_37.height}}; +}else{ +if(_2d=="north"){ +var _3b=p.panel("panel")._outerHeight(); +var hh=_37.height; +if(!_a(_2f.expandNorth)){ +hh+=_3b-_38+((_30.split||!_30.border)?1:0); +} +_2f.east.add(_2f.west).add(_2f.expandEast).add(_2f.expandWest).panel("resize",{top:_38-1,height:hh}); +return {resizeC:{top:_38-1,height:hh},expand:{top:0},expandP:{top:0,left:0,width:cc.width(),height:_38},collapse:{top:-_3b,width:cc.width()}}; +}else{ +if(_2d=="south"){ +var _3b=p.panel("panel")._outerHeight(); +var hh=_37.height; +if(!_a(_2f.expandSouth)){ +hh+=_3b-_38+((_30.split||!_30.border)?1:0); +} +_2f.east.add(_2f.west).add(_2f.expandEast).add(_2f.expandWest).panel("resize",{height:hh}); +return {resizeC:{height:hh},expand:{top:cc.height()-_3b},expandP:{top:cc.height()-_38,left:0,width:cc.width(),height:_38},collapse:{top:cc.height(),width:cc.width()}}; +} +} +} +} +}; +}; +function _3c(_3d,_3e){ +var _3f=$.data(_3d,"layout").panels; +var p=_3f[_3e]; +var _40=p.panel("options"); +if(_40.onBeforeExpand.call(p)==false){ +return; +} +var _41="expand"+_3e.substring(0,1).toUpperCase()+_3e.substring(1); +if(_3f[_41]){ +_3f[_41].panel("close"); +p.panel("panel").stop(true,true); +p.panel("expand",false).panel("open"); +var _42=_43(); +p.panel("resize",_42.collapse); +p.panel("panel").animate(_42.expand,function(){ +_2(_3d); +}); +} +function _43(){ +var cc=$(_3d); +var _44=_3f.center.panel("options"); +if(_3e=="east"&&_3f.expandEast){ +return {collapse:{left:cc.width(),top:_44.top,height:_44.height},expand:{left:cc.width()-p.panel("panel")._outerWidth()}}; +}else{ +if(_3e=="west"&&_3f.expandWest){ +return {collapse:{left:-p.panel("panel")._outerWidth(),top:_44.top,height:_44.height},expand:{left:0}}; +}else{ +if(_3e=="north"&&_3f.expandNorth){ +return {collapse:{top:-p.panel("panel")._outerHeight(),width:cc.width()},expand:{top:0}}; +}else{ +if(_3e=="south"&&_3f.expandSouth){ +return {collapse:{top:cc.height(),width:cc.width()},expand:{top:cc.height()-p.panel("panel")._outerHeight()}}; +} +} +} +} +}; +}; +function _a(pp){ +if(!pp){ +return false; +} +if(pp.length){ +return pp.panel("panel").is(":visible"); +}else{ +return false; +} +}; +function _45(_46){ +var _47=$.data(_46,"layout").panels; +if(_47.east.length&&_47.east.panel("options").collapsed){ +_2b(_46,"east",0); +} +if(_47.west.length&&_47.west.panel("options").collapsed){ +_2b(_46,"west",0); +} +if(_47.north.length&&_47.north.panel("options").collapsed){ +_2b(_46,"north",0); +} +if(_47.south.length&&_47.south.panel("options").collapsed){ +_2b(_46,"south",0); +} +}; +$.fn.layout=function(_48,_49){ +if(typeof _48=="string"){ +return $.fn.layout.methods[_48](this,_49); +} +_48=_48||{}; +return this.each(function(){ +var _4a=$.data(this,"layout"); +if(_4a){ +$.extend(_4a.options,_48); +}else{ +var _4b=$.extend({},$.fn.layout.defaults,$.fn.layout.parseOptions(this),_48); +$.data(this,"layout",{options:_4b,panels:{center:$(),north:$(),south:$(),east:$(),west:$()}}); +_12(this); +} +_2(this); +_45(this); +}); +}; +$.fn.layout.methods={options:function(jq){ +return $.data(jq[0],"layout").options; +},resize:function(jq,_4c){ +return jq.each(function(){ +_2(this,_4c); +}); +},panel:function(jq,_4d){ +return $.data(jq[0],"layout").panels[_4d]; +},collapse:function(jq,_4e){ +return jq.each(function(){ +_2b(this,_4e); +}); +},expand:function(jq,_4f){ +return jq.each(function(){ +_3c(this,_4f); +}); +},add:function(jq,_50){ +return jq.each(function(){ +_17(this,_50); +_2(this); +if($(this).layout("panel",_50.region).panel("options").collapsed){ +_2b(this,_50.region,0); +} +}); +},remove:function(jq,_51){ +return jq.each(function(){ +_26(this,_51); +_2(this); +}); +}}; +$.fn.layout.parseOptions=function(_52){ +return $.extend({},$.parser.parseOptions(_52,[{fit:"boolean"}])); +}; +$.fn.layout.defaults={fit:false}; +$.fn.layout.parsePanelOptions=function(_53){ +var t=$(_53); +return $.extend({},$.fn.panel.parseOptions(_53),$.parser.parseOptions(_53,["region",{split:"boolean",collpasedSize:"number",minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number"}])); +}; +$.fn.layout.paneldefaults=$.extend({},$.fn.panel.defaults,{region:null,split:false,collapsedSize:28,minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.linkbutton.js b/assets/js/easy-ui/plugins/jquery.linkbutton.js new file mode 100755 index 0000000000..d258e7dbba --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.linkbutton.js @@ -0,0 +1,181 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"linkbutton").options; +if(_3){ +$.extend(_4,_3); +} +if(_4.width||_4.height||_4.fit){ +var _5=$(_2); +var _6=_5.parent(); +var _7=_5.is(":visible"); +if(!_7){ +var _8=$("
              ").insertBefore(_2); +var _9={position:_5.css("position"),display:_5.css("display"),left:_5.css("left")}; +_5.appendTo("body"); +_5.css({position:"absolute",display:"inline-block",left:-20000}); +} +_5._size(_4,_6); +var _a=_5.find(".l-btn-left"); +_a.css("margin-top",0); +_a.css("margin-top",parseInt((_5.height()-_a.height())/2)+"px"); +if(!_7){ +_5.insertAfter(_8); +_5.css(_9); +_8.remove(); +} +} +}; +function _b(_c){ +var _d=$.data(_c,"linkbutton").options; +var t=$(_c).empty(); +t.addClass("l-btn").removeClass("l-btn-plain l-btn-selected l-btn-plain-selected"); +t.removeClass("l-btn-small l-btn-medium l-btn-large").addClass("l-btn-"+_d.size); +if(_d.plain){ +t.addClass("l-btn-plain"); +} +if(_d.selected){ +t.addClass(_d.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +} +t.attr("group",_d.group||""); +t.attr("id",_d.id||""); +var _e=$("").appendTo(t); +if(_d.text){ +$("").html(_d.text).appendTo(_e); +}else{ +$(" ").appendTo(_e); +} +if(_d.iconCls){ +$(" ").addClass(_d.iconCls).appendTo(_e); +_e.addClass("l-btn-icon-"+_d.iconAlign); +} +t.unbind(".linkbutton").bind("focus.linkbutton",function(){ +if(!_d.disabled){ +$(this).addClass("l-btn-focus"); +} +}).bind("blur.linkbutton",function(){ +$(this).removeClass("l-btn-focus"); +}).bind("click.linkbutton",function(){ +if(!_d.disabled){ +if(_d.toggle){ +if(_d.selected){ +$(this).linkbutton("unselect"); +}else{ +$(this).linkbutton("select"); +} +} +_d.onClick.call(this); +} +}); +_f(_c,_d.selected); +_10(_c,_d.disabled); +}; +function _f(_11,_12){ +var _13=$.data(_11,"linkbutton").options; +if(_12){ +if(_13.group){ +$("a.l-btn[group=\""+_13.group+"\"]").each(function(){ +var o=$(this).linkbutton("options"); +if(o.toggle){ +$(this).removeClass("l-btn-selected l-btn-plain-selected"); +o.selected=false; +} +}); +} +$(_11).addClass(_13.plain?"l-btn-selected l-btn-plain-selected":"l-btn-selected"); +_13.selected=true; +}else{ +if(!_13.group){ +$(_11).removeClass("l-btn-selected l-btn-plain-selected"); +_13.selected=false; +} +} +}; +function _10(_14,_15){ +var _16=$.data(_14,"linkbutton"); +var _17=_16.options; +$(_14).removeClass("l-btn-disabled l-btn-plain-disabled"); +if(_15){ +_17.disabled=true; +var _18=$(_14).attr("href"); +if(_18){ +_16.href=_18; +$(_14).attr("href","javascript:void(0)"); +} +if(_14.onclick){ +_16.onclick=_14.onclick; +_14.onclick=null; +} +_17.plain?$(_14).addClass("l-btn-disabled l-btn-plain-disabled"):$(_14).addClass("l-btn-disabled"); +}else{ +_17.disabled=false; +if(_16.href){ +$(_14).attr("href",_16.href); +} +if(_16.onclick){ +_14.onclick=_16.onclick; +} +} +}; +$.fn.linkbutton=function(_19,_1a){ +if(typeof _19=="string"){ +return $.fn.linkbutton.methods[_19](this,_1a); +} +_19=_19||{}; +return this.each(function(){ +var _1b=$.data(this,"linkbutton"); +if(_1b){ +$.extend(_1b.options,_19); +}else{ +$.data(this,"linkbutton",{options:$.extend({},$.fn.linkbutton.defaults,$.fn.linkbutton.parseOptions(this),_19)}); +$(this).removeAttr("disabled"); +$(this).bind("_resize",function(e,_1c){ +if($(this).hasClass("easyui-fluid")||_1c){ +_1(this); +} +return false; +}); +} +_b(this); +_1(this); +}); +}; +$.fn.linkbutton.methods={options:function(jq){ +return $.data(jq[0],"linkbutton").options; +},resize:function(jq,_1d){ +return jq.each(function(){ +_1(this,_1d); +}); +},enable:function(jq){ +return jq.each(function(){ +_10(this,false); +}); +},disable:function(jq){ +return jq.each(function(){ +_10(this,true); +}); +},select:function(jq){ +return jq.each(function(){ +_f(this,true); +}); +},unselect:function(jq){ +return jq.each(function(){ +_f(this,false); +}); +}}; +$.fn.linkbutton.parseOptions=function(_1e){ +var t=$(_1e); +return $.extend({},$.parser.parseOptions(_1e,["id","iconCls","iconAlign","group","size",{plain:"boolean",toggle:"boolean",selected:"boolean"}]),{disabled:(t.attr("disabled")?true:undefined),text:$.trim(t.html()),iconCls:(t.attr("icon")||t.attr("iconCls"))}); +}; +$.fn.linkbutton.defaults={id:null,disabled:false,toggle:false,selected:false,group:null,plain:false,text:"",iconCls:null,iconAlign:"left",size:"small",onClick:function(){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.menu.js b/assets/js/easy-ui/plugins/jquery.menu.js new file mode 100755 index 0000000000..83744d30d1 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.menu.js @@ -0,0 +1,485 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).appendTo("body"); +$(_2).addClass("menu-top"); +$(document).unbind(".menu").bind("mousedown.menu",function(e){ +var m=$(e.target).closest("div.menu,div.combo-p"); +if(m.length){ +return; +} +$("body>div.menu-top:visible").menu("hide"); +}); +var _3=_4($(_2)); +for(var i=0;i<_3.length;i++){ +_5(_3[i]); +} +function _4(_6){ +var _7=[]; +_6.addClass("menu"); +_7.push(_6); +if(!_6.hasClass("menu-content")){ +_6.children("div").each(function(){ +var _8=$(this).children("div"); +if(_8.length){ +_8.insertAfter(_2); +this.submenu=_8; +var mm=_4(_8); +_7=_7.concat(mm); +} +}); +} +return _7; +}; +function _5(_9){ +var wh=$.parser.parseOptions(_9[0],["width","height"]); +_9[0].originalHeight=wh.height||0; +if(_9.hasClass("menu-content")){ +_9[0].originalWidth=wh.width||_9._outerWidth(); +}else{ +_9[0].originalWidth=wh.width||0; +_9.children("div").each(function(){ +var _a=$(this); +var _b=$.extend({},$.parser.parseOptions(this,["name","iconCls","href",{separator:"boolean"}]),{disabled:(_a.attr("disabled")?true:undefined)}); +if(_b.separator){ +_a.addClass("menu-sep"); +} +if(!_a.hasClass("menu-sep")){ +_a[0].itemName=_b.name||""; +_a[0].itemHref=_b.href||""; +var _c=_a.addClass("menu-item").html(); +_a.empty().append($("
              ").html(_c)); +if(_b.iconCls){ +$("
              ").addClass(_b.iconCls).appendTo(_a); +} +if(_b.disabled){ +_d(_2,_a[0],true); +} +if(_a[0].submenu){ +$("
              ").appendTo(_a); +} +_e(_2,_a); +} +}); +$("
              ").prependTo(_9); +} +_f(_2,_9); +_9.hide(); +_10(_2,_9); +}; +}; +function _f(_11,_12){ +var _13=$.data(_11,"menu").options; +var _14=_12.attr("style")||""; +_12.css({display:"block",left:-10000,height:"auto",overflow:"hidden"}); +var el=_12[0]; +var _15=el.originalWidth||0; +if(!_15){ +_15=0; +_12.find("div.menu-text").each(function(){ +if(_15<$(this)._outerWidth()){ +_15=$(this)._outerWidth(); +} +$(this).closest("div.menu-item")._outerHeight($(this)._outerHeight()+2); +}); +_15+=40; +} +_15=Math.max(_15,_13.minWidth); +var _16=el.originalHeight||0; +if(!_16){ +_16=_12.outerHeight(); +if(_12.hasClass("menu-top")&&_13.alignTo){ +var at=$(_13.alignTo); +var h1=at.offset().top-$(document).scrollTop(); +var h2=$(window)._outerHeight()+$(document).scrollTop()-at.offset().top-at._outerHeight(); +_16=Math.min(_16,Math.max(h1,h2)); +}else{ +if(_16>$(window)._outerHeight()){ +_16=$(window).height(); +_14+=";overflow:auto"; +}else{ +_14+=";overflow:hidden"; +} +} +} +var _17=Math.max(el.originalHeight,_12.outerHeight())-2; +_12._outerWidth(_15)._outerHeight(_16); +_12.children("div.menu-line")._outerHeight(_17); +_14+=";width:"+el.style.width+";height:"+el.style.height; +_12.attr("style",_14); +}; +function _10(_18,_19){ +var _1a=$.data(_18,"menu"); +_19.unbind(".menu").bind("mouseenter.menu",function(){ +if(_1a.timer){ +clearTimeout(_1a.timer); +_1a.timer=null; +} +}).bind("mouseleave.menu",function(){ +if(_1a.options.hideOnUnhover){ +_1a.timer=setTimeout(function(){ +_1b(_18); +},_1a.options.duration); +} +}); +}; +function _e(_1c,_1d){ +if(!_1d.hasClass("menu-item")){ +return; +} +_1d.unbind(".menu"); +_1d.bind("click.menu",function(){ +if($(this).hasClass("menu-item-disabled")){ +return; +} +if(!this.submenu){ +_1b(_1c); +var _1e=this.itemHref; +if(_1e){ +location.href=_1e; +} +} +var _1f=$(_1c).menu("getItem",this); +$.data(_1c,"menu").options.onClick.call(_1c,_1f); +}).bind("mouseenter.menu",function(e){ +_1d.siblings().each(function(){ +if(this.submenu){ +_22(this.submenu); +} +$(this).removeClass("menu-active"); +}); +_1d.addClass("menu-active"); +if($(this).hasClass("menu-item-disabled")){ +_1d.addClass("menu-active-disabled"); +return; +} +var _20=_1d[0].submenu; +if(_20){ +$(_1c).menu("show",{menu:_20,parent:_1d}); +} +}).bind("mouseleave.menu",function(e){ +_1d.removeClass("menu-active menu-active-disabled"); +var _21=_1d[0].submenu; +if(_21){ +if(e.pageX>=parseInt(_21.css("left"))){ +_1d.addClass("menu-active"); +}else{ +_22(_21); +} +}else{ +_1d.removeClass("menu-active"); +} +}); +}; +function _1b(_23){ +var _24=$.data(_23,"menu"); +if(_24){ +if($(_23).is(":visible")){ +_22($(_23)); +_24.options.onHide.call(_23); +} +} +return false; +}; +function _25(_26,_27){ +var _28,top; +_27=_27||{}; +var _29=$(_27.menu||_26); +$(_26).menu("resize",_29[0]); +if(_29.hasClass("menu-top")){ +var _2a=$.data(_26,"menu").options; +$.extend(_2a,_27); +_28=_2a.left; +top=_2a.top; +if(_2a.alignTo){ +var at=$(_2a.alignTo); +_28=at.offset().left; +top=at.offset().top+at._outerHeight(); +if(_2a.align=="right"){ +_28+=at.outerWidth()-_29.outerWidth(); +} +} +if(_28+_29.outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +_28=$(window)._outerWidth()+$(document).scrollLeft()-_29.outerWidth()-5; +} +if(_28<0){ +_28=0; +} +top=_2b(top,_2a.alignTo); +}else{ +var _2c=_27.parent; +_28=_2c.offset().left+_2c.outerWidth()-2; +if(_28+_29.outerWidth()+5>$(window)._outerWidth()+$(document).scrollLeft()){ +_28=_2c.offset().left-_29.outerWidth()+2; +} +top=_2b(_2c.offset().top-3); +} +function _2b(top,_2d){ +if(top+_29.outerHeight()>$(window)._outerHeight()+$(document).scrollTop()){ +if(_2d){ +top=$(_2d).offset().top-_29._outerHeight(); +}else{ +top=$(window)._outerHeight()+$(document).scrollTop()-_29.outerHeight(); +} +} +if(top<0){ +top=0; +} +return top; +}; +_29.css({left:_28,top:top}); +_29.show(0,function(){ +if(!_29[0].shadow){ +_29[0].shadow=$("
              ").insertAfter(_29); +} +_29[0].shadow.css({display:"block",zIndex:$.fn.menu.defaults.zIndex++,left:_29.css("left"),top:_29.css("top"),width:_29.outerWidth(),height:_29.outerHeight()}); +_29.css("z-index",$.fn.menu.defaults.zIndex++); +if(_29.hasClass("menu-top")){ +$.data(_29[0],"menu").options.onShow.call(_29[0]); +} +}); +}; +function _22(_2e){ +if(!_2e){ +return; +} +_2f(_2e); +_2e.find("div.menu-item").each(function(){ +if(this.submenu){ +_22(this.submenu); +} +$(this).removeClass("menu-active"); +}); +function _2f(m){ +m.stop(true,true); +if(m[0].shadow){ +m[0].shadow.hide(); +} +m.hide(); +}; +}; +function _30(_31,_32){ +var _33=null; +var tmp=$("
              "); +function _34(_35){ +_35.children("div.menu-item").each(function(){ +var _36=$(_31).menu("getItem",this); +var s=tmp.empty().html(_36.text).text(); +if(_32==$.trim(s)){ +_33=_36; +}else{ +if(this.submenu&&!_33){ +_34(this.submenu); +} +} +}); +}; +_34($(_31)); +tmp.remove(); +return _33; +}; +function _d(_37,_38,_39){ +var t=$(_38); +if(!t.hasClass("menu-item")){ +return; +} +if(_39){ +t.addClass("menu-item-disabled"); +if(_38.onclick){ +_38.onclick1=_38.onclick; +_38.onclick=null; +} +}else{ +t.removeClass("menu-item-disabled"); +if(_38.onclick1){ +_38.onclick=_38.onclick1; +_38.onclick1=null; +} +} +}; +function _3a(_3b,_3c){ +var _3d=$(_3b); +if(_3c.parent){ +if(!_3c.parent.submenu){ +var _3e=$("
              ").appendTo("body"); +_3e.hide(); +_3c.parent.submenu=_3e; +$("
              ").appendTo(_3c.parent); +} +_3d=_3c.parent.submenu; +} +if(_3c.separator){ +var _3f=$("
              ").appendTo(_3d); +}else{ +var _3f=$("
              ").appendTo(_3d); +$("
              ").html(_3c.text).appendTo(_3f); +} +if(_3c.iconCls){ +$("
              ").addClass(_3c.iconCls).appendTo(_3f); +} +if(_3c.id){ +_3f.attr("id",_3c.id); +} +if(_3c.name){ +_3f[0].itemName=_3c.name; +} +if(_3c.href){ +_3f[0].itemHref=_3c.href; +} +if(_3c.onclick){ +if(typeof _3c.onclick=="string"){ +_3f.attr("onclick",_3c.onclick); +}else{ +_3f[0].onclick=eval(_3c.onclick); +} +} +if(_3c.handler){ +_3f[0].onclick=eval(_3c.handler); +} +if(_3c.disabled){ +_d(_3b,_3f[0],true); +} +_e(_3b,_3f); +_10(_3b,_3d); +_f(_3b,_3d); +}; +function _40(_41,_42){ +function _43(el){ +if(el.submenu){ +el.submenu.children("div.menu-item").each(function(){ +_43(this); +}); +var _44=el.submenu[0].shadow; +if(_44){ +_44.remove(); +} +el.submenu.remove(); +} +$(el).remove(); +}; +var _45=$(_42).parent(); +_43(_42); +_f(_41,_45); +}; +function _46(_47,_48,_49){ +var _4a=$(_48).parent(); +if(_49){ +$(_48).show(); +}else{ +$(_48).hide(); +} +_f(_47,_4a); +}; +function _4b(_4c){ +$(_4c).children("div.menu-item").each(function(){ +_40(_4c,this); +}); +if(_4c.shadow){ +_4c.shadow.remove(); +} +$(_4c).remove(); +}; +$.fn.menu=function(_4d,_4e){ +if(typeof _4d=="string"){ +return $.fn.menu.methods[_4d](this,_4e); +} +_4d=_4d||{}; +return this.each(function(){ +var _4f=$.data(this,"menu"); +if(_4f){ +$.extend(_4f.options,_4d); +}else{ +_4f=$.data(this,"menu",{options:$.extend({},$.fn.menu.defaults,$.fn.menu.parseOptions(this),_4d)}); +_1(this); +} +$(this).css({left:_4f.options.left,top:_4f.options.top}); +}); +}; +$.fn.menu.methods={options:function(jq){ +return $.data(jq[0],"menu").options; +},show:function(jq,pos){ +return jq.each(function(){ +_25(this,pos); +}); +},hide:function(jq){ +return jq.each(function(){ +_1b(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_4b(this); +}); +},setText:function(jq,_50){ +return jq.each(function(){ +$(_50.target).children("div.menu-text").html(_50.text); +}); +},setIcon:function(jq,_51){ +return jq.each(function(){ +$(_51.target).children("div.menu-icon").remove(); +if(_51.iconCls){ +$("
              ").addClass(_51.iconCls).appendTo(_51.target); +} +}); +},getItem:function(jq,_52){ +var t=$(_52); +var _53={target:_52,id:t.attr("id"),text:$.trim(t.children("div.menu-text").html()),disabled:t.hasClass("menu-item-disabled"),name:_52.itemName,href:_52.itemHref,onclick:_52.onclick}; +var _54=t.children("div.menu-icon"); +if(_54.length){ +var cc=[]; +var aa=_54.attr("class").split(" "); +for(var i=0;i").addClass(_3.cls.arrow).appendTo(_5); +$("").addClass("m-btn-line").appendTo(_5); +if(_3.menu){ +$(_3.menu).menu({duration:_3.duration}); +var _6=$(_3.menu).menu("options"); +var _7=_6.onShow; +var _8=_6.onHide; +$.extend(_6,{onShow:function(){ +var _9=$(this).menu("options"); +var _a=$(_9.alignTo); +var _b=_a.menubutton("options"); +_a.addClass((_b.plain==true)?_b.cls.btn2:_b.cls.btn1); +_7.call(this); +},onHide:function(){ +var _c=$(this).menu("options"); +var _d=$(_c.alignTo); +var _e=_d.menubutton("options"); +_d.removeClass((_e.plain==true)?_e.cls.btn2:_e.cls.btn1); +_8.call(this); +}}); +} +}; +function _f(_10){ +var _11=$.data(_10,"menubutton").options; +var btn=$(_10); +var t=btn.find("."+_11.cls.trigger); +if(!t.length){ +t=btn; +} +t.unbind(".menubutton"); +var _12=null; +t.bind("click.menubutton",function(){ +if(!_13()){ +_14(_10); +return false; +} +}).bind("mouseenter.menubutton",function(){ +if(!_13()){ +_12=setTimeout(function(){ +_14(_10); +},_11.duration); +return false; +} +}).bind("mouseleave.menubutton",function(){ +if(_12){ +clearTimeout(_12); +} +$(_11.menu).triggerHandler("mouseleave"); +}); +function _13(){ +return $(_10).linkbutton("options").disabled; +}; +}; +function _14(_15){ +var _16=$(_15).menubutton("options"); +if(_16.disabled||!_16.menu){ +return; +} +$("body>div.menu-top").menu("hide"); +var btn=$(_15); +var mm=$(_16.menu); +if(mm.length){ +mm.menu("options").alignTo=btn; +mm.menu("show",{alignTo:btn,align:_16.menuAlign}); +} +btn.blur(); +}; +$.fn.menubutton=function(_17,_18){ +if(typeof _17=="string"){ +var _19=$.fn.menubutton.methods[_17]; +if(_19){ +return _19(this,_18); +}else{ +return this.linkbutton(_17,_18); +} +} +_17=_17||{}; +return this.each(function(){ +var _1a=$.data(this,"menubutton"); +if(_1a){ +$.extend(_1a.options,_17); +}else{ +$.data(this,"menubutton",{options:$.extend({},$.fn.menubutton.defaults,$.fn.menubutton.parseOptions(this),_17)}); +$(this).removeAttr("disabled"); +} +_1(this); +_f(this); +}); +}; +$.fn.menubutton.methods={options:function(jq){ +var _1b=jq.linkbutton("options"); +return $.extend($.data(jq[0],"menubutton").options,{toggle:_1b.toggle,selected:_1b.selected,disabled:_1b.disabled}); +},destroy:function(jq){ +return jq.each(function(){ +var _1c=$(this).menubutton("options"); +if(_1c.menu){ +$(_1c.menu).menu("destroy"); +} +$(this).remove(); +}); +}}; +$.fn.menubutton.parseOptions=function(_1d){ +var t=$(_1d); +return $.extend({},$.fn.linkbutton.parseOptions(_1d),$.parser.parseOptions(_1d,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.menubutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,menuAlign:"left",duration:100,cls:{btn1:"m-btn-active",btn2:"m-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn"}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.messager.js b/assets/js/easy-ui/plugins/jquery.messager.js new file mode 100755 index 0000000000..a4d186a25e --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.messager.js @@ -0,0 +1,215 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(el,_2,_3,_4){ +var _5=$(el).window("window"); +if(!_5){ +return; +} +switch(_2){ +case null: +_5.show(); +break; +case "slide": +_5.slideDown(_3); +break; +case "fade": +_5.fadeIn(_3); +break; +case "show": +_5.show(_3); +break; +} +var _6=null; +if(_4>0){ +_6=setTimeout(function(){ +_7(el,_2,_3); +},_4); +} +_5.hover(function(){ +if(_6){ +clearTimeout(_6); +} +},function(){ +if(_4>0){ +_6=setTimeout(function(){ +_7(el,_2,_3); +},_4); +} +}); +}; +function _7(el,_8,_9){ +if(el.locked==true){ +return; +} +el.locked=true; +var _a=$(el).window("window"); +if(!_a){ +return; +} +switch(_8){ +case null: +_a.hide(); +break; +case "slide": +_a.slideUp(_9); +break; +case "fade": +_a.fadeOut(_9); +break; +case "show": +_a.hide(_9); +break; +} +setTimeout(function(){ +$(el).window("destroy"); +},_9); +}; +function _b(_c){ +var _d=$.extend({},$.fn.window.defaults,{collapsible:false,minimizable:false,maximizable:false,shadow:false,draggable:false,resizable:false,closed:true,style:{left:"",top:"",right:0,zIndex:$.fn.window.defaults.zIndex++,bottom:-document.body.scrollTop-document.documentElement.scrollTop},onBeforeOpen:function(){ +_1(this,_d.showType,_d.showSpeed,_d.timeout); +return false; +},onBeforeClose:function(){ +_7(this,_d.showType,_d.showSpeed); +return false; +}},{title:"",width:250,height:100,showType:"slide",showSpeed:600,msg:"",timeout:4000},_c); +_d.style.zIndex=$.fn.window.defaults.zIndex++; +var _e=$("
              ").html(_d.msg).appendTo("body"); +_e.window(_d); +_e.window("window").css(_d.style); +_e.window("open"); +return _e; +}; +function _f(_10,_11,_12){ +var win=$("
              ").appendTo("body"); +win.append(_11); +if(_12){ +var tb=$("
              ").appendTo(win); +for(var _13 in _12){ +$("").attr("href","javascript:void(0)").text(_13).css("margin-left",10).bind("click",eval(_12[_13])).appendTo(tb).linkbutton(); +} +} +win.window({title:_10,noheader:(_10?false:true),width:300,height:"auto",modal:true,collapsible:false,minimizable:false,maximizable:false,resizable:false,onClose:function(){ +setTimeout(function(){ +win.window("destroy"); +},100); +}}); +win.window("window").addClass("messager-window"); +win.children("div.messager-button").children("a:first").focus(); +return win; +}; +$.messager={show:function(_14){ +return _b(_14); +},alert:function(_15,msg,_16,fn){ +var _17="
              "+msg+"
              "; +switch(_16){ +case "error": +_17="
              "+_17; +break; +case "info": +_17="
              "+_17; +break; +case "question": +_17="
              "+_17; +break; +case "warning": +_17="
              "+_17; +break; +} +_17+="
              "; +var _18={}; +_18[$.messager.defaults.ok]=function(){ +win.window("close"); +if(fn){ +fn(); +return false; +} +}; +var win=_f(_15,_17,_18); +return win; +},confirm:function(_19,msg,fn){ +var _1a="
              "+"
              "+msg+"
              "+"
              "; +var _1b={}; +_1b[$.messager.defaults.ok]=function(){ +win.window("close"); +if(fn){ +fn(true); +return false; +} +}; +_1b[$.messager.defaults.cancel]=function(){ +win.window("close"); +if(fn){ +fn(false); +return false; +} +}; +var win=_f(_19,_1a,_1b); +return win; +},prompt:function(_1c,msg,fn){ +var _1d="
              "+"
              "+msg+"
              "+"
              "+"
              "+"
              "; +var _1e={}; +_1e[$.messager.defaults.ok]=function(){ +win.window("close"); +if(fn){ +fn($(".messager-input",win).val()); +return false; +} +}; +_1e[$.messager.defaults.cancel]=function(){ +win.window("close"); +if(fn){ +fn(); +return false; +} +}; +var win=_f(_1c,_1d,_1e); +win.children("input.messager-input").focus(); +return win; +},progress:function(_1f){ +var _20={bar:function(){ +return $("body>div.messager-window").find("div.messager-p-bar"); +},close:function(){ +var win=$("body>div.messager-window>div.messager-body:has(div.messager-progress)"); +if(win.length){ +win.window("close"); +} +}}; +if(typeof _1f=="string"){ +var _21=_20[_1f]; +return _21(); +} +var _22=$.extend({title:"",msg:"",text:undefined,interval:300},_1f||{}); +var _23="
              "; +var win=_f(_22.title,_23,null); +win.find("div.messager-p-msg").html(_22.msg); +var bar=win.find("div.messager-p-bar"); +bar.progressbar({text:_22.text}); +win.window({closable:false,onClose:function(){ +if(this.timer){ +clearInterval(this.timer); +} +$(this).window("destroy"); +}}); +if(_22.interval){ +win[0].timer=setInterval(function(){ +var v=bar.progressbar("getValue"); +v+=10; +if(v>100){ +v=0; +} +bar.progressbar("setValue",v); +},_22.interval); +} +return win; +}}; +$.messager.defaults={ok:"Ok",cancel:"Cancel"}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.numberbox.js b/assets/js/easy-ui/plugins/jquery.numberbox.js new file mode 100755 index 0000000000..2af80a4611 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.numberbox.js @@ -0,0 +1,172 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"numberbox"); +var _4=_3.options; +$(_2).addClass("numberbox-f").textbox(_4); +$(_2).textbox("textbox").css({imeMode:"disabled"}); +$(_2).attr("numberboxName",$(_2).attr("textboxName")); +_3.numberbox=$(_2).next(); +_3.numberbox.addClass("numberbox"); +var _5=_4.parser.call(_2,_4.value); +var _6=_4.formatter.call(_2,_5); +$(_2).numberbox("initValue",_5).numberbox("setText",_6); +}; +function _7(_8,_9){ +var _a=$.data(_8,"numberbox"); +var _b=_a.options; +var _9=_b.parser.call(_8,_9); +var _c=_b.formatter.call(_8,_9); +_b.value=_9; +$(_8).textbox("setValue",_9).textbox("setText",_c); +}; +$.fn.numberbox=function(_d,_e){ +if(typeof _d=="string"){ +var _f=$.fn.numberbox.methods[_d]; +if(_f){ +return _f(this,_e); +}else{ +return this.textbox(_d,_e); +} +} +_d=_d||{}; +return this.each(function(){ +var _10=$.data(this,"numberbox"); +if(_10){ +$.extend(_10.options,_d); +}else{ +_10=$.data(this,"numberbox",{options:$.extend({},$.fn.numberbox.defaults,$.fn.numberbox.parseOptions(this),_d)}); +} +_1(this); +}); +}; +$.fn.numberbox.methods={options:function(jq){ +var _11=jq.data("textbox")?jq.textbox("options"):{}; +return $.extend($.data(jq[0],"numberbox").options,{width:_11.width,originalValue:_11.originalValue,disabled:_11.disabled,readonly:_11.readonly}); +},fix:function(jq){ +return jq.each(function(){ +$(this).numberbox("setValue",$(this).numberbox("getText")); +}); +},setValue:function(jq,_12){ +return jq.each(function(){ +_7(this,_12); +}); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("clear"); +$(this).numberbox("options").value=""; +}); +},reset:function(jq){ +return jq.each(function(){ +$(this).textbox("reset"); +$(this).numberbox("setValue",$(this).numberbox("getValue")); +}); +}}; +$.fn.numberbox.parseOptions=function(_13){ +var t=$(_13); +return $.extend({},$.fn.textbox.parseOptions(_13),$.parser.parseOptions(_13,["decimalSeparator","groupSeparator","suffix",{min:"number",max:"number",precision:"number"}]),{prefix:(t.attr("prefix")?t.attr("prefix"):undefined)}); +}; +$.fn.numberbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:{keypress:function(e){ +var _14=e.data.target; +var _15=$(_14).numberbox("options"); +return _15.filter.call(_14,e); +},blur:function(e){ +var _16=e.data.target; +$(_16).numberbox("setValue",$(_16).numberbox("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var _17=e.data.target; +$(_17).numberbox("setValue",$(_17).numberbox("getText")); +} +}},min:null,max:null,precision:0,decimalSeparator:".",groupSeparator:"",prefix:"",suffix:"",filter:function(e){ +var _18=$(this).numberbox("options"); +var s=$(this).numberbox("getText"); +if(e.which==13){ +return true; +} +if(e.which==45){ +return (s.indexOf("-")==-1?true:false); +} +var c=String.fromCharCode(e.which); +if(c==_18.decimalSeparator){ +return (s.indexOf(c)==-1?true:false); +}else{ +if(c==_18.groupSeparator){ +return true; +}else{ +if((e.which>=48&&e.which<=57&&e.ctrlKey==false&&e.shiftKey==false)||e.which==0||e.which==8){ +return true; +}else{ +if(e.ctrlKey==true&&(e.which==99||e.which==118)){ +return true; +}else{ +return false; +} +} +} +} +},formatter:function(_19){ +if(!_19){ +return _19; +} +_19=_19+""; +var _1a=$(this).numberbox("options"); +var s1=_19,s2=""; +var _1b=_19.indexOf("."); +if(_1b>=0){ +s1=_19.substring(0,_1b); +s2=_19.substring(_1b+1,_19.length); +} +if(_1a.groupSeparator){ +var p=/(\d+)(\d{3})/; +while(p.test(s1)){ +s1=s1.replace(p,"$1"+_1a.groupSeparator+"$2"); +} +} +if(s2){ +return _1a.prefix+s1+_1a.decimalSeparator+s2+_1a.suffix; +}else{ +return _1a.prefix+s1+_1a.suffix; +} +},parser:function(s){ +s=s+""; +var _1c=$(this).numberbox("options"); +if(parseFloat(s)!=s){ +if(_1c.prefix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(_1c.prefix),"g"),"")); +} +if(_1c.suffix){ +s=$.trim(s.replace(new RegExp("\\"+$.trim(_1c.suffix),"g"),"")); +} +if(_1c.groupSeparator){ +s=$.trim(s.replace(new RegExp("\\"+_1c.groupSeparator,"g"),"")); +} +if(_1c.decimalSeparator){ +s=$.trim(s.replace(new RegExp("\\"+_1c.decimalSeparator,"g"),".")); +} +s=s.replace(/\s/g,""); +} +var val=parseFloat(s).toFixed(_1c.precision); +if(isNaN(val)){ +val=""; +}else{ +if(typeof (_1c.min)=="number"&&val<_1c.min){ +val=_1c.min.toFixed(_1c.precision); +}else{ +if(typeof (_1c.max)=="number"&&val>_1c.max){ +val=_1c.max.toFixed(_1c.precision); +} +} +} +return val; +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.numberspinner.js b/assets/js/easy-ui/plugins/jquery.numberspinner.js new file mode 100755 index 0000000000..a479ca0dda --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.numberspinner.js @@ -0,0 +1,58 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("numberspinner-f"); +var _3=$.data(_2,"numberspinner").options; +$(_2).numberbox(_3).spinner(_3); +$(_2).numberbox("setValue",_3.value); +}; +function _4(_5,_6){ +var _7=$.data(_5,"numberspinner").options; +var v=parseFloat($(_5).numberbox("getValue")||_7.value)||0; +if(_6){ +v-=_7.increment; +}else{ +v+=_7.increment; +} +$(_5).numberbox("setValue",v); +}; +$.fn.numberspinner=function(_8,_9){ +if(typeof _8=="string"){ +var _a=$.fn.numberspinner.methods[_8]; +if(_a){ +return _a(this,_9); +}else{ +return this.numberbox(_8,_9); +} +} +_8=_8||{}; +return this.each(function(){ +var _b=$.data(this,"numberspinner"); +if(_b){ +$.extend(_b.options,_8); +}else{ +$.data(this,"numberspinner",{options:$.extend({},$.fn.numberspinner.defaults,$.fn.numberspinner.parseOptions(this),_8)}); +} +_1(this); +}); +}; +$.fn.numberspinner.methods={options:function(jq){ +var _c=jq.numberbox("options"); +return $.extend($.data(jq[0],"numberspinner").options,{width:_c.width,value:_c.value,originalValue:_c.originalValue,disabled:_c.disabled,readonly:_c.readonly}); +}}; +$.fn.numberspinner.parseOptions=function(_d){ +return $.extend({},$.fn.spinner.parseOptions(_d),$.fn.numberbox.parseOptions(_d),{}); +}; +$.fn.numberspinner.defaults=$.extend({},$.fn.spinner.defaults,$.fn.numberbox.defaults,{spin:function(_e){ +_4(this,_e); +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.pagination.js b/assets/js/easy-ui/plugins/jquery.pagination.js new file mode 100755 index 0000000000..d53c7099f7 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.pagination.js @@ -0,0 +1,286 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"pagination"); +var _4=_3.options; +var bb=_3.bb={}; +var _5=$(_2).addClass("pagination").html("
              "); +var tr=_5.find("tr"); +var aa=$.extend([],_4.layout); +if(!_4.showPageList){ +_6(aa,"list"); +} +if(!_4.showRefresh){ +_6(aa,"refresh"); +} +if(aa[0]=="sep"){ +aa.shift(); +} +if(aa[aa.length-1]=="sep"){ +aa.pop(); +} +for(var _7=0;_7"); +ps.bind("change",function(){ +_4.pageSize=parseInt($(this).val()); +_4.onChangePageSize.call(_2,_4.pageSize); +_10(_2,_4.pageNumber); +}); +for(var i=0;i<_4.pageList.length;i++){ +$("").text(_4.pageList[i]).appendTo(ps); +} +$("").append(ps).appendTo(tr); +}else{ +if(_8=="sep"){ +$("
              ").appendTo(tr); +}else{ +if(_8=="first"){ +bb.first=_9("first"); +}else{ +if(_8=="prev"){ +bb.prev=_9("prev"); +}else{ +if(_8=="next"){ +bb.next=_9("next"); +}else{ +if(_8=="last"){ +bb.last=_9("last"); +}else{ +if(_8=="manual"){ +$("").html(_4.beforePageText).appendTo(tr).wrap(""); +bb.num=$("").appendTo(tr).wrap(""); +bb.num.unbind(".pagination").bind("keydown.pagination",function(e){ +if(e.keyCode==13){ +var _a=parseInt($(this).val())||1; +_10(_2,_a); +return false; +} +}); +bb.after=$("").appendTo(tr).wrap(""); +}else{ +if(_8=="refresh"){ +bb.refresh=_9("refresh"); +}else{ +if(_8=="links"){ +$("").appendTo(tr); +} +} +} +} +} +} +} +} +} +} +if(_4.buttons){ +$("
              ").appendTo(tr); +if($.isArray(_4.buttons)){ +for(var i=0;i<_4.buttons.length;i++){ +var _b=_4.buttons[i]; +if(_b=="-"){ +$("
              ").appendTo(tr); +}else{ +var td=$("").appendTo(tr); +var a=$("").appendTo(td); +a[0].onclick=eval(_b.handler||function(){ +}); +a.linkbutton($.extend({},_b,{plain:true})); +} +} +}else{ +var td=$("").appendTo(tr); +$(_4.buttons).appendTo(td).show(); +} +} +$("
              ").appendTo(_5); +$("
              ").appendTo(_5); +function _9(_c){ +var _d=_4.nav[_c]; +var a=$("").appendTo(tr); +a.wrap(""); +a.linkbutton({iconCls:_d.iconCls,plain:true}).unbind(".pagination").bind("click.pagination",function(){ +_d.handler.call(_2); +}); +return a; +}; +function _6(aa,_e){ +var _f=$.inArray(_e,aa); +if(_f>=0){ +aa.splice(_f,1); +} +return aa; +}; +}; +function _10(_11,_12){ +var _13=$.data(_11,"pagination").options; +_14(_11,{pageNumber:_12}); +_13.onSelectPage.call(_11,_13.pageNumber,_13.pageSize); +}; +function _14(_15,_16){ +var _17=$.data(_15,"pagination"); +var _18=_17.options; +var bb=_17.bb; +$.extend(_18,_16||{}); +var ps=$(_15).find("select.pagination-page-list"); +if(ps.length){ +ps.val(_18.pageSize+""); +_18.pageSize=parseInt(ps.val()); +} +var _19=Math.ceil(_18.total/_18.pageSize)||1; +if(_18.pageNumber<1){ +_18.pageNumber=1; +} +if(_18.pageNumber>_19){ +_18.pageNumber=_19; +} +if(_18.total==0){ +_18.pageNumber=0; +_19=0; +} +if(bb.num){ +bb.num.val(_18.pageNumber); +} +if(bb.after){ +bb.after.html(_18.afterPageText.replace(/{pages}/,_19)); +} +var td=$(_15).find("td.pagination-links"); +if(td.length){ +td.empty(); +var _1a=_18.pageNumber-Math.floor(_18.links/2); +if(_1a<1){ +_1a=1; +} +var _1b=_1a+_18.links-1; +if(_1b>_19){ +_1b=_19; +} +_1a=_1b-_18.links+1; +if(_1a<1){ +_1a=1; +} +for(var i=_1a;i<=_1b;i++){ +var a=$("").appendTo(td); +a.linkbutton({plain:true,text:i}); +if(i==_18.pageNumber){ +a.linkbutton("select"); +}else{ +a.unbind(".pagination").bind("click.pagination",{pageNumber:i},function(e){ +_10(_15,e.data.pageNumber); +}); +} +} +} +var _1c=_18.displayMsg; +_1c=_1c.replace(/{from}/,_18.total==0?0:_18.pageSize*(_18.pageNumber-1)+1); +_1c=_1c.replace(/{to}/,Math.min(_18.pageSize*(_18.pageNumber),_18.total)); +_1c=_1c.replace(/{total}/,_18.total); +$(_15).find("div.pagination-info").html(_1c); +if(bb.first){ +bb.first.linkbutton({disabled:((!_18.total)||_18.pageNumber==1)}); +} +if(bb.prev){ +bb.prev.linkbutton({disabled:((!_18.total)||_18.pageNumber==1)}); +} +if(bb.next){ +bb.next.linkbutton({disabled:(_18.pageNumber==_19)}); +} +if(bb.last){ +bb.last.linkbutton({disabled:(_18.pageNumber==_19)}); +} +_1d(_15,_18.loading); +}; +function _1d(_1e,_1f){ +var _20=$.data(_1e,"pagination"); +var _21=_20.options; +_21.loading=_1f; +if(_21.showRefresh&&_20.bb.refresh){ +_20.bb.refresh.linkbutton({iconCls:(_21.loading?"pagination-loading":"pagination-load")}); +} +}; +$.fn.pagination=function(_22,_23){ +if(typeof _22=="string"){ +return $.fn.pagination.methods[_22](this,_23); +} +_22=_22||{}; +return this.each(function(){ +var _24; +var _25=$.data(this,"pagination"); +if(_25){ +_24=$.extend(_25.options,_22); +}else{ +_24=$.extend({},$.fn.pagination.defaults,$.fn.pagination.parseOptions(this),_22); +$.data(this,"pagination",{options:_24}); +} +_1(this); +_14(this); +}); +}; +$.fn.pagination.methods={options:function(jq){ +return $.data(jq[0],"pagination").options; +},loading:function(jq){ +return jq.each(function(){ +_1d(this,true); +}); +},loaded:function(jq){ +return jq.each(function(){ +_1d(this,false); +}); +},refresh:function(jq,_26){ +return jq.each(function(){ +_14(this,_26); +}); +},select:function(jq,_27){ +return jq.each(function(){ +_10(this,_27); +}); +}}; +$.fn.pagination.parseOptions=function(_28){ +var t=$(_28); +return $.extend({},$.parser.parseOptions(_28,[{total:"number",pageSize:"number",pageNumber:"number",links:"number"},{loading:"boolean",showPageList:"boolean",showRefresh:"boolean"}]),{pageList:(t.attr("pageList")?eval(t.attr("pageList")):undefined)}); +}; +$.fn.pagination.defaults={total:1,pageSize:10,pageNumber:1,pageList:[10,20,30,50],loading:false,buttons:null,showPageList:true,showRefresh:true,links:10,layout:["list","sep","first","prev","sep","manual","sep","next","last","sep","refresh"],onSelectPage:function(_29,_2a){ +},onBeforeRefresh:function(_2b,_2c){ +},onRefresh:function(_2d,_2e){ +},onChangePageSize:function(_2f){ +},beforePageText:"Page",afterPageText:"of {pages}",displayMsg:"Displaying {from} to {to} of {total} items",nav:{first:{iconCls:"pagination-first",handler:function(){ +var _30=$(this).pagination("options"); +if(_30.pageNumber>1){ +$(this).pagination("select",1); +} +}},prev:{iconCls:"pagination-prev",handler:function(){ +var _31=$(this).pagination("options"); +if(_31.pageNumber>1){ +$(this).pagination("select",_31.pageNumber-1); +} +}},next:{iconCls:"pagination-next",handler:function(){ +var _32=$(this).pagination("options"); +var _33=Math.ceil(_32.total/_32.pageSize); +if(_32.pageNumber<_33){ +$(this).pagination("select",_32.pageNumber+1); +} +}},last:{iconCls:"pagination-last",handler:function(){ +var _34=$(this).pagination("options"); +var _35=Math.ceil(_34.total/_34.pageSize); +if(_34.pageNumber<_35){ +$(this).pagination("select",_35); +} +}},refresh:{iconCls:"pagination-refresh",handler:function(){ +var _36=$(this).pagination("options"); +if(_36.onBeforeRefresh.call(this,_36.pageNumber,_36.pageSize)!=false){ +$(this).pagination("select",_36.pageNumber); +_36.onRefresh.call(this,_36.pageNumber,_36.pageSize); +} +}}}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.panel.js b/assets/js/easy-ui/plugins/jquery.panel.js new file mode 100755 index 0000000000..02cb7d1b9a --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.panel.js @@ -0,0 +1,602 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +$.fn._remove=function(){ +return this.each(function(){ +$(this).remove(); +try{ +this.outerHTML=""; +} +catch(err){ +} +}); +}; +function _1(_2){ +_2._remove(); +}; +function _3(_4,_5){ +var _6=$.data(_4,"panel"); +var _7=_6.options; +var _8=_6.panel; +var _9=_8.children("div.panel-header"); +var _a=_8.children("div.panel-body"); +var _b=_8.children("div.panel-footer"); +if(_5){ +$.extend(_7,{width:_5.width,height:_5.height,minWidth:_5.minWidth,maxWidth:_5.maxWidth,minHeight:_5.minHeight,maxHeight:_5.maxHeight,left:_5.left,top:_5.top}); +} +_8._size(_7); +_9.add(_a)._outerWidth(_8.width()); +if(!isNaN(parseInt(_7.height))){ +_a._outerHeight(_8.height()-_9._outerHeight()-_b._outerHeight()); +}else{ +_a.css("height",""); +var _c=$.parser.parseValue("minHeight",_7.minHeight,_8.parent()); +var _d=$.parser.parseValue("maxHeight",_7.maxHeight,_8.parent()); +var _e=_9._outerHeight()+_b._outerHeight()+_8._outerHeight()-_8.height(); +_a._size("minHeight",_c?(_c-_e):""); +_a._size("maxHeight",_d?(_d-_e):""); +} +_8.css({height:"",minHeight:"",maxHeight:"",left:_7.left,top:_7.top}); +_7.onResize.apply(_4,[_7.width,_7.height]); +$(_4).panel("doLayout"); +}; +function _f(_10,_11){ +var _12=$.data(_10,"panel").options; +var _13=$.data(_10,"panel").panel; +if(_11){ +if(_11.left!=null){ +_12.left=_11.left; +} +if(_11.top!=null){ +_12.top=_11.top; +} +} +_13.css({left:_12.left,top:_12.top}); +_12.onMove.apply(_10,[_12.left,_12.top]); +}; +function _14(_15){ +$(_15).addClass("panel-body")._size("clear"); +var _16=$("
              ").insertBefore(_15); +_16[0].appendChild(_15); +_16.bind("_resize",function(e,_17){ +if($(this).hasClass("easyui-fluid")||_17){ +_3(_15); +} +return false; +}); +return _16; +}; +function _18(_19){ +var _1a=$.data(_19,"panel"); +var _1b=_1a.options; +var _1c=_1a.panel; +_1c.css(_1b.style); +_1c.addClass(_1b.cls); +_1d(); +_1e(); +var _1f=$(_19).panel("header"); +var _20=$(_19).panel("body"); +var _21=$(_19).siblings("div.panel-footer"); +if(_1b.border){ +_1f.removeClass("panel-header-noborder"); +_20.removeClass("panel-body-noborder"); +_21.removeClass("panel-footer-noborder"); +}else{ +_1f.addClass("panel-header-noborder"); +_20.addClass("panel-body-noborder"); +_21.addClass("panel-footer-noborder"); +} +_1f.addClass(_1b.headerCls); +_20.addClass(_1b.bodyCls); +$(_19).attr("id",_1b.id||""); +if(_1b.content){ +$(_19).panel("clear"); +$(_19).html(_1b.content); +$.parser.parse($(_19)); +} +function _1d(){ +if(_1b.tools&&typeof _1b.tools=="string"){ +_1c.find(">div.panel-header>div.panel-tool .panel-tool-a").appendTo(_1b.tools); +} +_1(_1c.children("div.panel-header")); +if(_1b.title&&!_1b.noheader){ +var _22=$("
              ").prependTo(_1c); +var _23=$("
              ").html(_1b.title).appendTo(_22); +if(_1b.iconCls){ +_23.addClass("panel-with-icon"); +$("
              ").addClass(_1b.iconCls).appendTo(_22); +} +var _24=$("
              ").appendTo(_22); +_24.bind("click",function(e){ +e.stopPropagation(); +}); +if(_1b.tools){ +if($.isArray(_1b.tools)){ +for(var i=0;i<_1b.tools.length;i++){ +var t=$("").addClass(_1b.tools[i].iconCls).appendTo(_24); +if(_1b.tools[i].handler){ +t.bind("click",eval(_1b.tools[i].handler)); +} +} +}else{ +$(_1b.tools).children().each(function(){ +$(this).addClass($(this).attr("iconCls")).addClass("panel-tool-a").appendTo(_24); +}); +} +} +if(_1b.collapsible){ +$("").appendTo(_24).bind("click",function(){ +if(_1b.collapsed==true){ +_4a(_19,true); +}else{ +_38(_19,true); +} +return false; +}); +} +if(_1b.minimizable){ +$("").appendTo(_24).bind("click",function(){ +_55(_19); +return false; +}); +} +if(_1b.maximizable){ +$("").appendTo(_24).bind("click",function(){ +if(_1b.maximized==true){ +_59(_19); +}else{ +_37(_19); +} +return false; +}); +} +if(_1b.closable){ +$("").appendTo(_24).bind("click",function(){ +_39(_19); +return false; +}); +} +_1c.children("div.panel-body").removeClass("panel-body-noheader"); +}else{ +_1c.children("div.panel-body").addClass("panel-body-noheader"); +} +}; +function _1e(){ +if(_1b.footer){ +$(_1b.footer).addClass("panel-footer").appendTo(_1c); +$(_19).addClass("panel-body-nobottom"); +}else{ +_1c.children("div.panel-footer").remove(); +$(_19).removeClass("panel-body-nobottom"); +} +}; +}; +function _25(_26,_27){ +var _28=$.data(_26,"panel"); +var _29=_28.options; +if(_2a){ +_29.queryParams=_27; +} +if(!_29.href){ +return; +} +if(!_28.isLoaded||!_29.cache){ +var _2a=$.extend({},_29.queryParams); +if(_29.onBeforeLoad.call(_26,_2a)==false){ +return; +} +_28.isLoaded=false; +$(_26).panel("clear"); +if(_29.loadingMessage){ +$(_26).html($("
              ").html(_29.loadingMessage)); +} +_29.loader.call(_26,_2a,function(_2b){ +var _2c=_29.extractor.call(_26,_2b); +$(_26).html(_2c); +$.parser.parse($(_26)); +_29.onLoad.apply(_26,arguments); +_28.isLoaded=true; +},function(){ +_29.onLoadError.apply(_26,arguments); +}); +} +}; +function _2d(_2e){ +var t=$(_2e); +t.find(".combo-f").each(function(){ +$(this).combo("destroy"); +}); +t.find(".m-btn").each(function(){ +$(this).menubutton("destroy"); +}); +t.find(".s-btn").each(function(){ +$(this).splitbutton("destroy"); +}); +t.find(".tooltip-f").each(function(){ +$(this).tooltip("destroy"); +}); +t.children("div").each(function(){ +$(this)._size("unfit"); +}); +t.empty(); +}; +function _2f(_30){ +$(_30).panel("doLayout",true); +}; +function _31(_32,_33){ +var _34=$.data(_32,"panel").options; +var _35=$.data(_32,"panel").panel; +if(_33!=true){ +if(_34.onBeforeOpen.call(_32)==false){ +return; +} +} +_35.stop(true,true); +if($.isFunction(_34.openAnimation)){ +_34.openAnimation.call(_32,cb); +}else{ +switch(_34.openAnimation){ +case "slide": +_35.slideDown(_34.openDuration,cb); +break; +case "fade": +_35.fadeIn(_34.openDuration,cb); +break; +case "show": +_35.show(_34.openDuration,cb); +break; +default: +_35.show(); +cb(); +} +} +function cb(){ +_34.closed=false; +_34.minimized=false; +var _36=_35.children("div.panel-header").find("a.panel-tool-restore"); +if(_36.length){ +_34.maximized=true; +} +_34.onOpen.call(_32); +if(_34.maximized==true){ +_34.maximized=false; +_37(_32); +} +if(_34.collapsed==true){ +_34.collapsed=false; +_38(_32); +} +if(!_34.collapsed){ +_25(_32); +_2f(_32); +} +}; +}; +function _39(_3a,_3b){ +var _3c=$.data(_3a,"panel").options; +var _3d=$.data(_3a,"panel").panel; +if(_3b!=true){ +if(_3c.onBeforeClose.call(_3a)==false){ +return; +} +} +_3d.stop(true,true); +_3d._size("unfit"); +if($.isFunction(_3c.closeAnimation)){ +_3c.closeAnimation.call(_3a,cb); +}else{ +switch(_3c.closeAnimation){ +case "slide": +_3d.slideUp(_3c.closeDuration,cb); +break; +case "fade": +_3d.fadeOut(_3c.closeDuration,cb); +break; +case "hide": +_3d.hide(_3c.closeDuration,cb); +break; +default: +_3d.hide(); +cb(); +} +} +function cb(){ +_3c.closed=true; +_3c.onClose.call(_3a); +}; +}; +function _3e(_3f,_40){ +var _41=$.data(_3f,"panel"); +var _42=_41.options; +var _43=_41.panel; +if(_40!=true){ +if(_42.onBeforeDestroy.call(_3f)==false){ +return; +} +} +$(_3f).panel("clear").panel("clear","footer"); +_1(_43); +_42.onDestroy.call(_3f); +}; +function _38(_44,_45){ +var _46=$.data(_44,"panel").options; +var _47=$.data(_44,"panel").panel; +var _48=_47.children("div.panel-body"); +var _49=_47.children("div.panel-header").find("a.panel-tool-collapse"); +if(_46.collapsed==true){ +return; +} +_48.stop(true,true); +if(_46.onBeforeCollapse.call(_44)==false){ +return; +} +_49.addClass("panel-tool-expand"); +if(_45==true){ +_48.slideUp("normal",function(){ +_46.collapsed=true; +_46.onCollapse.call(_44); +}); +}else{ +_48.hide(); +_46.collapsed=true; +_46.onCollapse.call(_44); +} +}; +function _4a(_4b,_4c){ +var _4d=$.data(_4b,"panel").options; +var _4e=$.data(_4b,"panel").panel; +var _4f=_4e.children("div.panel-body"); +var _50=_4e.children("div.panel-header").find("a.panel-tool-collapse"); +if(_4d.collapsed==false){ +return; +} +_4f.stop(true,true); +if(_4d.onBeforeExpand.call(_4b)==false){ +return; +} +_50.removeClass("panel-tool-expand"); +if(_4c==true){ +_4f.slideDown("normal",function(){ +_4d.collapsed=false; +_4d.onExpand.call(_4b); +_25(_4b); +_2f(_4b); +}); +}else{ +_4f.show(); +_4d.collapsed=false; +_4d.onExpand.call(_4b); +_25(_4b); +_2f(_4b); +} +}; +function _37(_51){ +var _52=$.data(_51,"panel").options; +var _53=$.data(_51,"panel").panel; +var _54=_53.children("div.panel-header").find("a.panel-tool-max"); +if(_52.maximized==true){ +return; +} +_54.addClass("panel-tool-restore"); +if(!$.data(_51,"panel").original){ +$.data(_51,"panel").original={width:_52.width,height:_52.height,left:_52.left,top:_52.top,fit:_52.fit}; +} +_52.left=0; +_52.top=0; +_52.fit=true; +_3(_51); +_52.minimized=false; +_52.maximized=true; +_52.onMaximize.call(_51); +}; +function _55(_56){ +var _57=$.data(_56,"panel").options; +var _58=$.data(_56,"panel").panel; +_58._size("unfit"); +_58.hide(); +_57.minimized=true; +_57.maximized=false; +_57.onMinimize.call(_56); +}; +function _59(_5a){ +var _5b=$.data(_5a,"panel").options; +var _5c=$.data(_5a,"panel").panel; +var _5d=_5c.children("div.panel-header").find("a.panel-tool-max"); +if(_5b.maximized==false){ +return; +} +_5c.show(); +_5d.removeClass("panel-tool-restore"); +$.extend(_5b,$.data(_5a,"panel").original); +_3(_5a); +_5b.minimized=false; +_5b.maximized=false; +$.data(_5a,"panel").original=null; +_5b.onRestore.call(_5a); +}; +function _5e(_5f,_60){ +$.data(_5f,"panel").options.title=_60; +$(_5f).panel("header").find("div.panel-title").html(_60); +}; +var _61=null; +$(window).unbind(".panel").bind("resize.panel",function(){ +if(_61){ +clearTimeout(_61); +} +_61=setTimeout(function(){ +var _62=$("body.layout"); +if(_62.length){ +_62.layout("resize"); +$("body").children(".easyui-fluid:visible").trigger("_resize"); +}else{ +$("body").panel("doLayout"); +} +_61=null; +},100); +}); +$.fn.panel=function(_63,_64){ +if(typeof _63=="string"){ +return $.fn.panel.methods[_63](this,_64); +} +_63=_63||{}; +return this.each(function(){ +var _65=$.data(this,"panel"); +var _66; +if(_65){ +_66=$.extend(_65.options,_63); +_65.isLoaded=false; +}else{ +_66=$.extend({},$.fn.panel.defaults,$.fn.panel.parseOptions(this),_63); +$(this).attr("title",""); +_65=$.data(this,"panel",{options:_66,panel:_14(this),isLoaded:false}); +} +_18(this); +if(_66.doSize==true){ +_65.panel.css("display","block"); +_3(this); +} +if(_66.closed==true||_66.minimized==true){ +_65.panel.hide(); +}else{ +_31(this); +} +}); +}; +$.fn.panel.methods={options:function(jq){ +return $.data(jq[0],"panel").options; +},panel:function(jq){ +return $.data(jq[0],"panel").panel; +},header:function(jq){ +return $.data(jq[0],"panel").panel.find(">div.panel-header"); +},footer:function(jq){ +return jq.panel("panel").children(".panel-footer"); +},body:function(jq){ +return $.data(jq[0],"panel").panel.find(">div.panel-body"); +},setTitle:function(jq,_67){ +return jq.each(function(){ +_5e(this,_67); +}); +},open:function(jq,_68){ +return jq.each(function(){ +_31(this,_68); +}); +},close:function(jq,_69){ +return jq.each(function(){ +_39(this,_69); +}); +},destroy:function(jq,_6a){ +return jq.each(function(){ +_3e(this,_6a); +}); +},clear:function(jq,_6b){ +return jq.each(function(){ +_2d(_6b=="footer"?$(this).panel("footer"):this); +}); +},refresh:function(jq,_6c){ +return jq.each(function(){ +var _6d=$.data(this,"panel"); +_6d.isLoaded=false; +if(_6c){ +if(typeof _6c=="string"){ +_6d.options.href=_6c; +}else{ +_6d.options.queryParams=_6c; +} +} +_25(this); +}); +},resize:function(jq,_6e){ +return jq.each(function(){ +_3(this,_6e); +}); +},doLayout:function(jq,all){ +return jq.each(function(){ +_6f(this,"body"); +_6f($(this).siblings("div.panel-footer")[0],"footer"); +function _6f(_70,_71){ +if(!_70){ +return; +} +var _72=_70==$("body")[0]; +var s=$(_70).find("div.panel:visible,div.accordion:visible,div.tabs-container:visible,div.layout:visible,.easyui-fluid:visible").filter(function(_73,el){ +var p=$(el).parents("div.panel-"+_71+":first"); +return _72?p.length==0:p[0]==_70; +}); +s.trigger("_resize",[all||false]); +}; +}); +},move:function(jq,_74){ +return jq.each(function(){ +_f(this,_74); +}); +},maximize:function(jq){ +return jq.each(function(){ +_37(this); +}); +},minimize:function(jq){ +return jq.each(function(){ +_55(this); +}); +},restore:function(jq){ +return jq.each(function(){ +_59(this); +}); +},collapse:function(jq,_75){ +return jq.each(function(){ +_38(this,_75); +}); +},expand:function(jq,_76){ +return jq.each(function(){ +_4a(this,_76); +}); +}}; +$.fn.panel.parseOptions=function(_77){ +var t=$(_77); +return $.extend({},$.parser.parseOptions(_77,["id","width","height","left","top","title","iconCls","cls","headerCls","bodyCls","tools","href","method",{cache:"boolean",fit:"boolean",border:"boolean",noheader:"boolean"},{collapsible:"boolean",minimizable:"boolean",maximizable:"boolean"},{closable:"boolean",collapsed:"boolean",minimized:"boolean",maximized:"boolean",closed:"boolean"},"openAnimation","closeAnimation",{openDuration:"number",closeDuration:"number"},]),{loadingMessage:(t.attr("loadingMessage")!=undefined?t.attr("loadingMessage"):undefined)}); +}; +$.fn.panel.defaults={id:null,title:null,iconCls:null,width:"auto",height:"auto",left:null,top:null,cls:null,headerCls:null,bodyCls:null,style:{},href:null,cache:true,fit:false,border:true,doSize:true,noheader:false,content:null,collapsible:false,minimizable:false,maximizable:false,closable:false,collapsed:false,minimized:false,maximized:false,closed:false,openAnimation:false,openDuration:400,closeAnimation:false,closeDuration:400,tools:null,footer:null,queryParams:{},method:"get",href:null,loadingMessage:"Loading...",loader:function(_78,_79,_7a){ +var _7b=$(this).panel("options"); +if(!_7b.href){ +return false; +} +$.ajax({type:_7b.method,url:_7b.href,cache:false,data:_78,dataType:"html",success:function(_7c){ +_79(_7c); +},error:function(){ +_7a.apply(this,arguments); +}}); +},extractor:function(_7d){ +var _7e=/]*>((.|[\n\r])*)<\/body>/im; +var _7f=_7e.exec(_7d); +if(_7f){ +return _7f[1]; +}else{ +return _7d; +} +},onBeforeLoad:function(_80){ +},onLoad:function(){ +},onLoadError:function(){ +},onBeforeOpen:function(){ +},onOpen:function(){ +},onBeforeClose:function(){ +},onClose:function(){ +},onBeforeDestroy:function(){ +},onDestroy:function(){ +},onResize:function(_81,_82){ +},onMove:function(_83,top){ +},onMaximize:function(){ +},onRestore:function(){ +},onMinimize:function(){ +},onBeforeCollapse:function(){ +},onBeforeExpand:function(){ +},onCollapse:function(){ +},onExpand:function(){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.parser.js b/assets/js/easy-ui/plugins/jquery.parser.js new file mode 100755 index 0000000000..dac645b732 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.parser.js @@ -0,0 +1,322 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +$.parser={auto:true,onComplete:function(_1){ +},plugins:["draggable","droppable","resizable","pagination","tooltip","linkbutton","menu","menubutton","splitbutton","progressbar","tree","textbox","filebox","combo","combobox","combotree","combogrid","numberbox","validatebox","searchbox","spinner","numberspinner","timespinner","datetimespinner","calendar","datebox","datetimebox","slider","layout","panel","datagrid","propertygrid","treegrid","tabs","accordion","window","dialog","form"],parse:function(_2){ +var aa=[]; +for(var i=0;i<$.parser.plugins.length;i++){ +var _3=$.parser.plugins[i]; +var r=$(".easyui-"+_3,_2); +if(r.length){ +if(r[_3]){ +r[_3](); +}else{ +aa.push({name:_3,jq:r}); +} +} +} +if(aa.length&&window.easyloader){ +var _4=[]; +for(var i=0;i=0){ +v=Math.floor((_8.width()-_9)*v/100); +}else{ +v=Math.floor((_8.height()-_9)*v/100); +} +}else{ +v=parseInt(v)||undefined; +} +return v; +},parseOptions:function(_b,_c){ +var t=$(_b); +var _d={}; +var s=$.trim(t.attr("data-options")); +if(s){ +if(s.substring(0,1)!="{"){ +s="{"+s+"}"; +} +_d=(new Function("return "+s))(); +} +$.map(["width","height","left","top","minWidth","maxWidth","minHeight","maxHeight"],function(p){ +var pv=$.trim(_b.style[p]||""); +if(pv){ +if(pv.indexOf("%")==-1){ +pv=parseInt(pv)||undefined; +} +_d[p]=pv; +} +}); +if(_c){ +var _e={}; +for(var i=0;i<_c.length;i++){ +var pp=_c[i]; +if(typeof pp=="string"){ +_e[pp]=t.attr(pp); +}else{ +for(var _f in pp){ +var _10=pp[_f]; +if(_10=="boolean"){ +_e[_f]=t.attr(_f)?(t.attr(_f)=="true"):undefined; +}else{ +if(_10=="number"){ +_e[_f]=t.attr(_f)=="0"?0:parseFloat(t.attr(_f))||undefined; +} +} +} +} +} +$.extend(_d,_e); +} +return _d; +}}; +$(function(){ +var d=$("
              ").appendTo("body"); +$._boxModel=d.outerWidth()!=100; +d.remove(); +if(!window.easyloader&&$.parser.auto){ +$.parser.parse(); +} +}); +$.fn._outerWidth=function(_11){ +if(_11==undefined){ +if(this[0]==window){ +return this.width()||document.body.clientWidth; +} +return this.outerWidth()||0; +} +return this._size("width",_11); +}; +$.fn._outerHeight=function(_12){ +if(_12==undefined){ +if(this[0]==window){ +return this.height()||document.body.clientHeight; +} +return this.outerHeight()||0; +} +return this._size("height",_12); +}; +$.fn._scrollLeft=function(_13){ +if(_13==undefined){ +return this.scrollLeft(); +}else{ +return this.each(function(){ +$(this).scrollLeft(_13); +}); +} +}; +$.fn._propAttr=$.fn.prop||$.fn.attr; +$.fn._size=function(_14,_15){ +if(typeof _14=="string"){ +if(_14=="clear"){ +return this.each(function(){ +$(this).css({width:"",minWidth:"",maxWidth:"",height:"",minHeight:"",maxHeight:""}); +}); +}else{ +if(_14=="fit"){ +return this.each(function(){ +_16(this,this.tagName=="BODY"?$("body"):$(this).parent(),true); +}); +}else{ +if(_14=="unfit"){ +return this.each(function(){ +_16(this,$(this).parent(),false); +}); +}else{ +if(_15==undefined){ +return _17(this[0],_14); +}else{ +return this.each(function(){ +_17(this,_14,_15); +}); +} +} +} +} +}else{ +return this.each(function(){ +_15=_15||$(this).parent(); +$.extend(_14,_16(this,_15,_14.fit)||{}); +var r1=_18(this,"width",_15,_14); +var r2=_18(this,"height",_15,_14); +if(r1||r2){ +$(this).addClass("easyui-fluid"); +}else{ +$(this).removeClass("easyui-fluid"); +} +}); +} +function _16(_19,_1a,fit){ +if(!_1a.length){ +return false; +} +var t=$(_19)[0]; +var p=_1a[0]; +var _1b=p.fcount||0; +if(fit){ +if(!t.fitted){ +t.fitted=true; +p.fcount=_1b+1; +$(p).addClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").addClass("panel-fit"); +} +} +return {width:($(p).width()||1),height:($(p).height()||1)}; +}else{ +if(t.fitted){ +t.fitted=false; +p.fcount=_1b-1; +if(p.fcount==0){ +$(p).removeClass("panel-noscroll"); +if(p.tagName=="BODY"){ +$("html").removeClass("panel-fit"); +} +} +} +return false; +} +}; +function _18(_1c,_1d,_1e,_1f){ +var t=$(_1c); +var p=_1d; +var p1=p.substr(0,1).toUpperCase()+p.substr(1); +var min=$.parser.parseValue("min"+p1,_1f["min"+p1],_1e); +var max=$.parser.parseValue("max"+p1,_1f["max"+p1],_1e); +var val=$.parser.parseValue(p,_1f[p],_1e); +var _20=(String(_1f[p]||"").indexOf("%")>=0?true:false); +if(!isNaN(val)){ +var v=Math.min(Math.max(val,min||0),max||99999); +if(!_20){ +_1f[p]=v; +} +t._size("min"+p1,""); +t._size("max"+p1,""); +t._size(p,v); +}else{ +t._size(p,""); +t._size("min"+p1,min); +t._size("max"+p1,max); +} +return _20||_1f.fit; +}; +function _17(_21,_22,_23){ +var t=$(_21); +if(_23==undefined){ +_23=parseInt(_21.style[_22]); +if(isNaN(_23)){ +return undefined; +} +if($._boxModel){ +_23+=_24(); +} +return _23; +}else{ +if(_23===""){ +t.css(_22,""); +}else{ +if($._boxModel){ +_23-=_24(); +if(_23<0){ +_23=0; +} +} +t.css(_22,_23+"px"); +} +} +function _24(){ +if(_22.toLowerCase().indexOf("width")>=0){ +return t.outerWidth()-t.width(); +}else{ +return t.outerHeight()-t.height(); +} +}; +}; +}; +})(jQuery); +(function($){ +var _25=null; +var _26=null; +var _27=false; +function _28(e){ +if(e.touches.length!=1){ +return; +} +if(!_27){ +_27=true; +dblClickTimer=setTimeout(function(){ +_27=false; +},500); +}else{ +clearTimeout(dblClickTimer); +_27=false; +_29(e,"dblclick"); +} +_25=setTimeout(function(){ +_29(e,"contextmenu",3); +},1000); +_29(e,"mousedown"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2a(e){ +if(e.touches.length!=1){ +return; +} +if(_25){ +clearTimeout(_25); +} +_29(e,"mousemove"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _2b(e){ +if(_25){ +clearTimeout(_25); +} +_29(e,"mouseup"); +if($.fn.draggable.isDragging||$.fn.resizable.isResizing){ +e.preventDefault(); +} +}; +function _29(e,_2c,_2d){ +var _2e=new $.Event(_2c); +_2e.pageX=e.changedTouches[0].pageX; +_2e.pageY=e.changedTouches[0].pageY; +_2e.which=_2d||1; +$(e.target).trigger(_2e); +}; +if(document.addEventListener){ +document.addEventListener("touchstart",_28,true); +document.addEventListener("touchmove",_2a,true); +document.addEventListener("touchend",_2b,true); +} +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.progressbar.js b/assets/js/easy-ui/plugins/jquery.progressbar.js new file mode 100755 index 0000000000..d5ce65b5eb --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.progressbar.js @@ -0,0 +1,84 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("progressbar"); +$(_2).html("
              "); +$(_2).bind("_resize",function(e,_3){ +if($(this).hasClass("easyui-fluid")||_3){ +_4(_2); +} +return false; +}); +return $(_2); +}; +function _4(_5,_6){ +var _7=$.data(_5,"progressbar").options; +var _8=$.data(_5,"progressbar").bar; +if(_6){ +_7.width=_6; +} +_8._size(_7); +_8.find("div.progressbar-text").css("width",_8.width()); +_8.find("div.progressbar-text,div.progressbar-value").css({height:_8.height()+"px",lineHeight:_8.height()+"px"}); +}; +$.fn.progressbar=function(_9,_a){ +if(typeof _9=="string"){ +var _b=$.fn.progressbar.methods[_9]; +if(_b){ +return _b(this,_a); +} +} +_9=_9||{}; +return this.each(function(){ +var _c=$.data(this,"progressbar"); +if(_c){ +$.extend(_c.options,_9); +}else{ +_c=$.data(this,"progressbar",{options:$.extend({},$.fn.progressbar.defaults,$.fn.progressbar.parseOptions(this),_9),bar:_1(this)}); +} +$(this).progressbar("setValue",_c.options.value); +_4(this); +}); +}; +$.fn.progressbar.methods={options:function(jq){ +return $.data(jq[0],"progressbar").options; +},resize:function(jq,_d){ +return jq.each(function(){ +_4(this,_d); +}); +},getValue:function(jq){ +return $.data(jq[0],"progressbar").options.value; +},setValue:function(jq,_e){ +if(_e<0){ +_e=0; +} +if(_e>100){ +_e=100; +} +return jq.each(function(){ +var _f=$.data(this,"progressbar").options; +var _10=_f.text.replace(/{value}/,_e); +var _11=_f.value; +_f.value=_e; +$(this).find("div.progressbar-value").width(_e+"%"); +$(this).find("div.progressbar-text").html(_10); +if(_11!=_e){ +_f.onChange.call(this,_e,_11); +} +}); +}}; +$.fn.progressbar.parseOptions=function(_12){ +return $.extend({},$.parser.parseOptions(_12,["width","height","text",{value:"number"}])); +}; +$.fn.progressbar.defaults={width:"auto",height:22,value:0,text:"{value}%",onChange:function(_13,_14){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.propertygrid.js b/assets/js/easy-ui/plugins/jquery.propertygrid.js new file mode 100755 index 0000000000..36b85ed023 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.propertygrid.js @@ -0,0 +1,327 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +var _1; +$(document).unbind(".propertygrid").bind("mousedown.propertygrid",function(e){ +var p=$(e.target).closest("div.datagrid-view,div.combo-panel"); +if(p.length){ +return; +} +_2(_1); +_1=undefined; +}); +function _3(_4){ +var _5=$.data(_4,"propertygrid"); +var _6=$.data(_4,"propertygrid").options; +$(_4).datagrid($.extend({},_6,{cls:"propertygrid",view:(_6.showGroup?_6.groupView:_6.view),onBeforeEdit:function(_7,_8){ +if(_6.onBeforeEdit.call(_4,_7,_8)==false){ +return false; +} +var dg=$(this); +var _8=dg.datagrid("getRows")[_7]; +var _9=dg.datagrid("getColumnOption","value"); +_9.editor=_8.editor; +},onClickCell:function(_a,_b,_c){ +if(_1!=this){ +_2(_1); +_1=this; +} +if(_6.editIndex!=_a){ +_2(_1); +$(this).datagrid("beginEdit",_a); +var ed=$(this).datagrid("getEditor",{index:_a,field:_b}); +if(!ed){ +ed=$(this).datagrid("getEditor",{index:_a,field:"value"}); +} +if(ed){ +var t=$(ed.target); +var _d=t.data("textbox")?t.textbox("textbox"):t; +_d.focus(); +_6.editIndex=_a; +} +} +_6.onClickCell.call(_4,_a,_b,_c); +},loadFilter:function(_e){ +_2(this); +return _6.loadFilter.call(this,_e); +}})); +}; +function _2(_f){ +var t=$(_f); +if(!t.length){ +return; +} +var _10=$.data(_f,"propertygrid").options; +_10.finder.getTr(_f,null,"editing").each(function(){ +var _11=parseInt($(this).attr("datagrid-row-index")); +if(t.datagrid("validateRow",_11)){ +t.datagrid("endEdit",_11); +}else{ +t.datagrid("cancelEdit",_11); +} +}); +}; +$.fn.propertygrid=function(_12,_13){ +if(typeof _12=="string"){ +var _14=$.fn.propertygrid.methods[_12]; +if(_14){ +return _14(this,_13); +}else{ +return this.datagrid(_12,_13); +} +} +_12=_12||{}; +return this.each(function(){ +var _15=$.data(this,"propertygrid"); +if(_15){ +$.extend(_15.options,_12); +}else{ +var _16=$.extend({},$.fn.propertygrid.defaults,$.fn.propertygrid.parseOptions(this),_12); +_16.frozenColumns=$.extend(true,[],_16.frozenColumns); +_16.columns=$.extend(true,[],_16.columns); +$.data(this,"propertygrid",{options:_16}); +} +_3(this); +}); +}; +$.fn.propertygrid.methods={options:function(jq){ +return $.data(jq[0],"propertygrid").options; +}}; +$.fn.propertygrid.parseOptions=function(_17){ +return $.extend({},$.fn.datagrid.parseOptions(_17),$.parser.parseOptions(_17,[{showGroup:"boolean"}])); +}; +var _18=$.extend({},$.fn.datagrid.defaults.view,{render:function(_19,_1a,_1b){ +var _1c=[]; +var _1d=this.groups; +for(var i=0;i<_1d.length;i++){ +_1c.push(this.renderGroup.call(this,_19,i,_1d[i],_1b)); +} +$(_1a).html(_1c.join("")); +},renderGroup:function(_1e,_1f,_20,_21){ +var _22=$.data(_1e,"datagrid"); +var _23=_22.options; +var _24=$(_1e).datagrid("getColumnFields",_21); +var _25=[]; +_25.push("
              "); +_25.push(""); +_25.push(""); +if((_21&&(_23.rownumbers||_23.frozenColumns.length))||(!_21&&!(_23.rownumbers||_23.frozenColumns.length))){ +_25.push(""); +} +_25.push(""); +_25.push(""); +_25.push("
               "); +if(!_21){ +_25.push(""); +_25.push(_23.groupFormatter.call(_1e,_20.value,_20.rows)); +_25.push(""); +} +_25.push("
              "); +_25.push("
              "); +_25.push(""); +var _26=_20.startIndex; +for(var j=0;j<_20.rows.length;j++){ +var css=_23.rowStyler?_23.rowStyler.call(_1e,_26,_20.rows[j]):""; +var _27=""; +var _28=""; +if(typeof css=="string"){ +_28=css; +}else{ +if(css){ +_27=css["class"]||""; +_28=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_26%2&&_23.striped?"datagrid-row-alt ":" ")+_27+"\""; +var _29=_28?"style=\""+_28+"\"":""; +var _2a=_22.rowIdPrefix+"-"+(_21?1:2)+"-"+_26; +_25.push(""); +_25.push(this.renderRow.call(this,_1e,_24,_21,_26,_20.rows[j])); +_25.push(""); +_26++; +} +_25.push("
              "); +return _25.join(""); +},bindEvents:function(_2b){ +var _2c=$.data(_2b,"datagrid"); +var dc=_2c.dc; +var _2d=dc.body1.add(dc.body2); +var _2e=($.data(_2d[0],"events")||$._data(_2d[0],"events")).click[0].handler; +_2d.unbind("click").bind("click",function(e){ +var tt=$(e.target); +var _2f=tt.closest("span.datagrid-row-expander"); +if(_2f.length){ +var _30=_2f.closest("div.datagrid-group").attr("group-index"); +if(_2f.hasClass("datagrid-row-collapse")){ +$(_2b).datagrid("collapseGroup",_30); +}else{ +$(_2b).datagrid("expandGroup",_30); +} +}else{ +_2e(e); +} +e.stopPropagation(); +}); +},onBeforeRender:function(_31,_32){ +var _33=$.data(_31,"datagrid"); +var _34=_33.options; +_35(); +var _36=[]; +for(var i=0;i<_32.length;i++){ +var row=_32[i]; +var _37=_38(row[_34.groupField]); +if(!_37){ +_37={value:row[_34.groupField],rows:[row]}; +_36.push(_37); +}else{ +_37.rows.push(row); +} +} +var _39=0; +var _3a=[]; +for(var i=0;i<_36.length;i++){ +var _37=_36[i]; +_37.startIndex=_39; +_39+=_37.rows.length; +_3a=_3a.concat(_37.rows); +} +_33.data.rows=_3a; +this.groups=_36; +var _3b=this; +setTimeout(function(){ +_3b.bindEvents(_31); +},0); +function _38(_3c){ +for(var i=0;i<_36.length;i++){ +var _3d=_36[i]; +if(_3d.value==_3c){ +return _3d; +} +} +return null; +}; +function _35(){ +if(!$("#datagrid-group-style").length){ +$("head").append(""); +} +}; +}}); +$.extend($.fn.datagrid.methods,{expandGroup:function(jq,_3e){ +return jq.each(function(){ +var _3f=$.data(this,"datagrid").dc.view; +var _40=_3f.find(_3e!=undefined?"div.datagrid-group[group-index=\""+_3e+"\"]":"div.datagrid-group"); +var _41=_40.find("span.datagrid-row-expander"); +if(_41.hasClass("datagrid-row-expand")){ +_41.removeClass("datagrid-row-expand").addClass("datagrid-row-collapse"); +_40.next("table").show(); +} +$(this).datagrid("fixRowHeight"); +}); +},collapseGroup:function(jq,_42){ +return jq.each(function(){ +var _43=$.data(this,"datagrid").dc.view; +var _44=_43.find(_42!=undefined?"div.datagrid-group[group-index=\""+_42+"\"]":"div.datagrid-group"); +var _45=_44.find("span.datagrid-row-expander"); +if(_45.hasClass("datagrid-row-collapse")){ +_45.removeClass("datagrid-row-collapse").addClass("datagrid-row-expand"); +_44.next("table").hide(); +} +$(this).datagrid("fixRowHeight"); +}); +}}); +$.extend(_18,{refreshGroupTitle:function(_46,_47){ +var _48=$.data(_46,"datagrid"); +var _49=_48.options; +var dc=_48.dc; +var _4a=this.groups[_47]; +var _4b=dc.body2.children("div.datagrid-group[group-index="+_47+"]").find("span.datagrid-group-title"); +_4b.html(_49.groupFormatter.call(_46,_4a.value,_4a.rows)); +},insertRow:function(_4c,_4d,row){ +var _4e=$.data(_4c,"datagrid"); +var _4f=_4e.options; +var dc=_4e.dc; +var _50=null; +var _51; +for(var i=0;i_50.startIndex+_50.rows.length){ +_4d=_50.startIndex+_50.rows.length; +} +} +$.fn.datagrid.defaults.view.insertRow.call(this,_4c,_4d,row); +if(_4d>=_50.startIndex+_50.rows.length){ +_52(_4d,true); +_52(_4d,false); +} +_50.rows.splice(_4d-_50.startIndex,0,row); +}else{ +_50={value:row[_4f.groupField],rows:[row],startIndex:_4e.data.rows.length}; +_51=this.groups.length; +dc.body1.append(this.renderGroup.call(this,_4c,_51,_50,true)); +dc.body2.append(this.renderGroup.call(this,_4c,_51,_50,false)); +this.groups.push(_50); +_4e.data.rows.push(row); +} +this.refreshGroupTitle(_4c,_51); +function _52(_53,_54){ +var _55=_54?1:2; +var _56=_4f.finder.getTr(_4c,_53-1,"body",_55); +var tr=_4f.finder.getTr(_4c,_53,"body",_55); +tr.insertAfter(_56); +}; +},updateRow:function(_57,_58,row){ +var _59=$.data(_57,"datagrid").options; +$.fn.datagrid.defaults.view.updateRow.call(this,_57,_58,row); +var tb=_59.finder.getTr(_57,_58,"body",2).closest("table.datagrid-btable"); +var _5a=parseInt(tb.prev().attr("group-index")); +this.refreshGroupTitle(_57,_5a); +},deleteRow:function(_5b,_5c){ +var _5d=$.data(_5b,"datagrid"); +var _5e=_5d.options; +var dc=_5d.dc; +var _5f=dc.body1.add(dc.body2); +var tb=_5e.finder.getTr(_5b,_5c,"body",2).closest("table.datagrid-btable"); +var _60=parseInt(tb.prev().attr("group-index")); +$.fn.datagrid.defaults.view.deleteRow.call(this,_5b,_5c); +var _61=this.groups[_60]; +if(_61.rows.length>1){ +_61.rows.splice(_5c-_61.startIndex,1); +this.refreshGroupTitle(_5b,_60); +}else{ +_5f.children("div.datagrid-group[group-index="+_60+"]").remove(); +for(var i=_60+1;i_13.top&&e.pageY<_13.top+_16){ +dir+="n"; +}else{ +if(e.pageY<_13.top+_15&&e.pageY>_13.top+_15-_16){ +dir+="s"; +} +} +if(e.pageX>_13.left&&e.pageX<_13.left+_16){ +dir+="w"; +}else{ +if(e.pageX<_13.left+_14&&e.pageX>_13.left+_14-_16){ +dir+="e"; +} +} +var _17=_d.handles.split(","); +for(var i=0;i<_17.length;i++){ +var _18=_17[i].replace(/(^\s*)|(\s*$)/g,""); +if(_18=="all"||_18==dir){ +return dir; +} +} +return ""; +}; +}); +}; +$.fn.resizable.methods={options:function(jq){ +return $.data(jq[0],"resizable").options; +},enable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:false}); +}); +},disable:function(jq){ +return jq.each(function(){ +$(this).resizable({disabled:true}); +}); +}}; +$.fn.resizable.parseOptions=function(_19){ +var t=$(_19); +return $.extend({},$.parser.parseOptions(_19,["handles",{minWidth:"number",minHeight:"number",maxWidth:"number",maxHeight:"number",edge:"number"}]),{disabled:(t.attr("disabled")?true:undefined)}); +}; +$.fn.resizable.defaults={disabled:false,handles:"n, e, s, w, ne, se, sw, nw, all",minWidth:10,minHeight:10,maxWidth:10000,maxHeight:10000,edge:5,onStartResize:function(e){ +},onResize:function(e){ +},onStopResize:function(e){ +}}; +$.fn.resizable.isResizing=false; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.searchbox.js b/assets/js/easy-ui/plugins/jquery.searchbox.js new file mode 100755 index 0000000000..a2a1c6dc44 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.searchbox.js @@ -0,0 +1,132 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"searchbox"); +var _4=_3.options; +var _5=$.extend(true,[],_4.icons); +_5.push({iconCls:"searchbox-button",handler:function(e){ +var t=$(e.data.target); +var _6=t.searchbox("options"); +_6.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +}}); +_7(); +var _8=_9(); +$(_2).addClass("searchbox-f").textbox($.extend({},_4,{icons:_5,buttonText:(_8?_8.text:"")})); +$(_2).attr("searchboxName",$(_2).attr("textboxName")); +_3.searchbox=$(_2).next(); +_3.searchbox.addClass("searchbox"); +_a(_8); +function _7(){ +if(_4.menu){ +_3.menu=$(_4.menu).menu(); +var _b=_3.menu.menu("options"); +var _c=_b.onClick; +_b.onClick=function(_d){ +_a(_d); +_c.call(this,_d); +}; +}else{ +if(_3.menu){ +_3.menu.menu("destroy"); +} +_3.menu=null; +} +}; +function _9(){ +if(_3.menu){ +var _e=_3.menu.children("div.menu-item:first"); +_3.menu.children("div.menu-item").each(function(){ +var _f=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +if(_f.selected){ +_e=$(this); +return false; +} +}); +return _3.menu.menu("getItem",_e[0]); +}else{ +return null; +} +}; +function _a(_10){ +if(!_10){ +return; +} +$(_2).textbox("button").menubutton({text:_10.text,iconCls:(_10.iconCls||null),menu:_3.menu,menuAlign:_4.buttonAlign,plain:false}); +_3.searchbox.find("input.textbox-value").attr("name",_10.name||_10.text); +$(_2).searchbox("resize"); +}; +}; +$.fn.searchbox=function(_11,_12){ +if(typeof _11=="string"){ +var _13=$.fn.searchbox.methods[_11]; +if(_13){ +return _13(this,_12); +}else{ +return this.textbox(_11,_12); +} +} +_11=_11||{}; +return this.each(function(){ +var _14=$.data(this,"searchbox"); +if(_14){ +$.extend(_14.options,_11); +}else{ +$.data(this,"searchbox",{options:$.extend({},$.fn.searchbox.defaults,$.fn.searchbox.parseOptions(this),_11)}); +} +_1(this); +}); +}; +$.fn.searchbox.methods={options:function(jq){ +var _15=jq.textbox("options"); +return $.extend($.data(jq[0],"searchbox").options,{width:_15.width,value:_15.value,originalValue:_15.originalValue,disabled:_15.disabled,readonly:_15.readonly}); +},menu:function(jq){ +return $.data(jq[0],"searchbox").menu; +},getName:function(jq){ +return $.data(jq[0],"searchbox").searchbox.find("input.textbox-value").attr("name"); +},selectName:function(jq,_16){ +return jq.each(function(){ +var _17=$.data(this,"searchbox").menu; +if(_17){ +_17.children("div.menu-item").each(function(){ +var _18=_17.menu("getItem",this); +if(_18.name==_16){ +$(this).triggerHandler("click"); +return false; +} +}); +} +}); +},destroy:function(jq){ +return jq.each(function(){ +var _19=$(this).searchbox("menu"); +if(_19){ +_19.menu("destroy"); +} +$(this).textbox("destroy"); +}); +}}; +$.fn.searchbox.parseOptions=function(_1a){ +var t=$(_1a); +return $.extend({},$.fn.textbox.parseOptions(_1a),$.parser.parseOptions(_1a,["menu"]),{searcher:(t.attr("searcher")?eval(t.attr("searcher")):undefined)}); +}; +$.fn.searchbox.defaults=$.extend({},$.fn.textbox.defaults,{inputEvents:$.extend({},$.fn.textbox.defaults.inputEvents,{keydown:function(e){ +if(e.keyCode==13){ +e.preventDefault(); +var t=$(e.data.target); +var _1b=t.searchbox("options"); +t.searchbox("setValue",$(this).val()); +_1b.searcher.call(e.data.target,t.searchbox("getValue"),t.searchbox("getName")); +return false; +} +}}),buttonAlign:"left",menu:null,searcher:function(_1c,_1d){ +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.slider.js b/assets/js/easy-ui/plugins/jquery.slider.js new file mode 100755 index 0000000000..aeb65abf0d --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.slider.js @@ -0,0 +1,277 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$("
              "+"
              "+""+""+"
              "+"
              "+"
              "+"
              "+""+"
              ").insertAfter(_2); +var t=$(_2); +t.addClass("slider-f").hide(); +var _4=t.attr("name"); +if(_4){ +_3.find("input.slider-value").attr("name",_4); +t.removeAttr("name").attr("sliderName",_4); +} +_3.bind("_resize",function(e,_5){ +if($(this).hasClass("easyui-fluid")||_5){ +_6(_2); +} +return false; +}); +return _3; +}; +function _6(_7,_8){ +var _9=$.data(_7,"slider"); +var _a=_9.options; +var _b=_9.slider; +if(_8){ +if(_8.width){ +_a.width=_8.width; +} +if(_8.height){ +_a.height=_8.height; +} +} +_b._size(_a); +if(_a.mode=="h"){ +_b.css("height",""); +_b.children("div").css("height",""); +}else{ +_b.css("width",""); +_b.children("div").css("width",""); +_b.children("div.slider-rule,div.slider-rulelabel,div.slider-inner")._outerHeight(_b._outerHeight()); +} +_c(_7); +}; +function _d(_e){ +var _f=$.data(_e,"slider"); +var _10=_f.options; +var _11=_f.slider; +var aa=_10.mode=="h"?_10.rule:_10.rule.slice(0).reverse(); +if(_10.reversed){ +aa=aa.slice(0).reverse(); +} +_12(aa); +function _12(aa){ +var _13=_11.find("div.slider-rule"); +var _14=_11.find("div.slider-rulelabel"); +_13.empty(); +_14.empty(); +for(var i=0;i").appendTo(_13); +_16.css((_10.mode=="h"?"left":"top"),_15); +if(aa[i]!="|"){ +_16=$("").appendTo(_14); +_16.html(aa[i]); +if(_10.mode=="h"){ +_16.css({left:_15,marginLeft:-Math.round(_16.outerWidth()/2)}); +}else{ +_16.css({top:_15,marginTop:-Math.round(_16.outerHeight()/2)}); +} +} +} +}; +}; +function _17(_18){ +var _19=$.data(_18,"slider"); +var _1a=_19.options; +var _1b=_19.slider; +_1b.removeClass("slider-h slider-v slider-disabled"); +_1b.addClass(_1a.mode=="h"?"slider-h":"slider-v"); +_1b.addClass(_1a.disabled?"slider-disabled":""); +_1b.find("a.slider-handle").draggable({axis:_1a.mode,cursor:"pointer",disabled:_1a.disabled,onDrag:function(e){ +var _1c=e.data.left; +var _1d=_1b.width(); +if(_1a.mode!="h"){ +_1c=e.data.top; +_1d=_1b.height(); +} +if(_1c<0||_1c>_1d){ +return false; +}else{ +var _1e=_34(_18,_1c); +_1f(_1e); +return false; +} +},onBeforeDrag:function(){ +_19.isDragging=true; +},onStartDrag:function(){ +_1a.onSlideStart.call(_18,_1a.value); +},onStopDrag:function(e){ +var _20=_34(_18,(_1a.mode=="h"?e.data.left:e.data.top)); +_1f(_20); +_1a.onSlideEnd.call(_18,_1a.value); +_1a.onComplete.call(_18,_1a.value); +_19.isDragging=false; +}}); +_1b.find("div.slider-inner").unbind(".slider").bind("mousedown.slider",function(e){ +if(_19.isDragging||_1a.disabled){ +return; +} +var pos=$(this).offset(); +var _21=_34(_18,(_1a.mode=="h"?(e.pageX-pos.left):(e.pageY-pos.top))); +_1f(_21); +_1a.onComplete.call(_18,_1a.value); +}); +function _1f(_22){ +var s=Math.abs(_22%_1a.step); +if(s<_1a.step/2){ +_22-=s; +}else{ +_22=_22-s+_1a.step; +} +_23(_18,_22); +}; +}; +function _23(_24,_25){ +var _26=$.data(_24,"slider"); +var _27=_26.options; +var _28=_26.slider; +var _29=_27.value; +if(_25<_27.min){ +_25=_27.min; +} +if(_25>_27.max){ +_25=_27.max; +} +_27.value=_25; +$(_24).val(_25); +_28.find("input.slider-value").val(_25); +var pos=_2a(_24,_25); +var tip=_28.find(".slider-tip"); +if(_27.showTip){ +tip.show(); +tip.html(_27.tipFormatter.call(_24,_27.value)); +}else{ +tip.hide(); +} +if(_27.mode=="h"){ +var _2b="left:"+pos+"px;"; +_28.find(".slider-handle").attr("style",_2b); +tip.attr("style",_2b+"margin-left:"+(-Math.round(tip.outerWidth()/2))+"px"); +}else{ +var _2b="top:"+pos+"px;"; +_28.find(".slider-handle").attr("style",_2b); +tip.attr("style",_2b+"margin-left:"+(-Math.round(tip.outerWidth()))+"px"); +} +if(_29!=_25){ +_27.onChange.call(_24,_25,_29); +} +}; +function _c(_2c){ +var _2d=$.data(_2c,"slider").options; +var fn=_2d.onChange; +_2d.onChange=function(){ +}; +_23(_2c,_2d.value); +_2d.onChange=fn; +}; +function _2a(_2e,_2f){ +var _30=$.data(_2e,"slider"); +var _31=_30.options; +var _32=_30.slider; +var _33=_31.mode=="h"?_32.width():_32.height(); +var pos=_31.converter.toPosition.call(_2e,_2f,_33); +if(_31.mode=="v"){ +pos=_32.height()-pos; +} +if(_31.reversed){ +pos=_33-pos; +} +return pos.toFixed(0); +}; +function _34(_35,pos){ +var _36=$.data(_35,"slider"); +var _37=_36.options; +var _38=_36.slider; +var _39=_37.mode=="h"?_38.width():_38.height(); +var _3a=_37.converter.toValue.call(_35,_37.mode=="h"?(_37.reversed?(_39-pos):pos):(_39-pos),_39); +return _3a.toFixed(0); +}; +$.fn.slider=function(_3b,_3c){ +if(typeof _3b=="string"){ +return $.fn.slider.methods[_3b](this,_3c); +} +_3b=_3b||{}; +return this.each(function(){ +var _3d=$.data(this,"slider"); +if(_3d){ +$.extend(_3d.options,_3b); +}else{ +_3d=$.data(this,"slider",{options:$.extend({},$.fn.slider.defaults,$.fn.slider.parseOptions(this),_3b),slider:_1(this)}); +$(this).removeAttr("disabled"); +} +var _3e=_3d.options; +_3e.min=parseFloat(_3e.min); +_3e.max=parseFloat(_3e.max); +_3e.value=parseFloat(_3e.value); +_3e.step=parseFloat(_3e.step); +_3e.originalValue=_3e.value; +_17(this); +_d(this); +_6(this); +}); +}; +$.fn.slider.methods={options:function(jq){ +return $.data(jq[0],"slider").options; +},destroy:function(jq){ +return jq.each(function(){ +$.data(this,"slider").slider.remove(); +$(this).remove(); +}); +},resize:function(jq,_3f){ +return jq.each(function(){ +_6(this,_3f); +}); +},getValue:function(jq){ +return jq.slider("options").value; +},setValue:function(jq,_40){ +return jq.each(function(){ +_23(this,_40); +}); +},clear:function(jq){ +return jq.each(function(){ +var _41=$(this).slider("options"); +_23(this,_41.min); +}); +},reset:function(jq){ +return jq.each(function(){ +var _42=$(this).slider("options"); +_23(this,_42.originalValue); +}); +},enable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=false; +_17(this); +}); +},disable:function(jq){ +return jq.each(function(){ +$.data(this,"slider").options.disabled=true; +_17(this); +}); +}}; +$.fn.slider.parseOptions=function(_43){ +var t=$(_43); +return $.extend({},$.parser.parseOptions(_43,["width","height","mode",{reversed:"boolean",showTip:"boolean",min:"number",max:"number",step:"number"}]),{value:(t.val()||undefined),disabled:(t.attr("disabled")?true:undefined),rule:(t.attr("rule")?eval(t.attr("rule")):undefined)}); +}; +$.fn.slider.defaults={width:"auto",height:"auto",mode:"h",reversed:false,showTip:false,disabled:false,value:0,min:0,max:100,step:1,rule:[],tipFormatter:function(_44){ +return _44; +},converter:{toPosition:function(_45,_46){ +var _47=$(this).slider("options"); +return (_45-_47.min)/(_47.max-_47.min)*_46; +},toValue:function(pos,_48){ +var _49=$(this).slider("options"); +return _49.min+(_49.max-_49.min)*(pos/_48); +}},onChange:function(_4a,_4b){ +},onSlideStart:function(_4c){ +},onSlideEnd:function(_4d){ +},onComplete:function(_4e){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.spinner.js b/assets/js/easy-ui/plugins/jquery.spinner.js new file mode 100755 index 0000000000..88f2cb7797 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.spinner.js @@ -0,0 +1,74 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"spinner"); +var _4=_3.options; +var _5=$.extend(true,[],_4.icons); +_5.push({iconCls:"spinner-arrow",handler:function(e){ +_6(e); +}}); +$(_2).addClass("spinner-f").textbox($.extend({},_4,{icons:_5})); +var _7=$(_2).textbox("getIcon",_5.length-1); +_7.append(""); +_7.append(""); +$(_2).attr("spinnerName",$(_2).attr("textboxName")); +_3.spinner=$(_2).next(); +_3.spinner.addClass("spinner"); +}; +function _6(e){ +var _8=e.data.target; +var _9=$(_8).spinner("options"); +var up=$(e.target).closest("a.spinner-arrow-up"); +if(up.length){ +_9.spin.call(_8,false); +_9.onSpinUp.call(_8); +$(_8).spinner("validate"); +} +var _a=$(e.target).closest("a.spinner-arrow-down"); +if(_a.length){ +_9.spin.call(_8,true); +_9.onSpinDown.call(_8); +$(_8).spinner("validate"); +} +}; +$.fn.spinner=function(_b,_c){ +if(typeof _b=="string"){ +var _d=$.fn.spinner.methods[_b]; +if(_d){ +return _d(this,_c); +}else{ +return this.textbox(_b,_c); +} +} +_b=_b||{}; +return this.each(function(){ +var _e=$.data(this,"spinner"); +if(_e){ +$.extend(_e.options,_b); +}else{ +_e=$.data(this,"spinner",{options:$.extend({},$.fn.spinner.defaults,$.fn.spinner.parseOptions(this),_b)}); +} +_1(this); +}); +}; +$.fn.spinner.methods={options:function(jq){ +var _f=jq.textbox("options"); +return $.extend($.data(jq[0],"spinner").options,{width:_f.width,value:_f.value,originalValue:_f.originalValue,disabled:_f.disabled,readonly:_f.readonly}); +}}; +$.fn.spinner.parseOptions=function(_10){ +return $.extend({},$.fn.textbox.parseOptions(_10),$.parser.parseOptions(_10,["min","max",{increment:"number"}])); +}; +$.fn.spinner.defaults=$.extend({},$.fn.textbox.defaults,{min:null,max:null,increment:1,spin:function(_11){ +},onSpinUp:function(){ +},onSpinDown:function(){ +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.splitbutton.js b/assets/js/easy-ui/plugins/jquery.splitbutton.js new file mode 100755 index 0000000000..7ea389b310 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.splitbutton.js @@ -0,0 +1,49 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"splitbutton").options; +$(_2).menubutton(_3); +$(_2).addClass("s-btn"); +}; +$.fn.splitbutton=function(_4,_5){ +if(typeof _4=="string"){ +var _6=$.fn.splitbutton.methods[_4]; +if(_6){ +return _6(this,_5); +}else{ +return this.menubutton(_4,_5); +} +} +_4=_4||{}; +return this.each(function(){ +var _7=$.data(this,"splitbutton"); +if(_7){ +$.extend(_7.options,_4); +}else{ +$.data(this,"splitbutton",{options:$.extend({},$.fn.splitbutton.defaults,$.fn.splitbutton.parseOptions(this),_4)}); +$(this).removeAttr("disabled"); +} +_1(this); +}); +}; +$.fn.splitbutton.methods={options:function(jq){ +var _8=jq.menubutton("options"); +var _9=$.data(jq[0],"splitbutton").options; +$.extend(_9,{disabled:_8.disabled,toggle:_8.toggle,selected:_8.selected}); +return _9; +}}; +$.fn.splitbutton.parseOptions=function(_a){ +var t=$(_a); +return $.extend({},$.fn.linkbutton.parseOptions(_a),$.parser.parseOptions(_a,["menu",{plain:"boolean",duration:"number"}])); +}; +$.fn.splitbutton.defaults=$.extend({},$.fn.linkbutton.defaults,{plain:true,menu:null,duration:100,cls:{btn1:"m-btn-active s-btn-active",btn2:"m-btn-plain-active s-btn-plain-active",arrow:"m-btn-downarrow",trigger:"m-btn-line"}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.tabs.js b/assets/js/easy-ui/plugins/jquery.tabs.js new file mode 100755 index 0000000000..58e05fff43 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.tabs.js @@ -0,0 +1,603 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"tabs").options; +if(_3.tabPosition=="left"||_3.tabPosition=="right"||!_3.showHeader){ +return; +} +var _4=$(_2).children("div.tabs-header"); +var _5=_4.children("div.tabs-tool"); +var _6=_4.children("div.tabs-scroller-left"); +var _7=_4.children("div.tabs-scroller-right"); +var _8=_4.children("div.tabs-wrap"); +var _9=_4.outerHeight(); +if(_3.plain){ +_9-=_9-_4.height(); +} +_5._outerHeight(_9); +var _a=0; +$("ul.tabs li",_4).each(function(){ +_a+=$(this).outerWidth(true); +}); +var _b=_4.width()-_5._outerWidth(); +if(_a>_b){ +_6.add(_7).show()._outerHeight(_9); +if(_3.toolPosition=="left"){ +_5.css({left:_6.outerWidth(),right:""}); +_8.css({marginLeft:_6.outerWidth()+_5._outerWidth(),marginRight:_7._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); +}else{ +_5.css({left:"",right:_7.outerWidth()}); +_8.css({marginLeft:_6.outerWidth(),marginRight:_7.outerWidth()+_5._outerWidth(),width:_b-_6.outerWidth()-_7.outerWidth()}); +} +}else{ +_6.add(_7).hide(); +if(_3.toolPosition=="left"){ +_5.css({left:0,right:""}); +_8.css({marginLeft:_5._outerWidth(),marginRight:0,width:_b}); +}else{ +_5.css({left:"",right:0}); +_8.css({marginLeft:0,marginRight:_5._outerWidth(),width:_b}); +} +} +}; +function _c(_d){ +var _e=$.data(_d,"tabs").options; +var _f=$(_d).children("div.tabs-header"); +if(_e.tools){ +if(typeof _e.tools=="string"){ +$(_e.tools).addClass("tabs-tool").appendTo(_f); +$(_e.tools).show(); +}else{ +_f.children("div.tabs-tool").remove(); +var _10=$("
              ").appendTo(_f); +var tr=_10.find("tr"); +for(var i=0;i<_e.tools.length;i++){ +var td=$("").appendTo(tr); +var _11=$("").appendTo(td); +_11[0].onclick=eval(_e.tools[i].handler||function(){ +}); +_11.linkbutton($.extend({},_e.tools[i],{plain:true})); +} +} +}else{ +_f.children("div.tabs-tool").remove(); +} +}; +function _12(_13,_14){ +var _15=$.data(_13,"tabs"); +var _16=_15.options; +var cc=$(_13); +if(_14){ +$.extend(_16,{width:_14.width,height:_14.height}); +} +cc._size(_16); +var _17=cc.children("div.tabs-header"); +var _18=cc.children("div.tabs-panels"); +var _19=_17.find("div.tabs-wrap"); +var ul=_19.find(".tabs"); +for(var i=0;i<_15.tabs.length;i++){ +var _1a=_15.tabs[i].panel("options"); +var p_t=_1a.tab.find("a.tabs-inner"); +var _1b=parseInt(_1a.tabWidth||_16.tabWidth)||undefined; +if(_1b){ +p_t._outerWidth(_1b); +}else{ +p_t.css("width",""); +} +p_t._outerHeight(_16.tabHeight); +p_t.css("lineHeight",p_t.height()+"px"); +} +if(_16.tabPosition=="left"||_16.tabPosition=="right"){ +_17._outerWidth(_16.showHeader?_16.headerWidth:0); +_18._outerWidth(cc.width()-_17.outerWidth()); +_17.add(_18)._outerHeight(_16.height); +_19._outerWidth(_17.width()); +ul._outerWidth(_19.width()).css("height",""); +}else{ +var lrt=_17.children("div.tabs-scroller-left,div.tabs-scroller-right,div.tabs-tool"); +_17._outerWidth(_16.width).css("height",""); +if(_16.showHeader){ +_17.css("background-color",""); +_19.css("height",""); +lrt.show(); +}else{ +_17.css("background-color","transparent"); +_17._outerHeight(0); +_19._outerHeight(0); +lrt.hide(); +} +ul._outerHeight(_16.tabHeight).css("width",""); +_1(_13); +_18._size("height",isNaN(_16.height)?"":(_16.height-_17.outerHeight())); +_18._size("width",isNaN(_16.width)?"":_16.width); +} +}; +function _1c(_1d){ +var _1e=$.data(_1d,"tabs").options; +var tab=_1f(_1d); +if(tab){ +var _20=$(_1d).children("div.tabs-panels"); +var _21=_1e.width=="auto"?"auto":_20.width(); +var _22=_1e.height=="auto"?"auto":_20.height(); +tab.panel("resize",{width:_21,height:_22}); +} +}; +function _23(_24){ +var _25=$.data(_24,"tabs").tabs; +var cc=$(_24); +cc.addClass("tabs-container"); +var pp=$("
              ").insertBefore(cc); +cc.children("div").each(function(){ +pp[0].appendChild(this); +}); +cc[0].appendChild(pp[0]); +$("
              "+"
              "+"
              "+"
              "+"
                "+"
                "+"
                ").prependTo(_24); +cc.children("div.tabs-panels").children("div").each(function(i){ +var _26=$.extend({},$.parser.parseOptions(this),{selected:($(this).attr("selected")?true:undefined)}); +var pp=$(this); +_25.push(pp); +_35(_24,pp,_26); +}); +cc.children("div.tabs-header").find(".tabs-scroller-left, .tabs-scroller-right").hover(function(){ +$(this).addClass("tabs-scroller-over"); +},function(){ +$(this).removeClass("tabs-scroller-over"); +}); +cc.bind("_resize",function(e,_27){ +if($(this).hasClass("easyui-fluid")||_27){ +_12(_24); +_1c(_24); +} +return false; +}); +}; +function _28(_29){ +var _2a=$.data(_29,"tabs"); +var _2b=_2a.options; +$(_29).children("div.tabs-header").unbind().bind("click",function(e){ +if($(e.target).hasClass("tabs-scroller-left")){ +$(_29).tabs("scrollBy",-_2b.scrollIncrement); +}else{ +if($(e.target).hasClass("tabs-scroller-right")){ +$(_29).tabs("scrollBy",_2b.scrollIncrement); +}else{ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +var a=$(e.target).closest("a.tabs-close"); +if(a.length){ +_4c(_29,_2c(li)); +}else{ +if(li.length){ +var _2d=_2c(li); +var _2e=_2a.tabs[_2d].panel("options"); +if(_2e.collapsible){ +_2e.closed?_41(_29,_2d):_6b(_29,_2d); +}else{ +_41(_29,_2d); +} +} +} +} +} +}).bind("contextmenu",function(e){ +var li=$(e.target).closest("li"); +if(li.hasClass("tabs-disabled")){ +return; +} +if(li.length){ +_2b.onContextMenu.call(_29,e,li.find("span.tabs-title").html(),_2c(li)); +} +}); +function _2c(li){ +var _2f=0; +li.parent().children("li").each(function(i){ +if(li[0]==this){ +_2f=i; +return false; +} +}); +return _2f; +}; +}; +function _30(_31){ +var _32=$.data(_31,"tabs").options; +var _33=$(_31).children("div.tabs-header"); +var _34=$(_31).children("div.tabs-panels"); +_33.removeClass("tabs-header-top tabs-header-bottom tabs-header-left tabs-header-right"); +_34.removeClass("tabs-panels-top tabs-panels-bottom tabs-panels-left tabs-panels-right"); +if(_32.tabPosition=="top"){ +_33.insertBefore(_34); +}else{ +if(_32.tabPosition=="bottom"){ +_33.insertAfter(_34); +_33.addClass("tabs-header-bottom"); +_34.addClass("tabs-panels-top"); +}else{ +if(_32.tabPosition=="left"){ +_33.addClass("tabs-header-left"); +_34.addClass("tabs-panels-right"); +}else{ +if(_32.tabPosition=="right"){ +_33.addClass("tabs-header-right"); +_34.addClass("tabs-panels-left"); +} +} +} +} +if(_32.plain==true){ +_33.addClass("tabs-header-plain"); +}else{ +_33.removeClass("tabs-header-plain"); +} +if(_32.border==true){ +_33.removeClass("tabs-header-noborder"); +_34.removeClass("tabs-panels-noborder"); +}else{ +_33.addClass("tabs-header-noborder"); +_34.addClass("tabs-panels-noborder"); +} +}; +function _35(_36,pp,_37){ +var _38=$.data(_36,"tabs"); +_37=_37||{}; +pp.panel($.extend({},_37,{border:false,noheader:true,closed:true,doSize:false,iconCls:(_37.icon?_37.icon:undefined),onLoad:function(){ +if(_37.onLoad){ +_37.onLoad.call(this,arguments); +} +_38.options.onLoad.call(_36,$(this)); +}})); +var _39=pp.panel("options"); +var _3a=$(_36).children("div.tabs-header").find("ul.tabs"); +_39.tab=$("
              • ").appendTo(_3a); +_39.tab.append(""+""+""+""); +$(_36).tabs("update",{tab:pp,options:_39,type:"header"}); +}; +function _3b(_3c,_3d){ +var _3e=$.data(_3c,"tabs"); +var _3f=_3e.options; +var _40=_3e.tabs; +if(_3d.selected==undefined){ +_3d.selected=true; +} +var pp=$("
                ").appendTo($(_3c).children("div.tabs-panels")); +_40.push(pp); +_35(_3c,pp,_3d); +_3f.onAdd.call(_3c,_3d.title,_40.length-1); +_12(_3c); +if(_3d.selected){ +_41(_3c,_40.length-1); +} +}; +function _42(_43,_44){ +_44.type=_44.type||"all"; +var _45=$.data(_43,"tabs").selectHis; +var pp=_44.tab; +var _46=pp.panel("options").title; +if(_44.type=="all"||_44=="body"){ +pp.panel($.extend({},_44.options,{iconCls:(_44.options.icon?_44.options.icon:undefined)})); +} +if(_44.type=="all"||_44.type=="header"){ +var _47=pp.panel("options"); +var tab=_47.tab; +var _48=tab.find("span.tabs-title"); +var _49=tab.find("span.tabs-icon"); +_48.html(_47.title); +_49.attr("class","tabs-icon"); +tab.find("a.tabs-close").remove(); +if(_47.closable){ +_48.addClass("tabs-closable"); +$("").appendTo(tab); +}else{ +_48.removeClass("tabs-closable"); +} +if(_47.iconCls){ +_48.addClass("tabs-with-icon"); +_49.addClass(_47.iconCls); +}else{ +_48.removeClass("tabs-with-icon"); +} +if(_46!=_47.title){ +for(var i=0;i<_45.length;i++){ +if(_45[i]==_46){ +_45[i]=_47.title; +} +} +} +tab.find("span.tabs-p-tool").remove(); +if(_47.tools){ +var _4a=$("").insertAfter(tab.find("a.tabs-inner")); +if($.isArray(_47.tools)){ +for(var i=0;i<_47.tools.length;i++){ +var t=$("").appendTo(_4a); +t.addClass(_47.tools[i].iconCls); +if(_47.tools[i].handler){ +t.bind("click",{handler:_47.tools[i].handler},function(e){ +if($(this).parents("li").hasClass("tabs-disabled")){ +return; +} +e.data.handler.call(this); +}); +} +} +}else{ +$(_47.tools).children().appendTo(_4a); +} +var pr=_4a.children().length*12; +if(_47.closable){ +pr+=8; +}else{ +pr-=3; +_4a.css("right","5px"); +} +_48.css("padding-right",pr+"px"); +} +} +_12(_43); +$.data(_43,"tabs").options.onUpdate.call(_43,_47.title,_4b(_43,pp)); +}; +function _4c(_4d,_4e){ +var _4f=$.data(_4d,"tabs").options; +var _50=$.data(_4d,"tabs").tabs; +var _51=$.data(_4d,"tabs").selectHis; +if(!_52(_4d,_4e)){ +return; +} +var tab=_53(_4d,_4e); +var _54=tab.panel("options").title; +var _55=_4b(_4d,tab); +if(_4f.onBeforeClose.call(_4d,_54,_55)==false){ +return; +} +var tab=_53(_4d,_4e,true); +tab.panel("options").tab.remove(); +tab.panel("destroy"); +_4f.onClose.call(_4d,_54,_55); +_12(_4d); +for(var i=0;i<_51.length;i++){ +if(_51[i]==_54){ +_51.splice(i,1); +i--; +} +} +var _56=_51.pop(); +if(_56){ +_41(_4d,_56); +}else{ +if(_50.length){ +_41(_4d,0); +} +} +}; +function _53(_57,_58,_59){ +var _5a=$.data(_57,"tabs").tabs; +if(typeof _58=="number"){ +if(_58<0||_58>=_5a.length){ +return null; +}else{ +var tab=_5a[_58]; +if(_59){ +_5a.splice(_58,1); +} +return tab; +} +} +for(var i=0;i<_5a.length;i++){ +var tab=_5a[i]; +if(tab.panel("options").title==_58){ +if(_59){ +_5a.splice(i,1); +} +return tab; +} +} +return null; +}; +function _4b(_5b,tab){ +var _5c=$.data(_5b,"tabs").tabs; +for(var i=0;i<_5c.length;i++){ +if(_5c[i][0]==$(tab)[0]){ +return i; +} +} +return -1; +}; +function _1f(_5d){ +var _5e=$.data(_5d,"tabs").tabs; +for(var i=0;i<_5e.length;i++){ +var tab=_5e[i]; +if(tab.panel("options").closed==false){ +return tab; +} +} +return null; +}; +function _5f(_60){ +var _61=$.data(_60,"tabs"); +var _62=_61.tabs; +for(var i=0;i<_62.length;i++){ +if(_62[i].panel("options").selected){ +_41(_60,i); +return; +} +} +_41(_60,_61.options.selected); +}; +function _41(_63,_64){ +var _65=$.data(_63,"tabs"); +var _66=_65.options; +var _67=_65.tabs; +var _68=_65.selectHis; +if(_67.length==0){ +return; +} +var _69=_53(_63,_64); +if(!_69){ +return; +} +var _6a=_1f(_63); +if(_6a){ +if(_69[0]==_6a[0]){ +_1c(_63); +return; +} +_6b(_63,_4b(_63,_6a)); +if(!_6a.panel("options").closed){ +return; +} +} +_69.panel("open"); +var _6c=_69.panel("options").title; +_68.push(_6c); +var tab=_69.panel("options").tab; +tab.addClass("tabs-selected"); +var _6d=$(_63).find(">div.tabs-header>div.tabs-wrap"); +var _6e=tab.position().left; +var _6f=_6e+tab.outerWidth(); +if(_6e<0||_6f>_6d.width()){ +var _70=_6e-(_6d.width()-tab.width())/2; +$(_63).tabs("scrollBy",_70); +}else{ +$(_63).tabs("scrollBy",0); +} +_1c(_63); +_66.onSelect.call(_63,_6c,_4b(_63,_69)); +}; +function _6b(_71,_72){ +var _73=$.data(_71,"tabs"); +var p=_53(_71,_72); +if(p){ +var _74=p.panel("options"); +if(!_74.closed){ +p.panel("close"); +if(_74.closed){ +_74.tab.removeClass("tabs-selected"); +_73.options.onUnselect.call(_71,_74.title,_4b(_71,p)); +} +} +} +}; +function _52(_75,_76){ +return _53(_75,_76)!=null; +}; +function _77(_78,_79){ +var _7a=$.data(_78,"tabs").options; +_7a.showHeader=_79; +$(_78).tabs("resize"); +}; +$.fn.tabs=function(_7b,_7c){ +if(typeof _7b=="string"){ +return $.fn.tabs.methods[_7b](this,_7c); +} +_7b=_7b||{}; +return this.each(function(){ +var _7d=$.data(this,"tabs"); +if(_7d){ +$.extend(_7d.options,_7b); +}else{ +$.data(this,"tabs",{options:$.extend({},$.fn.tabs.defaults,$.fn.tabs.parseOptions(this),_7b),tabs:[],selectHis:[]}); +_23(this); +} +_c(this); +_30(this); +_12(this); +_28(this); +_5f(this); +}); +}; +$.fn.tabs.methods={options:function(jq){ +var cc=jq[0]; +var _7e=$.data(cc,"tabs").options; +var s=_1f(cc); +_7e.selected=s?_4b(cc,s):-1; +return _7e; +},tabs:function(jq){ +return $.data(jq[0],"tabs").tabs; +},resize:function(jq,_7f){ +return jq.each(function(){ +_12(this,_7f); +_1c(this); +}); +},add:function(jq,_80){ +return jq.each(function(){ +_3b(this,_80); +}); +},close:function(jq,_81){ +return jq.each(function(){ +_4c(this,_81); +}); +},getTab:function(jq,_82){ +return _53(jq[0],_82); +},getTabIndex:function(jq,tab){ +return _4b(jq[0],tab); +},getSelected:function(jq){ +return _1f(jq[0]); +},select:function(jq,_83){ +return jq.each(function(){ +_41(this,_83); +}); +},unselect:function(jq,_84){ +return jq.each(function(){ +_6b(this,_84); +}); +},exists:function(jq,_85){ +return _52(jq[0],_85); +},update:function(jq,_86){ +return jq.each(function(){ +_42(this,_86); +}); +},enableTab:function(jq,_87){ +return jq.each(function(){ +$(this).tabs("getTab",_87).panel("options").tab.removeClass("tabs-disabled"); +}); +},disableTab:function(jq,_88){ +return jq.each(function(){ +$(this).tabs("getTab",_88).panel("options").tab.addClass("tabs-disabled"); +}); +},showHeader:function(jq){ +return jq.each(function(){ +_77(this,true); +}); +},hideHeader:function(jq){ +return jq.each(function(){ +_77(this,false); +}); +},scrollBy:function(jq,_89){ +return jq.each(function(){ +var _8a=$(this).tabs("options"); +var _8b=$(this).find(">div.tabs-header>div.tabs-wrap"); +var pos=Math.min(_8b._scrollLeft()+_89,_8c()); +_8b.animate({scrollLeft:pos},_8a.scrollDuration); +function _8c(){ +var w=0; +var ul=_8b.children("ul"); +ul.children("li").each(function(){ +w+=$(this).outerWidth(true); +}); +return w-_8b.width()+(ul.outerWidth()-ul.width()); +}; +}); +}}; +$.fn.tabs.parseOptions=function(_8d){ +return $.extend({},$.parser.parseOptions(_8d,["tools","toolPosition","tabPosition",{fit:"boolean",border:"boolean",plain:"boolean",headerWidth:"number",tabWidth:"number",tabHeight:"number",selected:"number",showHeader:"boolean"}])); +}; +$.fn.tabs.defaults={width:"auto",height:"auto",headerWidth:150,tabWidth:"auto",tabHeight:27,selected:0,showHeader:true,plain:false,fit:false,border:true,tools:null,toolPosition:"right",tabPosition:"top",scrollIncrement:100,scrollDuration:400,onLoad:function(_8e){ +},onSelect:function(_8f,_90){ +},onUnselect:function(_91,_92){ +},onBeforeClose:function(_93,_94){ +},onClose:function(_95,_96){ +},onAdd:function(_97,_98){ +},onUpdate:function(_99,_9a){ +},onContextMenu:function(e,_9b,_9c){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.textbox.js b/assets/js/easy-ui/plugins/jquery.textbox.js new file mode 100755 index 0000000000..8be90d758b --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.textbox.js @@ -0,0 +1,386 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("textbox-f").hide(); +var _3=$(""+""+""+"").insertAfter(_2); +var _4=$(_2).attr("name"); +if(_4){ +_3.find("input.textbox-value").attr("name",_4); +$(_2).removeAttr("name").attr("textboxName",_4); +} +return _3; +}; +function _5(_6){ +var _7=$.data(_6,"textbox"); +var _8=_7.options; +var tb=_7.textbox; +tb.find(".textbox-text").remove(); +if(_8.multiline){ +$("").prependTo(tb); +}else{ +$("").prependTo(tb); +} +tb.find(".textbox-addon").remove(); +var bb=_8.icons?$.extend(true,[],_8.icons):[]; +if(_8.iconCls){ +bb.push({iconCls:_8.iconCls,disabled:true}); +} +if(bb.length){ +var bc=$("").prependTo(tb); +bc.addClass("textbox-addon-"+_8.iconAlign); +for(var i=0;i"); +} +} +tb.find(".textbox-button").remove(); +if(_8.buttonText||_8.buttonIcon){ +var _9=$("").prependTo(tb); +_9.addClass("textbox-button-"+_8.buttonAlign).linkbutton({text:_8.buttonText,iconCls:_8.buttonIcon}); +} +_a(_6,_8.disabled); +_b(_6,_8.readonly); +}; +function _c(_d){ +var tb=$.data(_d,"textbox").textbox; +tb.find(".textbox-text").validatebox("destroy"); +tb.remove(); +$(_d).remove(); +}; +function _e(_f,_10){ +var _11=$.data(_f,"textbox"); +var _12=_11.options; +var tb=_11.textbox; +var _13=tb.parent(); +if(_10){ +_12.width=_10; +} +if(isNaN(parseInt(_12.width))){ +var c=$(_f).clone(); +c.css("visibility","hidden"); +c.insertAfter(_f); +_12.width=c.outerWidth(); +c.remove(); +} +tb.appendTo("body"); +var _14=tb.find(".textbox-text"); +var btn=tb.find(".textbox-button"); +var _15=tb.find(".textbox-addon"); +var _16=_15.find(".textbox-icon"); +tb._size(_12,_13); +btn.linkbutton("resize",{height:tb.height()}); +btn.css({left:(_12.buttonAlign=="left"?0:""),right:(_12.buttonAlign=="right"?0:"")}); +_15.css({left:(_12.iconAlign=="left"?(_12.buttonAlign=="left"?btn._outerWidth():0):""),right:(_12.iconAlign=="right"?(_12.buttonAlign=="right"?btn._outerWidth():0):"")}); +_16.css({width:_12.iconWidth+"px",height:tb.height()+"px"}); +_14.css({paddingLeft:(_f.style.paddingLeft||""),paddingRight:(_f.style.paddingRight||""),marginLeft:_17("left"),marginRight:_17("right")}); +if(_12.multiline){ +_14.css({paddingTop:(_f.style.paddingTop||""),paddingBottom:(_f.style.paddingBottom||"")}); +_14._outerHeight(tb.height()); +}else{ +var _18=Math.floor((tb.height()-_14.height())/2); +_14.css({paddingTop:_18+"px",paddingBottom:_18+"px"}); +} +_14._outerWidth(tb.width()-_16.length*_12.iconWidth-btn._outerWidth()); +tb.insertAfter(_f); +_12.onResize.call(_f,_12.width,_12.height); +function _17(_19){ +return (_12.iconAlign==_19?_15._outerWidth():0)+(_12.buttonAlign==_19?btn._outerWidth():0); +}; +}; +function _1a(_1b){ +var _1c=$(_1b).textbox("options"); +var _1d=$(_1b).textbox("textbox"); +_1d.validatebox($.extend({},_1c,{deltaX:$(_1b).textbox("getTipX"),onBeforeValidate:function(){ +var box=$(this); +if(!box.is(":focus")){ +_1c.oldInputValue=box.val(); +box.val(_1c.value); +} +},onValidate:function(_1e){ +var box=$(this); +if(_1c.oldInputValue!=undefined){ +box.val(_1c.oldInputValue); +_1c.oldInputValue=undefined; +} +var tb=box.parent(); +if(_1e){ +tb.removeClass("textbox-invalid"); +}else{ +tb.addClass("textbox-invalid"); +} +}})); +}; +function _1f(_20){ +var _21=$.data(_20,"textbox"); +var _22=_21.options; +var tb=_21.textbox; +var _23=tb.find(".textbox-text"); +_23.attr("placeholder",_22.prompt); +_23.unbind(".textbox"); +if(!_22.disabled&&!_22.readonly){ +_23.bind("blur.textbox",function(e){ +if(!tb.hasClass("textbox-focused")){ +return; +} +_22.value=$(this).val(); +if(_22.value==""){ +$(this).val(_22.prompt).addClass("textbox-prompt"); +}else{ +$(this).removeClass("textbox-prompt"); +} +tb.removeClass("textbox-focused"); +}).bind("focus.textbox",function(e){ +if(tb.hasClass("textbox-focused")){ +return; +} +if($(this).val()!=_22.value){ +$(this).val(_22.value); +} +$(this).removeClass("textbox-prompt"); +tb.addClass("textbox-focused"); +}); +for(var _24 in _22.inputEvents){ +_23.bind(_24+".textbox",{target:_20},_22.inputEvents[_24]); +} +} +var _25=tb.find(".textbox-addon"); +_25.unbind().bind("click",{target:_20},function(e){ +var _26=$(e.target).closest("a.textbox-icon:not(.textbox-icon-disabled)"); +if(_26.length){ +var _27=parseInt(_26.attr("icon-index")); +var _28=_22.icons[_27]; +if(_28&&_28.handler){ +_28.handler.call(_26[0],e); +_22.onClickIcon.call(_20,_27); +} +} +}); +_25.find(".textbox-icon").each(function(_29){ +var _2a=_22.icons[_29]; +var _2b=$(this); +if(!_2a||_2a.disabled||_22.disabled||_22.readonly){ +_2b.addClass("textbox-icon-disabled"); +}else{ +_2b.removeClass("textbox-icon-disabled"); +} +}); +var btn=tb.find(".textbox-button"); +btn.unbind(".textbox").bind("click.textbox",function(){ +if(!btn.linkbutton("options").disabled){ +_22.onClickButton.call(_20); +} +}); +btn.linkbutton((_22.disabled||_22.readonly)?"disable":"enable"); +tb.unbind(".textbox").bind("_resize.textbox",function(e,_2c){ +if($(this).hasClass("easyui-fluid")||_2c){ +_e(_20); +} +return false; +}); +}; +function _a(_2d,_2e){ +var _2f=$.data(_2d,"textbox"); +var _30=_2f.options; +var tb=_2f.textbox; +if(_2e){ +_30.disabled=true; +$(_2d).attr("disabled","disabled"); +tb.find(".textbox-text,.textbox-value").attr("disabled","disabled"); +}else{ +_30.disabled=false; +$(_2d).removeAttr("disabled"); +tb.find(".textbox-text,.textbox-value").removeAttr("disabled"); +} +}; +function _b(_31,_32){ +var _33=$.data(_31,"textbox"); +var _34=_33.options; +_34.readonly=_32==undefined?true:_32; +var _35=_33.textbox.find(".textbox-text"); +_35.removeAttr("readonly").removeClass("textbox-text-readonly"); +if(_34.readonly||!_34.editable){ +_35.attr("readonly","readonly").addClass("textbox-text-readonly"); +} +}; +$.fn.textbox=function(_36,_37){ +if(typeof _36=="string"){ +var _38=$.fn.textbox.methods[_36]; +if(_38){ +return _38(this,_37); +}else{ +return this.each(function(){ +var _39=$(this).textbox("textbox"); +_39.validatebox(_36,_37); +}); +} +} +_36=_36||{}; +return this.each(function(){ +var _3a=$.data(this,"textbox"); +if(_3a){ +$.extend(_3a.options,_36); +if(_36.value!=undefined){ +_3a.options.originalValue=_36.value; +} +}else{ +_3a=$.data(this,"textbox",{options:$.extend({},$.fn.textbox.defaults,$.fn.textbox.parseOptions(this),_36),textbox:_1(this)}); +_3a.options.originalValue=_3a.options.value; +} +_5(this); +_1f(this); +_e(this); +_1a(this); +$(this).textbox("initValue",_3a.options.value); +}); +}; +$.fn.textbox.methods={options:function(jq){ +return $.data(jq[0],"textbox").options; +},cloneFrom:function(jq,_3b){ +return jq.each(function(){ +var t=$(this); +if(t.data("textbox")){ +return; +} +if(!$(_3b).data("textbox")){ +$(_3b).textbox(); +} +var _3c=t.attr("name")||""; +t.addClass("textbox-f").hide(); +t.removeAttr("name").attr("textboxName",_3c); +var _3d=$(_3b).next().clone().insertAfter(t); +_3d.find("input.textbox-value").attr("name",_3c); +$.data(this,"textbox",{options:$.extend(true,{},$(_3b).textbox("options")),textbox:_3d}); +var _3e=$(_3b).textbox("button"); +if(_3e.length){ +t.textbox("button").linkbutton($.extend(true,{},_3e.linkbutton("options"))); +} +_1f(this); +_1a(this); +}); +},textbox:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-text"); +},button:function(jq){ +return $.data(jq[0],"textbox").textbox.find(".textbox-button"); +},destroy:function(jq){ +return jq.each(function(){ +_c(this); +}); +},resize:function(jq,_3f){ +return jq.each(function(){ +_e(this,_3f); +}); +},disable:function(jq){ +return jq.each(function(){ +_a(this,true); +_1f(this); +}); +},enable:function(jq){ +return jq.each(function(){ +_a(this,false); +_1f(this); +}); +},readonly:function(jq,_40){ +return jq.each(function(){ +_b(this,_40); +_1f(this); +}); +},isValid:function(jq){ +return jq.textbox("textbox").validatebox("isValid"); +},clear:function(jq){ +return jq.each(function(){ +$(this).textbox("setValue",""); +}); +},setText:function(jq,_41){ +return jq.each(function(){ +var _42=$(this).textbox("options"); +var _43=$(this).textbox("textbox"); +if($(this).textbox("getText")!=_41){ +_42.value=_41; +_43.val(_41); +} +if(!_43.is(":focus")){ +if(_41){ +_43.removeClass("textbox-prompt"); +}else{ +_43.val(_42.prompt).addClass("textbox-prompt"); +} +} +$(this).textbox("validate"); +}); +},initValue:function(jq,_44){ +return jq.each(function(){ +var _45=$.data(this,"textbox"); +_45.options.value=""; +$(this).textbox("setText",_44); +_45.textbox.find(".textbox-value").val(_44); +$(this).val(_44); +}); +},setValue:function(jq,_46){ +return jq.each(function(){ +var _47=$.data(this,"textbox").options; +var _48=$(this).textbox("getValue"); +$(this).textbox("initValue",_46); +if(_48!=_46){ +_47.onChange.call(this,_46,_48); +} +}); +},getText:function(jq){ +var _49=jq.textbox("textbox"); +if(_49.is(":focus")){ +return _49.val(); +}else{ +return jq.textbox("options").value; +} +},getValue:function(jq){ +return jq.data("textbox").textbox.find(".textbox-value").val(); +},reset:function(jq){ +return jq.each(function(){ +var _4a=$(this).textbox("options"); +$(this).textbox("setValue",_4a.originalValue); +}); +},getIcon:function(jq,_4b){ +return jq.data("textbox").textbox.find(".textbox-icon:eq("+_4b+")"); +},getTipX:function(jq){ +var _4c=jq.data("textbox"); +var _4d=_4c.options; +var tb=_4c.textbox; +var _4e=tb.find(".textbox-text"); +var _4f=tb.find(".textbox-addon")._outerWidth(); +var _50=tb.find(".textbox-button")._outerWidth(); +if(_4d.tipPosition=="right"){ +return (_4d.iconAlign=="right"?_4f:0)+(_4d.buttonAlign=="right"?_50:0)+1; +}else{ +if(_4d.tipPosition=="left"){ +return (_4d.iconAlign=="left"?-_4f:0)+(_4d.buttonAlign=="left"?-_50:0)-1; +}else{ +return _4f/2*(_4d.iconAlign=="right"?1:-1); +} +} +}}; +$.fn.textbox.parseOptions=function(_51){ +var t=$(_51); +return $.extend({},$.fn.validatebox.parseOptions(_51),$.parser.parseOptions(_51,["prompt","iconCls","iconAlign","buttonText","buttonIcon","buttonAlign",{multiline:"boolean",editable:"boolean",iconWidth:"number"}]),{value:(t.val()||undefined),type:(t.attr("type")?t.attr("type"):undefined),disabled:(t.attr("disabled")?true:undefined),readonly:(t.attr("readonly")?true:undefined)}); +}; +$.fn.textbox.defaults=$.extend({},$.fn.validatebox.defaults,{width:"auto",height:22,prompt:"",value:"",type:"text",multiline:false,editable:true,disabled:false,readonly:false,icons:[],iconCls:null,iconAlign:"right",iconWidth:18,buttonText:"",buttonIcon:null,buttonAlign:"right",inputEvents:{blur:function(e){ +var t=$(e.data.target); +var _52=t.textbox("options"); +t.textbox("setValue",_52.value); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.textbox("setValue",t.textbox("getText")); +} +}},onChange:function(_53,_54){ +},onResize:function(_55,_56){ +},onClickButton:function(){ +},onClickIcon:function(_57){ +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.timespinner.js b/assets/js/easy-ui/plugins/jquery.timespinner.js new file mode 100755 index 0000000000..2854917216 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.timespinner.js @@ -0,0 +1,181 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=0; +if(_2.selectionStart){ +_3=_2.selectionStart; +}else{ +if(_2.createTextRange){ +var _4=_2.createTextRange(); +var s=document.selection.createRange(); +s.setEndPoint("StartToStart",_4); +_3=s.text.length; +} +} +return _3; +}; +function _5(_6,_7,_8){ +if(_6.selectionStart){ +_6.setSelectionRange(_7,_8); +}else{ +if(_6.createTextRange){ +var _9=_6.createTextRange(); +_9.collapse(); +_9.moveEnd("character",_8); +_9.moveStart("character",_7); +_9.select(); +} +} +}; +function _a(_b){ +var _c=$.data(_b,"timespinner").options; +$(_b).addClass("timespinner-f").spinner(_c); +var _d=_c.formatter.call(_b,_c.parser.call(_b,_c.value)); +$(_b).timespinner("initValue",_d); +}; +function _e(e){ +var _f=e.data.target; +var _10=$.data(_f,"timespinner").options; +var _11=_1(this); +for(var i=0;i<_10.selections.length;i++){ +var _12=_10.selections[i]; +if(_11>=_12[0]&&_11<=_12[1]){ +_13(_f,i); +return; +} +} +}; +function _13(_14,_15){ +var _16=$.data(_14,"timespinner").options; +if(_15!=undefined){ +_16.highlight=_15; +} +var _17=_16.selections[_16.highlight]; +if(_17){ +var tb=$(_14).timespinner("textbox"); +_5(tb[0],_17[0],_17[1]); +tb.focus(); +} +}; +function _18(_19,_1a){ +var _1b=$.data(_19,"timespinner").options; +var _1a=_1b.parser.call(_19,_1a); +var _1c=_1b.formatter.call(_19,_1a); +$(_19).spinner("setValue",_1c); +}; +function _1d(_1e,_1f){ +var _20=$.data(_1e,"timespinner").options; +var s=$(_1e).timespinner("getValue"); +var _21=_20.selections[_20.highlight]; +var s1=s.substring(0,_21[0]); +var s2=s.substring(_21[0],_21[1]); +var s3=s.substring(_21[1]); +var v=s1+((parseInt(s2)||0)+_20.increment*(_1f?-1:1))+s3; +$(_1e).timespinner("setValue",v); +_13(_1e); +}; +$.fn.timespinner=function(_22,_23){ +if(typeof _22=="string"){ +var _24=$.fn.timespinner.methods[_22]; +if(_24){ +return _24(this,_23); +}else{ +return this.spinner(_22,_23); +} +} +_22=_22||{}; +return this.each(function(){ +var _25=$.data(this,"timespinner"); +if(_25){ +$.extend(_25.options,_22); +}else{ +$.data(this,"timespinner",{options:$.extend({},$.fn.timespinner.defaults,$.fn.timespinner.parseOptions(this),_22)}); +} +_a(this); +}); +}; +$.fn.timespinner.methods={options:function(jq){ +var _26=jq.data("spinner")?jq.spinner("options"):{}; +return $.extend($.data(jq[0],"timespinner").options,{width:_26.width,value:_26.value,originalValue:_26.originalValue,disabled:_26.disabled,readonly:_26.readonly}); +},setValue:function(jq,_27){ +return jq.each(function(){ +_18(this,_27); +}); +},getHours:function(jq){ +var _28=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(_28.separator); +return parseInt(vv[0],10); +},getMinutes:function(jq){ +var _29=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(_29.separator); +return parseInt(vv[1],10); +},getSeconds:function(jq){ +var _2a=$.data(jq[0],"timespinner").options; +var vv=jq.timespinner("getValue").split(_2a.separator); +return parseInt(vv[2],10)||0; +}}; +$.fn.timespinner.parseOptions=function(_2b){ +return $.extend({},$.fn.spinner.parseOptions(_2b),$.parser.parseOptions(_2b,["separator",{showSeconds:"boolean",highlight:"number"}])); +}; +$.fn.timespinner.defaults=$.extend({},$.fn.spinner.defaults,{inputEvents:$.extend({},$.fn.spinner.defaults.inputEvents,{click:function(e){ +_e.call(this,e); +},blur:function(e){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +},keydown:function(e){ +if(e.keyCode==13){ +var t=$(e.data.target); +t.timespinner("setValue",t.timespinner("getText")); +} +}}),formatter:function(_2c){ +if(!_2c){ +return ""; +} +var _2d=$(this).timespinner("options"); +var tt=[_2e(_2c.getHours()),_2e(_2c.getMinutes())]; +if(_2d.showSeconds){ +tt.push(_2e(_2c.getSeconds())); +} +return tt.join(_2d.separator); +function _2e(_2f){ +return (_2f<10?"0":"")+_2f; +}; +},parser:function(s){ +var _30=$(this).timespinner("options"); +var _31=_32(s); +if(_31){ +var min=_32(_30.min); +var max=_32(_30.max); +if(min&&min>_31){ +_31=min; +} +if(max&&max<_31){ +_31=max; +} +} +return _31; +function _32(s){ +if(!s){ +return null; +} +var tt=s.split(_30.separator); +return new Date(1900,0,0,parseInt(tt[0],10)||0,parseInt(tt[1],10)||0,parseInt(tt[2],10)||0); +}; +if(!s){ +return null; +} +var tt=s.split(_30.separator); +return new Date(1900,0,0,parseInt(tt[0],10)||0,parseInt(tt[1],10)||0,parseInt(tt[2],10)||0); +},selections:[[0,2],[3,5],[6,8]],separator:":",showSeconds:false,highlight:0,spin:function(_33){ +_1d(this,_33); +}}); +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.tooltip.js b/assets/js/easy-ui/plugins/jquery.tooltip.js new file mode 100755 index 0000000000..b3ffeb8ee1 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.tooltip.js @@ -0,0 +1,232 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +$(_2).addClass("tooltip-f"); +}; +function _3(_4){ +var _5=$.data(_4,"tooltip").options; +$(_4).unbind(".tooltip").bind(_5.showEvent+".tooltip",function(e){ +$(_4).tooltip("show",e); +}).bind(_5.hideEvent+".tooltip",function(e){ +$(_4).tooltip("hide",e); +}).bind("mousemove.tooltip",function(e){ +if(_5.trackMouse){ +_5.trackMouseX=e.pageX; +_5.trackMouseY=e.pageY; +$(_4).tooltip("reposition"); +} +}); +}; +function _6(_7){ +var _8=$.data(_7,"tooltip"); +if(_8.showTimer){ +clearTimeout(_8.showTimer); +_8.showTimer=null; +} +if(_8.hideTimer){ +clearTimeout(_8.hideTimer); +_8.hideTimer=null; +} +}; +function _9(_a){ +var _b=$.data(_a,"tooltip"); +if(!_b||!_b.tip){ +return; +} +var _c=_b.options; +var _d=_b.tip; +var _e={left:-100000,top:-100000}; +if($(_a).is(":visible")){ +_e=_f(_c.position); +if(_c.position=="top"&&_e.top<0){ +_e=_f("bottom"); +}else{ +if((_c.position=="bottom")&&(_e.top+_d._outerHeight()>$(window)._outerHeight()+$(document).scrollTop())){ +_e=_f("top"); +} +} +if(_e.left<0){ +if(_c.position=="left"){ +_e=_f("right"); +}else{ +$(_a).tooltip("arrow").css("left",_d._outerWidth()/2+_e.left); +_e.left=0; +} +}else{ +if(_e.left+_d._outerWidth()>$(window)._outerWidth()+$(document)._scrollLeft()){ +if(_c.position=="right"){ +_e=_f("left"); +}else{ +var _10=_e.left; +_e.left=$(window)._outerWidth()+$(document)._scrollLeft()-_d._outerWidth(); +$(_a).tooltip("arrow").css("left",_d._outerWidth()/2-(_e.left-_10)); +} +} +} +} +_d.css({left:_e.left,top:_e.top,zIndex:(_c.zIndex!=undefined?_c.zIndex:($.fn.window?$.fn.window.defaults.zIndex++:""))}); +_c.onPosition.call(_a,_e.left,_e.top); +function _f(_11){ +_c.position=_11||"bottom"; +_d.removeClass("tooltip-top tooltip-bottom tooltip-left tooltip-right").addClass("tooltip-"+_c.position); +var _12,top; +if(_c.trackMouse){ +t=$(); +_12=_c.trackMouseX+_c.deltaX; +top=_c.trackMouseY+_c.deltaY; +}else{ +var t=$(_a); +_12=t.offset().left+_c.deltaX; +top=t.offset().top+_c.deltaY; +} +switch(_c.position){ +case "right": +_12+=t._outerWidth()+12+(_c.trackMouse?12:0); +top-=(_d._outerHeight()-t._outerHeight())/2; +break; +case "left": +_12-=_d._outerWidth()+12+(_c.trackMouse?12:0); +top-=(_d._outerHeight()-t._outerHeight())/2; +break; +case "top": +_12-=(_d._outerWidth()-t._outerWidth())/2; +top-=_d._outerHeight()+12+(_c.trackMouse?12:0); +break; +case "bottom": +_12-=(_d._outerWidth()-t._outerWidth())/2; +top+=t._outerHeight()+12+(_c.trackMouse?12:0); +break; +} +return {left:_12,top:top}; +}; +}; +function _13(_14,e){ +var _15=$.data(_14,"tooltip"); +var _16=_15.options; +var tip=_15.tip; +if(!tip){ +tip=$("
                "+"
                "+"
                "+"
                "+"
                ").appendTo("body"); +_15.tip=tip; +_17(_14); +} +_6(_14); +_15.showTimer=setTimeout(function(){ +$(_14).tooltip("reposition"); +tip.show(); +_16.onShow.call(_14,e); +var _18=tip.children(".tooltip-arrow-outer"); +var _19=tip.children(".tooltip-arrow"); +var bc="border-"+_16.position+"-color"; +_18.add(_19).css({borderTopColor:"",borderBottomColor:"",borderLeftColor:"",borderRightColor:""}); +_18.css(bc,tip.css(bc)); +_19.css(bc,tip.css("backgroundColor")); +},_16.showDelay); +}; +function _1a(_1b,e){ +var _1c=$.data(_1b,"tooltip"); +if(_1c&&_1c.tip){ +_6(_1b); +_1c.hideTimer=setTimeout(function(){ +_1c.tip.hide(); +_1c.options.onHide.call(_1b,e); +},_1c.options.hideDelay); +} +}; +function _17(_1d,_1e){ +var _1f=$.data(_1d,"tooltip"); +var _20=_1f.options; +if(_1e){ +_20.content=_1e; +} +if(!_1f.tip){ +return; +} +var cc=typeof _20.content=="function"?_20.content.call(_1d):_20.content; +_1f.tip.children(".tooltip-content").html(cc); +_20.onUpdate.call(_1d,cc); +}; +function _21(_22){ +var _23=$.data(_22,"tooltip"); +if(_23){ +_6(_22); +var _24=_23.options; +if(_23.tip){ +_23.tip.remove(); +} +if(_24._title){ +$(_22).attr("title",_24._title); +} +$.removeData(_22,"tooltip"); +$(_22).unbind(".tooltip").removeClass("tooltip-f"); +_24.onDestroy.call(_22); +} +}; +$.fn.tooltip=function(_25,_26){ +if(typeof _25=="string"){ +return $.fn.tooltip.methods[_25](this,_26); +} +_25=_25||{}; +return this.each(function(){ +var _27=$.data(this,"tooltip"); +if(_27){ +$.extend(_27.options,_25); +}else{ +$.data(this,"tooltip",{options:$.extend({},$.fn.tooltip.defaults,$.fn.tooltip.parseOptions(this),_25)}); +_1(this); +} +_3(this); +_17(this); +}); +}; +$.fn.tooltip.methods={options:function(jq){ +return $.data(jq[0],"tooltip").options; +},tip:function(jq){ +return $.data(jq[0],"tooltip").tip; +},arrow:function(jq){ +return jq.tooltip("tip").children(".tooltip-arrow-outer,.tooltip-arrow"); +},show:function(jq,e){ +return jq.each(function(){ +_13(this,e); +}); +},hide:function(jq,e){ +return jq.each(function(){ +_1a(this,e); +}); +},update:function(jq,_28){ +return jq.each(function(){ +_17(this,_28); +}); +},reposition:function(jq){ +return jq.each(function(){ +_9(this); +}); +},destroy:function(jq){ +return jq.each(function(){ +_21(this); +}); +}}; +$.fn.tooltip.parseOptions=function(_29){ +var t=$(_29); +var _2a=$.extend({},$.parser.parseOptions(_29,["position","showEvent","hideEvent","content",{trackMouse:"boolean",deltaX:"number",deltaY:"number",showDelay:"number",hideDelay:"number"}]),{_title:t.attr("title")}); +t.attr("title",""); +if(!_2a.content){ +_2a.content=_2a._title; +} +return _2a; +}; +$.fn.tooltip.defaults={position:"bottom",content:null,trackMouse:false,deltaX:0,deltaY:0,showEvent:"mouseenter",hideEvent:"mouseleave",showDelay:200,hideDelay:100,onShow:function(e){ +},onHide:function(e){ +},onUpdate:function(_2b){ +},onPosition:function(_2c,top){ +},onDestroy:function(){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.tree.js b/assets/js/easy-ui/plugins/jquery.tree.js new file mode 100755 index 0000000000..984df1e442 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.tree.js @@ -0,0 +1,1181 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$(_2); +_3.addClass("tree"); +return _3; +}; +function _4(_5){ +var _6=$.data(_5,"tree").options; +$(_5).unbind().bind("mouseover",function(e){ +var tt=$(e.target); +var _7=tt.closest("div.tree-node"); +if(!_7.length){ +return; +} +_7.addClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.addClass("tree-expanded-hover"); +}else{ +tt.addClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("mouseout",function(e){ +var tt=$(e.target); +var _8=tt.closest("div.tree-node"); +if(!_8.length){ +return; +} +_8.removeClass("tree-node-hover"); +if(tt.hasClass("tree-hit")){ +if(tt.hasClass("tree-expanded")){ +tt.removeClass("tree-expanded-hover"); +}else{ +tt.removeClass("tree-collapsed-hover"); +} +} +e.stopPropagation(); +}).bind("click",function(e){ +var tt=$(e.target); +var _9=tt.closest("div.tree-node"); +if(!_9.length){ +return; +} +if(tt.hasClass("tree-hit")){ +_81(_5,_9[0]); +return false; +}else{ +if(tt.hasClass("tree-checkbox")){ +_34(_5,_9[0],!tt.hasClass("tree-checkbox1")); +return false; +}else{ +_db(_5,_9[0]); +_6.onClick.call(_5,_c(_5,_9[0])); +} +} +e.stopPropagation(); +}).bind("dblclick",function(e){ +var _a=$(e.target).closest("div.tree-node"); +if(!_a.length){ +return; +} +_db(_5,_a[0]); +_6.onDblClick.call(_5,_c(_5,_a[0])); +e.stopPropagation(); +}).bind("contextmenu",function(e){ +var _b=$(e.target).closest("div.tree-node"); +if(!_b.length){ +return; +} +_6.onContextMenu.call(_5,e,_c(_5,_b[0])); +e.stopPropagation(); +}); +}; +function _d(_e){ +var _f=$.data(_e,"tree").options; +_f.dnd=false; +var _10=$(_e).find("div.tree-node"); +_10.draggable("disable"); +_10.css("cursor","pointer"); +}; +function _11(_12){ +var _13=$.data(_12,"tree"); +var _14=_13.options; +var _15=_13.tree; +_13.disabledNodes=[]; +_14.dnd=true; +_15.find("div.tree-node").draggable({disabled:false,revert:true,cursor:"pointer",proxy:function(_16){ +var p=$("
                ").appendTo("body"); +p.html(" "+$(_16).find(".tree-title").html()); +p.hide(); +return p; +},deltaX:15,deltaY:15,onBeforeDrag:function(e){ +if(_14.onBeforeDrag.call(_12,_c(_12,this))==false){ +return false; +} +if($(e.target).hasClass("tree-hit")||$(e.target).hasClass("tree-checkbox")){ +return false; +} +if(e.which!=1){ +return false; +} +$(this).next("ul").find("div.tree-node").droppable({accept:"no-accept"}); +var _17=$(this).find("span.tree-indent"); +if(_17.length){ +e.data.offsetWidth-=_17.length*_17.width(); +} +},onStartDrag:function(){ +$(this).draggable("proxy").css({left:-10000,top:-10000}); +_14.onStartDrag.call(_12,_c(_12,this)); +var _18=_c(_12,this); +if(_18.id==undefined){ +_18.id="easyui_tree_node_id_temp"; +_56(_12,_18); +} +_13.draggingNodeId=_18.id; +},onDrag:function(e){ +var x1=e.pageX,y1=e.pageY,x2=e.data.startX,y2=e.data.startY; +var d=Math.sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); +if(d>3){ +$(this).draggable("proxy").show(); +} +this.pageY=e.pageY; +},onStopDrag:function(){ +$(this).next("ul").find("div.tree-node").droppable({accept:"div.tree-node"}); +for(var i=0;i<_13.disabledNodes.length;i++){ +$(_13.disabledNodes[i]).droppable("enable"); +} +_13.disabledNodes=[]; +var _19=_ce(_12,_13.draggingNodeId); +if(_19&&_19.id=="easyui_tree_node_id_temp"){ +_19.id=""; +_56(_12,_19); +} +_14.onStopDrag.call(_12,_19); +}}).droppable({accept:"div.tree-node",onDragEnter:function(e,_1a){ +if(_14.onDragEnter.call(_12,this,_1b(_1a))==false){ +_1c(_1a,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_13.disabledNodes.push(this); +} +},onDragOver:function(e,_1d){ +if($(this).droppable("options").disabled){ +return; +} +var _1e=_1d.pageY; +var top=$(this).offset().top; +var _1f=top+$(this).outerHeight(); +_1c(_1d,true); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +if(_1e>top+(_1f-top)/2){ +if(_1f-_1e<5){ +$(this).addClass("tree-node-bottom"); +}else{ +$(this).addClass("tree-node-append"); +} +}else{ +if(_1e-top<5){ +$(this).addClass("tree-node-top"); +}else{ +$(this).addClass("tree-node-append"); +} +} +if(_14.onDragOver.call(_12,this,_1b(_1d))==false){ +_1c(_1d,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +$(this).droppable("disable"); +_13.disabledNodes.push(this); +} +},onDragLeave:function(e,_20){ +_1c(_20,false); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +_14.onDragLeave.call(_12,this,_1b(_20)); +},onDrop:function(e,_21){ +var _22=this; +var _23,_24; +if($(this).hasClass("tree-node-append")){ +_23=_25; +_24="append"; +}else{ +_23=_26; +_24=$(this).hasClass("tree-node-top")?"top":"bottom"; +} +if(_14.onBeforeDrop.call(_12,_22,_1b(_21),_24)==false){ +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +return; +} +_23(_21,_22,_24); +$(this).removeClass("tree-node-append tree-node-top tree-node-bottom"); +}}); +function _1b(_27,pop){ +return $(_27).closest("ul.tree").tree(pop?"pop":"getData",_27); +}; +function _1c(_28,_29){ +var _2a=$(_28).draggable("proxy").find("span.tree-dnd-icon"); +_2a.removeClass("tree-dnd-yes tree-dnd-no").addClass(_29?"tree-dnd-yes":"tree-dnd-no"); +}; +function _25(_2b,_2c){ +if(_c(_12,_2c).state=="closed"){ +_75(_12,_2c,function(){ +_2d(); +}); +}else{ +_2d(); +} +function _2d(){ +var _2e=_1b(_2b,true); +$(_12).tree("append",{parent:_2c,data:[_2e]}); +_14.onDrop.call(_12,_2c,_2e,"append"); +}; +}; +function _26(_2f,_30,_31){ +var _32={}; +if(_31=="top"){ +_32.before=_30; +}else{ +_32.after=_30; +} +var _33=_1b(_2f,true); +_32.data=_33; +$(_12).tree("insert",_32); +_14.onDrop.call(_12,_30,_33,_31); +}; +}; +function _34(_35,_36,_37){ +var _38=$.data(_35,"tree").options; +if(!_38.checkbox){ +return; +} +var _39=_c(_35,_36); +if(_38.onBeforeCheck.call(_35,_39,_37)==false){ +return; +} +var _3a=$(_36); +var ck=_3a.find(".tree-checkbox"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +if(_37){ +ck.addClass("tree-checkbox1"); +}else{ +ck.addClass("tree-checkbox0"); +} +if(_38.cascadeCheck){ +_3b(_3a); +_3c(_3a); +} +_38.onCheck.call(_35,_39,_37); +function _3c(_3d){ +var _3e=_3d.next().find(".tree-checkbox"); +_3e.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +if(_3d.find(".tree-checkbox").hasClass("tree-checkbox1")){ +_3e.addClass("tree-checkbox1"); +}else{ +_3e.addClass("tree-checkbox0"); +} +}; +function _3b(_3f){ +var _40=_8c(_35,_3f[0]); +if(_40){ +var ck=$(_40.target).find(".tree-checkbox"); +ck.removeClass("tree-checkbox0 tree-checkbox1 tree-checkbox2"); +if(_41(_3f)){ +ck.addClass("tree-checkbox1"); +}else{ +if(_42(_3f)){ +ck.addClass("tree-checkbox0"); +}else{ +ck.addClass("tree-checkbox2"); +} +} +_3b($(_40.target)); +} +function _41(n){ +var ck=n.find(".tree-checkbox"); +if(ck.hasClass("tree-checkbox0")||ck.hasClass("tree-checkbox2")){ +return false; +} +var b=true; +n.parent().siblings().each(function(){ +if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox1")){ +b=false; +} +}); +return b; +}; +function _42(n){ +var ck=n.find(".tree-checkbox"); +if(ck.hasClass("tree-checkbox1")||ck.hasClass("tree-checkbox2")){ +return false; +} +var b=true; +n.parent().siblings().each(function(){ +if(!$(this).children("div.tree-node").children(".tree-checkbox").hasClass("tree-checkbox0")){ +b=false; +} +}); +return b; +}; +}; +}; +function _43(_44,_45){ +var _46=$.data(_44,"tree").options; +if(!_46.checkbox){ +return; +} +var _47=$(_45); +if(_48(_44,_45)){ +var ck=_47.find(".tree-checkbox"); +if(ck.length){ +if(ck.hasClass("tree-checkbox1")){ +_34(_44,_45,true); +}else{ +_34(_44,_45,false); +} +}else{ +if(_46.onlyLeafCheck){ +$("").insertBefore(_47.find(".tree-title")); +} +} +}else{ +var ck=_47.find(".tree-checkbox"); +if(_46.onlyLeafCheck){ +ck.remove(); +}else{ +if(ck.hasClass("tree-checkbox1")){ +_34(_44,_45,true); +}else{ +if(ck.hasClass("tree-checkbox2")){ +var _49=true; +var _4a=true; +var _4b=_4c(_44,_45); +for(var i=0;i<_4b.length;i++){ +if(_4b[i].checked){ +_4a=false; +}else{ +_49=false; +} +} +if(_49){ +_34(_44,_45,true); +} +if(_4a){ +_34(_44,_45,false); +} +} +} +} +} +}; +function _4d(_4e,ul,_4f,_50){ +var _51=$.data(_4e,"tree"); +var _52=_51.options; +var _53=$(ul).prevAll("div.tree-node:first"); +_4f=_52.loadFilter.call(_4e,_4f,_53[0]); +var _54=_55(_4e,"domId",_53.attr("id")); +if(!_50){ +_54?_54.children=_4f:_51.data=_4f; +$(ul).empty(); +}else{ +if(_54){ +_54.children?_54.children=_54.children.concat(_4f):_54.children=_4f; +}else{ +_51.data=_51.data.concat(_4f); +} +} +_52.view.render.call(_52.view,_4e,ul,_4f); +if(_52.dnd){ +_11(_4e); +} +if(_54){ +_56(_4e,_54); +} +var _57=[]; +var _58=[]; +for(var i=0;i<_4f.length;i++){ +var _59=_4f[i]; +if(!_59.checked){ +_57.push(_59); +} +} +_5a(_4f,function(_5b){ +if(_5b.checked){ +_58.push(_5b); +} +}); +var _5c=_52.onCheck; +_52.onCheck=function(){ +}; +if(_57.length){ +_34(_4e,$("#"+_57[0].domId)[0],false); +} +for(var i=0;i<_58.length;i++){ +_34(_4e,$("#"+_58[i].domId)[0],true); +} +_52.onCheck=_5c; +setTimeout(function(){ +_5d(_4e,_4e); +},0); +_52.onLoadSuccess.call(_4e,_54,_4f); +}; +function _5d(_5e,ul,_5f){ +var _60=$.data(_5e,"tree").options; +if(_60.lines){ +$(_5e).addClass("tree-lines"); +}else{ +$(_5e).removeClass("tree-lines"); +return; +} +if(!_5f){ +_5f=true; +$(_5e).find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +$(_5e).find("div.tree-node").removeClass("tree-node-last tree-root-first tree-root-one"); +var _61=$(_5e).tree("getRoots"); +if(_61.length>1){ +$(_61[0].target).addClass("tree-root-first"); +}else{ +if(_61.length==1){ +$(_61[0].target).addClass("tree-root-one"); +} +} +} +$(ul).children("li").each(function(){ +var _62=$(this).children("div.tree-node"); +var ul=_62.next("ul"); +if(ul.length){ +if($(this).next().length){ +_63(_62); +} +_5d(_5e,ul,_5f); +}else{ +_64(_62); +} +}); +var _65=$(ul).children("li:last").children("div.tree-node").addClass("tree-node-last"); +_65.children("span.tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +function _64(_66,_67){ +var _68=_66.find("span.tree-icon"); +_68.prev("span.tree-indent").addClass("tree-join"); +}; +function _63(_69){ +var _6a=_69.find("span.tree-indent, span.tree-hit").length; +_69.next().find("div.tree-node").each(function(){ +$(this).children("span:eq("+(_6a-1)+")").addClass("tree-line"); +}); +}; +}; +function _6b(_6c,ul,_6d,_6e){ +var _6f=$.data(_6c,"tree").options; +_6d=$.extend({},_6f.queryParams,_6d||{}); +var _70=null; +if(_6c!=ul){ +var _71=$(ul).prev(); +_70=_c(_6c,_71[0]); +} +if(_6f.onBeforeLoad.call(_6c,_70,_6d)==false){ +return; +} +var _72=$(ul).prev().children("span.tree-folder"); +_72.addClass("tree-loading"); +var _73=_6f.loader.call(_6c,_6d,function(_74){ +_72.removeClass("tree-loading"); +_4d(_6c,ul,_74); +if(_6e){ +_6e(); +} +},function(){ +_72.removeClass("tree-loading"); +_6f.onLoadError.apply(_6c,arguments); +if(_6e){ +_6e(); +} +}); +if(_73==false){ +_72.removeClass("tree-loading"); +} +}; +function _75(_76,_77,_78){ +var _79=$.data(_76,"tree").options; +var hit=$(_77).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +return; +} +var _7a=_c(_76,_77); +if(_79.onBeforeExpand.call(_76,_7a)==false){ +return; +} +hit.removeClass("tree-collapsed tree-collapsed-hover").addClass("tree-expanded"); +hit.next().addClass("tree-folder-open"); +var ul=$(_77).next(); +if(ul.length){ +if(_79.animate){ +ul.slideDown("normal",function(){ +_7a.state="open"; +_79.onExpand.call(_76,_7a); +if(_78){ +_78(); +} +}); +}else{ +ul.css("display","block"); +_7a.state="open"; +_79.onExpand.call(_76,_7a); +if(_78){ +_78(); +} +} +}else{ +var _7b=$("
                  ").insertAfter(_77); +_6b(_76,_7b[0],{id:_7a.id},function(){ +if(_7b.is(":empty")){ +_7b.remove(); +} +if(_79.animate){ +_7b.slideDown("normal",function(){ +_7a.state="open"; +_79.onExpand.call(_76,_7a); +if(_78){ +_78(); +} +}); +}else{ +_7b.css("display","block"); +_7a.state="open"; +_79.onExpand.call(_76,_7a); +if(_78){ +_78(); +} +} +}); +} +}; +function _7c(_7d,_7e){ +var _7f=$.data(_7d,"tree").options; +var hit=$(_7e).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-collapsed")){ +return; +} +var _80=_c(_7d,_7e); +if(_7f.onBeforeCollapse.call(_7d,_80)==false){ +return; +} +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +hit.next().removeClass("tree-folder-open"); +var ul=$(_7e).next(); +if(_7f.animate){ +ul.slideUp("normal",function(){ +_80.state="closed"; +_7f.onCollapse.call(_7d,_80); +}); +}else{ +ul.css("display","none"); +_80.state="closed"; +_7f.onCollapse.call(_7d,_80); +} +}; +function _81(_82,_83){ +var hit=$(_83).children("span.tree-hit"); +if(hit.length==0){ +return; +} +if(hit.hasClass("tree-expanded")){ +_7c(_82,_83); +}else{ +_75(_82,_83); +} +}; +function _84(_85,_86){ +var _87=_4c(_85,_86); +if(_86){ +_87.unshift(_c(_85,_86)); +} +for(var i=0;i<_87.length;i++){ +_75(_85,_87[i].target); +} +}; +function _88(_89,_8a){ +var _8b=[]; +var p=_8c(_89,_8a); +while(p){ +_8b.unshift(p); +p=_8c(_89,p.target); +} +for(var i=0;i<_8b.length;i++){ +_75(_89,_8b[i].target); +} +}; +function _8d(_8e,_8f){ +var c=$(_8e).parent(); +while(c[0].tagName!="BODY"&&c.css("overflow-y")!="auto"){ +c=c.parent(); +} +var n=$(_8f); +var _90=n.offset().top; +if(c[0].tagName!="BODY"){ +var _91=c.offset().top; +if(_90<_91){ +c.scrollTop(c.scrollTop()+_90-_91); +}else{ +if(_90+n.outerHeight()>_91+c.outerHeight()-18){ +c.scrollTop(c.scrollTop()+_90+n.outerHeight()-_91-c.outerHeight()+18); +} +} +}else{ +c.scrollTop(_90); +} +}; +function _92(_93,_94){ +var _95=_4c(_93,_94); +if(_94){ +_95.unshift(_c(_93,_94)); +} +for(var i=0;i<_95.length;i++){ +_7c(_93,_95[i].target); +} +}; +function _96(_97,_98){ +var _99=$(_98.parent); +var _9a=_98.data; +if(!_9a){ +return; +} +_9a=$.isArray(_9a)?_9a:[_9a]; +if(!_9a.length){ +return; +} +var ul; +if(_99.length==0){ +ul=$(_97); +}else{ +if(_48(_97,_99[0])){ +var _9b=_99.find("span.tree-icon"); +_9b.removeClass("tree-file").addClass("tree-folder tree-folder-open"); +var hit=$("").insertBefore(_9b); +if(hit.prev().length){ +hit.prev().remove(); +} +} +ul=_99.next(); +if(!ul.length){ +ul=$("
                    ").insertAfter(_99); +} +} +_4d(_97,ul[0],_9a,true); +_43(_97,ul.prev()); +}; +function _9c(_9d,_9e){ +var ref=_9e.before||_9e.after; +var _9f=_8c(_9d,ref); +var _a0=_9e.data; +if(!_a0){ +return; +} +_a0=$.isArray(_a0)?_a0:[_a0]; +if(!_a0.length){ +return; +} +_96(_9d,{parent:(_9f?_9f.target:null),data:_a0}); +var _a1=_9f?_9f.children:$(_9d).tree("getRoots"); +for(var i=0;i<_a1.length;i++){ +if(_a1[i].domId==$(ref).attr("id")){ +for(var j=_a0.length-1;j>=0;j--){ +_a1.splice((_9e.before?i:(i+1)),0,_a0[j]); +} +_a1.splice(_a1.length-_a0.length,_a0.length); +break; +} +} +var li=$(); +for(var i=0;i<_a0.length;i++){ +li=li.add($("#"+_a0[i].domId).parent()); +} +if(_9e.before){ +li.insertBefore($(ref).parent()); +}else{ +li.insertAfter($(ref).parent()); +} +}; +function _a2(_a3,_a4){ +var _a5=del(_a4); +$(_a4).parent().remove(); +if(_a5){ +if(!_a5.children||!_a5.children.length){ +var _a6=$(_a5.target); +_a6.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +_a6.find(".tree-hit").remove(); +$("").prependTo(_a6); +_a6.next().remove(); +} +_56(_a3,_a5); +_43(_a3,_a5.target); +} +_5d(_a3,_a3); +function del(_a7){ +var id=$(_a7).attr("id"); +var _a8=_8c(_a3,_a7); +var cc=_a8?_a8.children:$.data(_a3,"tree").data; +for(var i=0;i=0;i--){ +_d9.unshift(_da.children[i]); +} +} +} +}; +function _db(_dc,_dd){ +var _de=$.data(_dc,"tree").options; +var _df=_c(_dc,_dd); +if(_de.onBeforeSelect.call(_dc,_df)==false){ +return; +} +$(_dc).find("div.tree-node-selected").removeClass("tree-node-selected"); +$(_dd).addClass("tree-node-selected"); +_de.onSelect.call(_dc,_df); +}; +function _48(_e0,_e1){ +return $(_e1).children("span.tree-hit").length==0; +}; +function _e2(_e3,_e4){ +var _e5=$.data(_e3,"tree").options; +var _e6=_c(_e3,_e4); +if(_e5.onBeforeEdit.call(_e3,_e6)==false){ +return; +} +$(_e4).css("position","relative"); +var nt=$(_e4).find(".tree-title"); +var _e7=nt.outerWidth(); +nt.empty(); +var _e8=$("").appendTo(nt); +_e8.val(_e6.text).focus(); +_e8.width(_e7+20); +_e8.height(document.compatMode=="CSS1Compat"?(18-(_e8.outerHeight()-_e8.height())):18); +_e8.bind("click",function(e){ +return false; +}).bind("mousedown",function(e){ +e.stopPropagation(); +}).bind("mousemove",function(e){ +e.stopPropagation(); +}).bind("keydown",function(e){ +if(e.keyCode==13){ +_e9(_e3,_e4); +return false; +}else{ +if(e.keyCode==27){ +_ef(_e3,_e4); +return false; +} +} +}).bind("blur",function(e){ +e.stopPropagation(); +_e9(_e3,_e4); +}); +}; +function _e9(_ea,_eb){ +var _ec=$.data(_ea,"tree").options; +$(_eb).css("position",""); +var _ed=$(_eb).find("input.tree-editor"); +var val=_ed.val(); +_ed.remove(); +var _ee=_c(_ea,_eb); +_ee.text=val; +_56(_ea,_ee); +_ec.onAfterEdit.call(_ea,_ee); +}; +function _ef(_f0,_f1){ +var _f2=$.data(_f0,"tree").options; +$(_f1).css("position",""); +$(_f1).find("input.tree-editor").remove(); +var _f3=_c(_f0,_f1); +_56(_f0,_f3); +_f2.onCancelEdit.call(_f0,_f3); +}; +$.fn.tree=function(_f4,_f5){ +if(typeof _f4=="string"){ +return $.fn.tree.methods[_f4](this,_f5); +} +var _f4=_f4||{}; +return this.each(function(){ +var _f6=$.data(this,"tree"); +var _f7; +if(_f6){ +_f7=$.extend(_f6.options,_f4); +_f6.options=_f7; +}else{ +_f7=$.extend({},$.fn.tree.defaults,$.fn.tree.parseOptions(this),_f4); +$.data(this,"tree",{options:_f7,tree:_1(this),data:[]}); +var _f8=$.fn.tree.parseData(this); +if(_f8.length){ +_4d(this,this,_f8); +} +} +_4(this); +if(_f7.data){ +_4d(this,this,$.extend(true,[],_f7.data)); +} +_6b(this,this); +}); +}; +$.fn.tree.methods={options:function(jq){ +return $.data(jq[0],"tree").options; +},loadData:function(jq,_f9){ +return jq.each(function(){ +_4d(this,this,_f9); +}); +},getNode:function(jq,_fa){ +return _c(jq[0],_fa); +},getData:function(jq,_fb){ +return _c7(jq[0],_fb); +},reload:function(jq,_fc){ +return jq.each(function(){ +if(_fc){ +var _fd=$(_fc); +var hit=_fd.children("span.tree-hit"); +hit.removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_fd.next().remove(); +_75(this,_fc); +}else{ +$(this).empty(); +_6b(this,this); +} +}); +},getRoot:function(jq,_fe){ +return _af(jq[0],_fe); +},getRoots:function(jq){ +return _b3(jq[0]); +},getParent:function(jq,_ff){ +return _8c(jq[0],_ff); +},getChildren:function(jq,_100){ +return _4c(jq[0],_100); +},getChecked:function(jq,_101){ +return _be(jq[0],_101); +},getSelected:function(jq){ +return _c4(jq[0]); +},isLeaf:function(jq,_102){ +return _48(jq[0],_102); +},find:function(jq,id){ +return _ce(jq[0],id); +},select:function(jq,_103){ +return jq.each(function(){ +_db(this,_103); +}); +},check:function(jq,_104){ +return jq.each(function(){ +_34(this,_104,true); +}); +},uncheck:function(jq,_105){ +return jq.each(function(){ +_34(this,_105,false); +}); +},collapse:function(jq,_106){ +return jq.each(function(){ +_7c(this,_106); +}); +},expand:function(jq,_107){ +return jq.each(function(){ +_75(this,_107); +}); +},collapseAll:function(jq,_108){ +return jq.each(function(){ +_92(this,_108); +}); +},expandAll:function(jq,_109){ +return jq.each(function(){ +_84(this,_109); +}); +},expandTo:function(jq,_10a){ +return jq.each(function(){ +_88(this,_10a); +}); +},scrollTo:function(jq,_10b){ +return jq.each(function(){ +_8d(this,_10b); +}); +},toggle:function(jq,_10c){ +return jq.each(function(){ +_81(this,_10c); +}); +},append:function(jq,_10d){ +return jq.each(function(){ +_96(this,_10d); +}); +},insert:function(jq,_10e){ +return jq.each(function(){ +_9c(this,_10e); +}); +},remove:function(jq,_10f){ +return jq.each(function(){ +_a2(this,_10f); +}); +},pop:function(jq,_110){ +var node=jq.tree("getData",_110); +jq.tree("remove",_110); +return node; +},update:function(jq,_111){ +return jq.each(function(){ +_56(this,_111); +}); +},enableDnd:function(jq){ +return jq.each(function(){ +_11(this); +}); +},disableDnd:function(jq){ +return jq.each(function(){ +_d(this); +}); +},beginEdit:function(jq,_112){ +return jq.each(function(){ +_e2(this,_112); +}); +},endEdit:function(jq,_113){ +return jq.each(function(){ +_e9(this,_113); +}); +},cancelEdit:function(jq,_114){ +return jq.each(function(){ +_ef(this,_114); +}); +}}; +$.fn.tree.parseOptions=function(_115){ +var t=$(_115); +return $.extend({},$.parser.parseOptions(_115,["url","method",{checkbox:"boolean",cascadeCheck:"boolean",onlyLeafCheck:"boolean"},{animate:"boolean",lines:"boolean",dnd:"boolean"}])); +}; +$.fn.tree.parseData=function(_116){ +var data=[]; +_117(data,$(_116)); +return data; +function _117(aa,tree){ +tree.children("li").each(function(){ +var node=$(this); +var item=$.extend({},$.parser.parseOptions(this,["id","iconCls","state"]),{checked:(node.attr("checked")?true:undefined)}); +item.text=node.children("span").html(); +if(!item.text){ +item.text=node.html(); +} +var _118=node.children("ul"); +if(_118.length){ +item.children=[]; +_117(item.children,_118); +} +aa.push(item); +}); +}; +}; +var _119=1; +var _11a={render:function(_11b,ul,data){ +var opts=$.data(_11b,"tree").options; +var _11c=$(ul).prev("div.tree-node").find("span.tree-indent, span.tree-hit").length; +var cc=_11d(_11c,data); +$(ul).append(cc.join("")); +function _11d(_11e,_11f){ +var cc=[]; +for(var i=0;i<_11f.length;i++){ +var item=_11f[i]; +if(item.state!="open"&&item.state!="closed"){ +item.state="open"; +} +item.domId="_easyui_tree_"+_119++; +cc.push("
                  • "); +cc.push("
                    "); +for(var j=0;j<_11e;j++){ +cc.push(""); +} +var _120=false; +if(item.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(item.children&&item.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +_120=true; +} +} +if(opts.checkbox){ +if((!opts.onlyLeafCheck)||_120){ +cc.push(""); +} +} +cc.push(""+opts.formatter.call(_11b,item)+""); +cc.push("
                    "); +if(item.children&&item.children.length){ +var tmp=_11d(_11e+1,item.children); +cc.push("
                      "); +cc=cc.concat(tmp); +cc.push("
                    "); +} +cc.push("
                  • "); +} +return cc; +}; +}}; +$.fn.tree.defaults={url:null,method:"post",animate:false,checkbox:false,cascadeCheck:true,onlyLeafCheck:false,lines:false,dnd:false,data:null,queryParams:{},formatter:function(node){ +return node.text; +},loader:function(_121,_122,_123){ +var opts=$(this).tree("options"); +if(!opts.url){ +return false; +} +$.ajax({type:opts.method,url:opts.url,data:_121,dataType:"json",success:function(data){ +_122(data); +},error:function(){ +_123.apply(this,arguments); +}}); +},loadFilter:function(data,_124){ +return data; +},view:_11a,onBeforeLoad:function(node,_125){ +},onLoadSuccess:function(node,data){ +},onLoadError:function(){ +},onClick:function(node){ +},onDblClick:function(node){ +},onBeforeExpand:function(node){ +},onExpand:function(node){ +},onBeforeCollapse:function(node){ +},onCollapse:function(node){ +},onBeforeCheck:function(node,_126){ +},onCheck:function(node,_127){ +},onBeforeSelect:function(node){ +},onSelect:function(node){ +},onContextMenu:function(e,node){ +},onBeforeDrag:function(node){ +},onStartDrag:function(node){ +},onStopDrag:function(node){ +},onDragEnter:function(_128,_129){ +},onDragOver:function(_12a,_12b){ +},onDragLeave:function(_12c,_12d){ +},onBeforeDrop:function(_12e,_12f,_130){ +},onDrop:function(_131,_132,_133){ +},onBeforeEdit:function(node){ +},onAfterEdit:function(node){ +},onCancelEdit:function(node){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.treegrid.js b/assets/js/easy-ui/plugins/jquery.treegrid.js new file mode 100755 index 0000000000..f9cd79ad40 --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.treegrid.js @@ -0,0 +1,1157 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2){ +var _3=$.data(_2,"treegrid"); +var _4=_3.options; +$(_2).datagrid($.extend({},_4,{url:null,data:null,loader:function(){ +return false; +},onBeforeLoad:function(){ +return false; +},onLoadSuccess:function(){ +},onResizeColumn:function(_5,_6){ +_26(_2); +_4.onResizeColumn.call(_2,_5,_6); +},onBeforeSortColumn:function(_7,_8){ +if(_4.onBeforeSortColumn.call(_2,_7,_8)==false){ +return false; +} +},onSortColumn:function(_9,_a){ +_4.sortName=_9; +_4.sortOrder=_a; +if(_4.remoteSort){ +_25(_2); +}else{ +var _b=$(_2).treegrid("getData"); +_3f(_2,0,_b); +} +_4.onSortColumn.call(_2,_9,_a); +},onBeforeEdit:function(_c,_d){ +if(_4.onBeforeEdit.call(_2,_d)==false){ +return false; +} +},onAfterEdit:function(_e,_f,_10){ +_4.onAfterEdit.call(_2,_f,_10); +},onCancelEdit:function(_11,row){ +_4.onCancelEdit.call(_2,row); +},onBeforeSelect:function(_12){ +if(_4.onBeforeSelect.call(_2,_47(_2,_12))==false){ +return false; +} +},onSelect:function(_13){ +_4.onSelect.call(_2,_47(_2,_13)); +},onBeforeUnselect:function(_14){ +if(_4.onBeforeUnselect.call(_2,_47(_2,_14))==false){ +return false; +} +},onUnselect:function(_15){ +_4.onUnselect.call(_2,_47(_2,_15)); +},onBeforeCheck:function(_16){ +if(_4.onBeforeCheck.call(_2,_47(_2,_16))==false){ +return false; +} +},onCheck:function(_17){ +_4.onCheck.call(_2,_47(_2,_17)); +},onBeforeUncheck:function(_18){ +if(_4.onBeforeUncheck.call(_2,_47(_2,_18))==false){ +return false; +} +},onUncheck:function(_19){ +_4.onUncheck.call(_2,_47(_2,_19)); +},onClickRow:function(_1a){ +_4.onClickRow.call(_2,_47(_2,_1a)); +},onDblClickRow:function(_1b){ +_4.onDblClickRow.call(_2,_47(_2,_1b)); +},onClickCell:function(_1c,_1d){ +_4.onClickCell.call(_2,_1d,_47(_2,_1c)); +},onDblClickCell:function(_1e,_1f){ +_4.onDblClickCell.call(_2,_1f,_47(_2,_1e)); +},onRowContextMenu:function(e,_20){ +_4.onContextMenu.call(_2,e,_47(_2,_20)); +}})); +if(!_4.columns){ +var _21=$.data(_2,"datagrid").options; +_4.columns=_21.columns; +_4.frozenColumns=_21.frozenColumns; +} +_3.dc=$.data(_2,"datagrid").dc; +if(_4.pagination){ +var _22=$(_2).datagrid("getPager"); +_22.pagination({pageNumber:_4.pageNumber,pageSize:_4.pageSize,pageList:_4.pageList,onSelectPage:function(_23,_24){ +_4.pageNumber=_23; +_4.pageSize=_24; +_25(_2); +}}); +_4.pageSize=_22.pagination("options").pageSize; +} +}; +function _26(_27,_28){ +var _29=$.data(_27,"datagrid").options; +var dc=$.data(_27,"datagrid").dc; +if(!dc.body1.is(":empty")&&(!_29.nowrap||_29.autoRowHeight)){ +if(_28!=undefined){ +var _2a=_2b(_27,_28); +for(var i=0;i<_2a.length;i++){ +_2c(_2a[i][_29.idField]); +} +} +} +$(_27).datagrid("fixRowHeight",_28); +function _2c(_2d){ +var tr1=_29.finder.getTr(_27,_2d,"body",1); +var tr2=_29.finder.getTr(_27,_2d,"body",2); +tr1.css("height",""); +tr2.css("height",""); +var _2e=Math.max(tr1.height(),tr2.height()); +tr1.css("height",_2e); +tr2.css("height",_2e); +}; +}; +function _2f(_30){ +var dc=$.data(_30,"datagrid").dc; +var _31=$.data(_30,"treegrid").options; +if(!_31.rownumbers){ +return; +} +dc.body1.find("div.datagrid-cell-rownumber").each(function(i){ +$(this).html(i+1); +}); +}; +function _32(_33){ +return function(e){ +$.fn.datagrid.defaults.rowEvents[_33?"mouseover":"mouseout"](e); +var tt=$(e.target); +var fn=_33?"addClass":"removeClass"; +if(tt.hasClass("tree-hit")){ +tt.hasClass("tree-expanded")?tt[fn]("tree-expanded-hover"):tt[fn]("tree-collapsed-hover"); +} +}; +}; +function _34(e){ +var tt=$(e.target); +if(tt.hasClass("tree-hit")){ +var tr=tt.closest("tr.datagrid-row"); +var _35=tr.closest("div.datagrid-view").children(".datagrid-f")[0]; +_36(_35,tr.attr("node-id")); +}else{ +$.fn.datagrid.defaults.rowEvents.click(e); +} +}; +function _37(_38,_39){ +var _3a=$.data(_38,"treegrid").options; +var tr1=_3a.finder.getTr(_38,_39,"body",1); +var tr2=_3a.finder.getTr(_38,_39,"body",2); +var _3b=$(_38).datagrid("getColumnFields",true).length+(_3a.rownumbers?1:0); +var _3c=$(_38).datagrid("getColumnFields",false).length; +_3d(tr1,_3b); +_3d(tr2,_3c); +function _3d(tr,_3e){ +$(""+""+"
                    "+""+"").insertAfter(tr); +}; +}; +function _3f(_40,_41,_42,_43){ +var _44=$.data(_40,"treegrid"); +var _45=_44.options; +var dc=_44.dc; +_42=_45.loadFilter.call(_40,_42,_41); +var _46=_47(_40,_41); +if(_46){ +var _48=_45.finder.getTr(_40,_41,"body",1); +var _49=_45.finder.getTr(_40,_41,"body",2); +var cc1=_48.next("tr.treegrid-tr-tree").children("td").children("div"); +var cc2=_49.next("tr.treegrid-tr-tree").children("td").children("div"); +if(!_43){ +_46.children=[]; +} +}else{ +var cc1=dc.body1; +var cc2=dc.body2; +if(!_43){ +_44.data=[]; +} +} +if(!_43){ +cc1.empty(); +cc2.empty(); +} +if(_45.view.onBeforeRender){ +_45.view.onBeforeRender.call(_45.view,_40,_41,_42); +} +_45.view.render.call(_45.view,_40,cc1,true); +_45.view.render.call(_45.view,_40,cc2,false); +if(_45.showFooter){ +_45.view.renderFooter.call(_45.view,_40,dc.footer1,true); +_45.view.renderFooter.call(_45.view,_40,dc.footer2,false); +} +if(_45.view.onAfterRender){ +_45.view.onAfterRender.call(_45.view,_40); +} +if(!_41&&_45.pagination){ +var _4a=$.data(_40,"treegrid").total; +var _4b=$(_40).datagrid("getPager"); +if(_4b.pagination("options").total!=_4a){ +_4b.pagination({total:_4a}); +} +} +_26(_40); +_2f(_40); +$(_40).treegrid("showLines"); +$(_40).treegrid("setSelectionState"); +$(_40).treegrid("autoSizeColumn"); +_45.onLoadSuccess.call(_40,_46,_42); +}; +function _25(_4c,_4d,_4e,_4f,_50){ +var _51=$.data(_4c,"treegrid").options; +var _52=$(_4c).datagrid("getPanel").find("div.datagrid-body"); +if(_4e){ +_51.queryParams=_4e; +} +var _53=$.extend({},_51.queryParams); +if(_51.pagination){ +$.extend(_53,{page:_51.pageNumber,rows:_51.pageSize}); +} +if(_51.sortName){ +$.extend(_53,{sort:_51.sortName,order:_51.sortOrder}); +} +var row=_47(_4c,_4d); +if(_51.onBeforeLoad.call(_4c,row,_53)==false){ +return; +} +var _54=_52.find("tr[node-id=\""+_4d+"\"] span.tree-folder"); +_54.addClass("tree-loading"); +$(_4c).treegrid("loading"); +var _55=_51.loader.call(_4c,_53,function(_56){ +_54.removeClass("tree-loading"); +$(_4c).treegrid("loaded"); +_3f(_4c,_4d,_56,_4f); +if(_50){ +_50(); +} +},function(){ +_54.removeClass("tree-loading"); +$(_4c).treegrid("loaded"); +_51.onLoadError.apply(_4c,arguments); +if(_50){ +_50(); +} +}); +if(_55==false){ +_54.removeClass("tree-loading"); +$(_4c).treegrid("loaded"); +} +}; +function _57(_58){ +var _59=_5a(_58); +if(_59.length){ +return _59[0]; +}else{ +return null; +} +}; +function _5a(_5b){ +return $.data(_5b,"treegrid").data; +}; +function _5c(_5d,_5e){ +var row=_47(_5d,_5e); +if(row._parentId){ +return _47(_5d,row._parentId); +}else{ +return null; +} +}; +function _2b(_5f,_60){ +var _61=$.data(_5f,"treegrid").options; +var _62=$(_5f).datagrid("getPanel").find("div.datagrid-view2 div.datagrid-body"); +var _63=[]; +if(_60){ +_64(_60); +}else{ +var _65=_5a(_5f); +for(var i=0;i<_65.length;i++){ +_63.push(_65[i]); +_64(_65[i][_61.idField]); +} +} +function _64(_66){ +var _67=_47(_5f,_66); +if(_67&&_67.children){ +for(var i=0,len=_67.children.length;i").insertBefore(_95); +if(hit.prev().length){ +hit.prev().remove(); +} +} +} +_3f(_91,_92.parent,_92.data,true); +}; +function _96(_97,_98){ +var ref=_98.before||_98.after; +var _99=$.data(_97,"treegrid").options; +var _9a=_5c(_97,ref); +_90(_97,{parent:(_9a?_9a[_99.idField]:null),data:[_98.data]}); +var _9b=_9a?_9a.children:$(_97).treegrid("getRoots"); +for(var i=0;i<_9b.length;i++){ +if(_9b[i][_99.idField]==ref){ +var _9c=_9b[_9b.length-1]; +_9b.splice(_98.before?i:(i+1),0,_9c); +_9b.splice(_9b.length-1,1); +break; +} +} +_9d(true); +_9d(false); +_2f(_97); +$(_97).treegrid("showLines"); +function _9d(_9e){ +var _9f=_9e?1:2; +var tr=_99.finder.getTr(_97,_98.data[_99.idField],"body",_9f); +var _a0=tr.closest("table.datagrid-btable"); +tr=tr.parent().children(); +var _a1=_99.finder.getTr(_97,ref,"body",_9f); +if(_98.before){ +tr.insertBefore(_a1); +}else{ +var sub=_a1.next("tr.treegrid-tr-tree"); +tr.insertAfter(sub.length?sub:_a1); +} +_a0.remove(); +}; +}; +function _a2(_a3,_a4){ +var _a5=$.data(_a3,"treegrid"); +$(_a3).datagrid("deleteRow",_a4); +_2f(_a3); +_a5.total-=1; +$(_a3).datagrid("getPager").pagination("refresh",{total:_a5.total}); +$(_a3).treegrid("showLines"); +}; +function _a6(_a7){ +var t=$(_a7); +var _a8=t.treegrid("options"); +if(_a8.lines){ +t.treegrid("getPanel").addClass("tree-lines"); +}else{ +t.treegrid("getPanel").removeClass("tree-lines"); +return; +} +t.treegrid("getPanel").find("span.tree-indent").removeClass("tree-line tree-join tree-joinbottom"); +t.treegrid("getPanel").find("div.datagrid-cell").removeClass("tree-node-last tree-root-first tree-root-one"); +var _a9=t.treegrid("getRoots"); +if(_a9.length>1){ +_aa(_a9[0]).addClass("tree-root-first"); +}else{ +if(_a9.length==1){ +_aa(_a9[0]).addClass("tree-root-one"); +} +} +_ab(_a9); +_ac(_a9); +function _ab(_ad){ +$.map(_ad,function(_ae){ +if(_ae.children&&_ae.children.length){ +_ab(_ae.children); +}else{ +var _af=_aa(_ae); +_af.find(".tree-icon").prev().addClass("tree-join"); +} +}); +if(_ad.length){ +var _b0=_aa(_ad[_ad.length-1]); +_b0.addClass("tree-node-last"); +_b0.find(".tree-join").removeClass("tree-join").addClass("tree-joinbottom"); +} +}; +function _ac(_b1){ +$.map(_b1,function(_b2){ +if(_b2.children&&_b2.children.length){ +_ac(_b2.children); +} +}); +for(var i=0;i<_b1.length-1;i++){ +var _b3=_b1[i]; +var _b4=t.treegrid("getLevel",_b3[_a8.idField]); +var tr=_a8.finder.getTr(_a7,_b3[_a8.idField]); +var cc=tr.next().find("tr.datagrid-row td[field=\""+_a8.treeField+"\"] div.datagrid-cell"); +cc.find("span:eq("+(_b4-1)+")").addClass("tree-line"); +} +}; +function _aa(_b5){ +var tr=_a8.finder.getTr(_a7,_b5[_a8.idField]); +var _b6=tr.find("td[field=\""+_a8.treeField+"\"] div.datagrid-cell"); +return _b6; +}; +}; +$.fn.treegrid=function(_b7,_b8){ +if(typeof _b7=="string"){ +var _b9=$.fn.treegrid.methods[_b7]; +if(_b9){ +return _b9(this,_b8); +}else{ +return this.datagrid(_b7,_b8); +} +} +_b7=_b7||{}; +return this.each(function(){ +var _ba=$.data(this,"treegrid"); +if(_ba){ +$.extend(_ba.options,_b7); +}else{ +_ba=$.data(this,"treegrid",{options:$.extend({},$.fn.treegrid.defaults,$.fn.treegrid.parseOptions(this),_b7),data:[]}); +} +_1(this); +if(_ba.options.data){ +$(this).treegrid("loadData",_ba.options.data); +} +_25(this); +}); +}; +$.fn.treegrid.methods={options:function(jq){ +return $.data(jq[0],"treegrid").options; +},resize:function(jq,_bb){ +return jq.each(function(){ +$(this).datagrid("resize",_bb); +}); +},fixRowHeight:function(jq,_bc){ +return jq.each(function(){ +_26(this,_bc); +}); +},loadData:function(jq,_bd){ +return jq.each(function(){ +_3f(this,_bd.parent,_bd); +}); +},load:function(jq,_be){ +return jq.each(function(){ +$(this).treegrid("options").pageNumber=1; +$(this).treegrid("getPager").pagination({pageNumber:1}); +$(this).treegrid("reload",_be); +}); +},reload:function(jq,id){ +return jq.each(function(){ +var _bf=$(this).treegrid("options"); +var _c0={}; +if(typeof id=="object"){ +_c0=id; +}else{ +_c0=$.extend({},_bf.queryParams); +_c0.id=id; +} +if(_c0.id){ +var _c1=$(this).treegrid("find",_c0.id); +if(_c1.children){ +_c1.children.splice(0,_c1.children.length); +} +_bf.queryParams=_c0; +var tr=_bf.finder.getTr(this,_c0.id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.find("span.tree-hit").removeClass("tree-expanded tree-expanded-hover").addClass("tree-collapsed"); +_78(this,_c0.id); +}else{ +_25(this,null,_c0); +} +}); +},reloadFooter:function(jq,_c2){ +return jq.each(function(){ +var _c3=$.data(this,"treegrid").options; +var dc=$.data(this,"datagrid").dc; +if(_c2){ +$.data(this,"treegrid").footer=_c2; +} +if(_c3.showFooter){ +_c3.view.renderFooter.call(_c3.view,this,dc.footer1,true); +_c3.view.renderFooter.call(_c3.view,this,dc.footer2,false); +if(_c3.view.onAfterRender){ +_c3.view.onAfterRender.call(_c3.view,this); +} +$(this).treegrid("fixRowHeight"); +} +}); +},getData:function(jq){ +return $.data(jq[0],"treegrid").data; +},getFooterRows:function(jq){ +return $.data(jq[0],"treegrid").footer; +},getRoot:function(jq){ +return _57(jq[0]); +},getRoots:function(jq){ +return _5a(jq[0]); +},getParent:function(jq,id){ +return _5c(jq[0],id); +},getChildren:function(jq,id){ +return _2b(jq[0],id); +},getLevel:function(jq,id){ +return _69(jq[0],id); +},find:function(jq,id){ +return _47(jq[0],id); +},isLeaf:function(jq,id){ +var _c4=$.data(jq[0],"treegrid").options; +var tr=_c4.finder.getTr(jq[0],id); +var hit=tr.find("span.tree-hit"); +return hit.length==0; +},select:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("selectRow",id); +}); +},unselect:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("unselectRow",id); +}); +},collapse:function(jq,id){ +return jq.each(function(){ +_74(this,id); +}); +},expand:function(jq,id){ +return jq.each(function(){ +_78(this,id); +}); +},toggle:function(jq,id){ +return jq.each(function(){ +_36(this,id); +}); +},collapseAll:function(jq,id){ +return jq.each(function(){ +_82(this,id); +}); +},expandAll:function(jq,id){ +return jq.each(function(){ +_87(this,id); +}); +},expandTo:function(jq,id){ +return jq.each(function(){ +_8c(this,id); +}); +},append:function(jq,_c5){ +return jq.each(function(){ +_90(this,_c5); +}); +},insert:function(jq,_c6){ +return jq.each(function(){ +_96(this,_c6); +}); +},remove:function(jq,id){ +return jq.each(function(){ +_a2(this,id); +}); +},pop:function(jq,id){ +var row=jq.treegrid("find",id); +jq.treegrid("remove",id); +return row; +},refresh:function(jq,id){ +return jq.each(function(){ +var _c7=$.data(this,"treegrid").options; +_c7.view.refreshRow.call(_c7.view,this,id); +}); +},update:function(jq,_c8){ +return jq.each(function(){ +var _c9=$.data(this,"treegrid").options; +_c9.view.updateRow.call(_c9.view,this,_c8.id,_c8.row); +}); +},beginEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("beginEdit",id); +$(this).treegrid("fixRowHeight",id); +}); +},endEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("endEdit",id); +}); +},cancelEdit:function(jq,id){ +return jq.each(function(){ +$(this).datagrid("cancelEdit",id); +}); +},showLines:function(jq){ +return jq.each(function(){ +_a6(this); +}); +}}; +$.fn.treegrid.parseOptions=function(_ca){ +return $.extend({},$.fn.datagrid.parseOptions(_ca),$.parser.parseOptions(_ca,["treeField",{animate:"boolean"}])); +}; +var _cb=$.extend({},$.fn.datagrid.defaults.view,{render:function(_cc,_cd,_ce){ +var _cf=$.data(_cc,"treegrid").options; +var _d0=$(_cc).datagrid("getColumnFields",_ce); +var _d1=$.data(_cc,"datagrid").rowIdPrefix; +if(_ce){ +if(!(_cf.rownumbers||(_cf.frozenColumns&&_cf.frozenColumns.length))){ +return; +} +} +var _d2=this; +if(this.treeNodes&&this.treeNodes.length){ +var _d3=_d4(_ce,this.treeLevel,this.treeNodes); +$(_cd).append(_d3.join("")); +} +function _d4(_d5,_d6,_d7){ +var _d8=$(_cc).treegrid("getParent",_d7[0][_cf.idField]); +var _d9=(_d8?_d8.children.length:$(_cc).treegrid("getRoots").length)-_d7.length; +var _da=[""]; +for(var i=0;i<_d7.length;i++){ +var row=_d7[i]; +if(row.state!="open"&&row.state!="closed"){ +row.state="open"; +} +var css=_cf.rowStyler?_cf.rowStyler.call(_cc,row):""; +var _db=""; +var _dc=""; +if(typeof css=="string"){ +_dc=css; +}else{ +if(css){ +_db=css["class"]||""; +_dc=css["style"]||""; +} +} +var cls="class=\"datagrid-row "+(_d9++%2&&_cf.striped?"datagrid-row-alt ":" ")+_db+"\""; +var _dd=_dc?"style=\""+_dc+"\"":""; +var _de=_d1+"-"+(_d5?1:2)+"-"+row[_cf.idField]; +_da.push(""); +_da=_da.concat(_d2.renderRow.call(_d2,_cc,_d0,_d5,_d6,row)); +_da.push(""); +if(row.children&&row.children.length){ +var tt=_d4(_d5,_d6+1,row.children); +var v=row.state=="closed"?"none":"block"; +_da.push(""); +} +} +_da.push("
                    "); +_da=_da.concat(tt); +_da.push("
                    "); +return _da; +}; +},renderFooter:function(_df,_e0,_e1){ +var _e2=$.data(_df,"treegrid").options; +var _e3=$.data(_df,"treegrid").footer||[]; +var _e4=$(_df).datagrid("getColumnFields",_e1); +var _e5=[""]; +for(var i=0;i<_e3.length;i++){ +var row=_e3[i]; +row[_e2.idField]=row[_e2.idField]||("foot-row-id"+i); +_e5.push(""); +_e5.push(this.renderRow.call(this,_df,_e4,_e1,0,row)); +_e5.push(""); +} +_e5.push("
                    "); +$(_e0).html(_e5.join("")); +},renderRow:function(_e6,_e7,_e8,_e9,row){ +var _ea=$.data(_e6,"treegrid").options; +var cc=[]; +if(_e8&&_ea.rownumbers){ +cc.push("
                    0
                    "); +} +for(var i=0;i<_e7.length;i++){ +var _eb=_e7[i]; +var col=$(_e6).datagrid("getColumnOption",_eb); +if(col){ +var css=col.styler?(col.styler(row[_eb],row)||""):""; +var _ec=""; +var _ed=""; +if(typeof css=="string"){ +_ed=css; +}else{ +if(cc){ +_ec=css["class"]||""; +_ed=css["style"]||""; +} +} +var cls=_ec?"class=\""+_ec+"\"":""; +var _ee=col.hidden?"style=\"display:none;"+_ed+"\"":(_ed?"style=\""+_ed+"\"":""); +cc.push(""); +var _ee=""; +if(!col.checkbox){ +if(col.align){ +_ee+="text-align:"+col.align+";"; +} +if(!_ea.nowrap){ +_ee+="white-space:normal;height:auto;"; +}else{ +if(_ea.autoRowHeight){ +_ee+="height:auto;"; +} +} +} +cc.push("
                    "); +if(col.checkbox){ +if(row.checked){ +cc.push(""); +}else{ +var val=null; +if(col.formatter){ +val=col.formatter(row[_eb],row); +}else{ +val=row[_eb]; +} +if(_eb==_ea.treeField){ +for(var j=0;j<_e9;j++){ +cc.push(""); +} +if(row.state=="closed"){ +cc.push(""); +cc.push(""); +}else{ +if(row.children&&row.children.length){ +cc.push(""); +cc.push(""); +}else{ +cc.push(""); +cc.push(""); +} +} +cc.push(""+val+""); +}else{ +cc.push(val); +} +} +cc.push("
                    "); +cc.push(""); +} +} +return cc.join(""); +},refreshRow:function(_ef,id){ +this.updateRow.call(this,_ef,id,{}); +},updateRow:function(_f0,id,row){ +var _f1=$.data(_f0,"treegrid").options; +var _f2=$(_f0).treegrid("find",id); +$.extend(_f2,row); +var _f3=$(_f0).treegrid("getLevel",id)-1; +var _f4=_f1.rowStyler?_f1.rowStyler.call(_f0,_f2):""; +var _f5=$.data(_f0,"datagrid").rowIdPrefix; +var _f6=_f2[_f1.idField]; +function _f7(_f8){ +var _f9=$(_f0).treegrid("getColumnFields",_f8); +var tr=_f1.finder.getTr(_f0,id,"body",(_f8?1:2)); +var _fa=tr.find("div.datagrid-cell-rownumber").html(); +var _fb=tr.find("div.datagrid-cell-check input[type=checkbox]").is(":checked"); +tr.html(this.renderRow(_f0,_f9,_f8,_f3,_f2)); +tr.attr("style",_f4||""); +tr.find("div.datagrid-cell-rownumber").html(_fa); +if(_fb){ +tr.find("div.datagrid-cell-check input[type=checkbox]")._propAttr("checked",true); +} +if(_f6!=id){ +tr.attr("id",_f5+"-"+(_f8?1:2)+"-"+_f6); +tr.attr("node-id",_f6); +} +}; +_f7.call(this,true); +_f7.call(this,false); +$(_f0).treegrid("fixRowHeight",id); +},deleteRow:function(_fc,id){ +var _fd=$.data(_fc,"treegrid").options; +var tr=_fd.finder.getTr(_fc,id); +tr.next("tr.treegrid-tr-tree").remove(); +tr.remove(); +var _fe=del(id); +if(_fe){ +if(_fe.children.length==0){ +tr=_fd.finder.getTr(_fc,_fe[_fd.idField]); +tr.next("tr.treegrid-tr-tree").remove(); +var _ff=tr.children("td[field=\""+_fd.treeField+"\"]").children("div.datagrid-cell"); +_ff.find(".tree-icon").removeClass("tree-folder").addClass("tree-file"); +_ff.find(".tree-hit").remove(); +$("").prependTo(_ff); +} +} +function del(id){ +var cc; +var _100=$(_fc).treegrid("getParent",id); +if(_100){ +cc=_100.children; +}else{ +cc=$(_fc).treegrid("getData"); +} +for(var i=0;ib?1:-1); +}; +r=_10b(r1[sn],r2[sn])*(so=="asc"?1:-1); +if(r!=0){ +return r; +} +} +return r; +}); +for(var i=0;i=_3d[0]&&len<=_3d[1]; +},message:"Please enter a value between {0} and {1}."},remote:{validator:function(_3e,_3f){ +var _40={}; +_40[_3f[1]]=_3e; +var _41=$.ajax({url:_3f[0],dataType:"json",data:_40,async:false,cache:false,type:"post"}).responseText; +return _41=="true"; +},message:"Please fix this field."}},onBeforeValidate:function(){ +},onValidate:function(_42){ +}}; +})(jQuery); + diff --git a/assets/js/easy-ui/plugins/jquery.window.js b/assets/js/easy-ui/plugins/jquery.window.js new file mode 100755 index 0000000000..e3f28e9f3d --- /dev/null +++ b/assets/js/easy-ui/plugins/jquery.window.js @@ -0,0 +1,261 @@ +/** + * jQuery EasyUI 1.4.1 + * + * Copyright (c) 2009-2014 www.jeasyui.com. All rights reserved. + * + * Licensed under the GPL license: http://www.gnu.org/licenses/gpl.txt + * To use it on other terms please contact us at info@jeasyui.com + * + */ +(function($){ +function _1(_2,_3){ +var _4=$.data(_2,"window"); +if(_3){ +if(_3.left!=null){ +_4.options.left=_3.left; +} +if(_3.top!=null){ +_4.options.top=_3.top; +} +} +$(_2).panel("move",_4.options); +if(_4.shadow){ +_4.shadow.css({left:_4.options.left,top:_4.options.top}); +} +}; +function _5(_6,_7){ +var _8=$.data(_6,"window").options; +var pp=$(_6).window("panel"); +var _9=pp._outerWidth(); +if(_8.inline){ +var _a=pp.parent(); +_8.left=Math.ceil((_a.width()-_9)/2+_a.scrollLeft()); +}else{ +_8.left=Math.ceil(($(window)._outerWidth()-_9)/2+$(document).scrollLeft()); +} +if(_7){ +_1(_6); +} +}; +function _b(_c,_d){ +var _e=$.data(_c,"window").options; +var pp=$(_c).window("panel"); +var _f=pp._outerHeight(); +if(_e.inline){ +var _10=pp.parent(); +_e.top=Math.ceil((_10.height()-_f)/2+_10.scrollTop()); +}else{ +_e.top=Math.ceil(($(window)._outerHeight()-_f)/2+$(document).scrollTop()); +} +if(_d){ +_1(_c); +} +}; +function _11(_12){ +var _13=$.data(_12,"window"); +var _14=_13.options; +var win=$(_12).panel($.extend({},_13.options,{border:false,doSize:true,closed:true,cls:"window",headerCls:"window-header",bodyCls:"window-body "+(_14.noheader?"window-body-noheader":""),onBeforeDestroy:function(){ +if(_14.onBeforeDestroy.call(_12)==false){ +return false; +} +if(_13.shadow){ +_13.shadow.remove(); +} +if(_13.mask){ +_13.mask.remove(); +} +},onClose:function(){ +if(_13.shadow){ +_13.shadow.hide(); +} +if(_13.mask){ +_13.mask.hide(); +} +_14.onClose.call(_12); +},onOpen:function(){ +if(_13.mask){ +_13.mask.css({display:"block",zIndex:$.fn.window.defaults.zIndex++}); +} +if(_13.shadow){ +_13.shadow.css({display:"block",zIndex:$.fn.window.defaults.zIndex++,left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()}); +} +_13.window.css("z-index",$.fn.window.defaults.zIndex++); +_14.onOpen.call(_12); +},onResize:function(_15,_16){ +var _17=$(this).panel("options"); +$.extend(_14,{width:_17.width,height:_17.height,left:_17.left,top:_17.top}); +if(_13.shadow){ +_13.shadow.css({left:_14.left,top:_14.top,width:_13.window._outerWidth(),height:_13.window._outerHeight()}); +} +_14.onResize.call(_12,_15,_16); +},onMinimize:function(){ +if(_13.shadow){ +_13.shadow.hide(); +} +if(_13.mask){ +_13.mask.hide(); +} +_13.options.onMinimize.call(_12); +},onBeforeCollapse:function(){ +if(_14.onBeforeCollapse.call(_12)==false){ +return false; +} +if(_13.shadow){ +_13.shadow.hide(); +} +},onExpand:function(){ +if(_13.shadow){ +_13.shadow.show(); +} +_14.onExpand.call(_12); +}})); +_13.window=win.panel("panel"); +if(_13.mask){ +_13.mask.remove(); +} +if(_14.modal==true){ +_13.mask=$("
                    ").insertAfter(_13.window); +_13.mask.css({width:(_14.inline?_13.mask.parent().width():_18().width),height:(_14.inline?_13.mask.parent().height():_18().height),display:"none"}); +} +if(_13.shadow){ +_13.shadow.remove(); +} +if(_14.shadow==true){ +_13.shadow=$("
                    ").insertAfter(_13.window); +_13.shadow.css({display:"none"}); +} +if(_14.left==null){ +_5(_12); +} +if(_14.top==null){ +_b(_12); +} +_1(_12); +if(!_14.closed){ +win.window("open"); +} +}; +function _19(_1a){ +var _1b=$.data(_1a,"window"); +_1b.window.draggable({handle:">div.panel-header>div.panel-title",disabled:_1b.options.draggable==false,onStartDrag:function(e){ +if(_1b.mask){ +_1b.mask.css("z-index",$.fn.window.defaults.zIndex++); +} +if(_1b.shadow){ +_1b.shadow.css("z-index",$.fn.window.defaults.zIndex++); +} +_1b.window.css("z-index",$.fn.window.defaults.zIndex++); +if(!_1b.proxy){ +_1b.proxy=$("
                    ").insertAfter(_1b.window); +} +_1b.proxy.css({display:"none",zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_1b.proxy._outerWidth(_1b.window._outerWidth()); +_1b.proxy._outerHeight(_1b.window._outerHeight()); +setTimeout(function(){ +if(_1b.proxy){ +_1b.proxy.show(); +} +},500); +},onDrag:function(e){ +_1b.proxy.css({display:"block",left:e.data.left,top:e.data.top}); +return false; +},onStopDrag:function(e){ +_1b.options.left=e.data.left; +_1b.options.top=e.data.top; +$(_1a).window("move"); +_1b.proxy.remove(); +_1b.proxy=null; +}}); +_1b.window.resizable({disabled:_1b.options.resizable==false,onStartResize:function(e){ +if(_1b.pmask){ +_1b.pmask.remove(); +} +_1b.pmask=$("
                    ").insertAfter(_1b.window); +_1b.pmask.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top,width:_1b.window._outerWidth(),height:_1b.window._outerHeight()}); +if(_1b.proxy){ +_1b.proxy.remove(); +} +_1b.proxy=$("
                    ").insertAfter(_1b.window); +_1b.proxy.css({zIndex:$.fn.window.defaults.zIndex++,left:e.data.left,top:e.data.top}); +_1b.proxy._outerWidth(e.data.width)._outerHeight(e.data.height); +},onResize:function(e){ +_1b.proxy.css({left:e.data.left,top:e.data.top}); +_1b.proxy._outerWidth(e.data.width); +_1b.proxy._outerHeight(e.data.height); +return false; +},onStopResize:function(e){ +$(_1a).window("resize",e.data); +_1b.pmask.remove(); +_1b.pmask=null; +_1b.proxy.remove(); +_1b.proxy=null; +}}); +}; +function _18(){ +if(document.compatMode=="BackCompat"){ +return {width:Math.max(document.body.scrollWidth,document.body.clientWidth),height:Math.max(document.body.scrollHeight,document.body.clientHeight)}; +}else{ +return {width:Math.max(document.documentElement.scrollWidth,document.documentElement.clientWidth),height:Math.max(document.documentElement.scrollHeight,document.documentElement.clientHeight)}; +} +}; +$(window).resize(function(){ +$("body>div.window-mask").css({width:$(window)._outerWidth(),height:$(window)._outerHeight()}); +setTimeout(function(){ +$("body>div.window-mask").css({width:_18().width,height:_18().height}); +},50); +}); +$.fn.window=function(_1c,_1d){ +if(typeof _1c=="string"){ +var _1e=$.fn.window.methods[_1c]; +if(_1e){ +return _1e(this,_1d); +}else{ +return this.panel(_1c,_1d); +} +} +_1c=_1c||{}; +return this.each(function(){ +var _1f=$.data(this,"window"); +if(_1f){ +$.extend(_1f.options,_1c); +}else{ +_1f=$.data(this,"window",{options:$.extend({},$.fn.window.defaults,$.fn.window.parseOptions(this),_1c)}); +if(!_1f.options.inline){ +document.body.appendChild(this); +} +} +_11(this); +_19(this); +}); +}; +$.fn.window.methods={options:function(jq){ +var _20=jq.panel("options"); +var _21=$.data(jq[0],"window").options; +return $.extend(_21,{closed:_20.closed,collapsed:_20.collapsed,minimized:_20.minimized,maximized:_20.maximized}); +},window:function(jq){ +return $.data(jq[0],"window").window; +},move:function(jq,_22){ +return jq.each(function(){ +_1(this,_22); +}); +},hcenter:function(jq){ +return jq.each(function(){ +_5(this,true); +}); +},vcenter:function(jq){ +return jq.each(function(){ +_b(this,true); +}); +},center:function(jq){ +return jq.each(function(){ +_5(this); +_b(this); +_1(this); +}); +}}; +$.fn.window.parseOptions=function(_23){ +return $.extend({},$.fn.panel.parseOptions(_23),$.parser.parseOptions(_23,[{draggable:"boolean",resizable:"boolean",shadow:"boolean",modal:"boolean",inline:"boolean"}])); +}; +$.fn.window.defaults=$.extend({},$.fn.panel.defaults,{zIndex:9000,draggable:true,resizable:true,shadow:true,modal:false,inline:false,title:"New Window",collapsible:true,minimizable:true,maximizable:true,closable:true,closed:false}); +})(jQuery); + diff --git a/assets/js/easy-ui/themes/black/accordion.css b/assets/js/easy-ui/themes/black/accordion.css new file mode 100755 index 0000000000..a0f6ddc3d2 --- /dev/null +++ b/assets/js/easy-ui/themes/black/accordion.css @@ -0,0 +1,41 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #666; + border-color: #000; +} +.accordion .accordion-header { + background: #3d3d3d; + filter: none; +} +.accordion .accordion-header-selected { + background: #0052A3; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/calendar.css b/assets/js/easy-ui/themes/black/calendar.css new file mode 100755 index 0000000000..e862e22e58 --- /dev/null +++ b/assets/js/easy-ui/themes/black/calendar.css @@ -0,0 +1,197 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #ffffff; +} +.calendar-day { + color: #fff; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #000; +} +.calendar { + border-color: #000; +} +.calendar-header { + background: #3d3d3d; +} +.calendar-body, +.calendar-menu { + background: #666; +} +.calendar-body th { + background: #555; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #777; + color: #fff; +} +.calendar-hover { + border: 1px solid #555; + padding: 0; +} +.calendar-selected { + background-color: #0052A3; + color: #fff; + border: 1px solid #00458a; + padding: 0; +} diff --git a/assets/js/easy-ui/themes/black/combo.css b/assets/js/easy-ui/themes/black/combo.css new file mode 100755 index 0000000000..ca0e46181d --- /dev/null +++ b/assets/js/easy-ui/themes/black/combo.css @@ -0,0 +1,60 @@ +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #666; +} +.combo { + border-color: #000; + background-color: #fff; +} +.combo-arrow { + background-color: #3d3d3d; +} +.combo-arrow-hover { + background-color: #777; +} +.combo-arrow:hover { + background-color: #777; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/black/combobox.css b/assets/js/easy-ui/themes/black/combobox.css new file mode 100755 index 0000000000..284332e003 --- /dev/null +++ b/assets/js/easy-ui/themes/black/combobox.css @@ -0,0 +1,24 @@ +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #777; + color: #fff; +} +.combobox-item-selected { + background-color: #0052A3; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/datagrid.css b/assets/js/easy-ui/themes/black/datagrid.css new file mode 100755 index 0000000000..3f11ae20a0 --- /dev/null +++ b/assets/js/easy-ui/themes/black/datagrid.css @@ -0,0 +1,267 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #000; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #666 url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #444; + background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); +} +.datagrid-cell-rownumber { + color: #fff; +} +.datagrid-resize-proxy { + background: #cccccc; +} +.datagrid-mask { + background: #000; +} +.datagrid-mask-msg { + border-color: #000; +} +.datagrid-toolbar, +.datagrid-pager { + background: #555; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #222; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #222; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #fff; + border-collapse: separate; +} +.datagrid-row-alt { + background: #555; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #777; + color: #fff; + cursor: default; +} +.datagrid-row-selected { + background: #0052A3; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/assets/js/easy-ui/themes/black/datebox.css b/assets/js/easy-ui/themes/black/datebox.css new file mode 100755 index 0000000000..e368f64052 --- /dev/null +++ b/assets/js/easy-ui/themes/black/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #555; +} +.datebox-button a { + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/dialog.css b/assets/js/easy-ui/themes/black/dialog.css new file mode 100755 index 0000000000..ed832df727 --- /dev/null +++ b/assets/js/easy-ui/themes/black/dialog.css @@ -0,0 +1,32 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #555; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #000 #000 #222 #000; +} +.dialog-button { + border-color: #222 #000 #000 #000; +} diff --git a/assets/js/easy-ui/themes/black/easyui.css b/assets/js/easy-ui/themes/black/easyui.css new file mode 100755 index 0000000000..e0a5522338 --- /dev/null +++ b/assets/js/easy-ui/themes/black/easyui.css @@ -0,0 +1,2549 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #777; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #000; +} +.panel-header { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.panel-body { + background-color: #666; + color: #fff; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #fff; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #000; + overflow: hidden; + background: #555; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #666; + border-color: #000; +} +.accordion .accordion-header { + background: #3d3d3d; + filter: none; +} +.accordion .accordion-header-selected { + background: #0052A3; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #000; +} +.window { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 20%); + background: -moz-linear-gradient(top,#454545 0,#383838 20%); + background: -o-linear-gradient(top,#454545 0,#383838 20%); + background: linear-gradient(to bottom,#454545 0,#383838 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.window-proxy { + border: 1px dashed #000; +} +.window-proxy-mask, +.window-mask { + background: #000; +} +.window .panel-footer { + border: 1px solid #000; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #555; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #000 #000 #222 #000; +} +.dialog-button { + border-color: #222 #000 #000 #000; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #fff; + background: #777; + background-repeat: repeat-x; + border: 1px solid #555; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #777; + color: #fff; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #777; + color: #fff; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #000; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #000; +} +.textbox { + position: relative; + border: 1px solid #000; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #000; + -webkit-box-shadow: 0 0 3px 0 #000; + box-shadow: 0 0 3px 0 #000; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #666; +} +.combo { + border-color: #000; + background-color: #fff; +} +.combo-arrow { + background-color: #3d3d3d; +} +.combo-arrow-hover { + background-color: #777; +} +.combo-arrow:hover { + background-color: #777; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #777; + color: #fff; +} +.combobox-item-selected { + background-color: #0052A3; + color: #fff; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #cccccc; +} +.layout-split-north { + border-bottom: 5px solid #444; +} +.layout-split-south { + border-top: 5px solid #444; +} +.layout-split-east { + border-left: 5px solid #444; +} +.layout-split-west { + border-right: 5px solid #444; +} +.layout-expand { + background-color: #3d3d3d; +} +.layout-expand-over { + background-color: #3d3d3d; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #777; + color: #fff; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #666; + color: #fff; + background: -webkit-linear-gradient(top,#454545 0,#666 100%); + background: -moz-linear-gradient(top,#454545 0,#666 100%); + background: -o-linear-gradient(top,#454545 0,#666 100%); + background: linear-gradient(to bottom,#454545 0,#666 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#666 0,#454545 100%); + background: -moz-linear-gradient(top,#666 0,#454545 100%); + background: -o-linear-gradient(top,#666 0,#454545 100%); + background: linear-gradient(to bottom,#666 0,#454545 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#454545 0,#666 100%); + background: -moz-linear-gradient(left,#454545 0,#666 100%); + background: -o-linear-gradient(left,#454545 0,#666 100%); + background: linear-gradient(to right,#454545 0,#666 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#666 0,#454545 100%); + background: -moz-linear-gradient(left,#666 0,#454545 100%); + background: -o-linear-gradient(left,#666 0,#454545 100%); + background: linear-gradient(to right,#666 0,#454545 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); +} +.tabs li a.tabs-inner { + color: #fff; + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #3d3d3d; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #000; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #777; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #666; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #666; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #666; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #666; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #000; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #666 url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #444; + background: -webkit-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -moz-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: -o-linear-gradient(top,#4c4c4c 0,#3f3f3f 100%); + background: linear-gradient(to bottom,#4c4c4c 0,#3f3f3f 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4c4c4c,endColorstr=#3f3f3f,GradientType=0); +} +.datagrid-cell-rownumber { + color: #fff; +} +.datagrid-resize-proxy { + background: #cccccc; +} +.datagrid-mask { + background: #000; +} +.datagrid-mask-msg { + border-color: #000; +} +.datagrid-toolbar, +.datagrid-pager { + background: #555; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #222; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #222; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #fff; + border-collapse: separate; +} +.datagrid-row-alt { + background: #555; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #777; + color: #fff; + cursor: default; +} +.datagrid-row-selected { + background: #0052A3; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #222; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #3d3d3d; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #222; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #3d3d3d; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #000; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #ffffff; +} +.calendar-day { + color: #fff; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #000; +} +.calendar { + border-color: #000; +} +.calendar-header { + background: #3d3d3d; +} +.calendar-body, +.calendar-menu { + background: #666; +} +.calendar-body th { + background: #555; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #777; + color: #fff; +} +.calendar-hover { + border: 1px solid #555; + padding: 0; +} +.calendar-selected { + background-color: #0052A3; + color: #fff; + border: 1px solid #00458a; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #555; +} +.datebox-button a { + color: #fff; +} +.numberbox { + border: 1px solid #000; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #3d3d3d; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #777; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #777; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #3d3d3d; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #000; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #000; +} +.progressbar-text { + color: #fff; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0052A3; + color: #fff; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #000; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #3d3d3d; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #000; + background: #3d3d3d; +} +.slider-rule span { + border-color: #000; +} +.slider-rulelabel span { + color: #fff; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #444; + border-right: 1px solid #777; +} +.menu-sep { + border-top: 1px solid #444; + border-bottom: 1px solid #777; +} +.menu { + background-color: #666; + border-color: #444; + color: #fff; +} +.menu-content { + background: #666; +} +.menu-item { + border-color: transparent; + _border-color: #666; +} +.menu-active { + border-color: #555; + color: #fff; + background: #777; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #fff; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #555; + background-color: #777; + color: #fff; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #000; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #666; + color: #fff; + border-color: #000; +} +.tree-node-hover { + background: #777; + color: #fff; +} +.tree-node-selected { + background: #0052A3; + color: #fff; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #666; + border-color: #000; + color: #fff; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #000; +} +.tooltip-right .tooltip-arrow { + border-right-color: #666; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #000; +} +.tooltip-left .tooltip-arrow { + border-left-color: #666; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #000; +} +.tooltip-top .tooltip-arrow { + border-top-color: #666; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #000; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #666; +} diff --git a/assets/js/easy-ui/themes/black/filebox.css b/assets/js/easy-ui/themes/black/filebox.css new file mode 100755 index 0000000000..6077ebdc13 --- /dev/null +++ b/assets/js/easy-ui/themes/black/filebox.css @@ -0,0 +1,6 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} diff --git a/assets/js/easy-ui/themes/black/images/accordion_arrows.png b/assets/js/easy-ui/themes/black/images/accordion_arrows.png new file mode 100755 index 0000000000..45fd44aa30 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/accordion_arrows.png differ diff --git a/assets/js/easy-ui/themes/black/images/blank.gif b/assets/js/easy-ui/themes/black/images/blank.gif new file mode 100755 index 0000000000..1d11fa9ada Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/blank.gif differ diff --git a/assets/js/easy-ui/themes/black/images/calendar_arrows.png b/assets/js/easy-ui/themes/black/images/calendar_arrows.png new file mode 100755 index 0000000000..430c4ad685 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/calendar_arrows.png differ diff --git a/assets/js/easy-ui/themes/black/images/combo_arrow.png b/assets/js/easy-ui/themes/black/images/combo_arrow.png new file mode 100755 index 0000000000..ac58921c3a Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/combo_arrow.png differ diff --git a/assets/js/easy-ui/themes/black/images/datagrid_icons.png b/assets/js/easy-ui/themes/black/images/datagrid_icons.png new file mode 100755 index 0000000000..bdf87e38cc Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/datagrid_icons.png differ diff --git a/assets/js/easy-ui/themes/black/images/datebox_arrow.png b/assets/js/easy-ui/themes/black/images/datebox_arrow.png new file mode 100755 index 0000000000..783c83357f Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/datebox_arrow.png differ diff --git a/assets/js/easy-ui/themes/black/images/layout_arrows.png b/assets/js/easy-ui/themes/black/images/layout_arrows.png new file mode 100755 index 0000000000..19c611fa96 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/layout_arrows.png differ diff --git a/assets/js/easy-ui/themes/black/images/linkbutton_bg.png b/assets/js/easy-ui/themes/black/images/linkbutton_bg.png new file mode 100755 index 0000000000..fc66bd2cd2 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/linkbutton_bg.png differ diff --git a/assets/js/easy-ui/themes/black/images/loading.gif b/assets/js/easy-ui/themes/black/images/loading.gif new file mode 100755 index 0000000000..68f01d0481 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/loading.gif differ diff --git a/assets/js/easy-ui/themes/black/images/menu_arrows.png b/assets/js/easy-ui/themes/black/images/menu_arrows.png new file mode 100755 index 0000000000..2a984941d6 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/menu_arrows.png differ diff --git a/assets/js/easy-ui/themes/black/images/messager_icons.png b/assets/js/easy-ui/themes/black/images/messager_icons.png new file mode 100755 index 0000000000..62c18c1358 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/messager_icons.png differ diff --git a/assets/js/easy-ui/themes/black/images/pagination_icons.png b/assets/js/easy-ui/themes/black/images/pagination_icons.png new file mode 100755 index 0000000000..b3315faf3e Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/pagination_icons.png differ diff --git a/assets/js/easy-ui/themes/black/images/panel_tools.png b/assets/js/easy-ui/themes/black/images/panel_tools.png new file mode 100755 index 0000000000..f97761eb39 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/panel_tools.png differ diff --git a/assets/js/easy-ui/themes/black/images/searchbox_button.png b/assets/js/easy-ui/themes/black/images/searchbox_button.png new file mode 100755 index 0000000000..6dd1931589 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/searchbox_button.png differ diff --git a/assets/js/easy-ui/themes/black/images/slider_handle.png b/assets/js/easy-ui/themes/black/images/slider_handle.png new file mode 100755 index 0000000000..b9802bae14 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/slider_handle.png differ diff --git a/assets/js/easy-ui/themes/black/images/spinner_arrows.png b/assets/js/easy-ui/themes/black/images/spinner_arrows.png new file mode 100755 index 0000000000..25ee848d77 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/spinner_arrows.png differ diff --git a/assets/js/easy-ui/themes/black/images/tabs_icons.png b/assets/js/easy-ui/themes/black/images/tabs_icons.png new file mode 100755 index 0000000000..732b1237a1 Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/tabs_icons.png differ diff --git a/assets/js/easy-ui/themes/black/images/tree_icons.png b/assets/js/easy-ui/themes/black/images/tree_icons.png new file mode 100755 index 0000000000..2b4fd2025c Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/tree_icons.png differ diff --git a/assets/js/easy-ui/themes/black/images/validatebox_warning.png b/assets/js/easy-ui/themes/black/images/validatebox_warning.png new file mode 100755 index 0000000000..2b3d4f05ba Binary files /dev/null and b/assets/js/easy-ui/themes/black/images/validatebox_warning.png differ diff --git a/assets/js/easy-ui/themes/black/layout.css b/assets/js/easy-ui/themes/black/layout.css new file mode 100755 index 0000000000..31190da27b --- /dev/null +++ b/assets/js/easy-ui/themes/black/layout.css @@ -0,0 +1,91 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #cccccc; +} +.layout-split-north { + border-bottom: 5px solid #444; +} +.layout-split-south { + border-top: 5px solid #444; +} +.layout-split-east { + border-left: 5px solid #444; +} +.layout-split-west { + border-right: 5px solid #444; +} +.layout-expand { + background-color: #3d3d3d; +} +.layout-expand-over { + background-color: #3d3d3d; +} diff --git a/assets/js/easy-ui/themes/black/linkbutton.css b/assets/js/easy-ui/themes/black/linkbutton.css new file mode 100755 index 0000000000..e3b5eb647d --- /dev/null +++ b/assets/js/easy-ui/themes/black/linkbutton.css @@ -0,0 +1,197 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #fff; + background: #777; + background-repeat: repeat-x; + border: 1px solid #555; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #777; + color: #fff; + border: 1px solid #555; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #777; + color: #fff; + background: -webkit-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -moz-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: -o-linear-gradient(top,#919191 0,#6a6a6a 100%); + background: linear-gradient(to bottom,#919191 0,#6a6a6a 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#919191,endColorstr=#6a6a6a,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #000; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #000; +} diff --git a/assets/js/easy-ui/themes/black/menu.css b/assets/js/easy-ui/themes/black/menu.css new file mode 100755 index 0000000000..9e89ea5a43 --- /dev/null +++ b/assets/js/easy-ui/themes/black/menu.css @@ -0,0 +1,109 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #444; + border-right: 1px solid #777; +} +.menu-sep { + border-top: 1px solid #444; + border-bottom: 1px solid #777; +} +.menu { + background-color: #666; + border-color: #444; + color: #fff; +} +.menu-content { + background: #666; +} +.menu-item { + border-color: transparent; + _border-color: #666; +} +.menu-active { + border-color: #555; + color: #fff; + background: #777; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/menubutton.css b/assets/js/easy-ui/themes/black/menubutton.css new file mode 100755 index 0000000000..55a2b5ead0 --- /dev/null +++ b/assets/js/easy-ui/themes/black/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #777; + color: #fff; + border: 1px solid #555; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #555; + background-color: #777; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/messager.css b/assets/js/easy-ui/themes/black/messager.css new file mode 100755 index 0000000000..8fc275f21c --- /dev/null +++ b/assets/js/easy-ui/themes/black/messager.css @@ -0,0 +1,40 @@ +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #000; +} diff --git a/assets/js/easy-ui/themes/black/numberbox.css b/assets/js/easy-ui/themes/black/numberbox.css new file mode 100755 index 0000000000..3ee54c36b5 --- /dev/null +++ b/assets/js/easy-ui/themes/black/numberbox.css @@ -0,0 +1,9 @@ +.numberbox { + border: 1px solid #000; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} diff --git a/assets/js/easy-ui/themes/black/pagination.css b/assets/js/easy-ui/themes/black/pagination.css new file mode 100755 index 0000000000..0431a22099 --- /dev/null +++ b/assets/js/easy-ui/themes/black/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #444; + border-right: 1px solid #777; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #000; +} diff --git a/assets/js/easy-ui/themes/black/panel.css b/assets/js/easy-ui/themes/black/panel.css new file mode 100755 index 0000000000..07845d2ca3 --- /dev/null +++ b/assets/js/easy-ui/themes/black/panel.css @@ -0,0 +1,142 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #777; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #000; +} +.panel-header { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.panel-body { + background-color: #666; + color: #fff; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #fff; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #000; + overflow: hidden; + background: #555; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} diff --git a/assets/js/easy-ui/themes/black/progressbar.css b/assets/js/easy-ui/themes/black/progressbar.css new file mode 100755 index 0000000000..79fcf624b9 --- /dev/null +++ b/assets/js/easy-ui/themes/black/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #000; +} +.progressbar-text { + color: #fff; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0052A3; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/propertygrid.css b/assets/js/easy-ui/themes/black/propertygrid.css new file mode 100755 index 0000000000..d71ce7c8b5 --- /dev/null +++ b/assets/js/easy-ui/themes/black/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #222; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #3d3d3d; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #222; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #3d3d3d; +} diff --git a/assets/js/easy-ui/themes/black/searchbox.css b/assets/js/easy-ui/themes/black/searchbox.css new file mode 100755 index 0000000000..4260efbc20 --- /dev/null +++ b/assets/js/easy-ui/themes/black/searchbox.css @@ -0,0 +1,90 @@ +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #000; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #3d3d3d; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/black/slider.css b/assets/js/easy-ui/themes/black/slider.css new file mode 100755 index 0000000000..cd66bf5497 --- /dev/null +++ b/assets/js/easy-ui/themes/black/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #000; + background: #3d3d3d; +} +.slider-rule span { + border-color: #000; +} +.slider-rulelabel span { + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/spinner.css b/assets/js/easy-ui/themes/black/spinner.css new file mode 100755 index 0000000000..6b618ba69d --- /dev/null +++ b/assets/js/easy-ui/themes/black/spinner.css @@ -0,0 +1,71 @@ +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #3d3d3d; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #777; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #777; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #3d3d3d; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #000; +} diff --git a/assets/js/easy-ui/themes/black/splitbutton.css b/assets/js/easy-ui/themes/black/splitbutton.css new file mode 100755 index 0000000000..b42e3963fa --- /dev/null +++ b/assets/js/easy-ui/themes/black/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #cccccc; + border-width: 0 0 0 1px; +} diff --git a/assets/js/easy-ui/themes/black/tabs.css b/assets/js/easy-ui/themes/black/tabs.css new file mode 100755 index 0000000000..0949ad2b15 --- /dev/null +++ b/assets/js/easy-ui/themes/black/tabs.css @@ -0,0 +1,356 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #3d3d3d url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #3d3d3d url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #777; + color: #fff; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #666; + color: #fff; + background: -webkit-linear-gradient(top,#454545 0,#666 100%); + background: -moz-linear-gradient(top,#454545 0,#666 100%); + background: -o-linear-gradient(top,#454545 0,#666 100%); + background: linear-gradient(to bottom,#454545 0,#666 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#666 0,#454545 100%); + background: -moz-linear-gradient(top,#666 0,#454545 100%); + background: -o-linear-gradient(top,#666 0,#454545 100%); + background: linear-gradient(to bottom,#666 0,#454545 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#454545 0,#666 100%); + background: -moz-linear-gradient(left,#454545 0,#666 100%); + background: -o-linear-gradient(left,#454545 0,#666 100%); + background: linear-gradient(to right,#454545 0,#666 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#666,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#666 0,#454545 100%); + background: -moz-linear-gradient(left,#666 0,#454545 100%); + background: -o-linear-gradient(left,#666 0,#454545 100%); + background: linear-gradient(to right,#666 0,#454545 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#666,endColorstr=#454545,GradientType=1); +} +.tabs li a.tabs-inner { + color: #fff; + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 100%); + background: -moz-linear-gradient(top,#454545 0,#383838 100%); + background: -o-linear-gradient(top,#454545 0,#383838 100%); + background: linear-gradient(to bottom,#454545 0,#383838 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #3d3d3d; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #000; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #777; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #666; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #666; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #666; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #666; +} diff --git a/assets/js/easy-ui/themes/black/textbox.css b/assets/js/easy-ui/themes/black/textbox.css new file mode 100755 index 0000000000..b8fe05838e --- /dev/null +++ b/assets/js/easy-ui/themes/black/textbox.css @@ -0,0 +1,87 @@ +.textbox { + position: relative; + border: 1px solid #000; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #000; + -webkit-box-shadow: 0 0 3px 0 #000; + box-shadow: 0 0 3px 0 #000; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/black/tooltip.css b/assets/js/easy-ui/themes/black/tooltip.css new file mode 100755 index 0000000000..8dfbfed667 --- /dev/null +++ b/assets/js/easy-ui/themes/black/tooltip.css @@ -0,0 +1,100 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #666; + border-color: #000; + color: #fff; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #000; +} +.tooltip-right .tooltip-arrow { + border-right-color: #666; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #000; +} +.tooltip-left .tooltip-arrow { + border-left-color: #666; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #000; +} +.tooltip-top .tooltip-arrow { + border-top-color: #666; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #000; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #666; +} diff --git a/assets/js/easy-ui/themes/black/tree.css b/assets/js/easy-ui/themes/black/tree.css new file mode 100755 index 0000000000..ea955cb30c --- /dev/null +++ b/assets/js/easy-ui/themes/black/tree.css @@ -0,0 +1,157 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #666; + color: #fff; + border-color: #000; +} +.tree-node-hover { + background: #777; + color: #fff; +} +.tree-node-selected { + background: #0052A3; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/black/validatebox.css b/assets/js/easy-ui/themes/black/validatebox.css new file mode 100755 index 0000000000..1fc3ad64e4 --- /dev/null +++ b/assets/js/easy-ui/themes/black/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/assets/js/easy-ui/themes/black/window.css b/assets/js/easy-ui/themes/black/window.css new file mode 100755 index 0000000000..01942abd6d --- /dev/null +++ b/assets/js/easy-ui/themes/black/window.css @@ -0,0 +1,94 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #777; + -moz-box-shadow: 2px 2px 3px #787878; + -webkit-box-shadow: 2px 2px 3px #787878; + box-shadow: 2px 2px 3px #787878; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #000; +} +.window { + background-color: #3d3d3d; + background: -webkit-linear-gradient(top,#454545 0,#383838 20%); + background: -moz-linear-gradient(top,#454545 0,#383838 20%); + background: -o-linear-gradient(top,#454545 0,#383838 20%); + background: linear-gradient(to bottom,#454545 0,#383838 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#454545,endColorstr=#383838,GradientType=0); +} +.window-proxy { + border: 1px dashed #000; +} +.window-proxy-mask, +.window-mask { + background: #000; +} +.window .panel-footer { + border: 1px solid #000; + position: relative; + top: -1px; +} diff --git a/assets/js/easy-ui/themes/bootstrap/accordion.css b/assets/js/easy-ui/themes/bootstrap/accordion.css new file mode 100755 index 0000000000..26db0fa706 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/accordion.css @@ -0,0 +1,41 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D4D4D4; +} +.accordion .accordion-header { + background: #F2F2F2; + filter: none; +} +.accordion .accordion-header-selected { + background: #0081c2; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} diff --git a/assets/js/easy-ui/themes/bootstrap/calendar.css b/assets/js/easy-ui/themes/bootstrap/calendar.css new file mode 100755 index 0000000000..5eb1efff2f --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/calendar.css @@ -0,0 +1,197 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #808080; +} +.calendar-day { + color: #333; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D4D4D4; +} +.calendar { + border-color: #D4D4D4; +} +.calendar-header { + background: #F2F2F2; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F5F5F5; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e6e6e6; + color: #00438a; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #0081c2; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} diff --git a/assets/js/easy-ui/themes/bootstrap/combo.css b/assets/js/easy-ui/themes/bootstrap/combo.css new file mode 100755 index 0000000000..e3ee8e1723 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/combo.css @@ -0,0 +1,60 @@ +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #D4D4D4; + background-color: #fff; +} +.combo-arrow { + background-color: #F2F2F2; +} +.combo-arrow-hover { + background-color: #e6e6e6; +} +.combo-arrow:hover { + background-color: #e6e6e6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/bootstrap/combobox.css b/assets/js/easy-ui/themes/bootstrap/combobox.css new file mode 100755 index 0000000000..82abe63028 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/combobox.css @@ -0,0 +1,24 @@ +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #e6e6e6; + color: #00438a; +} +.combobox-item-selected { + background-color: #0081c2; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/bootstrap/datagrid.css b/assets/js/easy-ui/themes/bootstrap/datagrid.css new file mode 100755 index 0000000000..e3d9c6237d --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/datagrid.css @@ -0,0 +1,267 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D4D4D4; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.datagrid-cell-rownumber { + color: #333; +} +.datagrid-resize-proxy { + background: #bbb; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D4D4D4; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F5F5F5; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #e6e6e6; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #333; + border-collapse: separate; +} +.datagrid-row-alt { + background: #F5F5F5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e6e6e6; + color: #00438a; + cursor: default; +} +.datagrid-row-selected { + background: #0081c2; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/assets/js/easy-ui/themes/bootstrap/datebox.css b/assets/js/easy-ui/themes/bootstrap/datebox.css new file mode 100755 index 0000000000..b9d2bcb863 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F5F5F5; +} +.datebox-button a { + color: #444; +} diff --git a/assets/js/easy-ui/themes/bootstrap/dialog.css b/assets/js/easy-ui/themes/bootstrap/dialog.css new file mode 100755 index 0000000000..5fdaec3914 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/dialog.css @@ -0,0 +1,32 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F5F5F5; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D4D4D4 #D4D4D4 #e6e6e6 #D4D4D4; +} +.dialog-button { + border-color: #e6e6e6 #D4D4D4 #D4D4D4 #D4D4D4; +} diff --git a/assets/js/easy-ui/themes/bootstrap/easyui.css b/assets/js/easy-ui/themes/bootstrap/easyui.css new file mode 100755 index 0000000000..73e51f3665 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/easyui.css @@ -0,0 +1,2568 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e6e6e6; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D4D4D4; +} +.panel-header { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #333; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D4D4D4; + overflow: hidden; + background: #F5F5F5; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D4D4D4; +} +.accordion .accordion-header { + background: #F2F2F2; + filter: none; +} +.accordion .accordion-header-selected { + background: #0081c2; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D4D4D4; +} +.window { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.window-proxy { + border: 1px dashed #D4D4D4; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D4D4D4; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F5F5F5; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D4D4D4 #D4D4D4 #e6e6e6 #D4D4D4; +} +.dialog-button { + border-color: #e6e6e6 #D4D4D4 #D4D4D4 #D4D4D4; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #f5f5f5; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #f5f5f5; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #D4D4D4; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #D4D4D4; + -webkit-box-shadow: 0 0 3px 0 #D4D4D4; + box-shadow: 0 0 3px 0 #D4D4D4; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #D4D4D4; + background-color: #fff; +} +.combo-arrow { + background-color: #F2F2F2; +} +.combo-arrow-hover { + background-color: #e6e6e6; +} +.combo-arrow:hover { + background-color: #e6e6e6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #e6e6e6; + color: #00438a; +} +.combobox-item-selected { + background-color: #0081c2; + color: #fff; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bbb; +} +.layout-split-north { + border-bottom: 5px solid #eee; +} +.layout-split-south { + border-top: 5px solid #eee; +} +.layout-split-east { + border-left: 5px solid #eee; +} +.layout-split-west { + border-right: 5px solid #eee; +} +.layout-expand { + background-color: #F2F2F2; +} +.layout-expand-over { + background-color: #F2F2F2; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e6e6e6; + color: #00438a; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs li a.tabs-inner { + color: #777; + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #F2F2F2; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D4D4D4; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e6e6e6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D4D4D4; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.datagrid-cell-rownumber { + color: #333; +} +.datagrid-resize-proxy { + background: #bbb; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D4D4D4; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F5F5F5; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #e6e6e6; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #333; + border-collapse: separate; +} +.datagrid-row-alt { + background: #F5F5F5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e6e6e6; + color: #00438a; + cursor: default; +} +.datagrid-row-selected { + background: #0081c2; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #e6e6e6; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #F2F2F2; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #e6e6e6; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #F2F2F2; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D4D4D4; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #808080; +} +.calendar-day { + color: #333; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D4D4D4; +} +.calendar { + border-color: #D4D4D4; +} +.calendar-header { + background: #F2F2F2; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F5F5F5; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e6e6e6; + color: #00438a; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #0081c2; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F5F5F5; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #D4D4D4; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #F2F2F2; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e6e6e6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e6e6e6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #F2F2F2; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #D4D4D4; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D4D4D4; +} +.progressbar-text { + color: #333; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0081c2; + color: #fff; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #D4D4D4; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #F2F2F2; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D4D4D4; + background: #F2F2F2; +} +.slider-rule span { + border-color: #D4D4D4; +} +.slider-rulelabel span { + color: #333; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #e6e6e6; + color: #333; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ddd; + color: #00438a; + background: #e6e6e6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #e6e6e6; + color: #00438a; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #D4D4D4; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #333; + border-color: #D4D4D4; +} +.tree-node-hover { + background: #e6e6e6; + color: #00438a; +} +.tree-node-selected { + background: #0081c2; + color: #fff; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D4D4D4; + color: #333; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D4D4D4; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D4D4D4; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D4D4D4; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D4D4D4; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} +.tabs-panels { + border-color: transparent; +} +.tabs li a.tabs-inner { + border-color: transparent; + background: transparent; + filter: none; + color: #0088CC; +} +.menu-active { + background-color: #0081C2; + border-color: #0081C2; + color: #fff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} diff --git a/assets/js/easy-ui/themes/bootstrap/filebox.css b/assets/js/easy-ui/themes/bootstrap/filebox.css new file mode 100755 index 0000000000..6077ebdc13 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/filebox.css @@ -0,0 +1,6 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} diff --git a/assets/js/easy-ui/themes/bootstrap/images/accordion_arrows.png b/assets/js/easy-ui/themes/bootstrap/images/accordion_arrows.png new file mode 100755 index 0000000000..720835f69c Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/accordion_arrows.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/blank.gif b/assets/js/easy-ui/themes/bootstrap/images/blank.gif new file mode 100755 index 0000000000..1d11fa9ada Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/blank.gif differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/calendar_arrows.png b/assets/js/easy-ui/themes/bootstrap/images/calendar_arrows.png new file mode 100755 index 0000000000..430c4ad685 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/calendar_arrows.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/combo_arrow.png b/assets/js/easy-ui/themes/bootstrap/images/combo_arrow.png new file mode 100755 index 0000000000..2e59fb9f3f Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/combo_arrow.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/datagrid_icons.png b/assets/js/easy-ui/themes/bootstrap/images/datagrid_icons.png new file mode 100755 index 0000000000..747ac4d1b8 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/datagrid_icons.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/datebox_arrow.png b/assets/js/easy-ui/themes/bootstrap/images/datebox_arrow.png new file mode 100755 index 0000000000..783c83357f Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/datebox_arrow.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/layout_arrows.png b/assets/js/easy-ui/themes/bootstrap/images/layout_arrows.png new file mode 100755 index 0000000000..6f41654253 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/layout_arrows.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/linkbutton_bg.png b/assets/js/easy-ui/themes/bootstrap/images/linkbutton_bg.png new file mode 100755 index 0000000000..fc66bd2cd2 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/linkbutton_bg.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/loading.gif b/assets/js/easy-ui/themes/bootstrap/images/loading.gif new file mode 100755 index 0000000000..68f01d0481 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/loading.gif differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/menu_arrows.png b/assets/js/easy-ui/themes/bootstrap/images/menu_arrows.png new file mode 100755 index 0000000000..b986842e7e Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/menu_arrows.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/messager_icons.png b/assets/js/easy-ui/themes/bootstrap/images/messager_icons.png new file mode 100755 index 0000000000..62c18c1358 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/messager_icons.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/pagination_icons.png b/assets/js/easy-ui/themes/bootstrap/images/pagination_icons.png new file mode 100755 index 0000000000..616f0bdd6f Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/pagination_icons.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/panel_tools.png b/assets/js/easy-ui/themes/bootstrap/images/panel_tools.png new file mode 100755 index 0000000000..fe682ef89d Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/panel_tools.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/searchbox_button.png b/assets/js/easy-ui/themes/bootstrap/images/searchbox_button.png new file mode 100755 index 0000000000..6dd1931589 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/searchbox_button.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/slider_handle.png b/assets/js/easy-ui/themes/bootstrap/images/slider_handle.png new file mode 100755 index 0000000000..b9802bae14 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/slider_handle.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/spinner_arrows.png b/assets/js/easy-ui/themes/bootstrap/images/spinner_arrows.png new file mode 100755 index 0000000000..b68592de32 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/spinner_arrows.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/tabs_icons.png b/assets/js/easy-ui/themes/bootstrap/images/tabs_icons.png new file mode 100755 index 0000000000..4d29966d71 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/tabs_icons.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/tree_icons.png b/assets/js/easy-ui/themes/bootstrap/images/tree_icons.png new file mode 100755 index 0000000000..e9be4f3a99 Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/tree_icons.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/images/validatebox_warning.png b/assets/js/easy-ui/themes/bootstrap/images/validatebox_warning.png new file mode 100755 index 0000000000..2b3d4f05ba Binary files /dev/null and b/assets/js/easy-ui/themes/bootstrap/images/validatebox_warning.png differ diff --git a/assets/js/easy-ui/themes/bootstrap/layout.css b/assets/js/easy-ui/themes/bootstrap/layout.css new file mode 100755 index 0000000000..33e172dca0 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/layout.css @@ -0,0 +1,91 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bbb; +} +.layout-split-north { + border-bottom: 5px solid #eee; +} +.layout-split-south { + border-top: 5px solid #eee; +} +.layout-split-east { + border-left: 5px solid #eee; +} +.layout-split-west { + border-right: 5px solid #eee; +} +.layout-expand { + background-color: #F2F2F2; +} +.layout-expand-over { + background-color: #F2F2F2; +} diff --git a/assets/js/easy-ui/themes/bootstrap/linkbutton.css b/assets/js/easy-ui/themes/bootstrap/linkbutton.css new file mode 100755 index 0000000000..6066dea703 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/linkbutton.css @@ -0,0 +1,197 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #f5f5f5; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #f5f5f5; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -moz-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: -o-linear-gradient(top,#ffffff 0,#e6e6e6 100%); + background: linear-gradient(to bottom,#ffffff 0,#e6e6e6 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#e6e6e6,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/assets/js/easy-ui/themes/bootstrap/menu.css b/assets/js/easy-ui/themes/bootstrap/menu.css new file mode 100755 index 0000000000..559596853d --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/menu.css @@ -0,0 +1,109 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fff; + border-color: #e6e6e6; + color: #333; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fff; +} +.menu-active { + border-color: #ddd; + color: #00438a; + background: #e6e6e6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #333; +} diff --git a/assets/js/easy-ui/themes/bootstrap/menubutton.css b/assets/js/easy-ui/themes/bootstrap/menubutton.css new file mode 100755 index 0000000000..89ac235a71 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e6e6e6; + color: #00438a; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #e6e6e6; + color: #00438a; +} diff --git a/assets/js/easy-ui/themes/bootstrap/messager.css b/assets/js/easy-ui/themes/bootstrap/messager.css new file mode 100755 index 0000000000..ea1c911c07 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/messager.css @@ -0,0 +1,40 @@ +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #D4D4D4; +} diff --git a/assets/js/easy-ui/themes/bootstrap/numberbox.css b/assets/js/easy-ui/themes/bootstrap/numberbox.css new file mode 100755 index 0000000000..f3023a7b9a --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/numberbox.css @@ -0,0 +1,9 @@ +.numberbox { + border: 1px solid #D4D4D4; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} diff --git a/assets/js/easy-ui/themes/bootstrap/pagination.css b/assets/js/easy-ui/themes/bootstrap/pagination.css new file mode 100755 index 0000000000..02c2d7ecf0 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D4D4D4; +} diff --git a/assets/js/easy-ui/themes/bootstrap/panel.css b/assets/js/easy-ui/themes/bootstrap/panel.css new file mode 100755 index 0000000000..a200052c04 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/panel.css @@ -0,0 +1,142 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e6e6e6; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D4D4D4; +} +.panel-header { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #333; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D4D4D4; + overflow: hidden; + background: #F5F5F5; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} diff --git a/assets/js/easy-ui/themes/bootstrap/progressbar.css b/assets/js/easy-ui/themes/bootstrap/progressbar.css new file mode 100755 index 0000000000..c660f0e4b1 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D4D4D4; +} +.progressbar-text { + color: #333; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0081c2; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/bootstrap/propertygrid.css b/assets/js/easy-ui/themes/bootstrap/propertygrid.css new file mode 100755 index 0000000000..abf87d6a8e --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #e6e6e6; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #F2F2F2; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #e6e6e6; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #F2F2F2; +} diff --git a/assets/js/easy-ui/themes/bootstrap/searchbox.css b/assets/js/easy-ui/themes/bootstrap/searchbox.css new file mode 100755 index 0000000000..a56a088dab --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/searchbox.css @@ -0,0 +1,90 @@ +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #D4D4D4; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #F2F2F2; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/bootstrap/slider.css b/assets/js/easy-ui/themes/bootstrap/slider.css new file mode 100755 index 0000000000..b58d8de557 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D4D4D4; + background: #F2F2F2; +} +.slider-rule span { + border-color: #D4D4D4; +} +.slider-rulelabel span { + color: #333; +} diff --git a/assets/js/easy-ui/themes/bootstrap/spinner.css b/assets/js/easy-ui/themes/bootstrap/spinner.css new file mode 100755 index 0000000000..1c523ca8de --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/spinner.css @@ -0,0 +1,71 @@ +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #F2F2F2; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e6e6e6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e6e6e6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #F2F2F2; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #D4D4D4; +} diff --git a/assets/js/easy-ui/themes/bootstrap/splitbutton.css b/assets/js/easy-ui/themes/bootstrap/splitbutton.css new file mode 100755 index 0000000000..bf86453328 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bbb; + border-width: 0 0 0 1px; +} diff --git a/assets/js/easy-ui/themes/bootstrap/tabs.css b/assets/js/easy-ui/themes/bootstrap/tabs.css new file mode 100755 index 0000000000..8aef1137fe --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/tabs.css @@ -0,0 +1,356 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #F2F2F2 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e6e6e6; + color: #00438a; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(left,#ffffff 0,#ffffff 100%); + background: linear-gradient(to right,#ffffff 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=1); +} +.tabs li a.tabs-inner { + color: #777; + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 100%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #F2F2F2; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D4D4D4; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e6e6e6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} diff --git a/assets/js/easy-ui/themes/bootstrap/textbox.css b/assets/js/easy-ui/themes/bootstrap/textbox.css new file mode 100755 index 0000000000..8df6b56a41 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/textbox.css @@ -0,0 +1,87 @@ +.textbox { + position: relative; + border: 1px solid #D4D4D4; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #D4D4D4; + -webkit-box-shadow: 0 0 3px 0 #D4D4D4; + box-shadow: 0 0 3px 0 #D4D4D4; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/bootstrap/tooltip.css b/assets/js/easy-ui/themes/bootstrap/tooltip.css new file mode 100755 index 0000000000..fa06fc3323 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/tooltip.css @@ -0,0 +1,100 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D4D4D4; + color: #333; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D4D4D4; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D4D4D4; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D4D4D4; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D4D4D4; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/assets/js/easy-ui/themes/bootstrap/tree.css b/assets/js/easy-ui/themes/bootstrap/tree.css new file mode 100755 index 0000000000..017832b5a5 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/tree.css @@ -0,0 +1,157 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #333; + border-color: #D4D4D4; +} +.tree-node-hover { + background: #e6e6e6; + color: #00438a; +} +.tree-node-selected { + background: #0081c2; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/bootstrap/validatebox.css b/assets/js/easy-ui/themes/bootstrap/validatebox.css new file mode 100755 index 0000000000..1fc3ad64e4 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/assets/js/easy-ui/themes/bootstrap/window.css b/assets/js/easy-ui/themes/bootstrap/window.css new file mode 100755 index 0000000000..dcbd624360 --- /dev/null +++ b/assets/js/easy-ui/themes/bootstrap/window.css @@ -0,0 +1,94 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D4D4D4; +} +.window { + background-color: #F2F2F2; + background: -webkit-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -moz-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: -o-linear-gradient(top,#ffffff 0,#F2F2F2 20%); + background: linear-gradient(to bottom,#ffffff 0,#F2F2F2 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F2F2F2,GradientType=0); +} +.window-proxy { + border: 1px dashed #D4D4D4; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D4D4D4; + position: relative; + top: -1px; +} diff --git a/assets/js/easy-ui/themes/color.css b/assets/js/easy-ui/themes/color.css new file mode 100755 index 0000000000..9f811596e2 --- /dev/null +++ b/assets/js/easy-ui/themes/color.css @@ -0,0 +1,112 @@ +.c1,.c1:hover{ + color: #fff; + border-color: #3c8b3c; + background: #4cae4c; + background: -webkit-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -moz-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: -o-linear-gradient(top,#4cae4c 0,#449d44 100%); + background: linear-gradient(to bottom,#4cae4c 0,#449d44 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#4cae4c,endColorstr=#449d44,GradientType=0); +} +a.c1:hover{ + background: #449d44; + filter: none; +} +.c2,.c2:hover{ + color: #fff; + border-color: #5f5f5f; + background: #747474; + background: -webkit-linear-gradient(top,#747474 0,#676767 100%); + background: -moz-linear-gradient(top,#747474 0,#676767 100%); + background: -o-linear-gradient(top,#747474 0,#676767 100%); + background: linear-gradient(to bottom,#747474 0,#676767 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#747474,endColorstr=#676767,GradientType=0); +} +a.c2:hover{ + background: #676767; + filter: none; +} +.c3,.c3:hover{ + color: #333; + border-color: #ff8080; + background: #ffb3b3; + background: -webkit-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -moz-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: -o-linear-gradient(top,#ffb3b3 0,#ff9999 100%); + background: linear-gradient(to bottom,#ffb3b3 0,#ff9999 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffb3b3,endColorstr=#ff9999,GradientType=0); +} +a.c3:hover{ + background: #ff9999; + filter: none; +} +.c4,.c4:hover{ + color: #333; + border-color: #52d689; + background: #b8eecf; + background: -webkit-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -moz-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: -o-linear-gradient(top,#b8eecf 0,#a4e9c1 100%); + background: linear-gradient(to bottom,#b8eecf 0,#a4e9c1 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#b8eecf,endColorstr=#a4e9c1,GradientType=0); +} +a.c4:hover{ + background: #a4e9c1; + filter: none; +} +.c5,.c5:hover{ + color: #fff; + border-color: #b52b27; + background: #d84f4b; + background: -webkit-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -moz-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: -o-linear-gradient(top,#d84f4b 0,#c9302c 100%); + background: linear-gradient(to bottom,#d84f4b 0,#c9302c 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#d84f4b,endColorstr=#c9302c,GradientType=0); +} +a.c5:hover{ + background: #c9302c; + filter: none; +} +.c6,.c6:hover{ + color: #fff; + border-color: #1f637b; + background: #2984a4; + background: -webkit-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -moz-linear-gradient(top,#2984a4 0,#24748f 100%); + background: -o-linear-gradient(top,#2984a4 0,#24748f 100%); + background: linear-gradient(to bottom,#2984a4 0,#24748f 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#2984a4,endColorstr=#24748f,GradientType=0); +} +a.c6:hover{ + background: #24748f; + filter: none; +} +.c7,.c7:hover{ + color: #333; + border-color: #e68900; + background: #ffab2e; + background: -webkit-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -moz-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: -o-linear-gradient(top,#ffab2e 0,#ff9900 100%); + background: linear-gradient(to bottom,#ffab2e 0,#ff9900 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffab2e,endColorstr=#ff9900,GradientType=0); +} +a.c7:hover{ + background: #ff9900; + filter: none; +} +.c8,.c8:hover{ + color: #fff; + border-color: #4b72a4; + background: #698cba; + background: -webkit-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -moz-linear-gradient(top,#698cba 0,#577eb2 100%); + background: -o-linear-gradient(top,#698cba 0,#577eb2 100%); + background: linear-gradient(to bottom,#698cba 0,#577eb2 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#698cba,endColorstr=#577eb2,GradientType=0); +} +a.c8:hover{ + background: #577eb2; + filter: none; +} diff --git a/assets/js/easy-ui/themes/default/accordion.css b/assets/js/easy-ui/themes/default/accordion.css new file mode 100755 index 0000000000..40696c7100 --- /dev/null +++ b/assets/js/easy-ui/themes/default/accordion.css @@ -0,0 +1,41 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} diff --git a/assets/js/easy-ui/themes/default/calendar.css b/assets/js/easy-ui/themes/default/calendar.css new file mode 100755 index 0000000000..6334627055 --- /dev/null +++ b/assets/js/easy-ui/themes/default/calendar.css @@ -0,0 +1,197 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} diff --git a/assets/js/easy-ui/themes/default/combo.css b/assets/js/easy-ui/themes/default/combo.css new file mode 100755 index 0000000000..a4937aab16 --- /dev/null +++ b/assets/js/easy-ui/themes/default/combo.css @@ -0,0 +1,60 @@ +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #95B8E7; + background-color: #fff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/default/combobox.css b/assets/js/easy-ui/themes/default/combobox.css new file mode 100755 index 0000000000..72eb42301d --- /dev/null +++ b/assets/js/easy-ui/themes/default/combobox.css @@ -0,0 +1,24 @@ +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} diff --git a/assets/js/easy-ui/themes/default/datagrid.css b/assets/js/easy-ui/themes/default/datagrid.css new file mode 100755 index 0000000000..b167a217d7 --- /dev/null +++ b/assets/js/easy-ui/themes/default/datagrid.css @@ -0,0 +1,267 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/assets/js/easy-ui/themes/default/datebox.css b/assets/js/easy-ui/themes/default/datebox.css new file mode 100755 index 0000000000..6225a0d2bb --- /dev/null +++ b/assets/js/easy-ui/themes/default/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} diff --git a/assets/js/easy-ui/themes/default/dialog.css b/assets/js/easy-ui/themes/default/dialog.css new file mode 100755 index 0000000000..c3510e66f6 --- /dev/null +++ b/assets/js/easy-ui/themes/default/dialog.css @@ -0,0 +1,32 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} diff --git a/assets/js/easy-ui/themes/default/easyui.css b/assets/js/easy-ui/themes/default/easyui.css new file mode 100755 index 0000000000..71041260f9 --- /dev/null +++ b/assets/js/easy-ui/themes/default/easyui.css @@ -0,0 +1,2549 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #95B8E7; +} +.accordion .accordion-header { + background: #E0ECFF; + filter: none; +} +.accordion .accordion-header-selected { + background: #ffe48d; +} +.accordion .accordion-header-selected .panel-title { + color: #000000; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #F4F4F4; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #95B8E7 #95B8E7 #dddddd #95B8E7; +} +.dialog-button { + border-color: #dddddd #95B8E7 #95B8E7 #95B8E7; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #95B8E7; + background-color: #fff; +} +.combo-arrow { + background-color: #E0ECFF; +} +.combo-arrow-hover { + background-color: #eaf2ff; +} +.combo-arrow:hover { + background-color: #eaf2ff; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #eaf2ff; + color: #000000; +} +.combobox-item-selected { + background-color: #ffe48d; + color: #000000; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #95B8E7; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #efefef; + background: -webkit-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -moz-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: -o-linear-gradient(top,#F9F9F9 0,#efefef 100%); + background: linear-gradient(to bottom,#F9F9F9 0,#efefef 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F9F9F9,endColorstr=#efefef,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #aac5e7; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #95B8E7; +} +.datagrid-toolbar, +.datagrid-pager { + background: #F4F4F4; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #dddddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #eaf2ff; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #ffe48d; + color: #000000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #95B8E7; +} +.calendar { + border-color: #95B8E7; +} +.calendar-header { + background: #E0ECFF; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #F4F4F4; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #eaf2ff; + color: #000000; +} +.calendar-hover { + border: 1px solid #b7d2ff; + padding: 0; +} +.calendar-selected { + background-color: #ffe48d; + color: #000000; + border: 1px solid #ffab3f; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #F4F4F4; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #95B8E7; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #95B8E7; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #95B8E7; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #95B8E7; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/assets/js/easy-ui/themes/default/filebox.css b/assets/js/easy-ui/themes/default/filebox.css new file mode 100755 index 0000000000..6077ebdc13 --- /dev/null +++ b/assets/js/easy-ui/themes/default/filebox.css @@ -0,0 +1,6 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} diff --git a/assets/js/easy-ui/themes/default/images/accordion_arrows.png b/assets/js/easy-ui/themes/default/images/accordion_arrows.png new file mode 100755 index 0000000000..720835f69c Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/accordion_arrows.png differ diff --git a/assets/js/easy-ui/themes/default/images/blank.gif b/assets/js/easy-ui/themes/default/images/blank.gif new file mode 100755 index 0000000000..1d11fa9ada Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/blank.gif differ diff --git a/assets/js/easy-ui/themes/default/images/calendar_arrows.png b/assets/js/easy-ui/themes/default/images/calendar_arrows.png new file mode 100755 index 0000000000..430c4ad685 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/calendar_arrows.png differ diff --git a/assets/js/easy-ui/themes/default/images/combo_arrow.png b/assets/js/easy-ui/themes/default/images/combo_arrow.png new file mode 100755 index 0000000000..2e59fb9f3f Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/combo_arrow.png differ diff --git a/assets/js/easy-ui/themes/default/images/datagrid_icons.png b/assets/js/easy-ui/themes/default/images/datagrid_icons.png new file mode 100755 index 0000000000..747ac4d1b8 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/datagrid_icons.png differ diff --git a/assets/js/easy-ui/themes/default/images/datebox_arrow.png b/assets/js/easy-ui/themes/default/images/datebox_arrow.png new file mode 100755 index 0000000000..783c83357f Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/datebox_arrow.png differ diff --git a/assets/js/easy-ui/themes/default/images/layout_arrows.png b/assets/js/easy-ui/themes/default/images/layout_arrows.png new file mode 100755 index 0000000000..6f41654253 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/layout_arrows.png differ diff --git a/assets/js/easy-ui/themes/default/images/linkbutton_bg.png b/assets/js/easy-ui/themes/default/images/linkbutton_bg.png new file mode 100755 index 0000000000..fc66bd2cd2 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/linkbutton_bg.png differ diff --git a/assets/js/easy-ui/themes/default/images/loading.gif b/assets/js/easy-ui/themes/default/images/loading.gif new file mode 100755 index 0000000000..68f01d0481 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/loading.gif differ diff --git a/assets/js/easy-ui/themes/default/images/menu_arrows.png b/assets/js/easy-ui/themes/default/images/menu_arrows.png new file mode 100755 index 0000000000..b986842e7e Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/menu_arrows.png differ diff --git a/assets/js/easy-ui/themes/default/images/messager_icons.png b/assets/js/easy-ui/themes/default/images/messager_icons.png new file mode 100755 index 0000000000..62c18c1358 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/messager_icons.png differ diff --git a/assets/js/easy-ui/themes/default/images/pagination_icons.png b/assets/js/easy-ui/themes/default/images/pagination_icons.png new file mode 100755 index 0000000000..616f0bdd6f Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/pagination_icons.png differ diff --git a/assets/js/easy-ui/themes/default/images/panel_tools.png b/assets/js/easy-ui/themes/default/images/panel_tools.png new file mode 100755 index 0000000000..19ecc9461d Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/panel_tools.png differ diff --git a/assets/js/easy-ui/themes/default/images/searchbox_button.png b/assets/js/easy-ui/themes/default/images/searchbox_button.png new file mode 100755 index 0000000000..6dd1931589 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/searchbox_button.png differ diff --git a/assets/js/easy-ui/themes/default/images/slider_handle.png b/assets/js/easy-ui/themes/default/images/slider_handle.png new file mode 100755 index 0000000000..b9802bae14 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/slider_handle.png differ diff --git a/assets/js/easy-ui/themes/default/images/spinner_arrows.png b/assets/js/easy-ui/themes/default/images/spinner_arrows.png new file mode 100755 index 0000000000..b68592de32 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/spinner_arrows.png differ diff --git a/assets/js/easy-ui/themes/default/images/tabs_icons.png b/assets/js/easy-ui/themes/default/images/tabs_icons.png new file mode 100755 index 0000000000..4d29966d71 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/tabs_icons.png differ diff --git a/assets/js/easy-ui/themes/default/images/tree_icons.png b/assets/js/easy-ui/themes/default/images/tree_icons.png new file mode 100755 index 0000000000..e9be4f3a99 Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/tree_icons.png differ diff --git a/assets/js/easy-ui/themes/default/images/validatebox_warning.png b/assets/js/easy-ui/themes/default/images/validatebox_warning.png new file mode 100755 index 0000000000..2b3d4f05ba Binary files /dev/null and b/assets/js/easy-ui/themes/default/images/validatebox_warning.png differ diff --git a/assets/js/easy-ui/themes/default/layout.css b/assets/js/easy-ui/themes/default/layout.css new file mode 100755 index 0000000000..0292cf591a --- /dev/null +++ b/assets/js/easy-ui/themes/default/layout.css @@ -0,0 +1,91 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #aac5e7; +} +.layout-split-north { + border-bottom: 5px solid #E6EEF8; +} +.layout-split-south { + border-top: 5px solid #E6EEF8; +} +.layout-split-east { + border-left: 5px solid #E6EEF8; +} +.layout-split-west { + border-right: 5px solid #E6EEF8; +} +.layout-expand { + background-color: #E0ECFF; +} +.layout-expand-over { + background-color: #E0ECFF; +} diff --git a/assets/js/easy-ui/themes/default/linkbutton.css b/assets/js/easy-ui/themes/default/linkbutton.css new file mode 100755 index 0000000000..09f522068e --- /dev/null +++ b/assets/js/easy-ui/themes/default/linkbutton.css @@ -0,0 +1,197 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/assets/js/easy-ui/themes/default/menu.css b/assets/js/easy-ui/themes/default/menu.css new file mode 100755 index 0000000000..c6089d5fc0 --- /dev/null +++ b/assets/js/easy-ui/themes/default/menu.css @@ -0,0 +1,109 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #fafafa; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #fafafa; +} +.menu-active { + border-color: #b7d2ff; + color: #000000; + background: #eaf2ff; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/assets/js/easy-ui/themes/default/menubutton.css b/assets/js/easy-ui/themes/default/menubutton.css new file mode 100755 index 0000000000..3445bd5c2b --- /dev/null +++ b/assets/js/easy-ui/themes/default/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #eaf2ff; + color: #000000; + border: 1px solid #b7d2ff; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #b7d2ff; + background-color: #eaf2ff; + color: #000000; +} diff --git a/assets/js/easy-ui/themes/default/messager.css b/assets/js/easy-ui/themes/default/messager.css new file mode 100755 index 0000000000..f7195816bf --- /dev/null +++ b/assets/js/easy-ui/themes/default/messager.css @@ -0,0 +1,40 @@ +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #95B8E7; +} diff --git a/assets/js/easy-ui/themes/default/numberbox.css b/assets/js/easy-ui/themes/default/numberbox.css new file mode 100755 index 0000000000..03c7ea2acb --- /dev/null +++ b/assets/js/easy-ui/themes/default/numberbox.css @@ -0,0 +1,9 @@ +.numberbox { + border: 1px solid #95B8E7; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} diff --git a/assets/js/easy-ui/themes/default/pagination.css b/assets/js/easy-ui/themes/default/pagination.css new file mode 100755 index 0000000000..1f8783c138 --- /dev/null +++ b/assets/js/easy-ui/themes/default/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #95B8E7; +} diff --git a/assets/js/easy-ui/themes/default/panel.css b/assets/js/easy-ui/themes/default/panel.css new file mode 100755 index 0000000000..c32f3a0eae --- /dev/null +++ b/assets/js/easy-ui/themes/default/panel.css @@ -0,0 +1,142 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #eaf2ff; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #95B8E7; +} +.panel-header { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #0E2D5F; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #95B8E7; + overflow: hidden; + background: #F4F4F4; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} diff --git a/assets/js/easy-ui/themes/default/progressbar.css b/assets/js/easy-ui/themes/default/progressbar.css new file mode 100755 index 0000000000..e4d30031cc --- /dev/null +++ b/assets/js/easy-ui/themes/default/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #95B8E7; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #ffe48d; + color: #000000; +} diff --git a/assets/js/easy-ui/themes/default/propertygrid.css b/assets/js/easy-ui/themes/default/propertygrid.css new file mode 100755 index 0000000000..5f5fbb38dd --- /dev/null +++ b/assets/js/easy-ui/themes/default/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #dddddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #E0ECFF; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #dddddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #E0ECFF; +} diff --git a/assets/js/easy-ui/themes/default/searchbox.css b/assets/js/easy-ui/themes/default/searchbox.css new file mode 100755 index 0000000000..5f5e01184f --- /dev/null +++ b/assets/js/easy-ui/themes/default/searchbox.css @@ -0,0 +1,90 @@ +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #95B8E7; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #E0ECFF; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/default/slider.css b/assets/js/easy-ui/themes/default/slider.css new file mode 100755 index 0000000000..f51f986366 --- /dev/null +++ b/assets/js/easy-ui/themes/default/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #95B8E7; + background: #E0ECFF; +} +.slider-rule span { + border-color: #95B8E7; +} +.slider-rulelabel span { + color: #000000; +} diff --git a/assets/js/easy-ui/themes/default/spinner.css b/assets/js/easy-ui/themes/default/spinner.css new file mode 100755 index 0000000000..18dc32e905 --- /dev/null +++ b/assets/js/easy-ui/themes/default/spinner.css @@ -0,0 +1,71 @@ +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #E0ECFF; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #eaf2ff; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #eaf2ff; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #E0ECFF; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #95B8E7; +} diff --git a/assets/js/easy-ui/themes/default/splitbutton.css b/assets/js/easy-ui/themes/default/splitbutton.css new file mode 100755 index 0000000000..86d6da58e8 --- /dev/null +++ b/assets/js/easy-ui/themes/default/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #aac5e7; + border-width: 0 0 0 1px; +} diff --git a/assets/js/easy-ui/themes/default/tabs.css b/assets/js/easy-ui/themes/default/tabs.css new file mode 100755 index 0000000000..0cc95e57fe --- /dev/null +++ b/assets/js/easy-ui/themes/default/tabs.css @@ -0,0 +1,356 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #E0ECFF url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #E0ECFF url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #eaf2ff; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #0E2D5F; + background: -webkit-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(top,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to bottom,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -moz-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: -o-linear-gradient(left,#EFF5FF 0,#ffffff 100%); + background: linear-gradient(to right,#EFF5FF 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -moz-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: -o-linear-gradient(left,#ffffff 0,#EFF5FF 100%); + background: linear-gradient(to right,#ffffff 0,#EFF5FF 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#EFF5FF,GradientType=1); +} +.tabs li a.tabs-inner { + color: #0E2D5F; + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 100%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #E0ECFF; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #95B8E7; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #eaf2ff; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} diff --git a/assets/js/easy-ui/themes/default/textbox.css b/assets/js/easy-ui/themes/default/textbox.css new file mode 100755 index 0000000000..0bcd51ca4f --- /dev/null +++ b/assets/js/easy-ui/themes/default/textbox.css @@ -0,0 +1,87 @@ +.textbox { + position: relative; + border: 1px solid #95B8E7; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #95B8E7; + -webkit-box-shadow: 0 0 3px 0 #95B8E7; + box-shadow: 0 0 3px 0 #95B8E7; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/default/tooltip.css b/assets/js/easy-ui/themes/default/tooltip.css new file mode 100755 index 0000000000..2881b7050f --- /dev/null +++ b/assets/js/easy-ui/themes/default/tooltip.css @@ -0,0 +1,100 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #95B8E7; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #95B8E7; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #95B8E7; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #95B8E7; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #95B8E7; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/assets/js/easy-ui/themes/default/tree.css b/assets/js/easy-ui/themes/default/tree.css new file mode 100755 index 0000000000..bdbcd01c1a --- /dev/null +++ b/assets/js/easy-ui/themes/default/tree.css @@ -0,0 +1,157 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #95B8E7; +} +.tree-node-hover { + background: #eaf2ff; + color: #000000; +} +.tree-node-selected { + background: #ffe48d; + color: #000000; +} diff --git a/assets/js/easy-ui/themes/default/validatebox.css b/assets/js/easy-ui/themes/default/validatebox.css new file mode 100755 index 0000000000..1fc3ad64e4 --- /dev/null +++ b/assets/js/easy-ui/themes/default/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/assets/js/easy-ui/themes/default/window.css b/assets/js/easy-ui/themes/default/window.css new file mode 100755 index 0000000000..06f77db207 --- /dev/null +++ b/assets/js/easy-ui/themes/default/window.css @@ -0,0 +1,94 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #95B8E7; +} +.window { + background-color: #E0ECFF; + background: -webkit-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -moz-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: -o-linear-gradient(top,#EFF5FF 0,#E0ECFF 20%); + background: linear-gradient(to bottom,#EFF5FF 0,#E0ECFF 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#EFF5FF,endColorstr=#E0ECFF,GradientType=0); +} +.window-proxy { + border: 1px dashed #95B8E7; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #95B8E7; + position: relative; + top: -1px; +} diff --git a/assets/js/easy-ui/themes/gray/accordion.css b/assets/js/easy-ui/themes/gray/accordion.css new file mode 100755 index 0000000000..3cb451b167 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/accordion.css @@ -0,0 +1,41 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D3D3D3; +} +.accordion .accordion-header { + background: #f3f3f3; + filter: none; +} +.accordion .accordion-header-selected { + background: #0092DC; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} diff --git a/assets/js/easy-ui/themes/gray/calendar.css b/assets/js/easy-ui/themes/gray/calendar.css new file mode 100755 index 0000000000..335310d6da --- /dev/null +++ b/assets/js/easy-ui/themes/gray/calendar.css @@ -0,0 +1,197 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D3D3D3; +} +.calendar { + border-color: #D3D3D3; +} +.calendar-header { + background: #f3f3f3; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e2e2e2; + color: #000000; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #0092DC; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} diff --git a/assets/js/easy-ui/themes/gray/combo.css b/assets/js/easy-ui/themes/gray/combo.css new file mode 100755 index 0000000000..3c76f2cc06 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/combo.css @@ -0,0 +1,60 @@ +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #D3D3D3; + background-color: #fff; +} +.combo-arrow { + background-color: #f3f3f3; +} +.combo-arrow-hover { + background-color: #e2e2e2; +} +.combo-arrow:hover { + background-color: #e2e2e2; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/gray/combobox.css b/assets/js/easy-ui/themes/gray/combobox.css new file mode 100755 index 0000000000..68b626239f --- /dev/null +++ b/assets/js/easy-ui/themes/gray/combobox.css @@ -0,0 +1,24 @@ +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #e2e2e2; + color: #000000; +} +.combobox-item-selected { + background-color: #0092DC; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/gray/datagrid.css b/assets/js/easy-ui/themes/gray/datagrid.css new file mode 100755 index 0000000000..90bcee3a1a --- /dev/null +++ b/assets/js/easy-ui/themes/gray/datagrid.css @@ -0,0 +1,267 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D3D3D3; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; + background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #bfbfbf; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D3D3D3; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e2e2e2; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #0092DC; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/assets/js/easy-ui/themes/gray/datebox.css b/assets/js/easy-ui/themes/gray/datebox.css new file mode 100755 index 0000000000..8c41350345 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #444; +} diff --git a/assets/js/easy-ui/themes/gray/dialog.css b/assets/js/easy-ui/themes/gray/dialog.css new file mode 100755 index 0000000000..b1ff52fa17 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/dialog.css @@ -0,0 +1,32 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D3D3D3 #D3D3D3 #ddd #D3D3D3; +} +.dialog-button { + border-color: #ddd #D3D3D3 #D3D3D3 #D3D3D3; +} diff --git a/assets/js/easy-ui/themes/gray/easyui.css b/assets/js/easy-ui/themes/gray/easyui.css new file mode 100755 index 0000000000..8098225876 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/easyui.css @@ -0,0 +1,2549 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e2e2e2; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D3D3D3; +} +.panel-header { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #575765; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D3D3D3; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #ffffff; + border-color: #D3D3D3; +} +.accordion .accordion-header { + background: #f3f3f3; + filter: none; +} +.accordion .accordion-header-selected { + background: #0092DC; +} +.accordion .accordion-header-selected .panel-title { + color: #fff; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D3D3D3; +} +.window { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.window-proxy { + border: 1px dashed #D3D3D3; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D3D3D3; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fafafa; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #D3D3D3 #D3D3D3 #ddd #D3D3D3; +} +.dialog-button { + border-color: #ddd #D3D3D3 #D3D3D3 #D3D3D3; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #D3D3D3; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #D3D3D3; + -webkit-box-shadow: 0 0 3px 0 #D3D3D3; + box-shadow: 0 0 3px 0 #D3D3D3; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #ffffff; +} +.combo { + border-color: #D3D3D3; + background-color: #fff; +} +.combo-arrow { + background-color: #f3f3f3; +} +.combo-arrow-hover { + background-color: #e2e2e2; +} +.combo-arrow:hover { + background-color: #e2e2e2; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #e2e2e2; + color: #000000; +} +.combobox-item-selected { + background-color: #0092DC; + color: #fff; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bfbfbf; +} +.layout-split-north { + border-bottom: 5px solid #efefef; +} +.layout-split-south { + border-top: 5px solid #efefef; +} +.layout-split-east { + border-left: 5px solid #efefef; +} +.layout-split-west { + border-right: 5px solid #efefef; +} +.layout-expand { + background-color: #f3f3f3; +} +.layout-expand-over { + background-color: #f3f3f3; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e2e2e2; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #575765; + background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); +} +.tabs li a.tabs-inner { + color: #575765; + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #f3f3f3; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D3D3D3; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e2e2e2; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #D3D3D3; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #ffffff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #fafafa; + background: -webkit-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -moz-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: -o-linear-gradient(top,#fdfdfd 0,#f5f5f5 100%); + background: linear-gradient(to bottom,#fdfdfd 0,#f5f5f5 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#fdfdfd,endColorstr=#f5f5f5,GradientType=0); +} +.datagrid-cell-rownumber { + color: #000000; +} +.datagrid-resize-proxy { + background: #bfbfbf; +} +.datagrid-mask { + background: #ccc; +} +.datagrid-mask-msg { + border-color: #D3D3D3; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fafafa; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ccc; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #000000; + border-collapse: separate; +} +.datagrid-row-alt { + background: #fafafa; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #e2e2e2; + color: #000000; + cursor: default; +} +.datagrid-row-selected { + background: #0092DC; + color: #fff; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f3f3f3; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f3f3f3; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D3D3D3; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.calendar-body th, +.calendar-menu-month { + color: #4d4d4d; +} +.calendar-day { + color: #000000; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #D3D3D3; +} +.calendar { + border-color: #D3D3D3; +} +.calendar-header { + background: #f3f3f3; +} +.calendar-body, +.calendar-menu { + background: #ffffff; +} +.calendar-body th { + background: #fafafa; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #e2e2e2; + color: #000000; +} +.calendar-hover { + border: 1px solid #ccc; + padding: 0; +} +.calendar-selected { + background-color: #0092DC; + color: #fff; + border: 1px solid #0070a9; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fafafa; +} +.datebox-button a { + color: #444; +} +.numberbox { + border: 1px solid #D3D3D3; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #f3f3f3; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e2e2e2; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e2e2e2; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f3f3f3; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #D3D3D3; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D3D3D3; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0092DC; + color: #fff; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #D3D3D3; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #f3f3f3; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D3D3D3; + background: #f3f3f3; +} +.slider-rule span { + border-color: #D3D3D3; +} +.slider-rulelabel span { + color: #000000; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #f3f3f3; + border-color: #D3D3D3; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #f3f3f3; +} +.menu-active { + border-color: #ccc; + color: #000000; + background: #e2e2e2; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #e2e2e2; + color: #000000; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #D3D3D3; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #D3D3D3; +} +.tree-node-hover { + background: #e2e2e2; + color: #000000; +} +.tree-node-selected { + background: #0092DC; + color: #fff; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D3D3D3; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D3D3D3; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D3D3D3; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D3D3D3; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D3D3D3; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/assets/js/easy-ui/themes/gray/filebox.css b/assets/js/easy-ui/themes/gray/filebox.css new file mode 100755 index 0000000000..6077ebdc13 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/filebox.css @@ -0,0 +1,6 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} diff --git a/assets/js/easy-ui/themes/gray/images/accordion_arrows.png b/assets/js/easy-ui/themes/gray/images/accordion_arrows.png new file mode 100755 index 0000000000..a0b8769cc5 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/accordion_arrows.png differ diff --git a/assets/js/easy-ui/themes/gray/images/blank.gif b/assets/js/easy-ui/themes/gray/images/blank.gif new file mode 100755 index 0000000000..1d11fa9ada Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/blank.gif differ diff --git a/assets/js/easy-ui/themes/gray/images/calendar_arrows.png b/assets/js/easy-ui/themes/gray/images/calendar_arrows.png new file mode 100755 index 0000000000..430c4ad685 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/calendar_arrows.png differ diff --git a/assets/js/easy-ui/themes/gray/images/combo_arrow.png b/assets/js/easy-ui/themes/gray/images/combo_arrow.png new file mode 100755 index 0000000000..04f4ba0cd5 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/combo_arrow.png differ diff --git a/assets/js/easy-ui/themes/gray/images/datagrid_icons.png b/assets/js/easy-ui/themes/gray/images/datagrid_icons.png new file mode 100755 index 0000000000..73c4e88893 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/datagrid_icons.png differ diff --git a/assets/js/easy-ui/themes/gray/images/datebox_arrow.png b/assets/js/easy-ui/themes/gray/images/datebox_arrow.png new file mode 100755 index 0000000000..783c83357f Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/datebox_arrow.png differ diff --git a/assets/js/easy-ui/themes/gray/images/layout_arrows.png b/assets/js/easy-ui/themes/gray/images/layout_arrows.png new file mode 100755 index 0000000000..bf7929f547 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/layout_arrows.png differ diff --git a/assets/js/easy-ui/themes/gray/images/linkbutton_bg.png b/assets/js/easy-ui/themes/gray/images/linkbutton_bg.png new file mode 100755 index 0000000000..fc66bd2cd2 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/linkbutton_bg.png differ diff --git a/assets/js/easy-ui/themes/gray/images/loading.gif b/assets/js/easy-ui/themes/gray/images/loading.gif new file mode 100755 index 0000000000..68f01d0481 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/loading.gif differ diff --git a/assets/js/easy-ui/themes/gray/images/menu_arrows.png b/assets/js/easy-ui/themes/gray/images/menu_arrows.png new file mode 100755 index 0000000000..b986842e7e Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/menu_arrows.png differ diff --git a/assets/js/easy-ui/themes/gray/images/messager_icons.png b/assets/js/easy-ui/themes/gray/images/messager_icons.png new file mode 100755 index 0000000000..62c18c1358 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/messager_icons.png differ diff --git a/assets/js/easy-ui/themes/gray/images/pagination_icons.png b/assets/js/easy-ui/themes/gray/images/pagination_icons.png new file mode 100755 index 0000000000..e0f1b07b05 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/pagination_icons.png differ diff --git a/assets/js/easy-ui/themes/gray/images/panel_tools.png b/assets/js/easy-ui/themes/gray/images/panel_tools.png new file mode 100755 index 0000000000..f33f8c9707 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/panel_tools.png differ diff --git a/assets/js/easy-ui/themes/gray/images/searchbox_button.png b/assets/js/easy-ui/themes/gray/images/searchbox_button.png new file mode 100755 index 0000000000..6dd1931589 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/searchbox_button.png differ diff --git a/assets/js/easy-ui/themes/gray/images/slider_handle.png b/assets/js/easy-ui/themes/gray/images/slider_handle.png new file mode 100755 index 0000000000..b9802bae14 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/slider_handle.png differ diff --git a/assets/js/easy-ui/themes/gray/images/spinner_arrows.png b/assets/js/easy-ui/themes/gray/images/spinner_arrows.png new file mode 100755 index 0000000000..dba62bb723 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/spinner_arrows.png differ diff --git a/assets/js/easy-ui/themes/gray/images/tabs_icons.png b/assets/js/easy-ui/themes/gray/images/tabs_icons.png new file mode 100755 index 0000000000..dfa10f7d78 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/tabs_icons.png differ diff --git a/assets/js/easy-ui/themes/gray/images/tree_icons.png b/assets/js/easy-ui/themes/gray/images/tree_icons.png new file mode 100755 index 0000000000..e9be4f3a99 Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/tree_icons.png differ diff --git a/assets/js/easy-ui/themes/gray/images/validatebox_warning.png b/assets/js/easy-ui/themes/gray/images/validatebox_warning.png new file mode 100755 index 0000000000..2b3d4f05ba Binary files /dev/null and b/assets/js/easy-ui/themes/gray/images/validatebox_warning.png differ diff --git a/assets/js/easy-ui/themes/gray/layout.css b/assets/js/easy-ui/themes/gray/layout.css new file mode 100755 index 0000000000..d26772e565 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/layout.css @@ -0,0 +1,91 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #bfbfbf; +} +.layout-split-north { + border-bottom: 5px solid #efefef; +} +.layout-split-south { + border-top: 5px solid #efefef; +} +.layout-split-east { + border-left: 5px solid #efefef; +} +.layout-split-west { + border-right: 5px solid #efefef; +} +.layout-expand { + background-color: #f3f3f3; +} +.layout-expand-over { + background-color: #f3f3f3; +} diff --git a/assets/js/easy-ui/themes/gray/linkbutton.css b/assets/js/easy-ui/themes/gray/linkbutton.css new file mode 100755 index 0000000000..79aceec6f1 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/linkbutton.css @@ -0,0 +1,197 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #444; + background: #fafafa; + background-repeat: repeat-x; + border: 1px solid #bbb; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #fafafa; + color: #444; + background: -webkit-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: -o-linear-gradient(top,#ffffff 0,#eeeeee 100%); + background: linear-gradient(to bottom,#ffffff 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#eeeeee,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/assets/js/easy-ui/themes/gray/menu.css b/assets/js/easy-ui/themes/gray/menu.css new file mode 100755 index 0000000000..51c2cff322 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/menu.css @@ -0,0 +1,109 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ccc; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ccc; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #f3f3f3; + border-color: #D3D3D3; + color: #444; +} +.menu-content { + background: #ffffff; +} +.menu-item { + border-color: transparent; + _border-color: #f3f3f3; +} +.menu-active { + border-color: #ccc; + color: #000000; + background: #e2e2e2; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/assets/js/easy-ui/themes/gray/menubutton.css b/assets/js/easy-ui/themes/gray/menubutton.css new file mode 100755 index 0000000000..f5732d5d93 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #e2e2e2; + color: #000000; + border: 1px solid #ccc; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ccc; + background-color: #e2e2e2; + color: #000000; +} diff --git a/assets/js/easy-ui/themes/gray/messager.css b/assets/js/easy-ui/themes/gray/messager.css new file mode 100755 index 0000000000..1e5df2a777 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/messager.css @@ -0,0 +1,40 @@ +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #D3D3D3; +} diff --git a/assets/js/easy-ui/themes/gray/numberbox.css b/assets/js/easy-ui/themes/gray/numberbox.css new file mode 100755 index 0000000000..ef92d174e6 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/numberbox.css @@ -0,0 +1,9 @@ +.numberbox { + border: 1px solid #D3D3D3; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} diff --git a/assets/js/easy-ui/themes/gray/pagination.css b/assets/js/easy-ui/themes/gray/pagination.css new file mode 100755 index 0000000000..ac691ed664 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ccc; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #D3D3D3; +} diff --git a/assets/js/easy-ui/themes/gray/panel.css b/assets/js/easy-ui/themes/gray/panel.css new file mode 100755 index 0000000000..fa41aaadc9 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/panel.css @@ -0,0 +1,142 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #e2e2e2; + -moz-border-radius: 3px 3px 3px 3px; + -webkit-border-radius: 3px 3px 3px 3px; + border-radius: 3px 3px 3px 3px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #D3D3D3; +} +.panel-header { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.panel-body { + background-color: #ffffff; + color: #000000; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #575765; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #D3D3D3; + overflow: hidden; + background: #fafafa; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} diff --git a/assets/js/easy-ui/themes/gray/progressbar.css b/assets/js/easy-ui/themes/gray/progressbar.css new file mode 100755 index 0000000000..93818e3e16 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.progressbar { + border-color: #D3D3D3; +} +.progressbar-text { + color: #000000; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #0092DC; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/gray/propertygrid.css b/assets/js/easy-ui/themes/gray/propertygrid.css new file mode 100755 index 0000000000..90e452088f --- /dev/null +++ b/assets/js/easy-ui/themes/gray/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #f3f3f3; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #f3f3f3; +} diff --git a/assets/js/easy-ui/themes/gray/searchbox.css b/assets/js/easy-ui/themes/gray/searchbox.css new file mode 100755 index 0000000000..ed01d43518 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/searchbox.css @@ -0,0 +1,90 @@ +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #D3D3D3; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #f3f3f3; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/gray/slider.css b/assets/js/easy-ui/themes/gray/slider.css new file mode 100755 index 0000000000..b163812089 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 5px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #D3D3D3; + background: #f3f3f3; +} +.slider-rule span { + border-color: #D3D3D3; +} +.slider-rulelabel span { + color: #000000; +} diff --git a/assets/js/easy-ui/themes/gray/spinner.css b/assets/js/easy-ui/themes/gray/spinner.css new file mode 100755 index 0000000000..c90578842d --- /dev/null +++ b/assets/js/easy-ui/themes/gray/spinner.css @@ -0,0 +1,71 @@ +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #f3f3f3; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #e2e2e2; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #e2e2e2; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #f3f3f3; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #D3D3D3; +} diff --git a/assets/js/easy-ui/themes/gray/splitbutton.css b/assets/js/easy-ui/themes/gray/splitbutton.css new file mode 100755 index 0000000000..bb2b6daafb --- /dev/null +++ b/assets/js/easy-ui/themes/gray/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #bfbfbf; + border-width: 0 0 0 1px; +} diff --git a/assets/js/easy-ui/themes/gray/tabs.css b/assets/js/easy-ui/themes/gray/tabs.css new file mode 100755 index 0000000000..0a5845328a --- /dev/null +++ b/assets/js/easy-ui/themes/gray/tabs.css @@ -0,0 +1,356 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 5px 5px; + -webkit-border-radius: 0 0 5px 5px; + border-radius: 0 0 5px 5px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 5px 0 0 5px; + -webkit-border-radius: 5px 0 0 5px; + border-radius: 5px 0 0 5px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 5px 5px 0; + -webkit-border-radius: 0 5px 5px 0; + border-radius: 0 5px 5px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #f3f3f3 url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #e2e2e2; + color: #000000; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #ffffff; + color: #575765; + background: -webkit-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=0); +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(top,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to bottom,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=0); +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -moz-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: -o-linear-gradient(left,#F8F8F8 0,#ffffff 100%); + background: linear-gradient(to right,#F8F8F8 0,#ffffff 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#ffffff,GradientType=1); +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + background: -webkit-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -moz-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: -o-linear-gradient(left,#ffffff 0,#F8F8F8 100%); + background: linear-gradient(to right,#ffffff 0,#F8F8F8 100%); + background-repeat: repeat-y; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#F8F8F8,GradientType=1); +} +.tabs li a.tabs-inner { + color: #575765; + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 100%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.tabs-header, +.tabs-tool { + background-color: #f3f3f3; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #D3D3D3; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #e2e2e2; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #ffffff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #ffffff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #ffffff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #ffffff; +} diff --git a/assets/js/easy-ui/themes/gray/textbox.css b/assets/js/easy-ui/themes/gray/textbox.css new file mode 100755 index 0000000000..2101352c88 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/textbox.css @@ -0,0 +1,87 @@ +.textbox { + position: relative; + border: 1px solid #D3D3D3; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #D3D3D3; + -webkit-box-shadow: 0 0 3px 0 #D3D3D3; + box-shadow: 0 0 3px 0 #D3D3D3; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/gray/tooltip.css b/assets/js/easy-ui/themes/gray/tooltip.css new file mode 100755 index 0000000000..51c5b83427 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/tooltip.css @@ -0,0 +1,100 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #ffffff; + border-color: #D3D3D3; + color: #000000; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #D3D3D3; +} +.tooltip-right .tooltip-arrow { + border-right-color: #ffffff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #D3D3D3; +} +.tooltip-left .tooltip-arrow { + border-left-color: #ffffff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #D3D3D3; +} +.tooltip-top .tooltip-arrow { + border-top-color: #ffffff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #D3D3D3; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #ffffff; +} diff --git a/assets/js/easy-ui/themes/gray/tree.css b/assets/js/easy-ui/themes/gray/tree.css new file mode 100755 index 0000000000..c705f39ce3 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/tree.css @@ -0,0 +1,157 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #ffffff; + color: #000000; + border-color: #D3D3D3; +} +.tree-node-hover { + background: #e2e2e2; + color: #000000; +} +.tree-node-selected { + background: #0092DC; + color: #fff; +} diff --git a/assets/js/easy-ui/themes/gray/validatebox.css b/assets/js/easy-ui/themes/gray/validatebox.css new file mode 100755 index 0000000000..1fc3ad64e4 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/assets/js/easy-ui/themes/gray/window.css b/assets/js/easy-ui/themes/gray/window.css new file mode 100755 index 0000000000..dfe8954681 --- /dev/null +++ b/assets/js/easy-ui/themes/gray/window.css @@ -0,0 +1,94 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 5px 5px 5px 5px; + -webkit-border-radius: 5px 5px 5px 5px; + border-radius: 5px 5px 5px 5px; +} +.window-shadow { + background: #ccc; + -moz-box-shadow: 2px 2px 3px #cccccc; + -webkit-box-shadow: 2px 2px 3px #cccccc; + box-shadow: 2px 2px 3px #cccccc; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #D3D3D3; +} +.window { + background-color: #f3f3f3; + background: -webkit-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -moz-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: -o-linear-gradient(top,#F8F8F8 0,#eeeeee 20%); + background: linear-gradient(to bottom,#F8F8F8 0,#eeeeee 20%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#F8F8F8,endColorstr=#eeeeee,GradientType=0); +} +.window-proxy { + border: 1px dashed #D3D3D3; +} +.window-proxy-mask, +.window-mask { + background: #ccc; +} +.window .panel-footer { + border: 1px solid #D3D3D3; + position: relative; + top: -1px; +} diff --git a/assets/js/easy-ui/themes/icon.css b/assets/js/easy-ui/themes/icon.css new file mode 100755 index 0000000000..5501abbe11 --- /dev/null +++ b/assets/js/easy-ui/themes/icon.css @@ -0,0 +1,93 @@ +.icon-blank{ + background:url('icons/blank.gif') no-repeat center center; +} +.icon-add{ + background:url('icons/edit_add.png') no-repeat center center; +} +.icon-edit{ + background:url('icons/pencil.png') no-repeat center center; +} +.icon-clear{ + background:url('icons/clear.png') no-repeat center center; +} +.icon-remove{ + background:url('icons/edit_remove.png') no-repeat center center; +} +.icon-save{ + background:url('icons/filesave.png') no-repeat center center; +} +.icon-cut{ + background:url('icons/cut.png') no-repeat center center; +} +.icon-ok{ + background:url('icons/ok.png') no-repeat center center; +} +.icon-no{ + background:url('icons/no.png') no-repeat center center; +} +.icon-cancel{ + background:url('icons/cancel.png') no-repeat center center; +} +.icon-reload{ + background:url('icons/reload.png') no-repeat center center; +} +.icon-search{ + background:url('icons/search.png') no-repeat center center; +} +.icon-print{ + background:url('icons/print.png') no-repeat center center; +} +.icon-help{ + background:url('icons/help.png') no-repeat center center; +} +.icon-undo{ + background:url('icons/undo.png') no-repeat center center; +} +.icon-redo{ + background:url('icons/redo.png') no-repeat center center; +} +.icon-back{ + background:url('icons/back.png') no-repeat center center; +} +.icon-sum{ + background:url('icons/sum.png') no-repeat center center; +} +.icon-tip{ + background:url('icons/tip.png') no-repeat center center; +} +.icon-filter{ + background:url('icons/filter.png') no-repeat center center; +} +.icon-man{ + background:url('icons/man.png') no-repeat center center; +} +.icon-lock{ + background:url('icons/lock.png') no-repeat center center; +} + + +.icon-mini-add{ + background:url('icons/mini_add.png') no-repeat center center; +} +.icon-mini-edit{ + background:url('icons/mini_edit.png') no-repeat center center; +} +.icon-mini-refresh{ + background:url('icons/mini_refresh.png') no-repeat center center; +} + +.icon-large-picture{ + background:url('icons/large_picture.png') no-repeat center center; +} +.icon-large-clipart{ + background:url('icons/large_clipart.png') no-repeat center center; +} +.icon-large-shapes{ + background:url('icons/large_shapes.png') no-repeat center center; +} +.icon-large-smartart{ + background:url('icons/large_smartart.png') no-repeat center center; +} +.icon-large-chart{ + background:url('icons/large_chart.png') no-repeat center center; +} diff --git a/assets/js/easy-ui/themes/icons/back.png b/assets/js/easy-ui/themes/icons/back.png new file mode 100755 index 0000000000..3fe8b178ec Binary files /dev/null and b/assets/js/easy-ui/themes/icons/back.png differ diff --git a/assets/js/easy-ui/themes/icons/blank.gif b/assets/js/easy-ui/themes/icons/blank.gif new file mode 100755 index 0000000000..1d11fa9ada Binary files /dev/null and b/assets/js/easy-ui/themes/icons/blank.gif differ diff --git a/assets/js/easy-ui/themes/icons/cancel.png b/assets/js/easy-ui/themes/icons/cancel.png new file mode 100755 index 0000000000..a432b492c4 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/cancel.png differ diff --git a/assets/js/easy-ui/themes/icons/clear.png b/assets/js/easy-ui/themes/icons/clear.png new file mode 100755 index 0000000000..74b9af9192 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/clear.png differ diff --git a/assets/js/easy-ui/themes/icons/cut.png b/assets/js/easy-ui/themes/icons/cut.png new file mode 100755 index 0000000000..21fdb4dc3c Binary files /dev/null and b/assets/js/easy-ui/themes/icons/cut.png differ diff --git a/assets/js/easy-ui/themes/icons/edit_add.png b/assets/js/easy-ui/themes/icons/edit_add.png new file mode 100755 index 0000000000..e9485082ea Binary files /dev/null and b/assets/js/easy-ui/themes/icons/edit_add.png differ diff --git a/assets/js/easy-ui/themes/icons/edit_remove.png b/assets/js/easy-ui/themes/icons/edit_remove.png new file mode 100755 index 0000000000..d555d921ac Binary files /dev/null and b/assets/js/easy-ui/themes/icons/edit_remove.png differ diff --git a/assets/js/easy-ui/themes/icons/filesave.png b/assets/js/easy-ui/themes/icons/filesave.png new file mode 100755 index 0000000000..fd0048ded9 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/filesave.png differ diff --git a/assets/js/easy-ui/themes/icons/filter.png b/assets/js/easy-ui/themes/icons/filter.png new file mode 100755 index 0000000000..1fedf7ae66 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/filter.png differ diff --git a/assets/js/easy-ui/themes/icons/help.png b/assets/js/easy-ui/themes/icons/help.png new file mode 100755 index 0000000000..28a0f9e5e6 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/help.png differ diff --git a/assets/js/easy-ui/themes/icons/large_chart.png b/assets/js/easy-ui/themes/icons/large_chart.png new file mode 100755 index 0000000000..527608ee94 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/large_chart.png differ diff --git a/assets/js/easy-ui/themes/icons/large_clipart.png b/assets/js/easy-ui/themes/icons/large_clipart.png new file mode 100755 index 0000000000..9c9c44002b Binary files /dev/null and b/assets/js/easy-ui/themes/icons/large_clipart.png differ diff --git a/assets/js/easy-ui/themes/icons/large_picture.png b/assets/js/easy-ui/themes/icons/large_picture.png new file mode 100755 index 0000000000..a005b0c68c Binary files /dev/null and b/assets/js/easy-ui/themes/icons/large_picture.png differ diff --git a/assets/js/easy-ui/themes/icons/large_shapes.png b/assets/js/easy-ui/themes/icons/large_shapes.png new file mode 100755 index 0000000000..90a0dcacd8 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/large_shapes.png differ diff --git a/assets/js/easy-ui/themes/icons/large_smartart.png b/assets/js/easy-ui/themes/icons/large_smartart.png new file mode 100755 index 0000000000..b47da08fa7 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/large_smartart.png differ diff --git a/assets/js/easy-ui/themes/icons/lock.png b/assets/js/easy-ui/themes/icons/lock.png new file mode 100755 index 0000000000..15bd643296 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/lock.png differ diff --git a/assets/js/easy-ui/themes/icons/man.png b/assets/js/easy-ui/themes/icons/man.png new file mode 100755 index 0000000000..a8cafcb9a1 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/man.png differ diff --git a/assets/js/easy-ui/themes/icons/mini_add.png b/assets/js/easy-ui/themes/icons/mini_add.png new file mode 100755 index 0000000000..fd82b92dcf Binary files /dev/null and b/assets/js/easy-ui/themes/icons/mini_add.png differ diff --git a/assets/js/easy-ui/themes/icons/mini_edit.png b/assets/js/easy-ui/themes/icons/mini_edit.png new file mode 100755 index 0000000000..db9221a808 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/mini_edit.png differ diff --git a/assets/js/easy-ui/themes/icons/mini_refresh.png b/assets/js/easy-ui/themes/icons/mini_refresh.png new file mode 100755 index 0000000000..6cdd016036 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/mini_refresh.png differ diff --git a/assets/js/easy-ui/themes/icons/no.png b/assets/js/easy-ui/themes/icons/no.png new file mode 100755 index 0000000000..37a7c74977 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/no.png differ diff --git a/assets/js/easy-ui/themes/icons/ok.png b/assets/js/easy-ui/themes/icons/ok.png new file mode 100755 index 0000000000..5b0f6a6174 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/ok.png differ diff --git a/assets/js/easy-ui/themes/icons/pencil.png b/assets/js/easy-ui/themes/icons/pencil.png new file mode 100755 index 0000000000..5b8cc893d0 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/pencil.png differ diff --git a/assets/js/easy-ui/themes/icons/print.png b/assets/js/easy-ui/themes/icons/print.png new file mode 100755 index 0000000000..fdf67a1e27 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/print.png differ diff --git a/assets/js/easy-ui/themes/icons/redo.png b/assets/js/easy-ui/themes/icons/redo.png new file mode 100755 index 0000000000..f1e45cff93 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/redo.png differ diff --git a/assets/js/easy-ui/themes/icons/reload.png b/assets/js/easy-ui/themes/icons/reload.png new file mode 100755 index 0000000000..f51cab8e3f Binary files /dev/null and b/assets/js/easy-ui/themes/icons/reload.png differ diff --git a/assets/js/easy-ui/themes/icons/search.png b/assets/js/easy-ui/themes/icons/search.png new file mode 100755 index 0000000000..6dd1931589 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/search.png differ diff --git a/assets/js/easy-ui/themes/icons/sum.png b/assets/js/easy-ui/themes/icons/sum.png new file mode 100755 index 0000000000..fd7b32e43b Binary files /dev/null and b/assets/js/easy-ui/themes/icons/sum.png differ diff --git a/assets/js/easy-ui/themes/icons/tip.png b/assets/js/easy-ui/themes/icons/tip.png new file mode 100755 index 0000000000..845e11070a Binary files /dev/null and b/assets/js/easy-ui/themes/icons/tip.png differ diff --git a/assets/js/easy-ui/themes/icons/undo.png b/assets/js/easy-ui/themes/icons/undo.png new file mode 100755 index 0000000000..6129fa0c77 Binary files /dev/null and b/assets/js/easy-ui/themes/icons/undo.png differ diff --git a/assets/js/easy-ui/themes/metro/accordion.css b/assets/js/easy-ui/themes/metro/accordion.css new file mode 100755 index 0000000000..31d6079ec3 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/accordion.css @@ -0,0 +1,41 @@ +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #fff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #ffffff; + filter: none; +} +.accordion .accordion-header-selected { + background: #CCE6FF; +} +.accordion .accordion-header-selected .panel-title { + color: #000; +} diff --git a/assets/js/easy-ui/themes/metro/calendar.css b/assets/js/easy-ui/themes/metro/calendar.css new file mode 100755 index 0000000000..6af24ac4cd --- /dev/null +++ b/assets/js/easy-ui/themes/metro/calendar.css @@ -0,0 +1,197 @@ +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-body th, +.calendar-menu-month { + color: #919191; +} +.calendar-day { + color: #444; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #ffffff; +} +.calendar-body, +.calendar-menu { + background: #fff; +} +.calendar-body th { + background: #fff; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #E6E6E6; + color: #444; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #CCE6FF; + color: #000; + border: 1px solid #99cdff; + padding: 0; +} diff --git a/assets/js/easy-ui/themes/metro/combo.css b/assets/js/easy-ui/themes/metro/combo.css new file mode 100755 index 0000000000..39fac282f4 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/combo.css @@ -0,0 +1,60 @@ +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #fff; +} +.combo { + border-color: #ddd; + background-color: #fff; +} +.combo-arrow { + background-color: #ffffff; +} +.combo-arrow-hover { + background-color: #E6E6E6; +} +.combo-arrow:hover { + background-color: #E6E6E6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/metro/combobox.css b/assets/js/easy-ui/themes/metro/combobox.css new file mode 100755 index 0000000000..0e058b1f90 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/combobox.css @@ -0,0 +1,24 @@ +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #E6E6E6; + color: #444; +} +.combobox-item-selected { + background-color: #CCE6FF; + color: #000; +} diff --git a/assets/js/easy-ui/themes/metro/datagrid.css b/assets/js/easy-ui/themes/metro/datagrid.css new file mode 100755 index 0000000000..94880f0929 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/datagrid.css @@ -0,0 +1,261 @@ +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #fff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #ffffff; +} +.datagrid-cell-rownumber { + color: #444; +} +.datagrid-resize-proxy { + background: #b3b3b3; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fff; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ddd; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #444; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f5f5f5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #E6E6E6; + color: #444; + cursor: default; +} +.datagrid-row-selected { + background: #CCE6FF; + color: #000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} diff --git a/assets/js/easy-ui/themes/metro/datebox.css b/assets/js/easy-ui/themes/metro/datebox.css new file mode 100755 index 0000000000..b0f71e24d9 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/datebox.css @@ -0,0 +1,36 @@ +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fff; +} +.datebox-button a { + color: #777; +} diff --git a/assets/js/easy-ui/themes/metro/dialog.css b/assets/js/easy-ui/themes/metro/dialog.css new file mode 100755 index 0000000000..ea1a9e8511 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/dialog.css @@ -0,0 +1,32 @@ +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fff; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #ddd #ddd; +} +.dialog-button { + border-color: #ddd #ddd #ddd #ddd; +} diff --git a/assets/js/easy-ui/themes/metro/easyui.css b/assets/js/easy-ui/themes/metro/easyui.css new file mode 100755 index 0000000000..7522107590 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/easyui.css @@ -0,0 +1,2495 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #E6E6E6; + -moz-border-radius: -2px -2px -2px -2px; + -webkit-border-radius: -2px -2px -2px -2px; + border-radius: -2px -2px -2px -2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #ffffff; +} +.panel-body { + background-color: #fff; + color: #444; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fff; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} +.accordion { + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.accordion .accordion-header { + border-width: 0 0 1px; + cursor: pointer; +} +.accordion .accordion-body { + border-width: 0 0 1px; +} +.accordion-noborder { + border-width: 0; +} +.accordion-noborder .accordion-header { + border-width: 0 0 1px; +} +.accordion-noborder .accordion-body { + border-width: 0 0 1px; +} +.accordion-collapse { + background: url('images/accordion_arrows.png') no-repeat 0 0; +} +.accordion-expand { + background: url('images/accordion_arrows.png') no-repeat -16px 0; +} +.accordion { + background: #fff; + border-color: #ddd; +} +.accordion .accordion-header { + background: #ffffff; + filter: none; +} +.accordion .accordion-header-selected { + background: #CCE6FF; +} +.accordion .accordion-header-selected .panel-title { + color: #000; +} +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.window-shadow { + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #ffffff; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} +.dialog-content { + overflow: auto; +} +.dialog-toolbar { + padding: 2px 5px; +} +.dialog-tool-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.dialog-button { + padding: 5px; + text-align: right; +} +.dialog-button .l-btn { + margin-left: 5px; +} +.dialog-toolbar, +.dialog-button { + background: #fff; + border-width: 1px; + border-style: solid; +} +.dialog-toolbar { + border-color: #ddd #ddd #ddd #ddd; +} +.dialog-button { + border-color: #ddd #ddd #ddd #ddd; +} +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #777; + background: #ffffff; + background-repeat: repeat-x; + border: 1px solid #dddddd; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} +.combo { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.combo .combo-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0px 2px; + vertical-align: baseline; +} +.combo-arrow { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.combo-arrow-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.combo-panel { + overflow: auto; +} +.combo-arrow { + background: url('images/combo_arrow.png') no-repeat center center; +} +.combo-panel { + background-color: #fff; +} +.combo { + border-color: #ddd; + background-color: #fff; +} +.combo-arrow { + background-color: #ffffff; +} +.combo-arrow-hover { + background-color: #E6E6E6; +} +.combo-arrow:hover { + background-color: #E6E6E6; +} +.combo .textbox-icon-disabled:hover { + cursor: default; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.combobox-item, +.combobox-group { + font-size: 12px; + padding: 3px; + padding-right: 0px; +} +.combobox-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.combobox-gitem { + padding-left: 10px; +} +.combobox-group { + font-weight: bold; +} +.combobox-item-hover { + background-color: #E6E6E6; + color: #444; +} +.combobox-item-selected { + background-color: #CCE6FF; + color: #000; +} +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #b3b3b3; +} +.layout-split-north { + border-bottom: 5px solid #fff; +} +.layout-split-south { + border-top: 5px solid #fff; +} +.layout-split-east { + border-left: 5px solid #fff; +} +.layout-split-west { + border-right: 5px solid #fff; +} +.layout-expand { + background-color: #ffffff; +} +.layout-expand-over { + background-color: #ffffff; +} +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0 0; + -webkit-border-radius: 0px 0px 0 0; + border-radius: 0px 0px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 0px 0px; + -webkit-border-radius: 0 0 0px 0px; + border-radius: 0 0 0px 0px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #E6E6E6; + color: #444; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #fff; + color: #777; +} +.tabs li a.tabs-inner { + color: #777; + background-color: #ffffff; +} +.tabs-header, +.tabs-tool { + background-color: #ffffff; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #E6E6E6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #fff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #fff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #fff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #fff; +} +.datagrid .panel-body { + overflow: hidden; + position: relative; +} +.datagrid-view { + position: relative; + overflow: hidden; +} +.datagrid-view1, +.datagrid-view2 { + position: absolute; + overflow: hidden; + top: 0; +} +.datagrid-view1 { + left: 0; +} +.datagrid-view2 { + right: 0; +} +.datagrid-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + opacity: 0.3; + filter: alpha(opacity=30); + display: none; +} +.datagrid-mask-msg { + position: absolute; + top: 50%; + margin-top: -20px; + padding: 10px 5px 10px 30px; + width: auto; + height: 16px; + border-width: 2px; + border-style: solid; + display: none; +} +.datagrid-sort-icon { + padding: 0; +} +.datagrid-toolbar { + height: auto; + padding: 1px 2px; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 2px 1px; +} +.datagrid .datagrid-pager { + display: block; + margin: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.datagrid .datagrid-pager-top { + border-width: 0 0 1px 0; +} +.datagrid-header { + overflow: hidden; + cursor: default; + border-width: 0 0 1px 0; + border-style: solid; +} +.datagrid-header-inner { + float: left; + width: 10000px; +} +.datagrid-header-row, +.datagrid-row { + height: 25px; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-width: 0 1px 1px 0; + border-style: dotted; + margin: 0; + padding: 0; +} +.datagrid-cell, +.datagrid-cell-group, +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + margin: 0; + padding: 0 4px; + white-space: nowrap; + word-wrap: normal; + overflow: hidden; + height: 18px; + line-height: 18px; + font-size: 12px; +} +.datagrid-header .datagrid-cell { + height: auto; +} +.datagrid-header .datagrid-cell span { + font-size: 12px; +} +.datagrid-cell-group { + text-align: center; +} +.datagrid-header-rownumber, +.datagrid-cell-rownumber { + width: 25px; + text-align: center; + margin: 0; + padding: 0; +} +.datagrid-body { + margin: 0; + padding: 0; + overflow: auto; + zoom: 1; +} +.datagrid-view1 .datagrid-body-inner { + padding-bottom: 20px; +} +.datagrid-view1 .datagrid-body { + overflow: hidden; +} +.datagrid-footer { + overflow: hidden; +} +.datagrid-footer-inner { + border-width: 1px 0 0 0; + border-style: solid; + width: 10000px; + float: left; +} +.datagrid-row-editing .datagrid-cell { + height: auto; +} +.datagrid-header-check, +.datagrid-cell-check { + padding: 0; + width: 27px; + height: 18px; + font-size: 1px; + text-align: center; + overflow: hidden; +} +.datagrid-header-check input, +.datagrid-cell-check input { + margin: 0; + padding: 0; + width: 15px; + height: 18px; +} +.datagrid-resize-proxy { + position: absolute; + width: 1px; + height: 10000px; + top: 0; + cursor: e-resize; + display: none; +} +.datagrid-body .datagrid-editable { + margin: 0; + padding: 0; +} +.datagrid-body .datagrid-editable table { + width: 100%; + height: 100%; +} +.datagrid-body .datagrid-editable td { + border: 0; + margin: 0; + padding: 0; +} +.datagrid-view .datagrid-editable-input { + margin: 0; + padding: 2px 4px; + border: 1px solid #ddd; + font-size: 12px; + outline-style: none; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.datagrid-sort-desc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat -16px center; +} +.datagrid-sort-asc .datagrid-sort-icon { + padding: 0 13px 0 0; + background: url('images/datagrid_icons.png') no-repeat 0px center; +} +.datagrid-row-collapse { + background: url('images/datagrid_icons.png') no-repeat -48px center; +} +.datagrid-row-expand { + background: url('images/datagrid_icons.png') no-repeat -32px center; +} +.datagrid-mask-msg { + background: #fff url('images/loading.gif') no-repeat scroll 5px center; +} +.datagrid-header, +.datagrid-td-rownumber { + background-color: #ffffff; +} +.datagrid-cell-rownumber { + color: #444; +} +.datagrid-resize-proxy { + background: #b3b3b3; +} +.datagrid-mask { + background: #eee; +} +.datagrid-mask-msg { + border-color: #ddd; +} +.datagrid-toolbar, +.datagrid-pager { + background: #fff; +} +.datagrid-header, +.datagrid-toolbar, +.datagrid-pager, +.datagrid-footer-inner { + border-color: #ddd; +} +.datagrid-header td, +.datagrid-body td, +.datagrid-footer td { + border-color: #ddd; +} +.datagrid-htable, +.datagrid-btable, +.datagrid-ftable { + color: #444; + border-collapse: separate; +} +.datagrid-row-alt { + background: #f5f5f5; +} +.datagrid-row-over, +.datagrid-header td.datagrid-header-over { + background: #E6E6E6; + color: #444; + cursor: default; +} +.datagrid-row-selected { + background: #CCE6FF; + color: #000; +} +.datagrid-row-editing .textbox, +.datagrid-row-editing .textbox-text { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #ffffff; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #ffffff; +} +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} +.calendar { + border-width: 1px; + border-style: solid; + padding: 1px; + overflow: hidden; +} +.calendar table { + table-layout: fixed; + border-collapse: separate; + font-size: 12px; + width: 100%; + height: 100%; +} +.calendar table td, +.calendar table th { + font-size: 12px; +} +.calendar-noborder { + border: 0; +} +.calendar-header { + position: relative; + height: 22px; +} +.calendar-title { + text-align: center; + height: 22px; +} +.calendar-title span { + position: relative; + display: inline-block; + top: 2px; + padding: 0 3px; + height: 18px; + line-height: 18px; + font-size: 12px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth, +.calendar-nextmonth, +.calendar-prevyear, +.calendar-nextyear { + position: absolute; + top: 50%; + margin-top: -7px; + width: 14px; + height: 14px; + cursor: pointer; + font-size: 1px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-prevmonth { + left: 20px; + background: url('images/calendar_arrows.png') no-repeat -18px -2px; +} +.calendar-nextmonth { + right: 20px; + background: url('images/calendar_arrows.png') no-repeat -34px -2px; +} +.calendar-prevyear { + left: 3px; + background: url('images/calendar_arrows.png') no-repeat -1px -2px; +} +.calendar-nextyear { + right: 3px; + background: url('images/calendar_arrows.png') no-repeat -49px -2px; +} +.calendar-body { + position: relative; +} +.calendar-body th, +.calendar-body td { + text-align: center; +} +.calendar-day { + border: 0; + padding: 1px; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-other-month { + opacity: 0.3; + filter: alpha(opacity=30); +} +.calendar-disabled { + opacity: 0.6; + filter: alpha(opacity=60); + cursor: default; +} +.calendar-menu { + position: absolute; + top: 0; + left: 0; + width: 180px; + height: 150px; + padding: 5px; + font-size: 12px; + display: none; + overflow: hidden; +} +.calendar-menu-year-inner { + text-align: center; + padding-bottom: 5px; +} +.calendar-menu-year { + width: 40px; + text-align: center; + border-width: 1px; + border-style: solid; + margin: 0; + padding: 2px; + font-weight: bold; + font-size: 12px; +} +.calendar-menu-prev, +.calendar-menu-next { + display: inline-block; + width: 21px; + height: 21px; + vertical-align: top; + cursor: pointer; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-menu-prev { + margin-right: 10px; + background: url('images/calendar_arrows.png') no-repeat 2px 2px; +} +.calendar-menu-next { + margin-left: 10px; + background: url('images/calendar_arrows.png') no-repeat -45px 2px; +} +.calendar-menu-month { + text-align: center; + cursor: pointer; + font-weight: bold; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.calendar-body th, +.calendar-menu-month { + color: #919191; +} +.calendar-day { + color: #444; +} +.calendar-sunday { + color: #CC2222; +} +.calendar-saturday { + color: #00ee00; +} +.calendar-today { + color: #0000ff; +} +.calendar-menu-year { + border-color: #ddd; +} +.calendar { + border-color: #ddd; +} +.calendar-header { + background: #ffffff; +} +.calendar-body, +.calendar-menu { + background: #fff; +} +.calendar-body th { + background: #fff; + padding: 2px 0; +} +.calendar-hover, +.calendar-nav-hover, +.calendar-menu-hover { + background-color: #E6E6E6; + color: #444; +} +.calendar-hover { + border: 1px solid #ddd; + padding: 0; +} +.calendar-selected { + background-color: #CCE6FF; + color: #000; + border: 1px solid #99cdff; + padding: 0; +} +.datebox-calendar-inner { + height: 180px; +} +.datebox-button { + height: 18px; + padding: 2px 5px; + text-align: center; +} +.datebox-button a { + font-size: 12px; + font-weight: bold; + text-decoration: none; + opacity: 0.6; + filter: alpha(opacity=60); +} +.datebox-button a:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.datebox-current, +.datebox-close { + float: left; +} +.datebox-close { + float: right; +} +.datebox .combo-arrow { + background-image: url('images/datebox_arrow.png'); + background-position: center center; +} +.datebox-button { + background-color: #fff; +} +.datebox-button a { + color: #777; +} +.numberbox { + border: 1px solid #ddd; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #ffffff; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #E6E6E6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #E6E6E6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #ffffff; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #ddd; +} +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #444; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #CCE6FF; + color: #000; +} +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #ddd; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #ffffff; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 0px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #ffffff; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #444; +} +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #ffffff; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #fff; +} +.menu-item { + border-color: transparent; + _border-color: #ffffff; +} +.menu-active { + border-color: #ddd; + color: #444; + background: #E6E6E6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #E6E6E6; + color: #444; +} +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #ddd; +} +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #fff; + color: #444; + border-color: #ddd; +} +.tree-node-hover { + background: #E6E6E6; + color: #444; +} +.tree-node-selected { + background: #CCE6FF; + color: #000; +} +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #fff; + border-color: #ddd; + color: #444; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #fff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #fff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #fff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #fff; +} diff --git a/assets/js/easy-ui/themes/metro/filebox.css b/assets/js/easy-ui/themes/metro/filebox.css new file mode 100755 index 0000000000..6077ebdc13 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/filebox.css @@ -0,0 +1,6 @@ +.filebox .textbox-value { + vertical-align: top; + position: absolute; + top: 0; + left: -5000px; +} diff --git a/assets/js/easy-ui/themes/metro/images/accordion_arrows.png b/assets/js/easy-ui/themes/metro/images/accordion_arrows.png new file mode 100755 index 0000000000..720835f69c Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/accordion_arrows.png differ diff --git a/assets/js/easy-ui/themes/metro/images/blank.gif b/assets/js/easy-ui/themes/metro/images/blank.gif new file mode 100755 index 0000000000..1d11fa9ada Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/blank.gif differ diff --git a/assets/js/easy-ui/themes/metro/images/calendar_arrows.png b/assets/js/easy-ui/themes/metro/images/calendar_arrows.png new file mode 100755 index 0000000000..430c4ad685 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/calendar_arrows.png differ diff --git a/assets/js/easy-ui/themes/metro/images/combo_arrow.png b/assets/js/easy-ui/themes/metro/images/combo_arrow.png new file mode 100755 index 0000000000..2e59fb9f3f Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/combo_arrow.png differ diff --git a/assets/js/easy-ui/themes/metro/images/datagrid_icons.png b/assets/js/easy-ui/themes/metro/images/datagrid_icons.png new file mode 100755 index 0000000000..747ac4d1b8 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/datagrid_icons.png differ diff --git a/assets/js/easy-ui/themes/metro/images/datebox_arrow.png b/assets/js/easy-ui/themes/metro/images/datebox_arrow.png new file mode 100755 index 0000000000..783c83357f Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/datebox_arrow.png differ diff --git a/assets/js/easy-ui/themes/metro/images/layout_arrows.png b/assets/js/easy-ui/themes/metro/images/layout_arrows.png new file mode 100755 index 0000000000..6f41654253 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/layout_arrows.png differ diff --git a/assets/js/easy-ui/themes/metro/images/linkbutton_bg.png b/assets/js/easy-ui/themes/metro/images/linkbutton_bg.png new file mode 100755 index 0000000000..fc66bd2cd2 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/linkbutton_bg.png differ diff --git a/assets/js/easy-ui/themes/metro/images/loading.gif b/assets/js/easy-ui/themes/metro/images/loading.gif new file mode 100755 index 0000000000..68f01d0481 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/loading.gif differ diff --git a/assets/js/easy-ui/themes/metro/images/menu_arrows.png b/assets/js/easy-ui/themes/metro/images/menu_arrows.png new file mode 100755 index 0000000000..b986842e7e Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/menu_arrows.png differ diff --git a/assets/js/easy-ui/themes/metro/images/messager_icons.png b/assets/js/easy-ui/themes/metro/images/messager_icons.png new file mode 100755 index 0000000000..62c18c1358 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/messager_icons.png differ diff --git a/assets/js/easy-ui/themes/metro/images/pagination_icons.png b/assets/js/easy-ui/themes/metro/images/pagination_icons.png new file mode 100755 index 0000000000..616f0bdd6f Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/pagination_icons.png differ diff --git a/assets/js/easy-ui/themes/metro/images/panel_tools.png b/assets/js/easy-ui/themes/metro/images/panel_tools.png new file mode 100755 index 0000000000..fe682ef89d Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/panel_tools.png differ diff --git a/assets/js/easy-ui/themes/metro/images/searchbox_button.png b/assets/js/easy-ui/themes/metro/images/searchbox_button.png new file mode 100755 index 0000000000..6dd1931589 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/searchbox_button.png differ diff --git a/assets/js/easy-ui/themes/metro/images/slider_handle.png b/assets/js/easy-ui/themes/metro/images/slider_handle.png new file mode 100755 index 0000000000..b9802bae14 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/slider_handle.png differ diff --git a/assets/js/easy-ui/themes/metro/images/spinner_arrows.png b/assets/js/easy-ui/themes/metro/images/spinner_arrows.png new file mode 100755 index 0000000000..b68592de32 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/spinner_arrows.png differ diff --git a/assets/js/easy-ui/themes/metro/images/tabs_icons.png b/assets/js/easy-ui/themes/metro/images/tabs_icons.png new file mode 100755 index 0000000000..4d29966d71 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/tabs_icons.png differ diff --git a/assets/js/easy-ui/themes/metro/images/tree_icons.png b/assets/js/easy-ui/themes/metro/images/tree_icons.png new file mode 100755 index 0000000000..e9be4f3a99 Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/tree_icons.png differ diff --git a/assets/js/easy-ui/themes/metro/images/validatebox_warning.png b/assets/js/easy-ui/themes/metro/images/validatebox_warning.png new file mode 100755 index 0000000000..2b3d4f05ba Binary files /dev/null and b/assets/js/easy-ui/themes/metro/images/validatebox_warning.png differ diff --git a/assets/js/easy-ui/themes/metro/layout.css b/assets/js/easy-ui/themes/metro/layout.css new file mode 100755 index 0000000000..7057fb2b0d --- /dev/null +++ b/assets/js/easy-ui/themes/metro/layout.css @@ -0,0 +1,91 @@ +.layout { + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + z-index: 0; +} +.layout-panel { + position: absolute; + overflow: hidden; +} +.layout-panel-east, +.layout-panel-west { + z-index: 2; +} +.layout-panel-north, +.layout-panel-south { + z-index: 3; +} +.layout-expand { + position: absolute; + padding: 0px; + font-size: 1px; + cursor: pointer; + z-index: 1; +} +.layout-expand .panel-header, +.layout-expand .panel-body { + background: transparent; + filter: none; + overflow: hidden; +} +.layout-expand .panel-header { + border-bottom-width: 0px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + position: absolute; + font-size: 1px; + display: none; + z-index: 5; +} +.layout-split-proxy-h { + width: 5px; + cursor: e-resize; +} +.layout-split-proxy-v { + height: 5px; + cursor: n-resize; +} +.layout-mask { + position: absolute; + background: #fafafa; + filter: alpha(opacity=10); + opacity: 0.10; + z-index: 4; +} +.layout-button-up { + background: url('images/layout_arrows.png') no-repeat -16px -16px; +} +.layout-button-down { + background: url('images/layout_arrows.png') no-repeat -16px 0; +} +.layout-button-left { + background: url('images/layout_arrows.png') no-repeat 0 0; +} +.layout-button-right { + background: url('images/layout_arrows.png') no-repeat 0 -16px; +} +.layout-split-proxy-h, +.layout-split-proxy-v { + background-color: #b3b3b3; +} +.layout-split-north { + border-bottom: 5px solid #fff; +} +.layout-split-south { + border-top: 5px solid #fff; +} +.layout-split-east { + border-left: 5px solid #fff; +} +.layout-split-west { + border-right: 5px solid #fff; +} +.layout-expand { + background-color: #ffffff; +} +.layout-expand-over { + background-color: #ffffff; +} diff --git a/assets/js/easy-ui/themes/metro/linkbutton.css b/assets/js/easy-ui/themes/metro/linkbutton.css new file mode 100755 index 0000000000..c871c4f081 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/linkbutton.css @@ -0,0 +1,197 @@ +.l-btn { + text-decoration: none; + display: inline-block; + overflow: hidden; + margin: 0; + padding: 0; + cursor: pointer; + outline: none; + text-align: center; + vertical-align: middle; +} +.l-btn-plain { + border: 0; + padding: 1px; +} +.l-btn-left { + display: inline-block; + position: relative; + overflow: hidden; + margin: 0; + padding: 0; + vertical-align: top; +} +.l-btn-text { + display: inline-block; + vertical-align: top; + width: auto; + line-height: 24px; + font-size: 12px; + padding: 0; + margin: 0 4px; +} +.l-btn-icon { + display: inline-block; + width: 16px; + height: 16px; + line-height: 16px; + position: absolute; + top: 50%; + margin-top: -8px; + font-size: 1px; +} +.l-btn span span .l-btn-empty { + display: inline-block; + margin: 0; + width: 16px; + height: 24px; + font-size: 1px; + vertical-align: top; +} +.l-btn span .l-btn-icon-left { + padding: 0 0 0 20px; + background-position: left center; +} +.l-btn span .l-btn-icon-right { + padding: 0 20px 0 0; + background-position: right center; +} +.l-btn-icon-left .l-btn-text { + margin: 0 4px 0 24px; +} +.l-btn-icon-left .l-btn-icon { + left: 4px; +} +.l-btn-icon-right .l-btn-text { + margin: 0 24px 0 4px; +} +.l-btn-icon-right .l-btn-icon { + right: 4px; +} +.l-btn-icon-top .l-btn-text { + margin: 20px 4px 0 4px; +} +.l-btn-icon-top .l-btn-icon { + top: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-icon-bottom .l-btn-text { + margin: 0 4px 20px 4px; +} +.l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 4px; + left: 50%; + margin: 0 0 0 -8px; +} +.l-btn-left .l-btn-empty { + margin: 0 4px; + width: 16px; +} +.l-btn-plain:hover { + padding: 0; +} +.l-btn-focus { + outline: #0000FF dotted thin; +} +.l-btn-large .l-btn-text { + line-height: 40px; +} +.l-btn-large .l-btn-icon { + width: 32px; + height: 32px; + line-height: 32px; + margin-top: -16px; +} +.l-btn-large .l-btn-icon-left .l-btn-text { + margin-left: 40px; +} +.l-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.l-btn-large .l-btn-icon-top .l-btn-text { + margin-top: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-top .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 36px; + line-height: 24px; + min-width: 32px; +} +.l-btn-large .l-btn-icon-bottom .l-btn-icon { + margin: 0 0 0 -16px; +} +.l-btn-large .l-btn-left .l-btn-empty { + margin: 0 4px; + width: 32px; +} +.l-btn { + color: #777; + background: #ffffff; + background-repeat: repeat-x; + border: 1px solid #dddddd; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.l-btn-plain { + background: transparent; + border: 0; + filter: none; +} +.l-btn-plain:hover { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.l-btn-disabled, +.l-btn-disabled:hover { + opacity: 0.5; + cursor: default; + background: #ffffff; + color: #777; + background: -webkit-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -moz-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: -o-linear-gradient(top,#ffffff 0,#ffffff 100%); + background: linear-gradient(to bottom,#ffffff 0,#ffffff 100%); + background-repeat: repeat-x; + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff,GradientType=0); +} +.l-btn-disabled .l-btn-text, +.l-btn-disabled .l-btn-icon { + filter: alpha(opacity=50); +} +.l-btn-plain-disabled, +.l-btn-plain-disabled:hover { + background: transparent; + filter: alpha(opacity=50); +} +.l-btn-selected, +.l-btn-selected:hover { + background: #ddd; + filter: none; +} +.l-btn-plain-selected, +.l-btn-plain-selected:hover { + background: #ddd; +} diff --git a/assets/js/easy-ui/themes/metro/menu.css b/assets/js/easy-ui/themes/metro/menu.css new file mode 100755 index 0000000000..5012a506ca --- /dev/null +++ b/assets/js/easy-ui/themes/metro/menu.css @@ -0,0 +1,109 @@ +.menu { + position: absolute; + margin: 0; + padding: 2px; + border-width: 1px; + border-style: solid; + overflow: hidden; +} +.menu-item { + position: relative; + margin: 0; + padding: 0; + overflow: hidden; + white-space: nowrap; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.menu-text { + height: 20px; + line-height: 20px; + float: left; + padding-left: 28px; +} +.menu-icon { + position: absolute; + width: 16px; + height: 16px; + left: 2px; + top: 50%; + margin-top: -8px; +} +.menu-rightarrow { + position: absolute; + width: 16px; + height: 16px; + right: 0; + top: 50%; + margin-top: -8px; +} +.menu-line { + position: absolute; + left: 26px; + top: 0; + height: 2000px; + font-size: 1px; +} +.menu-sep { + margin: 3px 0px 3px 25px; + font-size: 1px; +} +.menu-active { + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.menu-item-disabled { + opacity: 0.5; + filter: alpha(opacity=50); + cursor: default; +} +.menu-text, +.menu-text span { + font-size: 12px; +} +.menu-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.menu-rightarrow { + background: url('images/menu_arrows.png') no-repeat -32px center; +} +.menu-line { + border-left: 1px solid #ddd; + border-right: 1px solid #fff; +} +.menu-sep { + border-top: 1px solid #ddd; + border-bottom: 1px solid #fff; +} +.menu { + background-color: #ffffff; + border-color: #ddd; + color: #444; +} +.menu-content { + background: #fff; +} +.menu-item { + border-color: transparent; + _border-color: #ffffff; +} +.menu-active { + border-color: #ddd; + color: #444; + background: #E6E6E6; +} +.menu-active-disabled { + border-color: transparent; + background: transparent; + color: #444; +} diff --git a/assets/js/easy-ui/themes/metro/menubutton.css b/assets/js/easy-ui/themes/metro/menubutton.css new file mode 100755 index 0000000000..8ed294a0e3 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/menubutton.css @@ -0,0 +1,94 @@ +.m-btn-downarrow, +.s-btn-downarrow { + display: inline-block; + position: absolute; + width: 16px; + height: 16px; + font-size: 1px; + right: 0; + top: 50%; + margin-top: -8px; +} +.m-btn-active, +.s-btn-active { + background: #E6E6E6; + color: #444; + border: 1px solid #ddd; + filter: none; +} +.m-btn-plain-active, +.s-btn-plain-active { + background: transparent; + padding: 0; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.m-btn .l-btn-left .l-btn-text { + margin-right: 20px; +} +.m-btn .l-btn-icon-right .l-btn-text { + margin-right: 40px; +} +.m-btn .l-btn-icon-right .l-btn-icon { + right: 20px; +} +.m-btn .l-btn-icon-top .l-btn-text { + margin-right: 4px; + margin-bottom: 14px; +} +.m-btn .l-btn-icon-bottom .l-btn-text { + margin-right: 4px; + margin-bottom: 34px; +} +.m-btn .l-btn-icon-bottom .l-btn-icon { + top: auto; + bottom: 20px; +} +.m-btn .l-btn-icon-top .m-btn-downarrow, +.m-btn .l-btn-icon-bottom .m-btn-downarrow { + top: auto; + bottom: 0px; + left: 50%; + margin-left: -8px; +} +.m-btn-line { + display: inline-block; + position: absolute; + font-size: 1px; + display: none; +} +.m-btn .l-btn-left .m-btn-line { + right: 0; + width: 16px; + height: 500px; + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} +.m-btn .l-btn-icon-top .m-btn-line, +.m-btn .l-btn-icon-bottom .m-btn-line { + left: 0; + bottom: 0; + width: 500px; + height: 16px; + border-width: 1px 0 0 0; +} +.m-btn-large .l-btn-icon-right .l-btn-text { + margin-right: 56px; +} +.m-btn-large .l-btn-icon-bottom .l-btn-text { + margin-bottom: 50px; +} +.m-btn-downarrow, +.s-btn-downarrow { + background: url('images/menu_arrows.png') no-repeat 0 center; +} +.m-btn-plain-active, +.s-btn-plain-active { + border-color: #ddd; + background-color: #E6E6E6; + color: #444; +} diff --git a/assets/js/easy-ui/themes/metro/messager.css b/assets/js/easy-ui/themes/metro/messager.css new file mode 100755 index 0000000000..1efbe7ced9 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/messager.css @@ -0,0 +1,40 @@ +.messager-body { + padding: 10px; + overflow: hidden; +} +.messager-button { + text-align: center; + padding-top: 10px; +} +.messager-button .l-btn { + width: 70px; +} +.messager-icon { + float: left; + width: 32px; + height: 32px; + margin: 0 10px 10px 0; +} +.messager-error { + background: url('images/messager_icons.png') no-repeat scroll -64px 0; +} +.messager-info { + background: url('images/messager_icons.png') no-repeat scroll 0 0; +} +.messager-question { + background: url('images/messager_icons.png') no-repeat scroll -32px 0; +} +.messager-warning { + background: url('images/messager_icons.png') no-repeat scroll -96px 0; +} +.messager-progress { + padding: 10px; +} +.messager-p-msg { + margin-bottom: 5px; +} +.messager-body .messager-input { + width: 100%; + padding: 1px 0; + border: 1px solid #ddd; +} diff --git a/assets/js/easy-ui/themes/metro/numberbox.css b/assets/js/easy-ui/themes/metro/numberbox.css new file mode 100755 index 0000000000..3d5a506d44 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/numberbox.css @@ -0,0 +1,9 @@ +.numberbox { + border: 1px solid #ddd; + margin: 0; + padding: 0 2px; + vertical-align: middle; +} +.textbox { + padding: 0; +} diff --git a/assets/js/easy-ui/themes/metro/pagination.css b/assets/js/easy-ui/themes/metro/pagination.css new file mode 100755 index 0000000000..e3110673c5 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/pagination.css @@ -0,0 +1,71 @@ +.pagination { + zoom: 1; +} +.pagination table { + float: left; + height: 30px; +} +.pagination td { + border: 0; +} +.pagination-btn-separator { + float: left; + height: 24px; + border-left: 1px solid #ddd; + border-right: 1px solid #fff; + margin: 3px 1px; +} +.pagination .pagination-num { + border-width: 1px; + border-style: solid; + margin: 0 2px; + padding: 2px; + width: 2em; + height: auto; +} +.pagination-page-list { + margin: 0px 6px; + padding: 1px 2px; + width: auto; + height: auto; + border-width: 1px; + border-style: solid; +} +.pagination-info { + float: right; + margin: 0 6px 0 0; + padding: 0; + height: 30px; + line-height: 30px; + font-size: 12px; +} +.pagination span { + font-size: 12px; +} +.pagination-link .l-btn-text { + width: 24px; + text-align: center; + margin: 0; +} +.pagination-first { + background: url('images/pagination_icons.png') no-repeat 0 center; +} +.pagination-prev { + background: url('images/pagination_icons.png') no-repeat -16px center; +} +.pagination-next { + background: url('images/pagination_icons.png') no-repeat -32px center; +} +.pagination-last { + background: url('images/pagination_icons.png') no-repeat -48px center; +} +.pagination-load { + background: url('images/pagination_icons.png') no-repeat -64px center; +} +.pagination-loading { + background: url('images/loading.gif') no-repeat center center; +} +.pagination-page-list, +.pagination .pagination-num { + border-color: #ddd; +} diff --git a/assets/js/easy-ui/themes/metro/panel.css b/assets/js/easy-ui/themes/metro/panel.css new file mode 100755 index 0000000000..6273ac396e --- /dev/null +++ b/assets/js/easy-ui/themes/metro/panel.css @@ -0,0 +1,136 @@ +.panel { + overflow: hidden; + text-align: left; + margin: 0; + border: 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.panel-header, +.panel-body { + border-width: 1px; + border-style: solid; +} +.panel-header { + padding: 5px; + position: relative; +} +.panel-title { + background: url('images/blank.gif') no-repeat; +} +.panel-header-noborder { + border-width: 0 0 1px 0; +} +.panel-body { + overflow: auto; + border-top-width: 0; + padding: 0; +} +.panel-body-noheader { + border-top-width: 1px; +} +.panel-body-noborder { + border-width: 0px; +} +.panel-body-nobottom { + border-bottom-width: 0; +} +.panel-with-icon { + padding-left: 18px; +} +.panel-icon, +.panel-tool { + position: absolute; + top: 50%; + margin-top: -8px; + height: 16px; + overflow: hidden; +} +.panel-icon { + left: 5px; + width: 16px; +} +.panel-tool { + right: 5px; + width: auto; +} +.panel-tool a { + display: inline-block; + width: 16px; + height: 16px; + opacity: 0.6; + filter: alpha(opacity=60); + margin: 0 0 0 2px; + vertical-align: top; +} +.panel-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + background-color: #E6E6E6; + -moz-border-radius: -2px -2px -2px -2px; + -webkit-border-radius: -2px -2px -2px -2px; + border-radius: -2px -2px -2px -2px; +} +.panel-loading { + padding: 11px 0px 10px 30px; +} +.panel-noscroll { + overflow: hidden; +} +.panel-fit, +.panel-fit body { + height: 100%; + margin: 0; + padding: 0; + border: 0; + overflow: hidden; +} +.panel-loading { + background: url('images/loading.gif') no-repeat 10px 10px; +} +.panel-tool-close { + background: url('images/panel_tools.png') no-repeat -16px 0px; +} +.panel-tool-min { + background: url('images/panel_tools.png') no-repeat 0px 0px; +} +.panel-tool-max { + background: url('images/panel_tools.png') no-repeat 0px -16px; +} +.panel-tool-restore { + background: url('images/panel_tools.png') no-repeat -16px -16px; +} +.panel-tool-collapse { + background: url('images/panel_tools.png') no-repeat -32px 0; +} +.panel-tool-expand { + background: url('images/panel_tools.png') no-repeat -32px -16px; +} +.panel-header, +.panel-body { + border-color: #ddd; +} +.panel-header { + background-color: #ffffff; +} +.panel-body { + background-color: #fff; + color: #444; + font-size: 12px; +} +.panel-title { + font-size: 12px; + font-weight: bold; + color: #777; + height: 16px; + line-height: 16px; +} +.panel-footer { + border: 1px solid #ddd; + overflow: hidden; + background: #fff; +} +.panel-footer-noborder { + border-width: 1px 0 0 0; +} diff --git a/assets/js/easy-ui/themes/metro/progressbar.css b/assets/js/easy-ui/themes/metro/progressbar.css new file mode 100755 index 0000000000..7721f1bffe --- /dev/null +++ b/assets/js/easy-ui/themes/metro/progressbar.css @@ -0,0 +1,32 @@ +.progressbar { + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; + overflow: hidden; + position: relative; +} +.progressbar-text { + text-align: center; + position: absolute; +} +.progressbar-value { + position: relative; + overflow: hidden; + width: 0; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.progressbar { + border-color: #ddd; +} +.progressbar-text { + color: #444; + font-size: 12px; +} +.progressbar-value .progressbar-text { + background-color: #CCE6FF; + color: #000; +} diff --git a/assets/js/easy-ui/themes/metro/propertygrid.css b/assets/js/easy-ui/themes/metro/propertygrid.css new file mode 100755 index 0000000000..f5ae0c4e3d --- /dev/null +++ b/assets/js/easy-ui/themes/metro/propertygrid.css @@ -0,0 +1,28 @@ +.propertygrid .datagrid-view1 .datagrid-body td { + padding-bottom: 1px; + border-width: 0 1px 0 0; +} +.propertygrid .datagrid-group { + height: 21px; + overflow: hidden; + border-width: 0 0 1px 0; + border-style: solid; +} +.propertygrid .datagrid-group span { + font-weight: bold; +} +.propertygrid .datagrid-view1 .datagrid-body td { + border-color: #ddd; +} +.propertygrid .datagrid-view1 .datagrid-group { + border-color: #ffffff; +} +.propertygrid .datagrid-view2 .datagrid-group { + border-color: #ddd; +} +.propertygrid .datagrid-group, +.propertygrid .datagrid-view1 .datagrid-body, +.propertygrid .datagrid-view1 .datagrid-row-over, +.propertygrid .datagrid-view1 .datagrid-row-selected { + background: #ffffff; +} diff --git a/assets/js/easy-ui/themes/metro/searchbox.css b/assets/js/easy-ui/themes/metro/searchbox.css new file mode 100755 index 0000000000..25a4a7e7c8 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/searchbox.css @@ -0,0 +1,90 @@ +.searchbox { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.searchbox .searchbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 0 2px; + vertical-align: top; +} +.searchbox .searchbox-prompt { + font-size: 12px; + color: #ccc; +} +.searchbox-button { + width: 18px; + height: 20px; + overflow: hidden; + display: inline-block; + vertical-align: top; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); +} +.searchbox-button-hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.searchbox .l-btn-plain { + border: 0; + padding: 0; + vertical-align: top; + opacity: 0.6; + filter: alpha(opacity=60); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .l-btn-plain:hover { + border: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox a.m-btn-plain-active { + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .m-btn-active { + border-width: 0 1px 0 0; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.searchbox .textbox-button-right { + border-width: 0 0 0 1px; +} +.searchbox .textbox-button-left { + border-width: 0 1px 0 0; +} +.searchbox-button { + background: url('images/searchbox_button.png') no-repeat center center; +} +.searchbox { + border-color: #ddd; + background-color: #fff; +} +.searchbox .l-btn-plain { + background: #ffffff; +} +.searchbox .l-btn-plain-disabled, +.searchbox .l-btn-plain-disabled:hover { + opacity: 0.5; + filter: alpha(opacity=50); +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/metro/slider.css b/assets/js/easy-ui/themes/metro/slider.css new file mode 100755 index 0000000000..42ddc17757 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/slider.css @@ -0,0 +1,101 @@ +.slider-disabled { + opacity: 0.5; + filter: alpha(opacity=50); +} +.slider-h { + height: 22px; +} +.slider-v { + width: 22px; +} +.slider-inner { + position: relative; + height: 6px; + top: 7px; + border-width: 1px; + border-style: solid; + border-radius: 0px; +} +.slider-handle { + position: absolute; + display: block; + outline: none; + width: 20px; + height: 20px; + top: 50%; + margin-top: -10px; + margin-left: -10px; +} +.slider-tip { + position: absolute; + display: inline-block; + line-height: 12px; + font-size: 12px; + white-space: nowrap; + top: -22px; +} +.slider-rule { + position: relative; + top: 15px; +} +.slider-rule span { + position: absolute; + display: inline-block; + font-size: 0; + height: 5px; + border-width: 0 0 0 1px; + border-style: solid; +} +.slider-rulelabel { + position: relative; + top: 20px; +} +.slider-rulelabel span { + position: absolute; + display: inline-block; + font-size: 12px; +} +.slider-v .slider-inner { + width: 6px; + left: 7px; + top: 0; + float: left; +} +.slider-v .slider-handle { + left: 50%; + margin-top: -10px; +} +.slider-v .slider-tip { + left: -10px; + margin-top: -6px; +} +.slider-v .slider-rule { + float: left; + top: 0; + left: 16px; +} +.slider-v .slider-rule span { + width: 5px; + height: 'auto'; + border-left: 0; + border-width: 1px 0 0 0; + border-style: solid; +} +.slider-v .slider-rulelabel { + float: left; + top: 0; + left: 23px; +} +.slider-handle { + background: url('images/slider_handle.png') no-repeat; +} +.slider-inner { + border-color: #ddd; + background: #ffffff; +} +.slider-rule span { + border-color: #ddd; +} +.slider-rulelabel span { + color: #444; +} diff --git a/assets/js/easy-ui/themes/metro/spinner.css b/assets/js/easy-ui/themes/metro/spinner.css new file mode 100755 index 0000000000..00e15888ba --- /dev/null +++ b/assets/js/easy-ui/themes/metro/spinner.css @@ -0,0 +1,71 @@ +.spinner { + display: inline-block; + white-space: nowrap; + margin: 0; + padding: 0; + border-width: 1px; + border-style: solid; + overflow: hidden; + vertical-align: middle; +} +.spinner .spinner-text { + font-size: 12px; + border: 0px; + margin: 0; + padding: 0 2px; + vertical-align: baseline; +} +.spinner-arrow { + background-color: #ffffff; + display: inline-block; + overflow: hidden; + vertical-align: top; + margin: 0; + padding: 0; + opacity: 1.0; + filter: alpha(opacity=100); + width: 18px; +} +.spinner-arrow-up, +.spinner-arrow-down { + opacity: 0.6; + filter: alpha(opacity=60); + display: block; + font-size: 1px; + width: 18px; + height: 10px; + width: 100%; + height: 50%; + outline-style: none; +} +.spinner-arrow-hover { + background-color: #E6E6E6; + opacity: 1.0; + filter: alpha(opacity=100); +} +.spinner-arrow-up:hover, +.spinner-arrow-down:hover { + opacity: 1.0; + filter: alpha(opacity=100); + background-color: #E6E6E6; +} +.textbox-icon-disabled .spinner-arrow-up:hover, +.textbox-icon-disabled .spinner-arrow-down:hover { + opacity: 0.6; + filter: alpha(opacity=60); + background-color: #ffffff; + cursor: default; +} +.spinner .textbox-icon-disabled { + opacity: 0.6; + filter: alpha(opacity=60); +} +.spinner-arrow-up { + background: url('images/spinner_arrows.png') no-repeat 1px center; +} +.spinner-arrow-down { + background: url('images/spinner_arrows.png') no-repeat -15px center; +} +.spinner { + border-color: #ddd; +} diff --git a/assets/js/easy-ui/themes/metro/splitbutton.css b/assets/js/easy-ui/themes/metro/splitbutton.css new file mode 100755 index 0000000000..3451138c78 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/splitbutton.css @@ -0,0 +1,12 @@ +.s-btn:hover .m-btn-line, +.s-btn-active .m-btn-line, +.s-btn-plain-active .m-btn-line { + display: inline-block; +} +.l-btn:hover .s-btn-downarrow, +.s-btn-active .s-btn-downarrow, +.s-btn-plain-active .s-btn-downarrow { + border-style: solid; + border-color: #b3b3b3; + border-width: 0 0 0 1px; +} diff --git a/assets/js/easy-ui/themes/metro/tabs.css b/assets/js/easy-ui/themes/metro/tabs.css new file mode 100755 index 0000000000..7a354ae27c --- /dev/null +++ b/assets/js/easy-ui/themes/metro/tabs.css @@ -0,0 +1,320 @@ +.tabs-container { + overflow: hidden; +} +.tabs-header { + border-width: 1px; + border-style: solid; + border-bottom-width: 0; + position: relative; + padding: 0; + padding-top: 2px; + overflow: hidden; +} +.tabs-header-plain { + border: 0; + background: transparent; +} +.tabs-scroller-left, +.tabs-scroller-right { + position: absolute; + top: auto; + bottom: 0; + width: 18px; + font-size: 1px; + display: none; + cursor: pointer; + border-width: 1px; + border-style: solid; +} +.tabs-scroller-left { + left: 0; +} +.tabs-scroller-right { + right: 0; +} +.tabs-tool { + position: absolute; + bottom: 0; + padding: 1px; + overflow: hidden; + border-width: 1px; + border-style: solid; +} +.tabs-header-plain .tabs-tool { + padding: 0 1px; +} +.tabs-wrap { + position: relative; + left: 0; + overflow: hidden; + width: 100%; + margin: 0; + padding: 0; +} +.tabs-scrolling { + margin-left: 18px; + margin-right: 18px; +} +.tabs-disabled { + opacity: 0.3; + filter: alpha(opacity=30); +} +.tabs { + list-style-type: none; + height: 26px; + margin: 0px; + padding: 0px; + padding-left: 4px; + width: 50000px; + border-style: solid; + border-width: 0 0 1px 0; +} +.tabs li { + float: left; + display: inline-block; + margin: 0 4px -1px 0; + padding: 0; + position: relative; + border: 0; +} +.tabs li a.tabs-inner { + display: inline-block; + text-decoration: none; + margin: 0; + padding: 0 10px; + height: 25px; + line-height: 25px; + text-align: center; + white-space: nowrap; + border-width: 1px; + border-style: solid; + -moz-border-radius: 0px 0px 0 0; + -webkit-border-radius: 0px 0px 0 0; + border-radius: 0px 0px 0 0; +} +.tabs li.tabs-selected a.tabs-inner { + font-weight: bold; + outline: none; +} +.tabs li.tabs-selected a:hover.tabs-inner { + cursor: default; + pointer: default; +} +.tabs li a.tabs-close, +.tabs-p-tool { + position: absolute; + font-size: 1px; + display: block; + height: 12px; + padding: 0; + top: 50%; + margin-top: -6px; + overflow: hidden; +} +.tabs li a.tabs-close { + width: 12px; + right: 5px; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs-p-tool { + right: 16px; +} +.tabs-p-tool a { + display: inline-block; + font-size: 1px; + width: 12px; + height: 12px; + margin: 0; + opacity: 0.6; + filter: alpha(opacity=60); +} +.tabs li a:hover.tabs-close, +.tabs-p-tool a:hover { + opacity: 1; + filter: alpha(opacity=100); + cursor: hand; + cursor: pointer; +} +.tabs-with-icon { + padding-left: 18px; +} +.tabs-icon { + position: absolute; + width: 16px; + height: 16px; + left: 10px; + top: 50%; + margin-top: -8px; +} +.tabs-title { + font-size: 12px; +} +.tabs-closable { + padding-right: 8px; +} +.tabs-panels { + margin: 0px; + padding: 0px; + border-width: 1px; + border-style: solid; + border-top-width: 0; + overflow: hidden; +} +.tabs-header-bottom { + border-width: 0 1px 1px 1px; + padding: 0 0 2px 0; +} +.tabs-header-bottom .tabs { + border-width: 1px 0 0 0; +} +.tabs-header-bottom .tabs li { + margin: -1px 4px 0 0; +} +.tabs-header-bottom .tabs li a.tabs-inner { + -moz-border-radius: 0 0 0px 0px; + -webkit-border-radius: 0 0 0px 0px; + border-radius: 0 0 0px 0px; +} +.tabs-header-bottom .tabs-tool { + top: 0; +} +.tabs-header-bottom .tabs-scroller-left, +.tabs-header-bottom .tabs-scroller-right { + top: 0; + bottom: auto; +} +.tabs-panels-top { + border-width: 1px 1px 0 1px; +} +.tabs-header-left { + float: left; + border-width: 1px 0 1px 1px; + padding: 0; +} +.tabs-header-right { + float: right; + border-width: 1px 1px 1px 0; + padding: 0; +} +.tabs-header-left .tabs-wrap, +.tabs-header-right .tabs-wrap { + height: 100%; +} +.tabs-header-left .tabs { + height: 100%; + padding: 4px 0 0 4px; + border-width: 0 1px 0 0; +} +.tabs-header-right .tabs { + height: 100%; + padding: 4px 4px 0 0; + border-width: 0 0 0 1px; +} +.tabs-header-left .tabs li, +.tabs-header-right .tabs li { + display: block; + width: 100%; + position: relative; +} +.tabs-header-left .tabs li { + left: auto; + right: 0; + margin: 0 -1px 4px 0; + float: right; +} +.tabs-header-right .tabs li { + left: 0; + right: auto; + margin: 0 0 4px -1px; + float: left; +} +.tabs-header-left .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0px 0 0 0px; + -webkit-border-radius: 0px 0 0 0px; + border-radius: 0px 0 0 0px; +} +.tabs-header-right .tabs li a.tabs-inner { + display: block; + text-align: left; + -moz-border-radius: 0 0px 0px 0; + -webkit-border-radius: 0 0px 0px 0; + border-radius: 0 0px 0px 0; +} +.tabs-panels-right { + float: right; + border-width: 1px 1px 1px 0; +} +.tabs-panels-left { + float: left; + border-width: 1px 0 1px 1px; +} +.tabs-header-noborder, +.tabs-panels-noborder { + border: 0px; +} +.tabs-header-plain { + border: 0px; + background: transparent; +} +.tabs-scroller-left { + background: #ffffff url('images/tabs_icons.png') no-repeat 1px center; +} +.tabs-scroller-right { + background: #ffffff url('images/tabs_icons.png') no-repeat -15px center; +} +.tabs li a.tabs-close { + background: url('images/tabs_icons.png') no-repeat -34px center; +} +.tabs li a.tabs-inner:hover { + background: #E6E6E6; + color: #444; + filter: none; +} +.tabs li.tabs-selected a.tabs-inner { + background-color: #fff; + color: #777; +} +.tabs li a.tabs-inner { + color: #777; + background-color: #ffffff; +} +.tabs-header, +.tabs-tool { + background-color: #ffffff; +} +.tabs-header-plain { + background: transparent; +} +.tabs-header, +.tabs-scroller-left, +.tabs-scroller-right, +.tabs-tool, +.tabs, +.tabs-panels, +.tabs li a.tabs-inner, +.tabs li.tabs-selected a.tabs-inner, +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner, +.tabs-header-left .tabs li.tabs-selected a.tabs-inner, +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-color: #ddd; +} +.tabs-p-tool a:hover, +.tabs li a:hover.tabs-close, +.tabs-scroller-over { + background-color: #E6E6E6; +} +.tabs li.tabs-selected a.tabs-inner { + border-bottom: 1px solid #fff; +} +.tabs-header-bottom .tabs li.tabs-selected a.tabs-inner { + border-top: 1px solid #fff; +} +.tabs-header-left .tabs li.tabs-selected a.tabs-inner { + border-right: 1px solid #fff; +} +.tabs-header-right .tabs li.tabs-selected a.tabs-inner { + border-left: 1px solid #fff; +} diff --git a/assets/js/easy-ui/themes/metro/textbox.css b/assets/js/easy-ui/themes/metro/textbox.css new file mode 100755 index 0000000000..cdbab2a811 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/textbox.css @@ -0,0 +1,87 @@ +.textbox { + position: relative; + border: 1px solid #ddd; + background-color: #fff; + vertical-align: middle; + display: inline-block; + overflow: hidden; + white-space: nowrap; + margin: 0; + padding: 0; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-text { + font-size: 12px; + border: 0; + margin: 0; + padding: 4px; + white-space: normal; + vertical-align: top; + outline-style: none; + resize: none; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.textbox .textbox-prompt { + font-size: 12px; + color: #aaa; +} +.textbox-button, +.textbox-button:hover { + position: absolute; + top: 0; + padding: 0; + vertical-align: top; + -moz-border-radius: 0 0 0 0; + -webkit-border-radius: 0 0 0 0; + border-radius: 0 0 0 0; +} +.textbox-button-right, +.textbox-button-right:hover { + border-width: 0 0 0 1px; +} +.textbox-button-left, +.textbox-button-left:hover { + border-width: 0 1px 0 0; +} +.textbox-addon { + position: absolute; + top: 0; +} +.textbox-icon { + display: inline-block; + width: 18px; + height: 20px; + overflow: hidden; + vertical-align: top; + background-position: center center; + cursor: pointer; + opacity: 0.6; + filter: alpha(opacity=60); + text-decoration: none; + outline-style: none; +} +.textbox-icon-disabled, +.textbox-icon-readonly { + cursor: default; +} +.textbox-icon:hover { + opacity: 1.0; + filter: alpha(opacity=100); +} +.textbox-icon-disabled:hover { + opacity: 0.6; + filter: alpha(opacity=60); +} +.textbox-focused { + -moz-box-shadow: 0 0 3px 0 #ddd; + -webkit-box-shadow: 0 0 3px 0 #ddd; + box-shadow: 0 0 3px 0 #ddd; +} +.textbox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; +} diff --git a/assets/js/easy-ui/themes/metro/tooltip.css b/assets/js/easy-ui/themes/metro/tooltip.css new file mode 100755 index 0000000000..8382539e70 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/tooltip.css @@ -0,0 +1,100 @@ +.tooltip { + position: absolute; + display: none; + z-index: 9900000; + outline: none; + opacity: 1; + filter: alpha(opacity=100); + padding: 5px; + border-width: 1px; + border-style: solid; + border-radius: 5px; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.tooltip-content { + font-size: 12px; +} +.tooltip-arrow-outer, +.tooltip-arrow { + position: absolute; + width: 0; + height: 0; + line-height: 0; + font-size: 0; + border-style: solid; + border-width: 6px; + border-color: transparent; + _border-color: tomato; + _filter: chroma(color=tomato); +} +.tooltip-right .tooltip-arrow-outer { + left: 0; + top: 50%; + margin: -6px 0 0 -13px; +} +.tooltip-right .tooltip-arrow { + left: 0; + top: 50%; + margin: -6px 0 0 -12px; +} +.tooltip-left .tooltip-arrow-outer { + right: 0; + top: 50%; + margin: -6px -13px 0 0; +} +.tooltip-left .tooltip-arrow { + right: 0; + top: 50%; + margin: -6px -12px 0 0; +} +.tooltip-top .tooltip-arrow-outer { + bottom: 0; + left: 50%; + margin: 0 0 -13px -6px; +} +.tooltip-top .tooltip-arrow { + bottom: 0; + left: 50%; + margin: 0 0 -12px -6px; +} +.tooltip-bottom .tooltip-arrow-outer { + top: 0; + left: 50%; + margin: -13px 0 0 -6px; +} +.tooltip-bottom .tooltip-arrow { + top: 0; + left: 50%; + margin: -12px 0 0 -6px; +} +.tooltip { + background-color: #fff; + border-color: #ddd; + color: #444; +} +.tooltip-right .tooltip-arrow-outer { + border-right-color: #ddd; +} +.tooltip-right .tooltip-arrow { + border-right-color: #fff; +} +.tooltip-left .tooltip-arrow-outer { + border-left-color: #ddd; +} +.tooltip-left .tooltip-arrow { + border-left-color: #fff; +} +.tooltip-top .tooltip-arrow-outer { + border-top-color: #ddd; +} +.tooltip-top .tooltip-arrow { + border-top-color: #fff; +} +.tooltip-bottom .tooltip-arrow-outer { + border-bottom-color: #ddd; +} +.tooltip-bottom .tooltip-arrow { + border-bottom-color: #fff; +} diff --git a/assets/js/easy-ui/themes/metro/tree.css b/assets/js/easy-ui/themes/metro/tree.css new file mode 100755 index 0000000000..a2ec6931ca --- /dev/null +++ b/assets/js/easy-ui/themes/metro/tree.css @@ -0,0 +1,157 @@ +.tree { + margin: 0; + padding: 0; + list-style-type: none; +} +.tree li { + white-space: nowrap; +} +.tree li ul { + list-style-type: none; + margin: 0; + padding: 0; +} +.tree-node { + height: 18px; + white-space: nowrap; + cursor: pointer; +} +.tree-hit { + cursor: pointer; +} +.tree-expanded, +.tree-collapsed, +.tree-folder, +.tree-file, +.tree-checkbox, +.tree-indent { + display: inline-block; + width: 16px; + height: 18px; + vertical-align: top; + overflow: hidden; +} +.tree-expanded { + background: url('images/tree_icons.png') no-repeat -18px 0px; +} +.tree-expanded-hover { + background: url('images/tree_icons.png') no-repeat -50px 0px; +} +.tree-collapsed { + background: url('images/tree_icons.png') no-repeat 0px 0px; +} +.tree-collapsed-hover { + background: url('images/tree_icons.png') no-repeat -32px 0px; +} +.tree-lines .tree-expanded, +.tree-lines .tree-root-first .tree-expanded { + background: url('images/tree_icons.png') no-repeat -144px 0; +} +.tree-lines .tree-collapsed, +.tree-lines .tree-root-first .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -128px 0; +} +.tree-lines .tree-node-last .tree-expanded, +.tree-lines .tree-root-one .tree-expanded { + background: url('images/tree_icons.png') no-repeat -80px 0; +} +.tree-lines .tree-node-last .tree-collapsed, +.tree-lines .tree-root-one .tree-collapsed { + background: url('images/tree_icons.png') no-repeat -64px 0; +} +.tree-line { + background: url('images/tree_icons.png') no-repeat -176px 0; +} +.tree-join { + background: url('images/tree_icons.png') no-repeat -192px 0; +} +.tree-joinbottom { + background: url('images/tree_icons.png') no-repeat -160px 0; +} +.tree-folder { + background: url('images/tree_icons.png') no-repeat -208px 0; +} +.tree-folder-open { + background: url('images/tree_icons.png') no-repeat -224px 0; +} +.tree-file { + background: url('images/tree_icons.png') no-repeat -240px 0; +} +.tree-loading { + background: url('images/loading.gif') no-repeat center center; +} +.tree-checkbox0 { + background: url('images/tree_icons.png') no-repeat -208px -18px; +} +.tree-checkbox1 { + background: url('images/tree_icons.png') no-repeat -224px -18px; +} +.tree-checkbox2 { + background: url('images/tree_icons.png') no-repeat -240px -18px; +} +.tree-title { + font-size: 12px; + display: inline-block; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + padding: 0 2px; + height: 18px; + line-height: 18px; +} +.tree-node-proxy { + font-size: 12px; + line-height: 20px; + padding: 0 2px 0 20px; + border-width: 1px; + border-style: solid; + z-index: 9900000; +} +.tree-dnd-icon { + display: inline-block; + position: absolute; + width: 16px; + height: 18px; + left: 2px; + top: 50%; + margin-top: -9px; +} +.tree-dnd-yes { + background: url('images/tree_icons.png') no-repeat -256px 0; +} +.tree-dnd-no { + background: url('images/tree_icons.png') no-repeat -256px -18px; +} +.tree-node-top { + border-top: 1px dotted red; +} +.tree-node-bottom { + border-bottom: 1px dotted red; +} +.tree-node-append .tree-title { + border: 1px dotted red; +} +.tree-editor { + border: 1px solid #ccc; + font-size: 12px; + height: 14px !important; + height: 18px; + line-height: 14px; + padding: 1px 2px; + width: 80px; + position: absolute; + top: 0; +} +.tree-node-proxy { + background-color: #fff; + color: #444; + border-color: #ddd; +} +.tree-node-hover { + background: #E6E6E6; + color: #444; +} +.tree-node-selected { + background: #CCE6FF; + color: #000; +} diff --git a/assets/js/easy-ui/themes/metro/validatebox.css b/assets/js/easy-ui/themes/metro/validatebox.css new file mode 100755 index 0000000000..1fc3ad64e4 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/validatebox.css @@ -0,0 +1,5 @@ +.validatebox-invalid { + border-color: #ffa8a8; + background-color: #fff3f3; + color: #000; +} diff --git a/assets/js/easy-ui/themes/metro/window.css b/assets/js/easy-ui/themes/metro/window.css new file mode 100755 index 0000000000..de84433f27 --- /dev/null +++ b/assets/js/easy-ui/themes/metro/window.css @@ -0,0 +1,88 @@ +.window { + overflow: hidden; + padding: 5px; + border-width: 1px; + border-style: solid; +} +.window .window-header { + background: transparent; + padding: 0px 0px 6px 0px; +} +.window .window-body { + border-width: 1px; + border-style: solid; + border-top-width: 0px; +} +.window .window-body-noheader { + border-top-width: 1px; +} +.window .panel-body-nobottom { + border-bottom-width: 0; +} +.window .window-header .panel-icon, +.window .window-header .panel-tool { + top: 50%; + margin-top: -11px; +} +.window .window-header .panel-icon { + left: 1px; +} +.window .window-header .panel-tool { + right: 1px; +} +.window .window-header .panel-with-icon { + padding-left: 18px; +} +.window-proxy { + position: absolute; + overflow: hidden; +} +.window-proxy-mask { + position: absolute; + filter: alpha(opacity=5); + opacity: 0.05; +} +.window-mask { + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + filter: alpha(opacity=40); + opacity: 0.40; + font-size: 1px; + overflow: hidden; +} +.window, +.window-shadow { + position: absolute; + -moz-border-radius: 0px 0px 0px 0px; + -webkit-border-radius: 0px 0px 0px 0px; + border-radius: 0px 0px 0px 0px; +} +.window-shadow { + background: #eee; + -moz-box-shadow: 2px 2px 3px #ededed; + -webkit-box-shadow: 2px 2px 3px #ededed; + box-shadow: 2px 2px 3px #ededed; + filter: progid:DXImageTransform.Microsoft.Blur(pixelRadius=2,MakeShadow=false,ShadowOpacity=0.2); +} +.window, +.window .window-body { + border-color: #ddd; +} +.window { + background-color: #ffffff; +} +.window-proxy { + border: 1px dashed #ddd; +} +.window-proxy-mask, +.window-mask { + background: #eee; +} +.window .panel-footer { + border: 1px solid #ddd; + position: relative; + top: -1px; +} diff --git a/assets/js/fileapi/.gitignore b/assets/js/fileapi/.gitignore new file mode 100755 index 0000000000..eb79dd5fc7 --- /dev/null +++ b/assets/js/fileapi/.gitignore @@ -0,0 +1,2 @@ +node_modules +.idea diff --git a/assets/js/fileapi/.htaccess b/assets/js/fileapi/.htaccess new file mode 100755 index 0000000000..6c1cc6e2da --- /dev/null +++ b/assets/js/fileapi/.htaccess @@ -0,0 +1,5 @@ +IndexIgnore */* + + Order Deny,Allow + Deny from all + diff --git a/assets/js/fileapi/FileAPI/FileAPI.exif.js b/assets/js/fileapi/FileAPI/FileAPI.exif.js new file mode 100755 index 0000000000..4dd678ce0f --- /dev/null +++ b/assets/js/fileapi/FileAPI/FileAPI.exif.js @@ -0,0 +1,69 @@ +(function (){ +/**! + * Binary Ajax 0.1.10 + * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com, http://blog.nihilogic.dk/ + * Licensed under the MPL License [http://www.nihilogic.dk/licenses/mpl-license.txt] + * + * + * Javascript EXIF Reader 0.1.4 + * Copyright (c) 2008 Jacob Seidelin, cupboy@gmail.com, http://blog.nihilogic.dk/ + * Licensed under the MPL License [http://www.nihilogic.dk/licenses/mpl-license.txt] + */ + + +var BinaryFile=function(j,k,l){var h=j,i=k||0,b=0;this.getRawData=function(){return h};"string"==typeof j&&(b=l||h.length,this.getByteAt=function(a){return h.charCodeAt(a+i)&255},this.getBytesAt=function(a,b){for(var c=[],f=0;fc&&(c+=65536);return c};this.getSShortAt=function(a,b){var c=this.getShortAt(a,b);return 32767c&&(c+=4294967296);return c};this.getSLongAt=function(a,b){var c=this.getLongAt(a,b);return 2147483647 128*1024) { + try { + var size = Math.min(blob.size, 128 * 1024); + blob = (blob.slice || blob.mozSlice || blob.webkitSlice).call(blob, 0, size); + } catch (e) { + FileAPI.log("exception "+ e); + } + } + + FileAPI.readAsBinaryString(blob, function (evt){ + if( evt.type == 'load' ){ + var binaryString = evt.result; + var oFile = new BinaryFile(binaryString, 0, blob.size); + var exif = EXIF.readFromBinaryFile(oFile); + + defer.resolve(false, { 'exif': exif || {} }); + } + else if( evt.type == 'error' ){ + defer.resolve('read_as_binary_string_exif'); + } + }); + } + + file.__exif.then(callback); +}); +})(); diff --git a/assets/js/fileapi/FileAPI/FileAPI.flash.camera.swf b/assets/js/fileapi/FileAPI/FileAPI.flash.camera.swf new file mode 100755 index 0000000000..4c953e95d7 Binary files /dev/null and b/assets/js/fileapi/FileAPI/FileAPI.flash.camera.swf differ diff --git a/assets/js/fileapi/FileAPI/FileAPI.flash.image.swf b/assets/js/fileapi/FileAPI/FileAPI.flash.image.swf new file mode 100755 index 0000000000..001ff0f95e Binary files /dev/null and b/assets/js/fileapi/FileAPI/FileAPI.flash.image.swf differ diff --git a/assets/js/fileapi/FileAPI/FileAPI.flash.swf b/assets/js/fileapi/FileAPI/FileAPI.flash.swf new file mode 100755 index 0000000000..738f60d465 Binary files /dev/null and b/assets/js/fileapi/FileAPI/FileAPI.flash.swf differ diff --git a/assets/js/fileapi/FileAPI/FileAPI.html5.js b/assets/js/fileapi/FileAPI/FileAPI.html5.js new file mode 100755 index 0000000000..aabab82d1f --- /dev/null +++ b/assets/js/fileapi/FileAPI/FileAPI.html5.js @@ -0,0 +1,3569 @@ +/*! FileAPI 2.0.19 - BSD | git://github.com/mailru/FileAPI.git + * FileAPI — a set of javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF. + */ + +/* + * JavaScript Canvas to Blob 2.0.5 + * https://github.com/blueimp/JavaScript-Canvas-to-Blob + * + * Copyright 2012, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + * + * Based on stackoverflow user Stoive's code snippet: + * http://stackoverflow.com/q/4998908 + */ + +/*jslint nomen: true, regexp: true */ +/*global window, atob, Blob, ArrayBuffer, Uint8Array */ + +(function (window) { + 'use strict'; + var CanvasPrototype = window.HTMLCanvasElement && + window.HTMLCanvasElement.prototype, + hasBlobConstructor = window.Blob && (function () { + try { + return Boolean(new Blob()); + } catch (e) { + return false; + } + }()), + hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && + (function () { + try { + return new Blob([new Uint8Array(100)]).size === 100; + } catch (e) { + return false; + } + }()), + BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || + window.MozBlobBuilder || window.MSBlobBuilder, + dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && + window.ArrayBuffer && window.Uint8Array && function (dataURI) { + var byteString, + arrayBuffer, + intArray, + i, + mimeString, + bb; + if (dataURI.split(',')[0].indexOf('base64') >= 0) { + // Convert base64 to raw binary data held in a string: + byteString = atob(dataURI.split(',')[1]); + } else { + // Convert base64/URLEncoded data component to raw binary data: + byteString = decodeURIComponent(dataURI.split(',')[1]); + } + // Write the bytes of the string to an ArrayBuffer: + arrayBuffer = new ArrayBuffer(byteString.length); + intArray = new Uint8Array(arrayBuffer); + for (i = 0; i < byteString.length; i += 1) { + intArray[i] = byteString.charCodeAt(i); + } + // Separate out the mime component: + mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; + // Write the ArrayBuffer (or ArrayBufferView) to a blob: + if (hasBlobConstructor) { + return new Blob( + [hasArrayBufferViewSupport ? intArray : arrayBuffer], + {type: mimeString} + ); + } + bb = new BlobBuilder(); + bb.append(arrayBuffer); + return bb.getBlob(mimeString); + }; + if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) { + if (CanvasPrototype.mozGetAsFile) { + CanvasPrototype.toBlob = function (callback, type, quality) { + if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) { + callback(dataURLtoBlob(this.toDataURL(type, quality))); + } else { + callback(this.mozGetAsFile('blob', type)); + } + }; + } else if (CanvasPrototype.toDataURL && dataURLtoBlob) { + CanvasPrototype.toBlob = function (callback, type, quality) { + callback(dataURLtoBlob(this.toDataURL(type, quality))); + }; + } + } + window.dataURLtoBlob = dataURLtoBlob; +})(window); + +/*jslint evil: true */ +/*global window, URL, webkitURL, ActiveXObject */ + +(function (window, undef){ + 'use strict'; + + var + gid = 1, + noop = function (){}, + + document = window.document, + doctype = document.doctype || {}, + userAgent = window.navigator.userAgent, + safari = /safari\//i.test(userAgent) && !/chrome\//i.test(userAgent), + iemobile = /iemobile\//i.test(userAgent), + + // https://github.com/blueimp/JavaScript-Load-Image/blob/master/load-image.js#L48 + apiURL = (window.createObjectURL && window) || (window.URL && URL.revokeObjectURL && URL) || (window.webkitURL && webkitURL), + + Blob = window.Blob, + File = window.File, + FileReader = window.FileReader, + FormData = window.FormData, + + + XMLHttpRequest = window.XMLHttpRequest, + jQuery = window.jQuery, + + html5 = !!(File && (FileReader && (window.Uint8Array || FormData || XMLHttpRequest.prototype.sendAsBinary))) + && !(safari && /windows/i.test(userAgent) && !iemobile), // BugFix: https://github.com/mailru/FileAPI/issues/25 + + cors = html5 && ('withCredentials' in (new XMLHttpRequest)), + + chunked = html5 && !!Blob && !!(Blob.prototype.webkitSlice || Blob.prototype.mozSlice || Blob.prototype.slice), + + normalize = ('' + ''.normalize).indexOf('[native code]') > 0, + + // https://github.com/blueimp/JavaScript-Canvas-to-Blob + dataURLtoBlob = window.dataURLtoBlob, + + + _rimg = /img/i, + _rcanvas = /canvas/i, + _rimgcanvas = /img|canvas/i, + _rinput = /input/i, + _rdata = /^data:[^,]+,/, + + _toString = {}.toString, + _supportConsoleLog, + _supportConsoleLogApply, + + + Math = window.Math, + + _SIZE_CONST = function (pow){ + pow = new window.Number(Math.pow(1024, pow)); + pow.from = function (sz){ return Math.round(sz * this); }; + return pow; + }, + + _elEvents = {}, // element event listeners + _infoReader = [], // list of file info processors + + _readerEvents = 'abort progress error load loadend', + _xhrPropsExport = 'status statusText readyState response responseXML responseText responseBody'.split(' '), + + currentTarget = 'currentTarget', // for minimize + preventDefault = 'preventDefault', // and this too + + _isArray = function (ar) { + return ar && ('length' in ar); + }, + + /** + * Iterate over a object or array + */ + _each = function (obj, fn, ctx){ + if( obj ){ + if( _isArray(obj) ){ + for( var i = 0, n = obj.length; i < n; i++ ){ + if( i in obj ){ + fn.call(ctx, obj[i], i, obj); + } + } + } + else { + for( var key in obj ){ + if( obj.hasOwnProperty(key) ){ + fn.call(ctx, obj[key], key, obj); + } + } + } + } + }, + + /** + * Merge the contents of two or more objects together into the first object + */ + _extend = function (dst){ + var args = arguments, i = 1, _ext = function (val, key){ dst[key] = val; }; + for( ; i < args.length; i++ ){ + _each(args[i], _ext); + } + return dst; + }, + + /** + * Add event listener + */ + _on = function (el, type, fn){ + if( el ){ + var uid = api.uid(el); + + if( !_elEvents[uid] ){ + _elEvents[uid] = {}; + } + + var isFileReader = (FileReader && el) && (el instanceof FileReader); + _each(type.split(/\s+/), function (type){ + if( jQuery && !isFileReader){ + jQuery.event.add(el, type, fn); + } else { + if( !_elEvents[uid][type] ){ + _elEvents[uid][type] = []; + } + + _elEvents[uid][type].push(fn); + + if( el.addEventListener ){ el.addEventListener(type, fn, false); } + else if( el.attachEvent ){ el.attachEvent('on'+type, fn); } + else { el['on'+type] = fn; } + } + }); + } + }, + + + /** + * Remove event listener + */ + _off = function (el, type, fn){ + if( el ){ + var uid = api.uid(el), events = _elEvents[uid] || {}; + + var isFileReader = (FileReader && el) && (el instanceof FileReader); + _each(type.split(/\s+/), function (type){ + if( jQuery && !isFileReader){ + jQuery.event.remove(el, type, fn); + } + else { + var fns = events[type] || [], i = fns.length; + + while( i-- ){ + if( fns[i] === fn ){ + fns.splice(i, 1); + break; + } + } + + if( el.addEventListener ){ el.removeEventListener(type, fn, false); } + else if( el.detachEvent ){ el.detachEvent('on'+type, fn); } + else { el['on'+type] = null; } + } + }); + } + }, + + + _one = function(el, type, fn){ + _on(el, type, function _(evt){ + _off(el, type, _); + fn(evt); + }); + }, + + + _fixEvent = function (evt){ + if( !evt.target ){ evt.target = window.event && window.event.srcElement || document; } + if( evt.target.nodeType === 3 ){ evt.target = evt.target.parentNode; } + return evt; + }, + + + _supportInputAttr = function (attr){ + var input = document.createElement('input'); + input.setAttribute('type', "file"); + return attr in input; + }, + + + /** + * FileAPI (core object) + */ + api = { + version: '2.0.19', + + cors: false, + html5: true, + media: false, + formData: true, + multiPassResize: true, + + debug: false, + pingUrl: false, + multiFlash: false, + flashAbortTimeout: 0, + withCredentials: true, + + staticPath: './dist/', + + flashUrl: 0, // @default: './FileAPI.flash.swf' + flashImageUrl: 0, // @default: './FileAPI.flash.image.swf' + + postNameConcat: function (name, idx){ + return name + (idx != null ? '['+ idx +']' : ''); + }, + + ext2mime: { + jpg: 'image/jpeg' + , tif: 'image/tiff' + , txt: 'text/plain' + }, + + // Fallback for flash + accept: { + 'image/*': 'art bm bmp dwg dxf cbr cbz fif fpx gif ico iefs jfif jpe jpeg jpg jps jut mcf nap nif pbm pcx pgm pict pm png pnm qif qtif ras rast rf rp svf tga tif tiff xbm xbm xpm xwd' + , 'audio/*': 'm4a flac aac rm mpa wav wma ogg mp3 mp2 m3u mod amf dmf dsm far gdm imf it m15 med okt s3m stm sfx ult uni xm sid ac3 dts cue aif aiff wpl ape mac mpc mpp shn wv nsf spc gym adplug adx dsp adp ymf ast afc hps xs' + , 'video/*': 'm4v 3gp nsv ts ty strm rm rmvb m3u ifo mov qt divx xvid bivx vob nrg img iso pva wmv asf asx ogm m2v avi bin dat dvr-ms mpg mpeg mp4 mkv avc vp3 svq3 nuv viv dv fli flv wpl' + }, + + uploadRetry : 0, + networkDownRetryTimeout : 5000, // milliseconds, don't flood when network is down + + chunkSize : 0, + chunkUploadRetry : 0, + chunkNetworkDownRetryTimeout : 2000, // milliseconds, don't flood when network is down + + KB: _SIZE_CONST(1), + MB: _SIZE_CONST(2), + GB: _SIZE_CONST(3), + TB: _SIZE_CONST(4), + + EMPTY_PNG: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=', + + expando: 'fileapi' + (new Date).getTime(), + + uid: function (obj){ + return obj + ? (obj[api.expando] = obj[api.expando] || api.uid()) + : (++gid, api.expando + gid) + ; + }, + + log: function (){ + if( api.debug && _supportConsoleLog ){ + if( _supportConsoleLogApply ){ + console.log.apply(console, arguments); + } + else { + console.log([].join.call(arguments, ' ')); + } + } + }, + + /** + * Create new image + * + * @param {String} [src] + * @param {Function} [fn] 1. error -- boolean, 2. img -- Image element + * @returns {HTMLElement} + */ + newImage: function (src, fn){ + var img = document.createElement('img'); + if( fn ){ + api.event.one(img, 'error load', function (evt){ + fn(evt.type == 'error', img); + img = null; + }); + } + img.src = src; + return img; + }, + + /** + * Get XHR + * @returns {XMLHttpRequest} + */ + getXHR: function (){ + var xhr; + + if( XMLHttpRequest ){ + xhr = new XMLHttpRequest; + } + else if( window.ActiveXObject ){ + try { + xhr = new ActiveXObject('MSXML2.XMLHttp.3.0'); + } catch (e) { + xhr = new ActiveXObject('Microsoft.XMLHTTP'); + } + } + + return xhr; + }, + + isArray: _isArray, + + support: { + dnd: cors && ('ondrop' in document.createElement('div')), + cors: cors, + html5: html5, + chunked: chunked, + dataURI: true, + accept: _supportInputAttr('accept'), + multiple: _supportInputAttr('multiple') + }, + + event: { + on: _on + , off: _off + , one: _one + , fix: _fixEvent + }, + + + throttle: function(fn, delay) { + var id, args; + + return function _throttle(){ + args = arguments; + + if( !id ){ + fn.apply(window, args); + id = setTimeout(function (){ + id = 0; + fn.apply(window, args); + }, delay); + } + }; + }, + + + F: function (){}, + + + parseJSON: function (str){ + var json; + if( window.JSON && JSON.parse ){ + json = JSON.parse(str); + } + else { + json = (new Function('return ('+str.replace(/([\r\n])/g, '\\$1')+');'))(); + } + return json; + }, + + + trim: function (str){ + str = String(str); + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); + }, + + /** + * Simple Defer + * @return {Object} + */ + defer: function (){ + var + list = [] + , result + , error + , defer = { + resolve: function (err, res){ + defer.resolve = noop; + error = err || false; + result = res; + + while( res = list.shift() ){ + res(error, result); + } + }, + + then: function (fn){ + if( error !== undef ){ + fn(error, result); + } else { + list.push(fn); + } + } + }; + + return defer; + }, + + queue: function (fn){ + var + _idx = 0 + , _length = 0 + , _fail = false + , _end = false + , queue = { + inc: function (){ + _length++; + }, + + next: function (){ + _idx++; + setTimeout(queue.check, 0); + }, + + check: function (){ + (_idx >= _length) && !_fail && queue.end(); + }, + + isFail: function (){ + return _fail; + }, + + fail: function (){ + !_fail && fn(_fail = true); + }, + + end: function (){ + if( !_end ){ + _end = true; + fn(); + } + } + } + ; + return queue; + }, + + + /** + * For each object + * + * @param {Object|Array} obj + * @param {Function} fn + * @param {*} [ctx] + */ + each: _each, + + + /** + * Async for + * @param {Array} array + * @param {Function} callback + */ + afor: function (array, callback){ + var i = 0, n = array.length; + + if( _isArray(array) && n-- ){ + (function _next(){ + callback(n != i && _next, array[i], i++); + })(); + } + else { + callback(false); + } + }, + + + /** + * Merge the contents of two or more objects together into the first object + * + * @param {Object} dst + * @return {Object} + */ + extend: _extend, + + + /** + * Is file? + * @param {File} file + * @return {Boolean} + */ + isFile: function (file){ + return _toString.call(file) === '[object File]'; + }, + + + /** + * Is blob? + * @param {Blob} blob + * @returns {Boolean} + */ + isBlob: function (blob) { + return this.isFile(blob) || (_toString.call(blob) === '[object Blob]'); + }, + + + /** + * Is canvas element + * + * @param {HTMLElement} el + * @return {Boolean} + */ + isCanvas: function (el){ + return el && _rcanvas.test(el.nodeName); + }, + + + getFilesFilter: function (filter){ + filter = typeof filter == 'string' ? filter : (filter.getAttribute && filter.getAttribute('accept') || ''); + return filter ? new RegExp('('+ filter.replace(/\./g, '\\.').replace(/,/g, '|') +')$', 'i') : /./; + }, + + + + /** + * Read as DataURL + * + * @param {File|Element} file + * @param {Function} fn + */ + readAsDataURL: function (file, fn){ + if( api.isCanvas(file) ){ + _emit(file, fn, 'load', api.toDataURL(file)); + } + else { + _readAs(file, fn, 'DataURL'); + } + }, + + + /** + * Read as Binary string + * + * @param {File} file + * @param {Function} fn + */ + readAsBinaryString: function (file, fn){ + if( _hasSupportReadAs('BinaryString') ){ + _readAs(file, fn, 'BinaryString'); + } else { + // Hello IE10! + _readAs(file, function (evt){ + if( evt.type == 'load' ){ + try { + // dataURL -> binaryString + evt.result = api.toBinaryString(evt.result); + } catch (e){ + evt.type = 'error'; + evt.message = e.toString(); + } + } + fn(evt); + }, 'DataURL'); + } + }, + + + /** + * Read as ArrayBuffer + * + * @param {File} file + * @param {Function} fn + */ + readAsArrayBuffer: function(file, fn){ + _readAs(file, fn, 'ArrayBuffer'); + }, + + + /** + * Read as text + * + * @param {File} file + * @param {String} encoding + * @param {Function} [fn] + */ + readAsText: function(file, encoding, fn){ + if( !fn ){ + fn = encoding; + encoding = 'utf-8'; + } + + _readAs(file, fn, 'Text', encoding); + }, + + + /** + * Convert image or canvas to DataURL + * + * @param {Element} el Image or Canvas element + * @param {String} [type] mime-type + * @return {String} + */ + toDataURL: function (el, type){ + if( typeof el == 'string' ){ + return el; + } + else if( el.toDataURL ){ + return el.toDataURL(type || 'image/png'); + } + }, + + + /** + * Canvert string, image or canvas to binary string + * + * @param {String|Element} val + * @return {String} + */ + toBinaryString: function (val){ + return window.atob(api.toDataURL(val).replace(_rdata, '')); + }, + + + /** + * Read file or DataURL as ImageElement + * + * @param {File|String} file + * @param {Function} fn + * @param {Boolean} [progress] + */ + readAsImage: function (file, fn, progress){ + if( api.isBlob(file) ){ + if( apiURL ){ + /** @namespace apiURL.createObjectURL */ + var data = apiURL.createObjectURL(file); + if( data === undef ){ + _emit(file, fn, 'error'); + } + else { + api.readAsImage(data, fn, progress); + } + } + else { + api.readAsDataURL(file, function (evt){ + if( evt.type == 'load' ){ + api.readAsImage(evt.result, fn, progress); + } + else if( progress || evt.type == 'error' ){ + _emit(file, fn, evt, null, { loaded: evt.loaded, total: evt.total }); + } + }); + } + } + else if( api.isCanvas(file) ){ + _emit(file, fn, 'load', file); + } + else if( _rimg.test(file.nodeName) ){ + if( file.complete ){ + _emit(file, fn, 'load', file); + } + else { + var events = 'error abort load'; + _one(file, events, function _fn(evt){ + if( evt.type == 'load' && apiURL ){ + /** @namespace apiURL.revokeObjectURL */ + apiURL.revokeObjectURL(file.src); + } + + _off(file, events, _fn); + _emit(file, fn, evt, file); + }); + } + } + else if( file.iframe ){ + _emit(file, fn, { type: 'error' }); + } + else { + // Created image + var img = api.newImage(file.dataURL || file); + api.readAsImage(img, fn, progress); + } + }, + + + /** + * Make file by name + * + * @param {String} name + * @return {Array} + */ + checkFileObj: function (name){ + var file = {}, accept = api.accept; + + if( typeof name == 'object' ){ + file = name; + } + else { + file.name = (name + '').split(/\\|\//g).pop(); + } + + if( file.type == null ){ + file.type = file.name.split('.').pop(); + } + + _each(accept, function (ext, type){ + ext = new RegExp(ext.replace(/\s/g, '|'), 'i'); + if( ext.test(file.type) || api.ext2mime[file.type] ){ + file.type = api.ext2mime[file.type] || (type.split('/')[0] +'/'+ file.type); + } + }); + + return file; + }, + + + /** + * Get drop files + * + * @param {Event} evt + * @param {Function} callback + */ + getDropFiles: function (evt, callback){ + var + files = [] + , all = [] + , items + , dataTransfer = _getDataTransfer(evt) + , transFiles = dataTransfer.files + , transItems = dataTransfer.items + , entrySupport = _isArray(transItems) && transItems[0] && _getAsEntry(transItems[0]) + , queue = api.queue(function (){ callback(files, all); }) + ; + + if( entrySupport ){ + if( normalize && transFiles ){ + var + i = transFiles.length + , file + , entry + ; + + items = new Array(i); + while( i-- ){ + file = transFiles[i]; + + try { + entry = _getAsEntry(transItems[i]); + } + catch( err ){ + api.log('[err] getDropFiles: ', err); + entry = null; + } + + if( _isEntry(entry) ){ + // OSX filesystems use Unicode Normalization Form D (NFD), + // and entry.file(…) can't read the files with the same names + if( entry.isDirectory || (entry.isFile && file.name == file.name.normalize('NFC')) ){ + items[i] = entry; + } + else { + items[i] = file; + } + } + else { + items[i] = file; + } + } + } + else { + items = transItems; + } + } + else { + items = transFiles; + } + + _each(items || [], function (item){ + queue.inc(); + + try { + if( entrySupport && _isEntry(item) ){ + _readEntryAsFiles(item, function (err, entryFiles, allEntries){ + if( err ){ + api.log('[err] getDropFiles:', err); + } else { + files.push.apply(files, entryFiles); + } + all.push.apply(all, allEntries); + + queue.next(); + }); + } + else { + _isRegularFile(item, function (yes, err){ + if( yes ){ + files.push(item); + } + else { + item.error = err; + } + all.push(item); + + queue.next(); + }); + } + } + catch( err ){ + queue.next(); + api.log('[err] getDropFiles: ', err); + } + }); + + queue.check(); + }, + + + /** + * Get file list + * + * @param {HTMLInputElement|Event} input + * @param {String|Function} [filter] + * @param {Function} [callback] + * @return {Array|Null} + */ + getFiles: function (input, filter, callback){ + var files = []; + + if( callback ){ + api.filterFiles(api.getFiles(input), filter, callback); + return null; + } + + if( input.jquery ){ + // jQuery object + input.each(function (){ + files = files.concat(api.getFiles(this)); + }); + input = files; + files = []; + } + + if( typeof filter == 'string' ){ + filter = api.getFilesFilter(filter); + } + + if( input.originalEvent ){ + // jQuery event + input = _fixEvent(input.originalEvent); + } + else if( input.srcElement ){ + // IE Event + input = _fixEvent(input); + } + + + if( input.dataTransfer ){ + // Drag'n'Drop + input = input.dataTransfer; + } + else if( input.target ){ + // Event + input = input.target; + } + + if( input.files ){ + // Input[type="file"] + files = input.files; + + if( !html5 ){ + // Partial support for file api + files[0].blob = input; + files[0].iframe = true; + } + } + else if( !html5 && isInputFile(input) ){ + if( api.trim(input.value) ){ + files = [api.checkFileObj(input.value)]; + files[0].blob = input; + files[0].iframe = true; + } + } + else if( _isArray(input) ){ + files = input; + } + + return api.filter(files, function (file){ return !filter || filter.test(file.name); }); + }, + + + /** + * Get total file size + * @param {Array} files + * @return {Number} + */ + getTotalSize: function (files){ + var size = 0, i = files && files.length; + while( i-- ){ + size += files[i].size; + } + return size; + }, + + + /** + * Get image information + * + * @param {File} file + * @param {Function} fn + */ + getInfo: function (file, fn){ + var info = {}, readers = _infoReader.concat(); + + if( api.isBlob(file) ){ + (function _next(){ + var reader = readers.shift(); + if( reader ){ + if( reader.test(file.type) ){ + reader(file, function (err, res){ + if( err ){ + fn(err); + } + else { + _extend(info, res); + _next(); + } + }); + } + else { + _next(); + } + } + else { + fn(false, info); + } + })(); + } + else { + fn('not_support_info', info); + } + }, + + + /** + * Add information reader + * + * @param {RegExp} mime + * @param {Function} fn + */ + addInfoReader: function (mime, fn){ + fn.test = function (type){ return mime.test(type); }; + _infoReader.push(fn); + }, + + + /** + * Filter of array + * + * @param {Array} input + * @param {Function} fn + * @return {Array} + */ + filter: function (input, fn){ + var result = [], i = 0, n = input.length, val; + + for( ; i < n; i++ ){ + if( i in input ){ + val = input[i]; + if( fn.call(val, val, i, input) ){ + result.push(val); + } + } + } + + return result; + }, + + + /** + * Filter files + * + * @param {Array} files + * @param {Function} eachFn + * @param {Function} resultFn + */ + filterFiles: function (files, eachFn, resultFn){ + if( files.length ){ + // HTML5 or Flash + var queue = files.concat(), file, result = [], deleted = []; + + (function _next(){ + if( queue.length ){ + file = queue.shift(); + api.getInfo(file, function (err, info){ + (eachFn(file, err ? false : info) ? result : deleted).push(file); + _next(); + }); + } + else { + resultFn(result, deleted); + } + })(); + } + else { + resultFn([], files); + } + }, + + + upload: function (options){ + options = _extend({ + jsonp: 'callback' + , prepare: api.F + , beforeupload: api.F + , upload: api.F + , fileupload: api.F + , fileprogress: api.F + , filecomplete: api.F + , progress: api.F + , complete: api.F + , pause: api.F + , imageOriginal: true + , chunkSize: api.chunkSize + , chunkUploadRetry: api.chunkUploadRetry + , uploadRetry: api.uploadRetry + }, options); + + + if( options.imageAutoOrientation && !options.imageTransform ){ + options.imageTransform = { rotate: 'auto' }; + } + + + var + proxyXHR = new api.XHR(options) + , dataArray = this._getFilesDataArray(options.files) + , _this = this + , _total = 0 + , _loaded = 0 + , _nextFile + , _complete = false + ; + + + // calc total size + _each(dataArray, function (data){ + _total += data.size; + }); + + // Array of files + proxyXHR.files = []; + _each(dataArray, function (data){ + proxyXHR.files.push(data.file); + }); + + // Set upload status props + proxyXHR.total = _total; + proxyXHR.loaded = 0; + proxyXHR.filesLeft = dataArray.length; + + // emit "beforeupload" event + options.beforeupload(proxyXHR, options); + + // Upload by file + _nextFile = function (){ + var + data = dataArray.shift() + , _file = data && data.file + , _fileLoaded = false + , _fileOptions = _simpleClone(options) + ; + + proxyXHR.filesLeft = dataArray.length; + + if( _file && _file.name === api.expando ){ + _file = null; + api.log('[warn] FileAPI.upload() — called without files'); + } + + if( ( proxyXHR.statusText != 'abort' || proxyXHR.current ) && data ){ + // Mark active job + _complete = false; + + // Set current upload file + proxyXHR.currentFile = _file; + + // Prepare file options + if (_file && options.prepare(_file, _fileOptions) === false) { + _nextFile.call(_this); + return; + } + _fileOptions.file = _file; + + _this._getFormData(_fileOptions, data, function (form){ + if( !_loaded ){ + // emit "upload" event + options.upload(proxyXHR, options); + } + + var xhr = new api.XHR(_extend({}, _fileOptions, { + + upload: _file ? function (){ + // emit "fileupload" event + options.fileupload(_file, xhr, _fileOptions); + } : noop, + + progress: _file ? function (evt){ + if( !_fileLoaded ){ + // For ignore the double calls. + _fileLoaded = (evt.loaded === evt.total); + + // emit "fileprogress" event + options.fileprogress({ + type: 'progress' + , total: data.total = evt.total + , loaded: data.loaded = evt.loaded + }, _file, xhr, _fileOptions); + + // emit "progress" event + options.progress({ + type: 'progress' + , total: _total + , loaded: proxyXHR.loaded = (_loaded + data.size * (evt.loaded/evt.total)) || 0 + }, _file, xhr, _fileOptions); + } + } : noop, + + complete: function (err){ + _each(_xhrPropsExport, function (name){ + proxyXHR[name] = xhr[name]; + }); + + if( _file ){ + data.total = (data.total || data.size); + data.loaded = data.total; + + if( !err ) { + // emulate 100% "progress" + this.progress(data); + + // fixed throttle event + _fileLoaded = true; + + // bytes loaded + _loaded += data.size; // data.size != data.total, it's desirable fix this + proxyXHR.loaded = _loaded; + } + + // emit "filecomplete" event + options.filecomplete(err, xhr, _file, _fileOptions); + } + + // upload next file + setTimeout(function () {_nextFile.call(_this);}, 0); + } + })); // xhr + + + // ... + proxyXHR.abort = function (current){ + if (!current) { dataArray.length = 0; } + this.current = current; + xhr.abort(); + }; + + // Start upload + xhr.send(form); + }); + } + else { + var successful = proxyXHR.status == 200 || proxyXHR.status == 201 || proxyXHR.status == 204; + options.complete(successful ? false : (proxyXHR.statusText || 'error'), proxyXHR, options); + // Mark done state + _complete = true; + } + }; + + + // Next tick + setTimeout(_nextFile, 0); + + + // Append more files to the existing request + // first - add them to the queue head/tail + proxyXHR.append = function (files, first) { + files = api._getFilesDataArray([].concat(files)); + + _each(files, function (data) { + _total += data.size; + proxyXHR.files.push(data.file); + if (first) { + dataArray.unshift(data); + } else { + dataArray.push(data); + } + }); + + proxyXHR.statusText = ""; + + if( _complete ){ + _nextFile.call(_this); + } + }; + + + // Removes file from queue by file reference and returns it + proxyXHR.remove = function (file) { + var i = dataArray.length, _file; + while( i-- ){ + if( dataArray[i].file == file ){ + _file = dataArray.splice(i, 1); + _total -= _file.size; + } + } + return _file; + }; + + return proxyXHR; + }, + + + _getFilesDataArray: function (data){ + var files = [], oFiles = {}; + + if( isInputFile(data) ){ + var tmp = api.getFiles(data); + oFiles[data.name || 'file'] = data.getAttribute('multiple') !== null ? tmp : tmp[0]; + } + else if( _isArray(data) && isInputFile(data[0]) ){ + _each(data, function (input){ + oFiles[input.name || 'file'] = api.getFiles(input); + }); + } + else { + oFiles = data; + } + + _each(oFiles, function add(file, name){ + if( _isArray(file) ){ + _each(file, function (file){ + add(file, name); + }); + } + else if( file && (file.name || file.image) ){ + files.push({ + name: name + , file: file + , size: file.size + , total: file.size + , loaded: 0 + }); + } + }); + + if( !files.length ){ + // Create fake `file` object + files.push({ file: { name: api.expando } }); + } + + return files; + }, + + + _getFormData: function (options, data, fn){ + var + file = data.file + , name = data.name + , filename = file.name + , filetype = file.type + , trans = api.support.transform && options.imageTransform + , Form = new api.Form + , queue = api.queue(function (){ fn(Form); }) + , isOrignTrans = trans && _isOriginTransform(trans) + , postNameConcat = api.postNameConcat + ; + + // Append data + _each(options.data, function add(val, name){ + if( typeof val == 'object' ){ + _each(val, function (v, i){ + add(v, postNameConcat(name, i)); + }); + } + else { + Form.append(name, val); + } + }); + + (function _addFile(file/**Object*/){ + if( file.image ){ // This is a FileAPI.Image + queue.inc(); + + file.toData(function (err, image){ + // @todo: требует рефакторинга и обработки ошибки + if (file.file) { + image.type = file.file.type; + image.quality = file.matrix.quality; + filename = file.file && file.file.name; + } + + filename = filename || (new Date).getTime()+'.png'; + + _addFile(image); + queue.next(); + }); + } + else if( api.Image && trans && (/^image/.test(file.type) || _rimgcanvas.test(file.nodeName)) ){ + queue.inc(); + + if( isOrignTrans ){ + // Convert to array for transform function + trans = [trans]; + } + + api.Image.transform(file, trans, options.imageAutoOrientation, function (err, images){ + if( isOrignTrans && !err ){ + if( !dataURLtoBlob && !api.flashEngine ){ + // Canvas.toBlob or Flash not supported, use multipart + Form.multipart = true; + } + + Form.append(name, images[0], filename, trans[0].type || filetype); + } + else { + var addOrigin = 0; + + if( !err ){ + _each(images, function (image, idx){ + if( !dataURLtoBlob && !api.flashEngine ){ + Form.multipart = true; + } + + if( !trans[idx].postName ){ + addOrigin = 1; + } + + Form.append(trans[idx].postName || postNameConcat(name, idx), image, filename, trans[idx].type || filetype); + }); + } + + if( err || options.imageOriginal ){ + Form.append(postNameConcat(name, (addOrigin ? 'original' : null)), file, filename, filetype); + } + } + + queue.next(); + }); + } + else if( filename !== api.expando ){ + Form.append(name, file, filename); + } + })(file); + + queue.check(); + }, + + + reset: function (inp, notRemove){ + var parent, clone; + + if( jQuery ){ + clone = jQuery(inp).clone(true).insertBefore(inp).val('')[0]; + if( !notRemove ){ + jQuery(inp).remove(); + } + } else { + parent = inp.parentNode; + clone = parent.insertBefore(inp.cloneNode(true), inp); + clone.value = ''; + + if( !notRemove ){ + parent.removeChild(inp); + } + + _each(_elEvents[api.uid(inp)], function (fns, type){ + _each(fns, function (fn){ + _off(inp, type, fn); + _on(clone, type, fn); + }); + }); + } + + return clone; + }, + + + /** + * Load remote file + * + * @param {String} url + * @param {Function} fn + * @return {XMLHttpRequest} + */ + load: function (url, fn){ + var xhr = api.getXHR(); + if( xhr ){ + xhr.open('GET', url, true); + + if( xhr.overrideMimeType ){ + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + _on(xhr, 'progress', function (/**Event*/evt){ + /** @namespace evt.lengthComputable */ + if( evt.lengthComputable ){ + fn({ type: evt.type, loaded: evt.loaded, total: evt.total }, xhr); + } + }); + + xhr.onreadystatechange = function(){ + if( xhr.readyState == 4 ){ + xhr.onreadystatechange = null; + if( xhr.status == 200 ){ + url = url.split('/'); + /** @namespace xhr.responseBody */ + var file = { + name: url[url.length-1] + , size: xhr.getResponseHeader('Content-Length') + , type: xhr.getResponseHeader('Content-Type') + }; + file.dataURL = 'data:'+file.type+';base64,' + api.encode64(xhr.responseBody || xhr.responseText); + fn({ type: 'load', result: file }, xhr); + } + else { + fn({ type: 'error' }, xhr); + } + } + }; + xhr.send(null); + } else { + fn({ type: 'error' }); + } + + return xhr; + }, + + encode64: function (str){ + var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', outStr = '', i = 0; + + if( typeof str !== 'string' ){ + str = String(str); + } + + while( i < str.length ){ + //all three "& 0xff" added below are there to fix a known bug + //with bytes returned by xhr.responseText + var + byte1 = str.charCodeAt(i++) & 0xff + , byte2 = str.charCodeAt(i++) & 0xff + , byte3 = str.charCodeAt(i++) & 0xff + , enc1 = byte1 >> 2 + , enc2 = ((byte1 & 3) << 4) | (byte2 >> 4) + , enc3, enc4 + ; + + if( isNaN(byte2) ){ + enc3 = enc4 = 64; + } else { + enc3 = ((byte2 & 15) << 2) | (byte3 >> 6); + enc4 = isNaN(byte3) ? 64 : byte3 & 63; + } + + outStr += b64.charAt(enc1) + b64.charAt(enc2) + b64.charAt(enc3) + b64.charAt(enc4); + } + + return outStr; + } + + } // api + ; + + + function _emit(target, fn, name, res, ext){ + var evt = { + type: name.type || name + , target: target + , result: res + }; + _extend(evt, ext); + fn(evt); + } + + + function _hasSupportReadAs(method){ + return FileReader && !!FileReader.prototype['readAs' + method]; + } + + + function _readAs(file, fn, method, encoding){ + if( api.isBlob(file) && _hasSupportReadAs(method) ){ + var Reader = new FileReader; + + // Add event listener + _on(Reader, _readerEvents, function _fn(evt){ + var type = evt.type; + if( type == 'progress' ){ + _emit(file, fn, evt, evt.target.result, { loaded: evt.loaded, total: evt.total }); + } + else if( type == 'loadend' ){ + _off(Reader, _readerEvents, _fn); + Reader = null; + } + else { + _emit(file, fn, evt, evt.target.result); + } + }); + + + try { + // ReadAs ... + if( encoding ){ + Reader['readAs' + method](file, encoding); + } + else { + Reader['readAs' + method](file); + } + } + catch (err){ + _emit(file, fn, 'error', undef, { error: err.toString() }); + } + } + else { + _emit(file, fn, 'error', undef, { error: 'filreader_not_support_' + method }); + } + } + + + function _isRegularFile(file, callback){ + // http://stackoverflow.com/questions/8856628/detecting-folders-directories-in-javascript-filelist-objects + if( !file.type && (safari || ((file.size % 4096) === 0 && (file.size <= 102400))) ){ + if( FileReader ){ + try { + var reader = new FileReader(); + + _one(reader, _readerEvents, function (evt){ + var isFile = evt.type != 'error'; + if( isFile ){ + if ( reader.readyState == null || reader.readyState === reader.LOADING ) { + reader.abort(); + } + callback(isFile); + } + else { + callback(false, reader.error); + } + }); + + reader.readAsDataURL(file); + } catch( err ){ + callback(false, err); + } + } + else { + callback(null, new Error('FileReader is not supported')); + } + } + else { + callback(true); + } + } + + + function _isEntry(item){ + return item && (item.isFile || item.isDirectory); + } + + + function _getAsEntry(item){ + var entry; + if( item.getAsEntry ){ entry = item.getAsEntry(); } + else if( item.webkitGetAsEntry ){ entry = item.webkitGetAsEntry(); } + return entry; + } + + + function _readEntryAsFiles(entry, callback){ + if( !entry ){ + // error + var err = new Error('invalid entry'); + entry = new Object(entry); + entry.error = err; + callback(err.message, [], [entry]); + } + else if( entry.isFile ){ + // Read as file + entry.file(function (file){ + // success + file.fullPath = entry.fullPath; + callback(false, [file], [file]); + }, function (err){ + // error + entry.error = err; + callback('FileError.code: ' + err.code, [], [entry]); + }); + } + else if( entry.isDirectory ){ + var + reader = entry.createReader() + , firstAttempt = true + , files = [] + , all = [entry] + ; + + var onerror = function (err){ + // error + entry.error = err; + callback('DirectoryError.code: ' + err.code, files, all); + }; + var ondone = function ondone(entries){ + if( firstAttempt ){ + firstAttempt = false; + if( !entries.length ){ + entry.error = new Error('directory is empty'); + } + } + + // success + if( entries.length ){ + api.afor(entries, function (next, entry){ + _readEntryAsFiles(entry, function (err, entryFiles, allEntries){ + if( !err ){ + files = files.concat(entryFiles); + } + all = all.concat(allEntries); + + if( next ){ + next(); + } + else { + reader.readEntries(ondone, onerror); + } + }); + }); + } + else { + callback(false, files, all); + } + }; + + reader.readEntries(ondone, onerror); + } + else { + _readEntryAsFiles(_getAsEntry(entry), callback); + } + } + + + function _simpleClone(obj){ + var copy = {}; + _each(obj, function (val, key){ + if( val && (typeof val === 'object') && (val.nodeType === void 0) ){ + val = _extend({}, val); + } + copy[key] = val; + }); + return copy; + } + + + function isInputFile(el){ + return _rinput.test(el && el.tagName); + } + + + function _getDataTransfer(evt){ + return (evt.originalEvent || evt || '').dataTransfer || {}; + } + + + function _isOriginTransform(trans){ + var key; + for( key in trans ){ + if( trans.hasOwnProperty(key) ){ + if( !(trans[key] instanceof Object || key === 'overlay' || key === 'filter') ){ + return true; + } + } + } + return false; + } + + + // Add default image info reader + api.addInfoReader(/^image/, function (file/**File*/, callback/**Function*/){ + if( !file.__dimensions ){ + var defer = file.__dimensions = api.defer(); + + api.readAsImage(file, function (evt){ + var img = evt.target; + defer.resolve(evt.type == 'load' ? false : 'error', { + width: img.width + , height: img.height + }); + img.src = api.EMPTY_PNG; + img = null; + }); + } + + file.__dimensions.then(callback); + }); + + + /** + * Drag'n'Drop special event + * + * @param {HTMLElement} el + * @param {Function} onHover + * @param {Function} onDrop + */ + api.event.dnd = function (el, onHover, onDrop){ + var _id, _type; + + if( !onDrop ){ + onDrop = onHover; + onHover = api.F; + } + + if( FileReader ){ + // Hover + _on(el, 'dragenter dragleave dragover', onHover.ff = onHover.ff || function (evt){ + var + types = _getDataTransfer(evt).types + , i = types && types.length + , debounceTrigger = false + ; + + while( i-- ){ + if( ~types[i].indexOf('File') ){ + evt[preventDefault](); + + if( _type !== evt.type ){ + _type = evt.type; // Store current type of event + + if( _type != 'dragleave' ){ + onHover.call(evt[currentTarget], true, evt); + } + + debounceTrigger = true; + } + + break; // exit from "while" + } + } + + if( debounceTrigger ){ + clearTimeout(_id); + _id = setTimeout(function (){ + onHover.call(evt[currentTarget], _type != 'dragleave', evt); + }, 50); + } + }); + + + // Drop + _on(el, 'drop', onDrop.ff = onDrop.ff || function (evt){ + evt[preventDefault](); + + _type = 0; + onHover.call(evt[currentTarget], false, evt); + + api.getDropFiles(evt, function (files, all){ + onDrop.call(evt[currentTarget], files, all, evt); + }); + }); + } + else { + api.log("Drag'n'Drop -- not supported"); + } + }; + + + /** + * Remove drag'n'drop + * @param {HTMLElement} el + * @param {Function} onHover + * @param {Function} onDrop + */ + api.event.dnd.off = function (el, onHover, onDrop){ + _off(el, 'dragenter dragleave dragover', onHover.ff); + _off(el, 'drop', onDrop.ff); + }; + + + // Support jQuery + if( jQuery && !jQuery.fn.dnd ){ + jQuery.fn.dnd = function (onHover, onDrop){ + return this.each(function (){ + api.event.dnd(this, onHover, onDrop); + }); + }; + + jQuery.fn.offdnd = function (onHover, onDrop){ + return this.each(function (){ + api.event.dnd.off(this, onHover, onDrop); + }); + }; + } + + // @export + window.FileAPI = _extend(api, window.FileAPI); + + + // Debug info + api.log('FileAPI: ' + api.version); + api.log('protocol: ' + window.location.protocol); + api.log('doctype: [' + doctype.name + '] ' + doctype.publicId + ' ' + doctype.systemId); + + + // @detect 'x-ua-compatible' + _each(document.getElementsByTagName('meta'), function (meta){ + if( /x-ua-compatible/i.test(meta.getAttribute('http-equiv')) ){ + api.log('meta.http-equiv: ' + meta.getAttribute('content')); + } + }); + + + // Configuration + try { + _supportConsoleLog = !!console.log; + _supportConsoleLogApply = !!console.log.apply; + } + catch (err) {} + + if( !api.flashUrl ){ api.flashUrl = api.staticPath + 'FileAPI.flash.swf'; } + if( !api.flashImageUrl ){ api.flashImageUrl = api.staticPath + 'FileAPI.flash.image.swf'; } + if( !api.flashWebcamUrl ){ api.flashWebcamUrl = api.staticPath + 'FileAPI.flash.camera.swf'; } +})(window, void 0); + +/*global window, FileAPI, document */ + +(function (api, document, undef) { + 'use strict'; + + var + min = Math.min, + round = Math.round, + getCanvas = function () { return document.createElement('canvas'); }, + support = false, + exifOrientation = { + 8: 270 + , 3: 180 + , 6: 90 + , 7: 270 + , 4: 180 + , 5: 90 + } + ; + + try { + support = getCanvas().toDataURL('image/png').indexOf('data:image/png') > -1; + } + catch (e){} + + + function Image(file){ + if( file instanceof Image ){ + var img = new Image(file.file); + api.extend(img.matrix, file.matrix); + return img; + } + else if( !(this instanceof Image) ){ + return new Image(file); + } + + this.file = file; + this.size = file.size || 100; + + this.matrix = { + sx: 0, + sy: 0, + sw: 0, + sh: 0, + dx: 0, + dy: 0, + dw: 0, + dh: 0, + resize: 0, // min, max OR preview + deg: 0, + quality: 1, // jpeg quality + filter: 0 + }; + } + + + Image.prototype = { + image: true, + constructor: Image, + + set: function (attrs){ + api.extend(this.matrix, attrs); + return this; + }, + + crop: function (x, y, w, h){ + if( w === undef ){ + w = x; + h = y; + x = y = 0; + } + return this.set({ sx: x, sy: y, sw: w, sh: h || w }); + }, + + resize: function (w, h, strategy){ + if( /min|max|height|width/.test(h) ){ + strategy = h; + h = w; + } + + return this.set({ dw: w, dh: h || w, resize: strategy }); + }, + + preview: function (w, h){ + return this.resize(w, h || w, 'preview'); + }, + + rotate: function (deg){ + return this.set({ deg: deg }); + }, + + filter: function (filter){ + return this.set({ filter: filter }); + }, + + overlay: function (images){ + return this.set({ overlay: images }); + }, + + clone: function (){ + return new Image(this); + }, + + _load: function (image, fn){ + var self = this; + + if( /img|video/i.test(image.nodeName) ){ + fn.call(self, null, image); + } + else { + api.readAsImage(image, function (evt){ + fn.call(self, evt.type != 'load', evt.result); + }); + } + }, + + _apply: function (image, fn){ + var + canvas = getCanvas() + , m = this.getMatrix(image) + , ctx = canvas.getContext('2d') + , width = image.videoWidth || image.width + , height = image.videoHeight || image.height + , deg = m.deg + , dw = m.dw + , dh = m.dh + , w = width + , h = height + , filter = m.filter + , copy // canvas copy + , buffer = image + , overlay = m.overlay + , queue = api.queue(function (){ image.src = api.EMPTY_PNG; fn(false, canvas); }) + , renderImageToCanvas = api.renderImageToCanvas + ; + + // Normalize angle + deg = deg - Math.floor(deg/360)*360; + + // For `renderImageToCanvas` + image._type = this.file.type; + + while(m.multipass && min(w/dw, h/dh) > 2 ){ + w = (w/2 + 0.5)|0; + h = (h/2 + 0.5)|0; + + copy = getCanvas(); + copy.width = w; + copy.height = h; + + if( buffer !== image ){ + renderImageToCanvas(copy, buffer, 0, 0, buffer.width, buffer.height, 0, 0, w, h); + buffer = copy; + } + else { + buffer = copy; + renderImageToCanvas(buffer, image, m.sx, m.sy, m.sw, m.sh, 0, 0, w, h); + m.sx = m.sy = m.sw = m.sh = 0; + } + } + + + canvas.width = (deg % 180) ? dh : dw; + canvas.height = (deg % 180) ? dw : dh; + + canvas.type = m.type; + canvas.quality = m.quality; + + ctx.rotate(deg * Math.PI / 180); + renderImageToCanvas(ctx.canvas, buffer + , m.sx, m.sy + , m.sw || buffer.width + , m.sh || buffer.height + , (deg == 180 || deg == 270 ? -dw : 0) + , (deg == 90 || deg == 180 ? -dh : 0) + , dw, dh + ); + dw = canvas.width; + dh = canvas.height; + + // Apply overlay + overlay && api.each([].concat(overlay), function (over){ + queue.inc(); + // preload + var img = new window.Image, fn = function (){ + var + x = over.x|0 + , y = over.y|0 + , w = over.w || img.width + , h = over.h || img.height + , rel = over.rel + ; + + // center | right | left + x = (rel == 1 || rel == 4 || rel == 7) ? (dw - w + x)/2 : (rel == 2 || rel == 5 || rel == 8 ? dw - (w + x) : x); + + // center | bottom | top + y = (rel == 3 || rel == 4 || rel == 5) ? (dh - h + y)/2 : (rel >= 6 ? dh - (h + y) : y); + + api.event.off(img, 'error load abort', fn); + + try { + ctx.globalAlpha = over.opacity || 1; + ctx.drawImage(img, x, y, w, h); + } + catch (er){} + + queue.next(); + }; + + api.event.on(img, 'error load abort', fn); + img.src = over.src; + + if( img.complete ){ + fn(); + } + }); + + if( filter ){ + queue.inc(); + Image.applyFilter(canvas, filter, queue.next); + } + + queue.check(); + }, + + getMatrix: function (image){ + var + m = api.extend({}, this.matrix) + , sw = m.sw = m.sw || image.videoWidth || image.naturalWidth || image.width + , sh = m.sh = m.sh || image.videoHeight || image.naturalHeight || image.height + , dw = m.dw = m.dw || sw + , dh = m.dh = m.dh || sh + , sf = sw/sh, df = dw/dh + , strategy = m.resize + ; + + if( strategy == 'preview' ){ + if( dw != sw || dh != sh ){ + // Make preview + var w, h; + + if( df >= sf ){ + w = sw; + h = w / df; + } else { + h = sh; + w = h * df; + } + + if( w != sw || h != sh ){ + m.sx = ~~((sw - w)/2); + m.sy = ~~((sh - h)/2); + sw = w; + sh = h; + } + } + } + else if( strategy == 'height' ){ + dw = dh * sf; + } + else if( strategy == 'width' ){ + dh = dw / sf; + } + else if( strategy ){ + if( !(sw > dw || sh > dh) ){ + dw = sw; + dh = sh; + } + else if( strategy == 'min' ){ + dw = round(sf < df ? min(sw, dw) : dh*sf); + dh = round(sf < df ? dw/sf : min(sh, dh)); + } + else { + dw = round(sf >= df ? min(sw, dw) : dh*sf); + dh = round(sf >= df ? dw/sf : min(sh, dh)); + } + } + + m.sw = sw; + m.sh = sh; + m.dw = dw; + m.dh = dh; + m.multipass = api.multiPassResize; + return m; + }, + + _trans: function (fn){ + this._load(this.file, function (err, image){ + if( err ){ + fn(err); + } + else { + try { + this._apply(image, fn); + } catch (err){ + api.log('[err] FileAPI.Image.fn._apply:', err); + fn(err); + } + } + }); + }, + + + get: function (fn){ + if( api.support.transform ){ + var _this = this, matrix = _this.matrix; + + if( matrix.deg == 'auto' ){ + api.getInfo(_this.file, function (err, info){ + // rotate by exif orientation + matrix.deg = exifOrientation[info && info.exif && info.exif.Orientation] || 0; + _this._trans(fn); + }); + } + else { + _this._trans(fn); + } + } + else { + fn('not_support_transform'); + } + + return this; + }, + + + toData: function (fn){ + return this.get(fn); + } + + }; + + + Image.exifOrientation = exifOrientation; + + + Image.transform = function (file, transform, autoOrientation, fn){ + function _transform(err, img){ + // img -- info object + var + images = {} + , queue = api.queue(function (err){ + fn(err, images); + }) + ; + + if( !err ){ + api.each(transform, function (params, name){ + if( !queue.isFail() ){ + var ImgTrans = new Image(img.nodeType ? img : file), isFn = typeof params == 'function'; + + if( isFn ){ + params(img, ImgTrans); + } + else if( params.width ){ + ImgTrans[params.preview ? 'preview' : 'resize'](params.width, params.height, params.strategy); + } + else { + if( params.maxWidth && (img.width > params.maxWidth || img.height > params.maxHeight) ){ + ImgTrans.resize(params.maxWidth, params.maxHeight, 'max'); + } + } + + if( params.crop ){ + var crop = params.crop; + ImgTrans.crop(crop.x|0, crop.y|0, crop.w || crop.width, crop.h || crop.height); + } + + if( params.rotate === undef && autoOrientation ){ + params.rotate = 'auto'; + } + + ImgTrans.set({ type: ImgTrans.matrix.type || params.type || file.type || 'image/png' }); + + if( !isFn ){ + ImgTrans.set({ + deg: params.rotate + , overlay: params.overlay + , filter: params.filter + , quality: params.quality || 1 + }); + } + + queue.inc(); + ImgTrans.toData(function (err, image){ + if( err ){ + queue.fail(); + } + else { + images[name] = image; + queue.next(); + } + }); + } + }); + } + else { + queue.fail(); + } + } + + + // @todo: Оло-ло, нужно рефакторить это место + if( file.width ){ + _transform(false, file); + } else { + api.getInfo(file, _transform); + } + }; + + + // @const + api.each(['TOP', 'CENTER', 'BOTTOM'], function (x, i){ + api.each(['LEFT', 'CENTER', 'RIGHT'], function (y, j){ + Image[x+'_'+y] = i*3 + j; + Image[y+'_'+x] = i*3 + j; + }); + }); + + + /** + * Trabsform element to canvas + * + * @param {Image|HTMLVideoElement} el + * @returns {Canvas} + */ + Image.toCanvas = function(el){ + var canvas = document.createElement('canvas'); + canvas.width = el.videoWidth || el.width; + canvas.height = el.videoHeight || el.height; + canvas.getContext('2d').drawImage(el, 0, 0); + return canvas; + }; + + + /** + * Create image from DataURL + * @param {String} dataURL + * @param {Object} size + * @param {Function} callback + */ + Image.fromDataURL = function (dataURL, size, callback){ + var img = api.newImage(dataURL); + api.extend(img, size); + callback(img); + }; + + + /** + * Apply filter (caman.js) + * + * @param {Canvas|Image} canvas + * @param {String|Function} filter + * @param {Function} doneFn + */ + Image.applyFilter = function (canvas, filter, doneFn){ + if( typeof filter == 'function' ){ + filter(canvas, doneFn); + } + else if( window.Caman ){ + // http://camanjs.com/guides/ + window.Caman(canvas.tagName == 'IMG' ? Image.toCanvas(canvas) : canvas, function (){ + if( typeof filter == 'string' ){ + this[filter](); + } + else { + api.each(filter, function (val, method){ + this[method](val); + }, this); + } + this.render(doneFn); + }); + } + }; + + + /** + * For load-image-ios.js + */ + api.renderImageToCanvas = function (canvas, img, sx, sy, sw, sh, dx, dy, dw, dh){ + try { + return canvas.getContext('2d').drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh); + } catch (ex) { + api.log('renderImageToCanvas failed'); + throw ex; + } + }; + + + // @export + api.support.canvas = api.support.transform = support; + api.Image = Image; +})(FileAPI, document); + +/* + * JavaScript Load Image iOS scaling fixes 1.0.3 + * https://github.com/blueimp/JavaScript-Load-Image + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * iOS image scaling fixes based on + * https://github.com/stomita/ios-imagefile-megapixel + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, bitwise: true */ +/*global FileAPI, window, document */ + +(function (factory) { + 'use strict'; + factory(FileAPI); +}(function (loadImage) { + 'use strict'; + + // Only apply fixes on the iOS platform: + if (!window.navigator || !window.navigator.platform || + !(/iP(hone|od|ad)/).test(window.navigator.platform)) { + return; + } + + var originalRenderMethod = loadImage.renderImageToCanvas; + + // Detects subsampling in JPEG images: + loadImage.detectSubsampling = function (img) { + var canvas, + context; + if (img.width * img.height > 1024 * 1024) { // only consider mexapixel images + canvas = document.createElement('canvas'); + canvas.width = canvas.height = 1; + context = canvas.getContext('2d'); + context.drawImage(img, -img.width + 1, 0); + // subsampled image becomes half smaller in rendering size. + // check alpha channel value to confirm image is covering edge pixel or not. + // if alpha value is 0 image is not covering, hence subsampled. + return context.getImageData(0, 0, 1, 1).data[3] === 0; + } + return false; + }; + + // Detects vertical squash in JPEG images: + loadImage.detectVerticalSquash = function (img, subsampled) { + var naturalHeight = img.naturalHeight || img.height, + canvas = document.createElement('canvas'), + context = canvas.getContext('2d'), + data, + sy, + ey, + py, + alpha; + if (subsampled) { + naturalHeight /= 2; + } + canvas.width = 1; + canvas.height = naturalHeight; + context.drawImage(img, 0, 0); + data = context.getImageData(0, 0, 1, naturalHeight).data; + // search image edge pixel position in case it is squashed vertically: + sy = 0; + ey = naturalHeight; + py = naturalHeight; + while (py > sy) { + alpha = data[(py - 1) * 4 + 3]; + if (alpha === 0) { + ey = py; + } else { + sy = py; + } + py = (ey + sy) >> 1; + } + return (py / naturalHeight) || 1; + }; + + // Renders image to canvas while working around iOS image scaling bugs: + // https://github.com/blueimp/JavaScript-Load-Image/issues/13 + loadImage.renderImageToCanvas = function ( + canvas, + img, + sourceX, + sourceY, + sourceWidth, + sourceHeight, + destX, + destY, + destWidth, + destHeight + ) { + if (img._type === 'image/jpeg') { + var context = canvas.getContext('2d'), + tmpCanvas = document.createElement('canvas'), + tileSize = 1024, + tmpContext = tmpCanvas.getContext('2d'), + subsampled, + vertSquashRatio, + tileX, + tileY; + tmpCanvas.width = tileSize; + tmpCanvas.height = tileSize; + context.save(); + subsampled = loadImage.detectSubsampling(img); + if (subsampled) { + sourceX /= 2; + sourceY /= 2; + sourceWidth /= 2; + sourceHeight /= 2; + } + vertSquashRatio = loadImage.detectVerticalSquash(img, subsampled); + if (subsampled || vertSquashRatio !== 1) { + sourceY *= vertSquashRatio; + destWidth = Math.ceil(tileSize * destWidth / sourceWidth); + destHeight = Math.ceil( + tileSize * destHeight / sourceHeight / vertSquashRatio + ); + destY = 0; + tileY = 0; + while (tileY < sourceHeight) { + destX = 0; + tileX = 0; + while (tileX < sourceWidth) { + tmpContext.clearRect(0, 0, tileSize, tileSize); + tmpContext.drawImage( + img, + sourceX, + sourceY, + sourceWidth, + sourceHeight, + -tileX, + -tileY, + sourceWidth, + sourceHeight + ); + context.drawImage( + tmpCanvas, + 0, + 0, + tileSize, + tileSize, + destX, + destY, + destWidth, + destHeight + ); + tileX += tileSize; + destX += destWidth; + } + tileY += tileSize; + destY += destHeight; + } + context.restore(); + return canvas; + } + } + return originalRenderMethod( + canvas, + img, + sourceX, + sourceY, + sourceWidth, + sourceHeight, + destX, + destY, + destWidth, + destHeight + ); + }; + +})); + +/*global window, FileAPI */ + +(function (api, window){ + "use strict"; + + var + document = window.document + , FormData = window.FormData + , Form = function (){ this.items = []; } + , encodeURIComponent = window.encodeURIComponent + ; + + + Form.prototype = { + + append: function (name, blob, file, type){ + this.items.push({ + name: name + , blob: blob && blob.blob || (blob == void 0 ? '' : blob) + , file: blob && (file || blob.name) + , type: blob && (type || blob.type) + }); + }, + + each: function (fn){ + var i = 0, n = this.items.length; + for( ; i < n; i++ ){ + fn.call(this, this.items[i]); + } + }, + + toData: function (fn, options){ + // allow chunked transfer if we have only one file to send + // flag is used below and in XHR._send + options._chunked = api.support.chunked && options.chunkSize > 0 && api.filter(this.items, function (item){ return item.file; }).length == 1; + + if( !api.support.html5 ){ + api.log('FileAPI.Form.toHtmlData'); + this.toHtmlData(fn); + } + else if( !api.formData || this.multipart || !FormData ){ + api.log('FileAPI.Form.toMultipartData'); + this.toMultipartData(fn); + } + else if( options._chunked ){ + api.log('FileAPI.Form.toPlainData'); + this.toPlainData(fn); + } + else { + api.log('FileAPI.Form.toFormData'); + this.toFormData(fn); + } + }, + + _to: function (data, complete, next, arg){ + var queue = api.queue(function (){ + complete(data); + }); + + this.each(function (file){ + try{ + next(file, data, queue, arg); + } + catch( err ){ + api.log('FileAPI.Form._to: ' + err.message); + complete(err); + } + }); + + queue.check(); + }, + + + toHtmlData: function (fn){ + this._to(document.createDocumentFragment(), fn, function (file, data/**DocumentFragment*/){ + var blob = file.blob, hidden; + + if( file.file ){ + api.reset(blob, true); + // set new name + blob.name = file.name; + blob.disabled = false; + data.appendChild(blob); + } + else { + hidden = document.createElement('input'); + hidden.name = file.name; + hidden.type = 'hidden'; + hidden.value = blob; + data.appendChild(hidden); + } + }); + }, + + toPlainData: function (fn){ + this._to({}, fn, function (file, data, queue){ + if( file.file ){ + data.type = file.file; + } + + if( file.blob.toBlob ){ + // canvas + queue.inc(); + _convertFile(file, function (file, blob){ + data.name = file.name; + data.file = blob; + data.size = blob.length; + data.type = file.type; + queue.next(); + }); + } + else if( file.file ){ + // file + data.name = file.blob.name; + data.file = file.blob; + data.size = file.blob.size; + data.type = file.type; + } + else { + // additional data + if( !data.params ){ + data.params = []; + } + data.params.push(encodeURIComponent(file.name) +"="+ encodeURIComponent(file.blob)); + } + + data.start = -1; + data.end = data.file && data.file.FileAPIReadPosition || -1; + data.retry = 0; + }); + }, + + toFormData: function (fn){ + this._to(new FormData, fn, function (file, data, queue){ + if( file.blob && file.blob.toBlob ){ + queue.inc(); + _convertFile(file, function (file, blob){ + data.append(file.name, blob, file.file); + queue.next(); + }); + } + else if( file.file ){ + data.append(file.name, file.blob, file.file); + } + else { + data.append(file.name, file.blob); + } + + if( file.file ){ + data.append('_'+file.name, file.file); + } + }); + }, + + + toMultipartData: function (fn){ + this._to([], fn, function (file, data, queue, boundary){ + queue.inc(); + _convertFile(file, function (file, blob){ + data.push( + '--_' + boundary + ('\r\nContent-Disposition: form-data; name="'+ file.name +'"'+ (file.file ? '; filename="'+ encodeURIComponent(file.file) +'"' : '') + + (file.file ? '\r\nContent-Type: '+ (file.type || 'application/octet-stream') : '') + + '\r\n' + + '\r\n'+ (file.file ? blob : encodeURIComponent(blob)) + + '\r\n') + ); + queue.next(); + }, true); + }, api.expando); + } + }; + + + function _convertFile(file, fn, useBinaryString){ + var blob = file.blob, filename = file.file; + + if( filename ){ + if( !blob.toDataURL ){ + // The Blob is not an image. + api.readAsBinaryString(blob, function (evt){ + if( evt.type == 'load' ){ + fn(file, evt.result); + } + }); + return; + } + + var + mime = { 'image/jpeg': '.jpe?g', 'image/png': '.png' } + , type = mime[file.type] ? file.type : 'image/png' + , ext = mime[type] || '.png' + , quality = blob.quality || 1 + ; + + if( !filename.match(new RegExp(ext+'$', 'i')) ){ + // Does not change the current extension, but add a new one. + filename += ext.replace('?', ''); + } + + file.file = filename; + file.type = type; + + if( !useBinaryString && blob.toBlob ){ + blob.toBlob(function (blob){ + fn(file, blob); + }, type, quality); + } + else { + fn(file, api.toBinaryString(blob.toDataURL(type, quality))); + } + } + else { + fn(file, blob); + } + } + + + // @export + api.Form = Form; +})(FileAPI, window); + +/*global window, FileAPI, Uint8Array */ + +(function (window, api){ + "use strict"; + + var + noop = function (){} + , document = window.document + + , XHR = function (options){ + this.uid = api.uid(); + this.xhr = { + abort: noop + , getResponseHeader: noop + , getAllResponseHeaders: noop + }; + this.options = options; + }, + + _xhrResponsePostfix = { '': 1, XML: 1, Text: 1, Body: 1 } + ; + + + XHR.prototype = { + status: 0, + statusText: '', + constructor: XHR, + + getResponseHeader: function (name){ + return this.xhr.getResponseHeader(name); + }, + + getAllResponseHeaders: function (){ + return this.xhr.getAllResponseHeaders() || {}; + }, + + end: function (status, statusText){ + var _this = this, options = _this.options; + + _this.end = + _this.abort = noop; + _this.status = status; + + if( statusText ){ + _this.statusText = statusText; + } + + api.log('xhr.end:', status, statusText); + options.complete(status == 200 || status == 201 ? false : _this.statusText || 'unknown', _this); + + if( _this.xhr && _this.xhr.node ){ + setTimeout(function (){ + var node = _this.xhr.node; + try { node.parentNode.removeChild(node); } catch (e){} + try { delete window[_this.uid]; } catch (e){} + window[_this.uid] = _this.xhr.node = null; + }, 9); + } + }, + + abort: function (){ + this.end(0, 'abort'); + + if( this.xhr ){ + this.xhr.aborted = true; + this.xhr.abort(); + } + }, + + send: function (FormData){ + var _this = this, options = this.options; + + FormData.toData(function (data){ + if( data instanceof Error ){ + _this.end(0, data.message); + } + else{ + // Start uploading + options.upload(options, _this); + _this._send.call(_this, options, data); + } + }, options); + }, + + _send: function (options, data){ + var _this = this, xhr, uid = _this.uid, onLoadFnName = _this.uid + "Load", url = options.url; + + api.log('XHR._send:', data); + + if( !options.cache ){ + // No cache + url += (~url.indexOf('?') ? '&' : '?') + api.uid(); + } + + if( data.nodeName ){ + var jsonp = options.jsonp; + + // prepare callback in GET + url = url.replace(/([a-z]+)=(\?)/i, '$1='+uid); + + // legacy + options.upload(options, _this); + + var + onPostMessage = function (evt){ + if( ~url.indexOf(evt.origin) ){ + try { + var result = api.parseJSON(evt.data); + if( result.id == uid ){ + complete(result.status, result.statusText, result.response); + } + } catch( err ){ + complete(0, err.message); + } + } + }, + + // jsonp-callack + complete = window[uid] = function (status, statusText, response){ + _this.readyState = 4; + _this.responseText = response; + _this.end(status, statusText); + + api.event.off(window, 'message', onPostMessage); + window[uid] = xhr = transport = window[onLoadFnName] = null; + } + ; + + _this.xhr.abort = function (){ + try { + if( transport.stop ){ transport.stop(); } + else if( transport.contentWindow.stop ){ transport.contentWindow.stop(); } + else { transport.contentWindow.document.execCommand('Stop'); } + } + catch (er) {} + complete(0, "abort"); + }; + + api.event.on(window, 'message', onPostMessage); + + window[onLoadFnName] = function (){ + try { + var + win = transport.contentWindow + , doc = win.document + , result = win.result || api.parseJSON(doc.body.innerHTML) + ; + complete(result.status, result.statusText, result.response); + } catch (e){ + api.log('[transport.onload]', e); + } + }; + + xhr = document.createElement('div'); + xhr.innerHTML = '
                    ' + + '' + + (jsonp && (options.url.indexOf('=?') < 0) ? '' : '') + + '
                    ' + ; + + // get form-data & transport + var + form = xhr.getElementsByTagName('form')[0] + , transport = xhr.getElementsByTagName('iframe')[0] + ; + + form.appendChild(data); + + api.log(form.parentNode.innerHTML); + + // append to DOM + document.body.appendChild(xhr); + + // keep a reference to node-transport + _this.xhr.node = xhr; + + // send + _this.readyState = 2; // loaded + try { + form.submit(); + } catch (err) { + api.log('iframe.error: ' + err); + } + form = null; + } + else { + // Clean url + url = url.replace(/([a-z]+)=(\?)&?/i, ''); + + // html5 + if (this.xhr && this.xhr.aborted) { + api.log("Error: already aborted"); + return; + } + xhr = _this.xhr = api.getXHR(); + + if (data.params) { + url += (url.indexOf('?') < 0 ? "?" : "&") + data.params.join("&"); + } + + xhr.open('POST', url, true); + + if( api.withCredentials ){ + xhr.withCredentials = "true"; + } + + if( !options.headers || !options.headers['X-Requested-With'] ){ + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + } + + api.each(options.headers, function (val, key){ + xhr.setRequestHeader(key, val); + }); + + + if ( options._chunked ) { + // chunked upload + if( xhr.upload ){ + xhr.upload.addEventListener('progress', api.throttle(function (/**Event*/evt){ + if (!data.retry) { + // show progress only for correct chunk uploads + options.progress({ + type: evt.type + , total: data.size + , loaded: data.start + evt.loaded + , totalSize: data.size + }, _this, options); + } + }, 100), false); + } + + xhr.onreadystatechange = function (){ + var lkb = parseInt(xhr.getResponseHeader('X-Last-Known-Byte'), 10); + + _this.status = xhr.status; + _this.statusText = xhr.statusText; + _this.readyState = xhr.readyState; + + if( xhr.readyState == 4 ){ + for( var k in _xhrResponsePostfix ){ + _this['response'+k] = xhr['response'+k]; + } + xhr.onreadystatechange = null; + + if (!xhr.status || xhr.status - 201 > 0) { + api.log("Error: " + xhr.status); + // some kind of error + // 0 - connection fail or timeout, if xhr.aborted is true, then it's not recoverable user action + // up - server error + if (((!xhr.status && !xhr.aborted) || 500 == xhr.status || 416 == xhr.status) && ++data.retry <= options.chunkUploadRetry) { + // let's try again the same chunk + // only applicable for recoverable error codes 500 && 416 + var delay = xhr.status ? 0 : api.chunkNetworkDownRetryTimeout; + + // inform about recoverable problems + options.pause(data.file, options); + + // smart restart if server reports about the last known byte + api.log("X-Last-Known-Byte: " + lkb); + if (lkb) { + data.end = lkb; + } else { + data.end = data.start - 1; + if (416 == xhr.status) { + data.end = data.end - options.chunkSize; + } + } + + setTimeout(function () { + _this._send(options, data); + }, delay); + } else { + // no mo retries + _this.end(xhr.status); + } + } else { + // success + data.retry = 0; + + if (data.end == data.size - 1) { + // finished + _this.end(xhr.status); + } else { + // next chunk + + // shift position if server reports about the last known byte + api.log("X-Last-Known-Byte: " + lkb); + if (lkb) { + data.end = lkb; + } + data.file.FileAPIReadPosition = data.end; + + setTimeout(function () { + _this._send(options, data); + }, 0); + } + } + + xhr = null; + } + }; + + data.start = data.end + 1; + data.end = Math.max(Math.min(data.start + options.chunkSize, data.size) - 1, data.start); + + // Retrieve a slice of file + var + file = data.file + , slice = (file.slice || file.mozSlice || file.webkitSlice).call(file, data.start, data.end + 1) + ; + + if( data.size && !slice.size ){ + setTimeout(function (){ + _this.end(-1); + }); + } else { + xhr.setRequestHeader("Content-Range", "bytes " + data.start + "-" + data.end + "/" + data.size); + xhr.setRequestHeader("Content-Disposition", 'attachment; filename=' + encodeURIComponent(data.name)); + xhr.setRequestHeader("Content-Type", data.type || "application/octet-stream"); + + xhr.send(slice); + } + + file = slice = null; + } else { + // single piece upload + if( xhr.upload ){ + // https://github.com/blueimp/jQuery-File-Upload/wiki/Fixing-Safari-hanging-on-very-high-speed-connections-%281Gbps%29 + xhr.upload.addEventListener('progress', api.throttle(function (/**Event*/evt){ + options.progress(evt, _this, options); + }, 100), false); + } + + xhr.onreadystatechange = function (){ + _this.status = xhr.status; + _this.statusText = xhr.statusText; + _this.readyState = xhr.readyState; + + if( xhr.readyState == 4 ){ + for( var k in _xhrResponsePostfix ){ + _this['response'+k] = xhr['response'+k]; + } + xhr.onreadystatechange = null; + + if (!xhr.status || xhr.status > 201) { + api.log("Error: " + xhr.status); + if (((!xhr.status && !xhr.aborted) || 500 == xhr.status) && (options.retry || 0) < options.uploadRetry) { + options.retry = (options.retry || 0) + 1; + var delay = api.networkDownRetryTimeout; + + // inform about recoverable problems + options.pause(options.file, options); + + setTimeout(function () { + _this._send(options, data); + }, delay); + } else { + //success + _this.end(xhr.status); + } + } else { + //success + _this.end(xhr.status); + } + + xhr = null; + } + }; + + if( api.isArray(data) ){ + // multipart + xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=_'+api.expando); + var rawData = data.join('') +'--_'+ api.expando +'--'; + + /** @namespace xhr.sendAsBinary https://developer.mozilla.org/ru/XMLHttpRequest#Sending_binary_content */ + if( xhr.sendAsBinary ){ + xhr.sendAsBinary(rawData); + } + else { + var bytes = Array.prototype.map.call(rawData, function(c){ return c.charCodeAt(0) & 0xff; }); + xhr.send(new Uint8Array(bytes).buffer); + + } + } else { + // FormData + xhr.send(data); + } + } + } + } + }; + + + // @export + api.XHR = XHR; +})(window, FileAPI); + +/** + * @class FileAPI.Camera + * @author RubaXa + * @support Chrome 21+, FF 18+, Opera 12+ + */ + +/*global window, FileAPI, jQuery */ +/** @namespace LocalMediaStream -- https://developer.mozilla.org/en-US/docs/WebRTC/MediaStream_API#LocalMediaStream */ +(function (window, api){ + "use strict"; + + var + URL = window.URL || window.webkitURL, + + document = window.document, + navigator = window.navigator, + + getMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia, + + html5 = !!getMedia + ; + + + // Support "media" + api.support.media = html5; + + + var Camera = function (video){ + this.video = video; + }; + + + Camera.prototype = { + isActive: function (){ + return !!this._active; + }, + + + /** + * Start camera streaming + * @param {Function} callback + */ + start: function (callback){ + var + _this = this + , video = _this.video + , _successId + , _failId + , _complete = function (err){ + _this._active = !err; + clearTimeout(_failId); + clearTimeout(_successId); +// api.event.off(video, 'loadedmetadata', _complete); + callback && callback(err, _this); + } + ; + + getMedia.call(navigator, { video: true }, function (stream/**LocalMediaStream*/){ + // Success + _this.stream = stream; + +// api.event.on(video, 'loadedmetadata', function (){ +// _complete(null); +// }); + + // Set camera stream + video.src = URL.createObjectURL(stream); + + // Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia. + // See crbug.com/110938. + _successId = setInterval(function (){ + if( _detectVideoSignal(video) ){ + _complete(null); + } + }, 1000); + + _failId = setTimeout(function (){ + _complete('timeout'); + }, 5000); + + // Go-go-go! + video.play(); + }, _complete/*error*/); + }, + + + /** + * Stop camera streaming + */ + stop: function (){ + try { + this._active = false; + this.video.pause(); + + try { + this.stream.stop(); + } catch (err) { + api.each(this.stream.getTracks(), function (track) { + track.stop(); + }); + } + + this.stream = null; + } catch( err ){ + api.log('[FileAPI.Camera] stop:', err); + } + }, + + + /** + * Create screenshot + * @return {FileAPI.Camera.Shot} + */ + shot: function (){ + return new Shot(this.video); + } + }; + + + /** + * Get camera element from container + * + * @static + * @param {HTMLElement} el + * @return {Camera} + */ + Camera.get = function (el){ + return new Camera(el.firstChild); + }; + + + /** + * Publish camera element into container + * + * @static + * @param {HTMLElement} el + * @param {Object} options + * @param {Function} [callback] + */ + Camera.publish = function (el, options, callback){ + if( typeof options == 'function' ){ + callback = options; + options = {}; + } + + // Dimensions of "camera" + options = api.extend({}, { + width: '100%' + , height: '100%' + , start: true + }, options); + + + if( el.jquery ){ + // Extract first element, from jQuery collection + el = el[0]; + } + + + var doneFn = function (err){ + if( err ){ + callback(err); + } + else { + // Get camera + var cam = Camera.get(el); + if( options.start ){ + cam.start(callback); + } + else { + callback(null, cam); + } + } + }; + + + el.style.width = _px(options.width); + el.style.height = _px(options.height); + + + if( api.html5 && html5 ){ + // Create video element + var video = document.createElement('video'); + + // Set dimensions + video.style.width = _px(options.width); + video.style.height = _px(options.height); + + // Clean container + if( window.jQuery ){ + jQuery(el).empty(); + } else { + el.innerHTML = ''; + } + + // Add "camera" to container + el.appendChild(video); + + // end + doneFn(); + } + else { + Camera.fallback(el, options, doneFn); + } + }; + + + Camera.fallback = function (el, options, callback){ + callback('not_support_camera'); + }; + + + /** + * @class FileAPI.Camera.Shot + */ + var Shot = function (video){ + var canvas = video.nodeName ? api.Image.toCanvas(video) : video; + var shot = api.Image(canvas); + shot.type = 'image/png'; + shot.width = canvas.width; + shot.height = canvas.height; + shot.size = canvas.width * canvas.height * 4; + return shot; + }; + + + /** + * Add "px" postfix, if value is a number + * + * @private + * @param {*} val + * @return {String} + */ + function _px(val){ + return val >= 0 ? val + 'px' : val; + } + + + /** + * @private + * @param {HTMLVideoElement} video + * @return {Boolean} + */ + function _detectVideoSignal(video){ + var canvas = document.createElement('canvas'), ctx, res = false; + try { + ctx = canvas.getContext('2d'); + ctx.drawImage(video, 0, 0, 1, 1); + res = ctx.getImageData(0, 0, 1, 1).data[4] != 255; + } + catch( err ){ + api.log('[FileAPI.Camera] detectVideoSignal:', err); + } + return res; + } + + + // @export + Camera.Shot = Shot; + api.Camera = Camera; +})(window, FileAPI); + +/** + * FileAPI fallback to Flash + * + * @flash-developer "Vladimir Demidov" + */ + +/*global window, FileAPI */ +(function (window, jQuery, api) { + "use strict"; + + var _each = api.each, + _cameraQueue = []; + + if (api.support.flash && (api.media && (!api.support.media || !api.html5))) { + (function () { + function _wrap(fn) { + var id = fn.wid = api.uid(); + api.Flash._fn[id] = fn; + return 'FileAPI.Flash._fn.' + id; + } + + + function _unwrap(fn) { + try { + api.Flash._fn[fn.wid] = null; + delete api.Flash._fn[fn.wid]; + } catch (e) { + } + } + + var flash = api.Flash; + api.extend(api.Flash, { + + patchCamera: function () { + api.Camera.fallback = function (el, options, callback) { + var camId = api.uid(); + api.log('FlashAPI.Camera.publish: ' + camId); + flash.publish(el, camId, api.extend(options, { + camera: true, + onEvent: _wrap(function _(evt) { + if (evt.type === 'camera') { + _unwrap(_); + + if (evt.error) { + api.log('FlashAPI.Camera.publish.error: ' + evt.error); + callback(evt.error); + } else { + api.log('FlashAPI.Camera.publish.success: ' + camId); + callback(null); + } + } + }) + })); + }; + // Run + _each(_cameraQueue, function (args) { + api.Camera.fallback.apply(api.Camera, args); + }); + _cameraQueue = []; + + + // FileAPI.Camera:proto + api.extend(api.Camera.prototype, { + _id: function () { + return this.video.id; + }, + + start: function (callback) { + var _this = this; + flash.cmd(this._id(), 'camera.on', { + callback: _wrap(function _(evt) { + _unwrap(_); + + if (evt.error) { + api.log('FlashAPI.camera.on.error: ' + evt.error); + callback(evt.error, _this); + } else { + api.log('FlashAPI.camera.on.success: ' + _this._id()); + _this._active = true; + callback(null, _this); + } + }) + }); + }, + + stop: function () { + this._active = false; + flash.cmd(this._id(), 'camera.off'); + }, + + shot: function () { + api.log('FlashAPI.Camera.shot:', this._id()); + + var shot = api.Flash.cmd(this._id(), 'shot', {}); + shot.type = 'image/png'; + shot.flashId = this._id(); + shot.isShot = true; + + return new api.Camera.Shot(shot); + } + }); + } + }); + + api.Camera.fallback = function () { + _cameraQueue.push(arguments); + }; + + }()); + } +}(window, window.jQuery, FileAPI)); +if( typeof define === "function" && define.amd ){ define("FileAPI", [], function (){ return FileAPI; }); } \ No newline at end of file diff --git a/assets/js/fileapi/FileAPI/FileAPI.html5.min.js b/assets/js/fileapi/FileAPI/FileAPI.html5.min.js new file mode 100755 index 0000000000..d3a8e21162 --- /dev/null +++ b/assets/js/fileapi/FileAPI/FileAPI.html5.min.js @@ -0,0 +1,3 @@ +/*! FileAPI 2.0.19 - BSD | git://github.com/mailru/FileAPI.git */ +!function(a){"use strict";var b=a.HTMLCanvasElement&&a.HTMLCanvasElement.prototype,c=a.Blob&&function(){try{return Boolean(new Blob)}catch(a){return!1}}(),d=c&&a.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(a){return!1}}(),e=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||a.MSBlobBuilder,f=(c||e)&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&function(a){var b,f,g,h,i,j;for(b=a.split(",")[0].indexOf("base64")>=0?atob(a.split(",")[1]):decodeURIComponent(a.split(",")[1]),f=new ArrayBuffer(b.length),g=new Uint8Array(f),h=0;h0,H=a.dataURLtoBlob,I=/img/i,J=/canvas/i,K=/img|canvas/i,L=/input/i,M=/^data:[^,]+,/,N={}.toString,O=a.Math,P=function(b){return b=new a.Number(O.pow(1024,b)),b.from=function(a){return O.round(a*this)},b},Q={},R=[],S="abort progress error load loadend",T="status statusText readyState response responseXML responseText responseBody".split(" "),U="currentTarget",V="preventDefault",W=function(a){return a&&"length"in a},X=function(a,b,c){if(a)if(W(a))for(var d=0,e=a.length;e>d;d++)d in a&&b.call(c,a[d],d,a);else for(var f in a)a.hasOwnProperty(f)&&b.call(c,a[f],f,a)},Y=function(a){for(var b=arguments,c=1,d=function(b,c){a[c]=b};c=c&&!d&&f.end()},isFail:function(){return d},fail:function(){!d&&a(d=!0)},end:function(){e||(e=!0,a())}};return f},each:X,afor:function(a,b){var c=0,d=a.length;W(a)&&d--?!function e(){b(d!=c&&e,a[c],c++)}():b(!1)},extend:Y,isFile:function(a){return"[object File]"===N.call(a)},isBlob:function(a){return this.isFile(a)||"[object Blob]"===N.call(a)},isCanvas:function(a){return a&&J.test(a.nodeName)},getFilesFilter:function(a){return a="string"==typeof a?a:a.getAttribute&&a.getAttribute("accept")||"",a?new RegExp("("+a.replace(/\./g,"\\.").replace(/,/g,"|")+")$","i"):/./},readAsDataURL:function(a,b){ca.isCanvas(a)?c(a,b,"load",ca.toDataURL(a)):e(a,b,"DataURL")},readAsBinaryString:function(a,b){d("BinaryString")?e(a,b,"BinaryString"):e(a,function(a){if("load"==a.type)try{a.result=ca.toBinaryString(a.result)}catch(c){a.type="error",a.message=c.toString()}b(a)},"DataURL")},readAsArrayBuffer:function(a,b){e(a,b,"ArrayBuffer")},readAsText:function(a,b,c){c||(c=b,b="utf-8"),e(a,c,"Text",b)},toDataURL:function(a,b){return"string"==typeof a?a:a.toDataURL?a.toDataURL(b||"image/png"):void 0},toBinaryString:function(b){return a.atob(ca.toDataURL(b).replace(M,""))},readAsImage:function(a,d,e){if(ca.isBlob(a))if(w){var f=w.createObjectURL(a);f===b?c(a,d,"error"):ca.readAsImage(f,d,e)}else ca.readAsDataURL(a,function(b){"load"==b.type?ca.readAsImage(b.result,d,e):(e||"error"==b.type)&&c(a,d,b,null,{loaded:b.loaded,total:b.total})});else if(ca.isCanvas(a))c(a,d,"load",a);else if(I.test(a.nodeName))if(a.complete)c(a,d,"load",a);else{var g="error abort load";_(a,g,function i(b){"load"==b.type&&w&&w.revokeObjectURL(a.src),$(a,g,i),c(a,d,b,a)})}else if(a.iframe)c(a,d,{type:"error"});else{var h=ca.newImage(a.dataURL||a);ca.readAsImage(h,d,e)}},checkFileObj:function(a){var b={},c=ca.accept;return"object"==typeof a?b=a:b.name=(a+"").split(/\\|\//g).pop(),null==b.type&&(b.type=b.name.split(".").pop()),X(c,function(a,c){a=new RegExp(a.replace(/\s/g,"|"),"i"),(a.test(b.type)||ca.ext2mime[b.type])&&(b.type=ca.ext2mime[b.type]||c.split("/")[0]+"/"+b.type)}),b},getDropFiles:function(a,b){var c,d=[],e=[],j=l(a),k=j.files,m=j.items,n=W(m)&&m[0]&&h(m[0]),o=ca.queue(function(){b(d,e)});if(n)if(G&&k){var p,q,r=k.length;for(c=new Array(r);r--;){p=k[r];try{q=h(m[r])}catch(s){ca.log("[err] getDropFiles: ",s),q=null}g(q)&&(q.isDirectory||q.isFile&&p.name==p.name.normalize("NFC"))?c[r]=q:c[r]=p}}else c=m;else c=k;X(c||[],function(a){o.inc();try{n&&g(a)?i(a,function(a,b,c){a?ca.log("[err] getDropFiles:",a):d.push.apply(d,b),e.push.apply(e,c),o.next()}):f(a,function(b,c){b?d.push(a):a.error=c,e.push(a),o.next()})}catch(b){o.next(),ca.log("[err] getDropFiles: ",b)}}),o.check()},getFiles:function(a,b,c){var d=[];return c?(ca.filterFiles(ca.getFiles(a),b,c),null):(a.jquery&&(a.each(function(){d=d.concat(ca.getFiles(this))}),a=d,d=[]),"string"==typeof b&&(b=ca.getFilesFilter(b)),a.originalEvent?a=aa(a.originalEvent):a.srcElement&&(a=aa(a)),a.dataTransfer?a=a.dataTransfer:a.target&&(a=a.target),a.files?(d=a.files,D||(d[0].blob=a,d[0].iframe=!0)):!D&&k(a)?ca.trim(a.value)&&(d=[ca.checkFileObj(a.value)],d[0].blob=a,d[0].iframe=!0):W(a)&&(d=a),ca.filter(d,function(a){return!b||b.test(a.name)}))},getTotalSize:function(a){for(var b=0,c=a&&a.length;c--;)b+=a[c].size;return b},getInfo:function(a,b){var c={},d=R.concat();ca.isBlob(a)?!function e(){var f=d.shift();f?f.test(a.type)?f(a,function(a,d){a?b(a):(Y(c,d),e())}):e():b(!1,c)}():b("not_support_info",c)},addInfoReader:function(a,b){b.test=function(b){return a.test(b)},R.push(b)},filter:function(a,b){for(var c,d=[],e=0,f=a.length;f>e;e++)e in a&&(c=a[e],b.call(c,c,e,a)&&d.push(c));return d},filterFiles:function(a,b,c){if(a.length){var d,e=a.concat(),f=[],g=[];!function h(){e.length?(d=e.shift(),ca.getInfo(d,function(a,c){(b(d,a?!1:c)?f:g).push(d),h()})):c(f,g)}()}else c([],a)},upload:function(a){a=Y({jsonp:"callback",prepare:ca.F,beforeupload:ca.F,upload:ca.F,fileupload:ca.F,fileprogress:ca.F,filecomplete:ca.F,progress:ca.F,complete:ca.F,pause:ca.F,imageOriginal:!0,chunkSize:ca.chunkSize,chunkUploadRetry:ca.chunkUploadRetry,uploadRetry:ca.uploadRetry},a),a.imageAutoOrientation&&!a.imageTransform&&(a.imageTransform={rotate:"auto"});var b,c=new ca.XHR(a),d=this._getFilesDataArray(a.files),e=this,f=0,g=0,h=!1;return X(d,function(a){f+=a.size}),c.files=[],X(d,function(a){c.files.push(a.file)}),c.total=f,c.loaded=0,c.filesLeft=d.length,a.beforeupload(c,a),b=function(){var i=d.shift(),k=i&&i.file,l=!1,m=j(a);if(c.filesLeft=d.length,k&&k.name===ca.expando&&(k=null,ca.log("[warn] FileAPI.upload() — called without files")),("abort"!=c.statusText||c.current)&&i){if(h=!1,c.currentFile=k,k&&a.prepare(k,m)===!1)return void b.call(e);m.file=k,e._getFormData(m,i,function(h){g||a.upload(c,a);var j=new ca.XHR(Y({},m,{upload:k?function(){a.fileupload(k,j,m)}:q,progress:k?function(b){l||(l=b.loaded===b.total,a.fileprogress({type:"progress",total:i.total=b.total,loaded:i.loaded=b.loaded},k,j,m),a.progress({type:"progress",total:f,loaded:c.loaded=g+i.size*(b.loaded/b.total)||0},k,j,m))}:q,complete:function(d){X(T,function(a){c[a]=j[a]}),k&&(i.total=i.total||i.size,i.loaded=i.total,d||(this.progress(i),l=!0,g+=i.size,c.loaded=g),a.filecomplete(d,j,k,m)),setTimeout(function(){b.call(e)},0)}}));c.abort=function(a){a||(d.length=0),this.current=a,j.abort()},j.send(h)})}else{var n=200==c.status||201==c.status||204==c.status;a.complete(n?!1:c.statusText||"error",c,a),h=!0}},setTimeout(b,0),c.append=function(a,g){a=ca._getFilesDataArray([].concat(a)),X(a,function(a){f+=a.size,c.files.push(a.file),g?d.unshift(a):d.push(a)}),c.statusText="",h&&b.call(e)},c.remove=function(a){for(var b,c=d.length;c--;)d[c].file==a&&(b=d.splice(c,1),f-=b.size);return b},c},_getFilesDataArray:function(a){var b=[],c={};if(k(a)){var d=ca.getFiles(a);c[a.name||"file"]=null!==a.getAttribute("multiple")?d:d[0]}else W(a)&&k(a[0])?X(a,function(a){c[a.name||"file"]=ca.getFiles(a)}):c=a;return X(c,function e(a,c){W(a)?X(a,function(a){e(a,c)}):a&&(a.name||a.image)&&b.push({name:c,file:a,size:a.size,total:a.size,loaded:0})}),b.length||b.push({file:{name:ca.expando}}),b},_getFormData:function(a,b,c){var d=b.file,e=b.name,f=d.name,g=d.type,h=ca.support.transform&&a.imageTransform,i=new ca.Form,j=ca.queue(function(){c(i)}),k=h&&m(h),l=ca.postNameConcat;X(a.data,function n(a,b){"object"==typeof a?X(a,function(a,c){n(a,l(b,c))}):i.append(b,a)}),function o(b){b.image?(j.inc(),b.toData(function(a,c){b.file&&(c.type=b.file.type,c.quality=b.matrix.quality,f=b.file&&b.file.name),f=f||(new Date).getTime()+".png",o(c),j.next()})):ca.Image&&h&&(/^image/.test(b.type)||K.test(b.nodeName))?(j.inc(),k&&(h=[h]),ca.Image.transform(b,h,a.imageAutoOrientation,function(c,d){if(k&&!c)H||ca.flashEngine||(i.multipart=!0),i.append(e,d[0],f,h[0].type||g);else{var m=0;c||X(d,function(a,b){H||ca.flashEngine||(i.multipart=!0),h[b].postName||(m=1),i.append(h[b].postName||l(e,b),a,f,h[b].type||g)}),(c||a.imageOriginal)&&i.append(l(e,m?"original":null),b,f,g)}j.next()})):f!==ca.expando&&i.append(e,b,f)}(d),j.check()},reset:function(a,b){var c,d;return C?(d=C(a).clone(!0).insertBefore(a).val("")[0],b||C(a).remove()):(c=a.parentNode,d=c.insertBefore(a.cloneNode(!0),a),d.value="",b||c.removeChild(a),X(Q[ca.uid(a)],function(b,c){X(b,function(b){$(a,c,b),Z(d,c,b)})})),d},load:function(a,b){var c=ca.getXHR();return c?(c.open("GET",a,!0),c.overrideMimeType&&c.overrideMimeType("text/plain; charset=x-user-defined"),Z(c,"progress",function(a){a.lengthComputable&&b({type:a.type,loaded:a.loaded,total:a.total},c)}),c.onreadystatechange=function(){if(4==c.readyState)if(c.onreadystatechange=null,200==c.status){a=a.split("/");var d={name:a[a.length-1],size:c.getResponseHeader("Content-Length"),type:c.getResponseHeader("Content-Type")};d.dataURL="data:"+d.type+";base64,"+ca.encode64(c.responseBody||c.responseText),b({type:"load",result:d},c)}else b({type:"error"},c)},c.send(null)):b({type:"error"}),c},encode64:function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",d=0;for("string"!=typeof a&&(a=String(a));d>2,k=(3&g)<<4|h>>4;isNaN(h)?e=f=64:(e=(15&h)<<2|i>>6,f=isNaN(i)?64:63&i),c+=b.charAt(j)+b.charAt(k)+b.charAt(e)+b.charAt(f)}return c}};ca.addInfoReader(/^image/,function(a,b){if(!a.__dimensions){var c=a.__dimensions=ca.defer();ca.readAsImage(a,function(a){var b=a.target;c.resolve("load"==a.type?!1:"error",{width:b.width,height:b.height}),b.src=ca.EMPTY_PNG,b=null})}a.__dimensions.then(b)}),ca.event.dnd=function(a,b,c){var d,e;c||(c=b,b=ca.F),z?(Z(a,"dragenter dragleave dragover",b.ff=b.ff||function(a){for(var c=l(a).types,f=c&&c.length,g=!1;f--;)if(~c[f].indexOf("File")){a[V](),e!==a.type&&(e=a.type,"dragleave"!=e&&b.call(a[U],!0,a),g=!0);break}g&&(clearTimeout(d),d=setTimeout(function(){b.call(a[U],"dragleave"!=e,a)},50))}),Z(a,"drop",c.ff=c.ff||function(a){a[V](),e=0,b.call(a[U],!1,a),ca.getDropFiles(a,function(b,d){c.call(a[U],b,d,a)})})):ca.log("Drag'n'Drop -- not supported")},ca.event.dnd.off=function(a,b,c){$(a,"dragenter dragleave dragover",b.ff),$(a,"drop",c.ff)},C&&!C.fn.dnd&&(C.fn.dnd=function(a,b){return this.each(function(){ca.event.dnd(this,a,b)})},C.fn.offdnd=function(a,b){return this.each(function(){ca.event.dnd.off(this,a,b)})}),a.FileAPI=Y(ca,a.FileAPI),ca.log("FileAPI: "+ca.version),ca.log("protocol: "+a.location.protocol),ca.log("doctype: ["+s.name+"] "+s.publicId+" "+s.systemId),X(r.getElementsByTagName("meta"),function(a){/x-ua-compatible/i.test(a.getAttribute("http-equiv"))&&ca.log("meta.http-equiv: "+a.getAttribute("content"))});try{n=!!console.log,o=!!console.log.apply}catch(da){}ca.flashUrl||(ca.flashUrl=ca.staticPath+"FileAPI.flash.swf"),ca.flashImageUrl||(ca.flashImageUrl=ca.staticPath+"FileAPI.flash.image.swf"),ca.flashWebcamUrl||(ca.flashWebcamUrl=ca.staticPath+"FileAPI.flash.camera.swf")}(window,void 0),function(a,b,c){"use strict";function d(b){if(b instanceof d){var c=new d(b.file);return a.extend(c.matrix,b.matrix),c}return this instanceof d?(this.file=b,this.size=b.size||100,void(this.matrix={sx:0,sy:0,sw:0,sh:0,dx:0,dy:0,dw:0,dh:0,resize:0,deg:0,quality:1,filter:0})):new d(b)}var e=Math.min,f=Math.round,g=function(){return b.createElement("canvas")},h=!1,i={8:270,3:180,6:90,7:270,4:180,5:90};try{h=g().toDataURL("image/png").indexOf("data:image/png")>-1}catch(j){}d.prototype={image:!0,constructor:d,set:function(b){return a.extend(this.matrix,b),this},crop:function(a,b,d,e){return d===c&&(d=a,e=b,a=b=0),this.set({sx:a,sy:b,sw:d,sh:e||d})},resize:function(a,b,c){return/min|max|height|width/.test(b)&&(c=b,b=a),this.set({dw:a,dh:b||a,resize:c})},preview:function(a,b){return this.resize(a,b||a,"preview")},rotate:function(a){return this.set({deg:a})},filter:function(a){return this.set({filter:a})},overlay:function(a){return this.set({overlay:a})},clone:function(){return new d(this)},_load:function(b,c){var d=this;/img|video/i.test(b.nodeName)?c.call(d,null,b):a.readAsImage(b,function(a){c.call(d,"load"!=a.type,a.result)})},_apply:function(b,c){var f,h=g(),i=this.getMatrix(b),j=h.getContext("2d"),k=b.videoWidth||b.width,l=b.videoHeight||b.height,m=i.deg,n=i.dw,o=i.dh,p=k,q=l,r=i.filter,s=b,t=i.overlay,u=a.queue(function(){b.src=a.EMPTY_PNG,c(!1,h)}),v=a.renderImageToCanvas;for(m-=360*Math.floor(m/360),b._type=this.file.type;i.multipass&&e(p/n,q/o)>2;)p=p/2+.5|0,q=q/2+.5|0,f=g(),f.width=p,f.height=q,s!==b?(v(f,s,0,0,s.width,s.height,0,0,p,q),s=f):(s=f,v(s,b,i.sx,i.sy,i.sw,i.sh,0,0,p,q),i.sx=i.sy=i.sw=i.sh=0);h.width=m%180?o:n,h.height=m%180?n:o,h.type=i.type,h.quality=i.quality,j.rotate(m*Math.PI/180),v(j.canvas,s,i.sx,i.sy,i.sw||s.width,i.sh||s.height,180==m||270==m?-n:0,90==m||180==m?-o:0,n,o),n=h.width,o=h.height,t&&a.each([].concat(t),function(b){u.inc();var c=new window.Image,d=function(){var e=0|b.x,f=0|b.y,g=b.w||c.width,h=b.h||c.height,i=b.rel;e=1==i||4==i||7==i?(n-g+e)/2:2==i||5==i||8==i?n-(g+e):e,f=3==i||4==i||5==i?(o-h+f)/2:i>=6?o-(h+f):f,a.event.off(c,"error load abort",d);try{j.globalAlpha=b.opacity||1,j.drawImage(c,e,f,g,h)}catch(k){}u.next()};a.event.on(c,"error load abort",d),c.src=b.src,c.complete&&d()}),r&&(u.inc(),d.applyFilter(h,r,u.next)),u.check()},getMatrix:function(b){var c=a.extend({},this.matrix),d=c.sw=c.sw||b.videoWidth||b.naturalWidth||b.width,g=c.sh=c.sh||b.videoHeight||b.naturalHeight||b.height,h=c.dw=c.dw||d,i=c.dh=c.dh||g,j=d/g,k=h/i,l=c.resize;if("preview"==l){if(h!=d||i!=g){var m,n;k>=j?(m=d,n=m/k):(n=g,m=n*k),(m!=d||n!=g)&&(c.sx=~~((d-m)/2),c.sy=~~((g-n)/2),d=m,g=n)}}else"height"==l?h=i*j:"width"==l?i=h/j:l&&(d>h||g>i?"min"==l?(h=f(k>j?e(d,h):i*j),i=f(k>j?h/j:e(g,i))):(h=f(j>=k?e(d,h):i*j),i=f(j>=k?h/j:e(g,i))):(h=d,i=g));return c.sw=d,c.sh=g,c.dw=h,c.dh=i,c.multipass=a.multiPassResize,c},_trans:function(b){this._load(this.file,function(c,d){if(c)b(c);else try{this._apply(d,b)}catch(c){a.log("[err] FileAPI.Image.fn._apply:",c),b(c)}})},get:function(b){if(a.support.transform){var c=this,d=c.matrix;"auto"==d.deg?a.getInfo(c.file,function(a,e){d.deg=i[e&&e.exif&&e.exif.Orientation]||0,c._trans(b)}):c._trans(b)}else b("not_support_transform");return this},toData:function(a){return this.get(a)}},d.exifOrientation=i,d.transform=function(b,e,f,g){function h(h,i){var j={},k=a.queue(function(a){g(a,j)});h?k.fail():a.each(e,function(a,e){if(!k.isFail()){var g=new d(i.nodeType?i:b),h="function"==typeof a;if(h?a(i,g):a.width?g[a.preview?"preview":"resize"](a.width,a.height,a.strategy):a.maxWidth&&(i.width>a.maxWidth||i.height>a.maxHeight)&&g.resize(a.maxWidth,a.maxHeight,"max"),a.crop){var l=a.crop;g.crop(0|l.x,0|l.y,l.w||l.width,l.h||l.height)}a.rotate===c&&f&&(a.rotate="auto"),g.set({type:g.matrix.type||a.type||b.type||"image/png"}),h||g.set({deg:a.rotate,overlay:a.overlay,filter:a.filter,quality:a.quality||1}),k.inc(),g.toData(function(a,b){a?k.fail():(j[e]=b,k.next())})}})}b.width?h(!1,b):a.getInfo(b,h)},a.each(["TOP","CENTER","BOTTOM"],function(b,c){a.each(["LEFT","CENTER","RIGHT"],function(a,e){d[b+"_"+a]=3*c+e,d[a+"_"+b]=3*c+e})}),d.toCanvas=function(a){var c=b.createElement("canvas");return c.width=a.videoWidth||a.width,c.height=a.videoHeight||a.height,c.getContext("2d").drawImage(a,0,0),c},d.fromDataURL=function(b,c,d){var e=a.newImage(b);a.extend(e,c),d(e)},d.applyFilter=function(b,c,e){"function"==typeof c?c(b,e):window.Caman&&window.Caman("IMG"==b.tagName?d.toCanvas(b):b,function(){"string"==typeof c?this[c]():a.each(c,function(a,b){this[b](a)},this),this.render(e)})},a.renderImageToCanvas=function(b,c,d,e,f,g,h,i,j,k){try{return b.getContext("2d").drawImage(c,d,e,f,g,h,i,j,k)}catch(l){throw a.log("renderImageToCanvas failed"),l}},a.support.canvas=a.support.transform=h,a.Image=d}(FileAPI,document),function(a){"use strict";a(FileAPI)}(function(a){"use strict";if(window.navigator&&window.navigator.platform&&/iP(hone|od|ad)/.test(window.navigator.platform)){var b=a.renderImageToCanvas;a.detectSubsampling=function(a){var b,c;return a.width*a.height>1048576?(b=document.createElement("canvas"),b.width=b.height=1,c=b.getContext("2d"),c.drawImage(a,-a.width+1,0),0===c.getImageData(0,0,1,1).data[3]):!1},a.detectVerticalSquash=function(a,b){var c,d,e,f,g,h=a.naturalHeight||a.height,i=document.createElement("canvas"),j=i.getContext("2d");for(b&&(h/=2),i.width=1,i.height=h,j.drawImage(a,0,0),c=j.getImageData(0,0,1,h).data,d=0,e=h,f=h;f>d;)g=c[4*(f-1)+3],0===g?e=f:d=f,f=e+d>>1;return f/h||1},a.renderImageToCanvas=function(c,d,e,f,g,h,i,j,k,l){if("image/jpeg"===d._type){var m,n,o,p,q=c.getContext("2d"),r=document.createElement("canvas"),s=1024,t=r.getContext("2d");if(r.width=s,r.height=s,q.save(),m=a.detectSubsampling(d),m&&(e/=2,f/=2,g/=2,h/=2),n=a.detectVerticalSquash(d,m),m||1!==n){for(f*=n,k=Math.ceil(s*k/g),l=Math.ceil(s*l/h/n),j=0,p=0;h>p;){for(i=0,o=0;g>o;)t.clearRect(0,0,s,s),t.drawImage(d,e,f,g,h,-o,-p,g,h),q.drawImage(r,0,0,s,s,i,j,k,l),o+=s,i+=k;p+=s,j+=l}return q.restore(),c}}return b(c,d,e,f,g,h,i,j,k,l)}}}),function(a,b){"use strict";function c(b,c,d){var e=b.blob,f=b.file;if(f){if(!e.toDataURL)return void a.readAsBinaryString(e,function(a){"load"==a.type&&c(b,a.result)});var g={"image/jpeg":".jpe?g","image/png":".png"},h=g[b.type]?b.type:"image/png",i=g[h]||".png",j=e.quality||1;f.match(new RegExp(i+"$","i"))||(f+=i.replace("?","")),b.file=f,b.type=h,!d&&e.toBlob?e.toBlob(function(a){c(b,a)},h,j):c(b,a.toBinaryString(e.toDataURL(h,j)))}else c(b,e)}var d=b.document,e=b.FormData,f=function(){this.items=[]},g=b.encodeURIComponent;f.prototype={append:function(a,b,c,d){this.items.push({name:a,blob:b&&b.blob||(void 0==b?"":b),file:b&&(c||b.name),type:b&&(d||b.type)})},each:function(a){for(var b=0,c=this.items.length;c>b;b++)a.call(this,this.items[b])},toData:function(b,c){c._chunked=a.support.chunked&&c.chunkSize>0&&1==a.filter(this.items,function(a){return a.file}).length,a.support.html5?a.formData&&!this.multipart&&e?c._chunked?(a.log("FileAPI.Form.toPlainData"),this.toPlainData(b)):(a.log("FileAPI.Form.toFormData"),this.toFormData(b)):(a.log("FileAPI.Form.toMultipartData"),this.toMultipartData(b)):(a.log("FileAPI.Form.toHtmlData"),this.toHtmlData(b))},_to:function(b,c,d,e){var f=a.queue(function(){c(b)});this.each(function(g){try{d(g,b,f,e)}catch(h){a.log("FileAPI.Form._to: "+h.message),c(h)}}),f.check()},toHtmlData:function(b){this._to(d.createDocumentFragment(),b,function(b,c){var e,f=b.blob;b.file?(a.reset(f,!0),f.name=b.name,f.disabled=!1,c.appendChild(f)):(e=d.createElement("input"),e.name=b.name,e.type="hidden",e.value=f,c.appendChild(e))})},toPlainData:function(a){this._to({},a,function(a,b,d){a.file&&(b.type=a.file),a.blob.toBlob?(d.inc(),c(a,function(a,c){b.name=a.name,b.file=c,b.size=c.length,b.type=a.type,d.next()})):a.file?(b.name=a.blob.name,b.file=a.blob,b.size=a.blob.size,b.type=a.type):(b.params||(b.params=[]),b.params.push(g(a.name)+"="+g(a.blob))),b.start=-1,b.end=b.file&&b.file.FileAPIReadPosition||-1,b.retry=0})},toFormData:function(a){this._to(new e,a,function(a,b,d){a.blob&&a.blob.toBlob?(d.inc(),c(a,function(a,c){b.append(a.name,c,a.file),d.next()})):a.file?b.append(a.name,a.blob,a.file):b.append(a.name,a.blob),a.file&&b.append("_"+a.name,a.file)})},toMultipartData:function(b){this._to([],b,function(a,b,d,e){d.inc(),c(a,function(a,c){b.push("--_"+e+('\r\nContent-Disposition: form-data; name="'+a.name+'"'+(a.file?'; filename="'+g(a.file)+'"':"")+(a.file?"\r\nContent-Type: "+(a.type||"application/octet-stream"):"")+"\r\n\r\n"+(a.file?c:g(c))+"\r\n")),d.next()},!0)},a.expando)}},a.Form=f}(FileAPI,window),function(a,b){"use strict";var c=function(){},d=a.document,e=function(a){this.uid=b.uid(),this.xhr={abort:c,getResponseHeader:c,getAllResponseHeaders:c},this.options=a},f={"":1,XML:1,Text:1,Body:1};e.prototype={status:0,statusText:"",constructor:e,getResponseHeader:function(a){return this.xhr.getResponseHeader(a)},getAllResponseHeaders:function(){return this.xhr.getAllResponseHeaders()||{}},end:function(d,e){var f=this,g=f.options;f.end=f.abort=c,f.status=d,e&&(f.statusText=e),b.log("xhr.end:",d,e),g.complete(200==d||201==d?!1:f.statusText||"unknown",f),f.xhr&&f.xhr.node&&setTimeout(function(){var b=f.xhr.node;try{b.parentNode.removeChild(b)}catch(c){}try{delete a[f.uid]}catch(c){}a[f.uid]=f.xhr.node=null},9)},abort:function(){this.end(0,"abort"),this.xhr&&(this.xhr.aborted=!0,this.xhr.abort())},send:function(a){var b=this,c=this.options;a.toData(function(a){a instanceof Error?b.end(0,a.message):(c.upload(c,b),b._send.call(b,c,a))},c)},_send:function(c,e){var g,h=this,i=h.uid,j=h.uid+"Load",k=c.url;if(b.log("XHR._send:",e),c.cache||(k+=(~k.indexOf("?")?"&":"?")+b.uid()),e.nodeName){var l=c.jsonp;k=k.replace(/([a-z]+)=(\?)/i,"$1="+i),c.upload(c,h);var m=function(a){if(~k.indexOf(a.origin))try{var c=b.parseJSON(a.data);c.id==i&&n(c.status,c.statusText,c.response)}catch(d){n(0,d.message)}},n=a[i]=function(c,d,e){h.readyState=4,h.responseText=e,h.end(c,d),b.event.off(a,"message",m),a[i]=g=p=a[j]=null};h.xhr.abort=function(){try{p.stop?p.stop():p.contentWindow.stop?p.contentWindow.stop():p.contentWindow.document.execCommand("Stop")}catch(a){}n(0,"abort")},b.event.on(a,"message",m),a[j]=function(){try{var a=p.contentWindow,c=a.document,d=a.result||b.parseJSON(c.body.innerHTML);n(d.status,d.statusText,d.response)}catch(e){b.log("[transport.onload]",e)}},g=d.createElement("div"),g.innerHTML='
                    '+(l&&c.url.indexOf("=?")<0?'':"")+"
                    ";var o=g.getElementsByTagName("form")[0],p=g.getElementsByTagName("iframe")[0];o.appendChild(e),b.log(o.parentNode.innerHTML),d.body.appendChild(g),h.xhr.node=g,h.readyState=2;try{o.submit()}catch(q){b.log("iframe.error: "+q)}o=null}else{if(k=k.replace(/([a-z]+)=(\?)&?/i,""),this.xhr&&this.xhr.aborted)return void b.log("Error: already aborted");if(g=h.xhr=b.getXHR(),e.params&&(k+=(k.indexOf("?")<0?"?":"&")+e.params.join("&")),g.open("POST",k,!0),b.withCredentials&&(g.withCredentials="true"),c.headers&&c.headers["X-Requested-With"]||g.setRequestHeader("X-Requested-With","XMLHttpRequest"),b.each(c.headers,function(a,b){g.setRequestHeader(b,a)}),c._chunked){g.upload&&g.upload.addEventListener("progress",b.throttle(function(a){e.retry||c.progress({type:a.type,total:e.size,loaded:e.start+a.loaded,totalSize:e.size},h,c)},100),!1),g.onreadystatechange=function(){var a=parseInt(g.getResponseHeader("X-Last-Known-Byte"),10);if(h.status=g.status,h.statusText=g.statusText,h.readyState=g.readyState,4==g.readyState){for(var d in f)h["response"+d]=g["response"+d];if(g.onreadystatechange=null,!g.status||g.status-201>0)if(b.log("Error: "+g.status),(!g.status&&!g.aborted||500==g.status||416==g.status)&&++e.retry<=c.chunkUploadRetry){var i=g.status?0:b.chunkNetworkDownRetryTimeout;c.pause(e.file,c),b.log("X-Last-Known-Byte: "+a),a?e.end=a:(e.end=e.start-1,416==g.status&&(e.end=e.end-c.chunkSize)),setTimeout(function(){h._send(c,e)},i)}else h.end(g.status);else e.retry=0,e.end==e.size-1?h.end(g.status):(b.log("X-Last-Known-Byte: "+a),a&&(e.end=a),e.file.FileAPIReadPosition=e.end,setTimeout(function(){h._send(c,e)},0));g=null}},e.start=e.end+1,e.end=Math.max(Math.min(e.start+c.chunkSize,e.size)-1,e.start);var r=e.file,s=(r.slice||r.mozSlice||r.webkitSlice).call(r,e.start,e.end+1);e.size&&!s.size?setTimeout(function(){h.end(-1)}):(g.setRequestHeader("Content-Range","bytes "+e.start+"-"+e.end+"/"+e.size),g.setRequestHeader("Content-Disposition","attachment; filename="+encodeURIComponent(e.name)),g.setRequestHeader("Content-Type",e.type||"application/octet-stream"),g.send(s)),r=s=null}else if(g.upload&&g.upload.addEventListener("progress",b.throttle(function(a){c.progress(a,h,c)},100),!1),g.onreadystatechange=function(){if(h.status=g.status,h.statusText=g.statusText,h.readyState=g.readyState,4==g.readyState){for(var a in f)h["response"+a]=g["response"+a];if(g.onreadystatechange=null,!g.status||g.status>201)if(b.log("Error: "+g.status),(!g.status&&!g.aborted||500==g.status)&&(c.retry||0)=0?a+"px":a}function d(a){var c,d=f.createElement("canvas"),e=!1;try{c=d.getContext("2d"),c.drawImage(a,0,0,1,1),e=255!=c.getImageData(0,0,1,1).data[4]}catch(g){b.log("[FileAPI.Camera] detectVideoSignal:",g)}return e}var e=a.URL||a.webkitURL,f=a.document,g=a.navigator,h=g.getUserMedia||g.webkitGetUserMedia||g.mozGetUserMedia||g.msGetUserMedia,i=!!h;b.support.media=i;var j=function(a){this.video=a};j.prototype={isActive:function(){return!!this._active},start:function(a){var b,c,f=this,i=f.video,j=function(d){f._active=!d,clearTimeout(c),clearTimeout(b),a&&a(d,f)};h.call(g,{video:!0},function(a){f.stream=a,i.src=e.createObjectURL(a),b=setInterval(function(){d(i)&&j(null)},1e3),c=setTimeout(function(){j("timeout"); +},5e3),i.play()},j)},stop:function(){try{this._active=!1,this.video.pause();try{this.stream.stop()}catch(a){b.each(this.stream.getTracks(),function(a){a.stop()})}this.stream=null}catch(a){b.log("[FileAPI.Camera] stop:",a)}},shot:function(){return new k(this.video)}},j.get=function(a){return new j(a.firstChild)},j.publish=function(d,e,g){"function"==typeof e&&(g=e,e={}),e=b.extend({},{width:"100%",height:"100%",start:!0},e),d.jquery&&(d=d[0]);var h=function(a){if(a)g(a);else{var b=j.get(d);e.start?b.start(g):g(null,b)}};if(d.style.width=c(e.width),d.style.height=c(e.height),b.html5&&i){var k=f.createElement("video");k.style.width=c(e.width),k.style.height=c(e.height),a.jQuery?jQuery(d).empty():d.innerHTML="",d.appendChild(k),h()}else j.fallback(d,e,h)},j.fallback=function(a,b,c){c("not_support_camera")};var k=function(a){var c=a.nodeName?b.Image.toCanvas(a):a,d=b.Image(c);return d.type="image/png",d.width=c.width,d.height=c.height,d.size=c.width*c.height*4,d};j.Shot=k,b.Camera=j}(window,FileAPI),function(a,b,c){"use strict";var d=c.each,e=[];!c.support.flash||!c.media||c.support.media&&c.html5||!function(){function a(a){var b=a.wid=c.uid();return c.Flash._fn[b]=a,"FileAPI.Flash._fn."+b}function b(a){try{c.Flash._fn[a.wid]=null,delete c.Flash._fn[a.wid]}catch(b){}}var f=c.Flash;c.extend(c.Flash,{patchCamera:function(){c.Camera.fallback=function(d,e,g){var h=c.uid();c.log("FlashAPI.Camera.publish: "+h),f.publish(d,h,c.extend(e,{camera:!0,onEvent:a(function i(a){"camera"===a.type&&(b(i),a.error?(c.log("FlashAPI.Camera.publish.error: "+a.error),g(a.error)):(c.log("FlashAPI.Camera.publish.success: "+h),g(null)))})}))},d(e,function(a){c.Camera.fallback.apply(c.Camera,a)}),e=[],c.extend(c.Camera.prototype,{_id:function(){return this.video.id},start:function(d){var e=this;f.cmd(this._id(),"camera.on",{callback:a(function g(a){b(g),a.error?(c.log("FlashAPI.camera.on.error: "+a.error),d(a.error,e)):(c.log("FlashAPI.camera.on.success: "+e._id()),e._active=!0,d(null,e))})})},stop:function(){this._active=!1,f.cmd(this._id(),"camera.off")},shot:function(){c.log("FlashAPI.Camera.shot:",this._id());var a=c.Flash.cmd(this._id(),"shot",{});return a.type="image/png",a.flashId=this._id(),a.isShot=!0,new c.Camera.Shot(a)}})}}),c.Camera.fallback=function(){e.push(arguments)}}()}(window,window.jQuery,FileAPI),"function"==typeof define&&define.amd&&define("FileAPI",[],function(){return FileAPI}); \ No newline at end of file diff --git a/assets/js/fileapi/FileAPI/FileAPI.js b/assets/js/fileapi/FileAPI/FileAPI.js new file mode 100755 index 0000000000..6b2e14b72d --- /dev/null +++ b/assets/js/fileapi/FileAPI/FileAPI.js @@ -0,0 +1,4361 @@ +/*! FileAPI 2.0.19 - BSD | git://github.com/mailru/FileAPI.git + * FileAPI — a set of javascript tools for working with files. Multiupload, drag'n'drop and chunked file upload. Images: crop, resize and auto orientation by EXIF. + */ + +/* + * JavaScript Canvas to Blob 2.0.5 + * https://github.com/blueimp/JavaScript-Canvas-to-Blob + * + * Copyright 2012, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + * + * Based on stackoverflow user Stoive's code snippet: + * http://stackoverflow.com/q/4998908 + */ + +/*jslint nomen: true, regexp: true */ +/*global window, atob, Blob, ArrayBuffer, Uint8Array */ + +(function (window) { + 'use strict'; + var CanvasPrototype = window.HTMLCanvasElement && + window.HTMLCanvasElement.prototype, + hasBlobConstructor = window.Blob && (function () { + try { + return Boolean(new Blob()); + } catch (e) { + return false; + } + }()), + hasArrayBufferViewSupport = hasBlobConstructor && window.Uint8Array && + (function () { + try { + return new Blob([new Uint8Array(100)]).size === 100; + } catch (e) { + return false; + } + }()), + BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || + window.MozBlobBuilder || window.MSBlobBuilder, + dataURLtoBlob = (hasBlobConstructor || BlobBuilder) && window.atob && + window.ArrayBuffer && window.Uint8Array && function (dataURI) { + var byteString, + arrayBuffer, + intArray, + i, + mimeString, + bb; + if (dataURI.split(',')[0].indexOf('base64') >= 0) { + // Convert base64 to raw binary data held in a string: + byteString = atob(dataURI.split(',')[1]); + } else { + // Convert base64/URLEncoded data component to raw binary data: + byteString = decodeURIComponent(dataURI.split(',')[1]); + } + // Write the bytes of the string to an ArrayBuffer: + arrayBuffer = new ArrayBuffer(byteString.length); + intArray = new Uint8Array(arrayBuffer); + for (i = 0; i < byteString.length; i += 1) { + intArray[i] = byteString.charCodeAt(i); + } + // Separate out the mime component: + mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0]; + // Write the ArrayBuffer (or ArrayBufferView) to a blob: + if (hasBlobConstructor) { + return new Blob( + [hasArrayBufferViewSupport ? intArray : arrayBuffer], + {type: mimeString} + ); + } + bb = new BlobBuilder(); + bb.append(arrayBuffer); + return bb.getBlob(mimeString); + }; + if (window.HTMLCanvasElement && !CanvasPrototype.toBlob) { + if (CanvasPrototype.mozGetAsFile) { + CanvasPrototype.toBlob = function (callback, type, quality) { + if (quality && CanvasPrototype.toDataURL && dataURLtoBlob) { + callback(dataURLtoBlob(this.toDataURL(type, quality))); + } else { + callback(this.mozGetAsFile('blob', type)); + } + }; + } else if (CanvasPrototype.toDataURL && dataURLtoBlob) { + CanvasPrototype.toBlob = function (callback, type, quality) { + callback(dataURLtoBlob(this.toDataURL(type, quality))); + }; + } + } + window.dataURLtoBlob = dataURLtoBlob; +})(window); + +/*jslint evil: true */ +/*global window, URL, webkitURL, ActiveXObject */ + +(function (window, undef){ + 'use strict'; + + var + gid = 1, + noop = function (){}, + + document = window.document, + doctype = document.doctype || {}, + userAgent = window.navigator.userAgent, + safari = /safari\//i.test(userAgent) && !/chrome\//i.test(userAgent), + iemobile = /iemobile\//i.test(userAgent), + + // https://github.com/blueimp/JavaScript-Load-Image/blob/master/load-image.js#L48 + apiURL = (window.createObjectURL && window) || (window.URL && URL.revokeObjectURL && URL) || (window.webkitURL && webkitURL), + + Blob = window.Blob, + File = window.File, + FileReader = window.FileReader, + FormData = window.FormData, + + + XMLHttpRequest = window.XMLHttpRequest, + jQuery = window.jQuery, + + html5 = !!(File && (FileReader && (window.Uint8Array || FormData || XMLHttpRequest.prototype.sendAsBinary))) + && !(safari && /windows/i.test(userAgent) && !iemobile), // BugFix: https://github.com/mailru/FileAPI/issues/25 + + cors = html5 && ('withCredentials' in (new XMLHttpRequest)), + + chunked = html5 && !!Blob && !!(Blob.prototype.webkitSlice || Blob.prototype.mozSlice || Blob.prototype.slice), + + normalize = ('' + ''.normalize).indexOf('[native code]') > 0, + + // https://github.com/blueimp/JavaScript-Canvas-to-Blob + dataURLtoBlob = window.dataURLtoBlob, + + + _rimg = /img/i, + _rcanvas = /canvas/i, + _rimgcanvas = /img|canvas/i, + _rinput = /input/i, + _rdata = /^data:[^,]+,/, + + _toString = {}.toString, + _supportConsoleLog, + _supportConsoleLogApply, + + + Math = window.Math, + + _SIZE_CONST = function (pow){ + pow = new window.Number(Math.pow(1024, pow)); + pow.from = function (sz){ return Math.round(sz * this); }; + return pow; + }, + + _elEvents = {}, // element event listeners + _infoReader = [], // list of file info processors + + _readerEvents = 'abort progress error load loadend', + _xhrPropsExport = 'status statusText readyState response responseXML responseText responseBody'.split(' '), + + currentTarget = 'currentTarget', // for minimize + preventDefault = 'preventDefault', // and this too + + _isArray = function (ar) { + return ar && ('length' in ar); + }, + + /** + * Iterate over a object or array + */ + _each = function (obj, fn, ctx){ + if( obj ){ + if( _isArray(obj) ){ + for( var i = 0, n = obj.length; i < n; i++ ){ + if( i in obj ){ + fn.call(ctx, obj[i], i, obj); + } + } + } + else { + for( var key in obj ){ + if( obj.hasOwnProperty(key) ){ + fn.call(ctx, obj[key], key, obj); + } + } + } + } + }, + + /** + * Merge the contents of two or more objects together into the first object + */ + _extend = function (dst){ + var args = arguments, i = 1, _ext = function (val, key){ dst[key] = val; }; + for( ; i < args.length; i++ ){ + _each(args[i], _ext); + } + return dst; + }, + + /** + * Add event listener + */ + _on = function (el, type, fn){ + if( el ){ + var uid = api.uid(el); + + if( !_elEvents[uid] ){ + _elEvents[uid] = {}; + } + + var isFileReader = (FileReader && el) && (el instanceof FileReader); + _each(type.split(/\s+/), function (type){ + if( jQuery && !isFileReader){ + jQuery.event.add(el, type, fn); + } else { + if( !_elEvents[uid][type] ){ + _elEvents[uid][type] = []; + } + + _elEvents[uid][type].push(fn); + + if( el.addEventListener ){ el.addEventListener(type, fn, false); } + else if( el.attachEvent ){ el.attachEvent('on'+type, fn); } + else { el['on'+type] = fn; } + } + }); + } + }, + + + /** + * Remove event listener + */ + _off = function (el, type, fn){ + if( el ){ + var uid = api.uid(el), events = _elEvents[uid] || {}; + + var isFileReader = (FileReader && el) && (el instanceof FileReader); + _each(type.split(/\s+/), function (type){ + if( jQuery && !isFileReader){ + jQuery.event.remove(el, type, fn); + } + else { + var fns = events[type] || [], i = fns.length; + + while( i-- ){ + if( fns[i] === fn ){ + fns.splice(i, 1); + break; + } + } + + if( el.addEventListener ){ el.removeEventListener(type, fn, false); } + else if( el.detachEvent ){ el.detachEvent('on'+type, fn); } + else { el['on'+type] = null; } + } + }); + } + }, + + + _one = function(el, type, fn){ + _on(el, type, function _(evt){ + _off(el, type, _); + fn(evt); + }); + }, + + + _fixEvent = function (evt){ + if( !evt.target ){ evt.target = window.event && window.event.srcElement || document; } + if( evt.target.nodeType === 3 ){ evt.target = evt.target.parentNode; } + return evt; + }, + + + _supportInputAttr = function (attr){ + var input = document.createElement('input'); + input.setAttribute('type', "file"); + return attr in input; + }, + + + /** + * FileAPI (core object) + */ + api = { + version: '2.0.19', + + cors: false, + html5: true, + media: false, + formData: true, + multiPassResize: true, + + debug: false, + pingUrl: false, + multiFlash: false, + flashAbortTimeout: 0, + withCredentials: true, + + staticPath: './dist/', + + flashUrl: 0, // @default: './FileAPI.flash.swf' + flashImageUrl: 0, // @default: './FileAPI.flash.image.swf' + + postNameConcat: function (name, idx){ + return name + (idx != null ? '['+ idx +']' : ''); + }, + + ext2mime: { + jpg: 'image/jpeg' + , tif: 'image/tiff' + , txt: 'text/plain' + }, + + // Fallback for flash + accept: { + 'image/*': 'art bm bmp dwg dxf cbr cbz fif fpx gif ico iefs jfif jpe jpeg jpg jps jut mcf nap nif pbm pcx pgm pict pm png pnm qif qtif ras rast rf rp svf tga tif tiff xbm xbm xpm xwd' + , 'audio/*': 'm4a flac aac rm mpa wav wma ogg mp3 mp2 m3u mod amf dmf dsm far gdm imf it m15 med okt s3m stm sfx ult uni xm sid ac3 dts cue aif aiff wpl ape mac mpc mpp shn wv nsf spc gym adplug adx dsp adp ymf ast afc hps xs' + , 'video/*': 'm4v 3gp nsv ts ty strm rm rmvb m3u ifo mov qt divx xvid bivx vob nrg img iso pva wmv asf asx ogm m2v avi bin dat dvr-ms mpg mpeg mp4 mkv avc vp3 svq3 nuv viv dv fli flv wpl' + }, + + uploadRetry : 0, + networkDownRetryTimeout : 5000, // milliseconds, don't flood when network is down + + chunkSize : 0, + chunkUploadRetry : 0, + chunkNetworkDownRetryTimeout : 2000, // milliseconds, don't flood when network is down + + KB: _SIZE_CONST(1), + MB: _SIZE_CONST(2), + GB: _SIZE_CONST(3), + TB: _SIZE_CONST(4), + + EMPTY_PNG: 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAC0lEQVQIW2NkAAIAAAoAAggA9GkAAAAASUVORK5CYII=', + + expando: 'fileapi' + (new Date).getTime(), + + uid: function (obj){ + return obj + ? (obj[api.expando] = obj[api.expando] || api.uid()) + : (++gid, api.expando + gid) + ; + }, + + log: function (){ + if( api.debug && _supportConsoleLog ){ + if( _supportConsoleLogApply ){ + console.log.apply(console, arguments); + } + else { + console.log([].join.call(arguments, ' ')); + } + } + }, + + /** + * Create new image + * + * @param {String} [src] + * @param {Function} [fn] 1. error -- boolean, 2. img -- Image element + * @returns {HTMLElement} + */ + newImage: function (src, fn){ + var img = document.createElement('img'); + if( fn ){ + api.event.one(img, 'error load', function (evt){ + fn(evt.type == 'error', img); + img = null; + }); + } + img.src = src; + return img; + }, + + /** + * Get XHR + * @returns {XMLHttpRequest} + */ + getXHR: function (){ + var xhr; + + if( XMLHttpRequest ){ + xhr = new XMLHttpRequest; + } + else if( window.ActiveXObject ){ + try { + xhr = new ActiveXObject('MSXML2.XMLHttp.3.0'); + } catch (e) { + xhr = new ActiveXObject('Microsoft.XMLHTTP'); + } + } + + return xhr; + }, + + isArray: _isArray, + + support: { + dnd: cors && ('ondrop' in document.createElement('div')), + cors: cors, + html5: html5, + chunked: chunked, + dataURI: true, + accept: _supportInputAttr('accept'), + multiple: _supportInputAttr('multiple') + }, + + event: { + on: _on + , off: _off + , one: _one + , fix: _fixEvent + }, + + + throttle: function(fn, delay) { + var id, args; + + return function _throttle(){ + args = arguments; + + if( !id ){ + fn.apply(window, args); + id = setTimeout(function (){ + id = 0; + fn.apply(window, args); + }, delay); + } + }; + }, + + + F: function (){}, + + + parseJSON: function (str){ + var json; + if( window.JSON && JSON.parse ){ + json = JSON.parse(str); + } + else { + json = (new Function('return ('+str.replace(/([\r\n])/g, '\\$1')+');'))(); + } + return json; + }, + + + trim: function (str){ + str = String(str); + return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, ''); + }, + + /** + * Simple Defer + * @return {Object} + */ + defer: function (){ + var + list = [] + , result + , error + , defer = { + resolve: function (err, res){ + defer.resolve = noop; + error = err || false; + result = res; + + while( res = list.shift() ){ + res(error, result); + } + }, + + then: function (fn){ + if( error !== undef ){ + fn(error, result); + } else { + list.push(fn); + } + } + }; + + return defer; + }, + + queue: function (fn){ + var + _idx = 0 + , _length = 0 + , _fail = false + , _end = false + , queue = { + inc: function (){ + _length++; + }, + + next: function (){ + _idx++; + setTimeout(queue.check, 0); + }, + + check: function (){ + (_idx >= _length) && !_fail && queue.end(); + }, + + isFail: function (){ + return _fail; + }, + + fail: function (){ + !_fail && fn(_fail = true); + }, + + end: function (){ + if( !_end ){ + _end = true; + fn(); + } + } + } + ; + return queue; + }, + + + /** + * For each object + * + * @param {Object|Array} obj + * @param {Function} fn + * @param {*} [ctx] + */ + each: _each, + + + /** + * Async for + * @param {Array} array + * @param {Function} callback + */ + afor: function (array, callback){ + var i = 0, n = array.length; + + if( _isArray(array) && n-- ){ + (function _next(){ + callback(n != i && _next, array[i], i++); + })(); + } + else { + callback(false); + } + }, + + + /** + * Merge the contents of two or more objects together into the first object + * + * @param {Object} dst + * @return {Object} + */ + extend: _extend, + + + /** + * Is file? + * @param {File} file + * @return {Boolean} + */ + isFile: function (file){ + return _toString.call(file) === '[object File]'; + }, + + + /** + * Is blob? + * @param {Blob} blob + * @returns {Boolean} + */ + isBlob: function (blob) { + return this.isFile(blob) || (_toString.call(blob) === '[object Blob]'); + }, + + + /** + * Is canvas element + * + * @param {HTMLElement} el + * @return {Boolean} + */ + isCanvas: function (el){ + return el && _rcanvas.test(el.nodeName); + }, + + + getFilesFilter: function (filter){ + filter = typeof filter == 'string' ? filter : (filter.getAttribute && filter.getAttribute('accept') || ''); + return filter ? new RegExp('('+ filter.replace(/\./g, '\\.').replace(/,/g, '|') +')$', 'i') : /./; + }, + + + + /** + * Read as DataURL + * + * @param {File|Element} file + * @param {Function} fn + */ + readAsDataURL: function (file, fn){ + if( api.isCanvas(file) ){ + _emit(file, fn, 'load', api.toDataURL(file)); + } + else { + _readAs(file, fn, 'DataURL'); + } + }, + + + /** + * Read as Binary string + * + * @param {File} file + * @param {Function} fn + */ + readAsBinaryString: function (file, fn){ + if( _hasSupportReadAs('BinaryString') ){ + _readAs(file, fn, 'BinaryString'); + } else { + // Hello IE10! + _readAs(file, function (evt){ + if( evt.type == 'load' ){ + try { + // dataURL -> binaryString + evt.result = api.toBinaryString(evt.result); + } catch (e){ + evt.type = 'error'; + evt.message = e.toString(); + } + } + fn(evt); + }, 'DataURL'); + } + }, + + + /** + * Read as ArrayBuffer + * + * @param {File} file + * @param {Function} fn + */ + readAsArrayBuffer: function(file, fn){ + _readAs(file, fn, 'ArrayBuffer'); + }, + + + /** + * Read as text + * + * @param {File} file + * @param {String} encoding + * @param {Function} [fn] + */ + readAsText: function(file, encoding, fn){ + if( !fn ){ + fn = encoding; + encoding = 'utf-8'; + } + + _readAs(file, fn, 'Text', encoding); + }, + + + /** + * Convert image or canvas to DataURL + * + * @param {Element} el Image or Canvas element + * @param {String} [type] mime-type + * @return {String} + */ + toDataURL: function (el, type){ + if( typeof el == 'string' ){ + return el; + } + else if( el.toDataURL ){ + return el.toDataURL(type || 'image/png'); + } + }, + + + /** + * Canvert string, image or canvas to binary string + * + * @param {String|Element} val + * @return {String} + */ + toBinaryString: function (val){ + return window.atob(api.toDataURL(val).replace(_rdata, '')); + }, + + + /** + * Read file or DataURL as ImageElement + * + * @param {File|String} file + * @param {Function} fn + * @param {Boolean} [progress] + */ + readAsImage: function (file, fn, progress){ + if( api.isBlob(file) ){ + if( apiURL ){ + /** @namespace apiURL.createObjectURL */ + var data = apiURL.createObjectURL(file); + if( data === undef ){ + _emit(file, fn, 'error'); + } + else { + api.readAsImage(data, fn, progress); + } + } + else { + api.readAsDataURL(file, function (evt){ + if( evt.type == 'load' ){ + api.readAsImage(evt.result, fn, progress); + } + else if( progress || evt.type == 'error' ){ + _emit(file, fn, evt, null, { loaded: evt.loaded, total: evt.total }); + } + }); + } + } + else if( api.isCanvas(file) ){ + _emit(file, fn, 'load', file); + } + else if( _rimg.test(file.nodeName) ){ + if( file.complete ){ + _emit(file, fn, 'load', file); + } + else { + var events = 'error abort load'; + _one(file, events, function _fn(evt){ + if( evt.type == 'load' && apiURL ){ + /** @namespace apiURL.revokeObjectURL */ + apiURL.revokeObjectURL(file.src); + } + + _off(file, events, _fn); + _emit(file, fn, evt, file); + }); + } + } + else if( file.iframe ){ + _emit(file, fn, { type: 'error' }); + } + else { + // Created image + var img = api.newImage(file.dataURL || file); + api.readAsImage(img, fn, progress); + } + }, + + + /** + * Make file by name + * + * @param {String} name + * @return {Array} + */ + checkFileObj: function (name){ + var file = {}, accept = api.accept; + + if( typeof name == 'object' ){ + file = name; + } + else { + file.name = (name + '').split(/\\|\//g).pop(); + } + + if( file.type == null ){ + file.type = file.name.split('.').pop(); + } + + _each(accept, function (ext, type){ + ext = new RegExp(ext.replace(/\s/g, '|'), 'i'); + if( ext.test(file.type) || api.ext2mime[file.type] ){ + file.type = api.ext2mime[file.type] || (type.split('/')[0] +'/'+ file.type); + } + }); + + return file; + }, + + + /** + * Get drop files + * + * @param {Event} evt + * @param {Function} callback + */ + getDropFiles: function (evt, callback){ + var + files = [] + , all = [] + , items + , dataTransfer = _getDataTransfer(evt) + , transFiles = dataTransfer.files + , transItems = dataTransfer.items + , entrySupport = _isArray(transItems) && transItems[0] && _getAsEntry(transItems[0]) + , queue = api.queue(function (){ callback(files, all); }) + ; + + if( entrySupport ){ + if( normalize && transFiles ){ + var + i = transFiles.length + , file + , entry + ; + + items = new Array(i); + while( i-- ){ + file = transFiles[i]; + + try { + entry = _getAsEntry(transItems[i]); + } + catch( err ){ + api.log('[err] getDropFiles: ', err); + entry = null; + } + + if( _isEntry(entry) ){ + // OSX filesystems use Unicode Normalization Form D (NFD), + // and entry.file(…) can't read the files with the same names + if( entry.isDirectory || (entry.isFile && file.name == file.name.normalize('NFC')) ){ + items[i] = entry; + } + else { + items[i] = file; + } + } + else { + items[i] = file; + } + } + } + else { + items = transItems; + } + } + else { + items = transFiles; + } + + _each(items || [], function (item){ + queue.inc(); + + try { + if( entrySupport && _isEntry(item) ){ + _readEntryAsFiles(item, function (err, entryFiles, allEntries){ + if( err ){ + api.log('[err] getDropFiles:', err); + } else { + files.push.apply(files, entryFiles); + } + all.push.apply(all, allEntries); + + queue.next(); + }); + } + else { + _isRegularFile(item, function (yes, err){ + if( yes ){ + files.push(item); + } + else { + item.error = err; + } + all.push(item); + + queue.next(); + }); + } + } + catch( err ){ + queue.next(); + api.log('[err] getDropFiles: ', err); + } + }); + + queue.check(); + }, + + + /** + * Get file list + * + * @param {HTMLInputElement|Event} input + * @param {String|Function} [filter] + * @param {Function} [callback] + * @return {Array|Null} + */ + getFiles: function (input, filter, callback){ + var files = []; + + if( callback ){ + api.filterFiles(api.getFiles(input), filter, callback); + return null; + } + + if( input.jquery ){ + // jQuery object + input.each(function (){ + files = files.concat(api.getFiles(this)); + }); + input = files; + files = []; + } + + if( typeof filter == 'string' ){ + filter = api.getFilesFilter(filter); + } + + if( input.originalEvent ){ + // jQuery event + input = _fixEvent(input.originalEvent); + } + else if( input.srcElement ){ + // IE Event + input = _fixEvent(input); + } + + + if( input.dataTransfer ){ + // Drag'n'Drop + input = input.dataTransfer; + } + else if( input.target ){ + // Event + input = input.target; + } + + if( input.files ){ + // Input[type="file"] + files = input.files; + + if( !html5 ){ + // Partial support for file api + files[0].blob = input; + files[0].iframe = true; + } + } + else if( !html5 && isInputFile(input) ){ + if( api.trim(input.value) ){ + files = [api.checkFileObj(input.value)]; + files[0].blob = input; + files[0].iframe = true; + } + } + else if( _isArray(input) ){ + files = input; + } + + return api.filter(files, function (file){ return !filter || filter.test(file.name); }); + }, + + + /** + * Get total file size + * @param {Array} files + * @return {Number} + */ + getTotalSize: function (files){ + var size = 0, i = files && files.length; + while( i-- ){ + size += files[i].size; + } + return size; + }, + + + /** + * Get image information + * + * @param {File} file + * @param {Function} fn + */ + getInfo: function (file, fn){ + var info = {}, readers = _infoReader.concat(); + + if( api.isBlob(file) ){ + (function _next(){ + var reader = readers.shift(); + if( reader ){ + if( reader.test(file.type) ){ + reader(file, function (err, res){ + if( err ){ + fn(err); + } + else { + _extend(info, res); + _next(); + } + }); + } + else { + _next(); + } + } + else { + fn(false, info); + } + })(); + } + else { + fn('not_support_info', info); + } + }, + + + /** + * Add information reader + * + * @param {RegExp} mime + * @param {Function} fn + */ + addInfoReader: function (mime, fn){ + fn.test = function (type){ return mime.test(type); }; + _infoReader.push(fn); + }, + + + /** + * Filter of array + * + * @param {Array} input + * @param {Function} fn + * @return {Array} + */ + filter: function (input, fn){ + var result = [], i = 0, n = input.length, val; + + for( ; i < n; i++ ){ + if( i in input ){ + val = input[i]; + if( fn.call(val, val, i, input) ){ + result.push(val); + } + } + } + + return result; + }, + + + /** + * Filter files + * + * @param {Array} files + * @param {Function} eachFn + * @param {Function} resultFn + */ + filterFiles: function (files, eachFn, resultFn){ + if( files.length ){ + // HTML5 or Flash + var queue = files.concat(), file, result = [], deleted = []; + + (function _next(){ + if( queue.length ){ + file = queue.shift(); + api.getInfo(file, function (err, info){ + (eachFn(file, err ? false : info) ? result : deleted).push(file); + _next(); + }); + } + else { + resultFn(result, deleted); + } + })(); + } + else { + resultFn([], files); + } + }, + + + upload: function (options){ + options = _extend({ + jsonp: 'callback' + , prepare: api.F + , beforeupload: api.F + , upload: api.F + , fileupload: api.F + , fileprogress: api.F + , filecomplete: api.F + , progress: api.F + , complete: api.F + , pause: api.F + , imageOriginal: true + , chunkSize: api.chunkSize + , chunkUploadRetry: api.chunkUploadRetry + , uploadRetry: api.uploadRetry + }, options); + + + if( options.imageAutoOrientation && !options.imageTransform ){ + options.imageTransform = { rotate: 'auto' }; + } + + + var + proxyXHR = new api.XHR(options) + , dataArray = this._getFilesDataArray(options.files) + , _this = this + , _total = 0 + , _loaded = 0 + , _nextFile + , _complete = false + ; + + + // calc total size + _each(dataArray, function (data){ + _total += data.size; + }); + + // Array of files + proxyXHR.files = []; + _each(dataArray, function (data){ + proxyXHR.files.push(data.file); + }); + + // Set upload status props + proxyXHR.total = _total; + proxyXHR.loaded = 0; + proxyXHR.filesLeft = dataArray.length; + + // emit "beforeupload" event + options.beforeupload(proxyXHR, options); + + // Upload by file + _nextFile = function (){ + var + data = dataArray.shift() + , _file = data && data.file + , _fileLoaded = false + , _fileOptions = _simpleClone(options) + ; + + proxyXHR.filesLeft = dataArray.length; + + if( _file && _file.name === api.expando ){ + _file = null; + api.log('[warn] FileAPI.upload() — called without files'); + } + + if( ( proxyXHR.statusText != 'abort' || proxyXHR.current ) && data ){ + // Mark active job + _complete = false; + + // Set current upload file + proxyXHR.currentFile = _file; + + // Prepare file options + if (_file && options.prepare(_file, _fileOptions) === false) { + _nextFile.call(_this); + return; + } + _fileOptions.file = _file; + + _this._getFormData(_fileOptions, data, function (form){ + if( !_loaded ){ + // emit "upload" event + options.upload(proxyXHR, options); + } + + var xhr = new api.XHR(_extend({}, _fileOptions, { + + upload: _file ? function (){ + // emit "fileupload" event + options.fileupload(_file, xhr, _fileOptions); + } : noop, + + progress: _file ? function (evt){ + if( !_fileLoaded ){ + // For ignore the double calls. + _fileLoaded = (evt.loaded === evt.total); + + // emit "fileprogress" event + options.fileprogress({ + type: 'progress' + , total: data.total = evt.total + , loaded: data.loaded = evt.loaded + }, _file, xhr, _fileOptions); + + // emit "progress" event + options.progress({ + type: 'progress' + , total: _total + , loaded: proxyXHR.loaded = (_loaded + data.size * (evt.loaded/evt.total)) || 0 + }, _file, xhr, _fileOptions); + } + } : noop, + + complete: function (err){ + _each(_xhrPropsExport, function (name){ + proxyXHR[name] = xhr[name]; + }); + + if( _file ){ + data.total = (data.total || data.size); + data.loaded = data.total; + + if( !err ) { + // emulate 100% "progress" + this.progress(data); + + // fixed throttle event + _fileLoaded = true; + + // bytes loaded + _loaded += data.size; // data.size != data.total, it's desirable fix this + proxyXHR.loaded = _loaded; + } + + // emit "filecomplete" event + options.filecomplete(err, xhr, _file, _fileOptions); + } + + // upload next file + setTimeout(function () {_nextFile.call(_this);}, 0); + } + })); // xhr + + + // ... + proxyXHR.abort = function (current){ + if (!current) { dataArray.length = 0; } + this.current = current; + xhr.abort(); + }; + + // Start upload + xhr.send(form); + }); + } + else { + var successful = proxyXHR.status == 200 || proxyXHR.status == 201 || proxyXHR.status == 204; + options.complete(successful ? false : (proxyXHR.statusText || 'error'), proxyXHR, options); + // Mark done state + _complete = true; + } + }; + + + // Next tick + setTimeout(_nextFile, 0); + + + // Append more files to the existing request + // first - add them to the queue head/tail + proxyXHR.append = function (files, first) { + files = api._getFilesDataArray([].concat(files)); + + _each(files, function (data) { + _total += data.size; + proxyXHR.files.push(data.file); + if (first) { + dataArray.unshift(data); + } else { + dataArray.push(data); + } + }); + + proxyXHR.statusText = ""; + + if( _complete ){ + _nextFile.call(_this); + } + }; + + + // Removes file from queue by file reference and returns it + proxyXHR.remove = function (file) { + var i = dataArray.length, _file; + while( i-- ){ + if( dataArray[i].file == file ){ + _file = dataArray.splice(i, 1); + _total -= _file.size; + } + } + return _file; + }; + + return proxyXHR; + }, + + + _getFilesDataArray: function (data){ + var files = [], oFiles = {}; + + if( isInputFile(data) ){ + var tmp = api.getFiles(data); + oFiles[data.name || 'file'] = data.getAttribute('multiple') !== null ? tmp : tmp[0]; + } + else if( _isArray(data) && isInputFile(data[0]) ){ + _each(data, function (input){ + oFiles[input.name || 'file'] = api.getFiles(input); + }); + } + else { + oFiles = data; + } + + _each(oFiles, function add(file, name){ + if( _isArray(file) ){ + _each(file, function (file){ + add(file, name); + }); + } + else if( file && (file.name || file.image) ){ + files.push({ + name: name + , file: file + , size: file.size + , total: file.size + , loaded: 0 + }); + } + }); + + if( !files.length ){ + // Create fake `file` object + files.push({ file: { name: api.expando } }); + } + + return files; + }, + + + _getFormData: function (options, data, fn){ + var + file = data.file + , name = data.name + , filename = file.name + , filetype = file.type + , trans = api.support.transform && options.imageTransform + , Form = new api.Form + , queue = api.queue(function (){ fn(Form); }) + , isOrignTrans = trans && _isOriginTransform(trans) + , postNameConcat = api.postNameConcat + ; + + // Append data + _each(options.data, function add(val, name){ + if( typeof val == 'object' ){ + _each(val, function (v, i){ + add(v, postNameConcat(name, i)); + }); + } + else { + Form.append(name, val); + } + }); + + (function _addFile(file/**Object*/){ + if( file.image ){ // This is a FileAPI.Image + queue.inc(); + + file.toData(function (err, image){ + // @todo: требует рефакторинга и обработки ошибки + if (file.file) { + image.type = file.file.type; + image.quality = file.matrix.quality; + filename = file.file && file.file.name; + } + + filename = filename || (new Date).getTime()+'.png'; + + _addFile(image); + queue.next(); + }); + } + else if( api.Image && trans && (/^image/.test(file.type) || _rimgcanvas.test(file.nodeName)) ){ + queue.inc(); + + if( isOrignTrans ){ + // Convert to array for transform function + trans = [trans]; + } + + api.Image.transform(file, trans, options.imageAutoOrientation, function (err, images){ + if( isOrignTrans && !err ){ + if( !dataURLtoBlob && !api.flashEngine ){ + // Canvas.toBlob or Flash not supported, use multipart + Form.multipart = true; + } + + Form.append(name, images[0], filename, trans[0].type || filetype); + } + else { + var addOrigin = 0; + + if( !err ){ + _each(images, function (image, idx){ + if( !dataURLtoBlob && !api.flashEngine ){ + Form.multipart = true; + } + + if( !trans[idx].postName ){ + addOrigin = 1; + } + + Form.append(trans[idx].postName || postNameConcat(name, idx), image, filename, trans[idx].type || filetype); + }); + } + + if( err || options.imageOriginal ){ + Form.append(postNameConcat(name, (addOrigin ? 'original' : null)), file, filename, filetype); + } + } + + queue.next(); + }); + } + else if( filename !== api.expando ){ + Form.append(name, file, filename); + } + })(file); + + queue.check(); + }, + + + reset: function (inp, notRemove){ + var parent, clone; + + if( jQuery ){ + clone = jQuery(inp).clone(true).insertBefore(inp).val('')[0]; + if( !notRemove ){ + jQuery(inp).remove(); + } + } else { + parent = inp.parentNode; + clone = parent.insertBefore(inp.cloneNode(true), inp); + clone.value = ''; + + if( !notRemove ){ + parent.removeChild(inp); + } + + _each(_elEvents[api.uid(inp)], function (fns, type){ + _each(fns, function (fn){ + _off(inp, type, fn); + _on(clone, type, fn); + }); + }); + } + + return clone; + }, + + + /** + * Load remote file + * + * @param {String} url + * @param {Function} fn + * @return {XMLHttpRequest} + */ + load: function (url, fn){ + var xhr = api.getXHR(); + if( xhr ){ + xhr.open('GET', url, true); + + if( xhr.overrideMimeType ){ + xhr.overrideMimeType('text/plain; charset=x-user-defined'); + } + + _on(xhr, 'progress', function (/**Event*/evt){ + /** @namespace evt.lengthComputable */ + if( evt.lengthComputable ){ + fn({ type: evt.type, loaded: evt.loaded, total: evt.total }, xhr); + } + }); + + xhr.onreadystatechange = function(){ + if( xhr.readyState == 4 ){ + xhr.onreadystatechange = null; + if( xhr.status == 200 ){ + url = url.split('/'); + /** @namespace xhr.responseBody */ + var file = { + name: url[url.length-1] + , size: xhr.getResponseHeader('Content-Length') + , type: xhr.getResponseHeader('Content-Type') + }; + file.dataURL = 'data:'+file.type+';base64,' + api.encode64(xhr.responseBody || xhr.responseText); + fn({ type: 'load', result: file }, xhr); + } + else { + fn({ type: 'error' }, xhr); + } + } + }; + xhr.send(null); + } else { + fn({ type: 'error' }); + } + + return xhr; + }, + + encode64: function (str){ + var b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=', outStr = '', i = 0; + + if( typeof str !== 'string' ){ + str = String(str); + } + + while( i < str.length ){ + //all three "& 0xff" added below are there to fix a known bug + //with bytes returned by xhr.responseText + var + byte1 = str.charCodeAt(i++) & 0xff + , byte2 = str.charCodeAt(i++) & 0xff + , byte3 = str.charCodeAt(i++) & 0xff + , enc1 = byte1 >> 2 + , enc2 = ((byte1 & 3) << 4) | (byte2 >> 4) + , enc3, enc4 + ; + + if( isNaN(byte2) ){ + enc3 = enc4 = 64; + } else { + enc3 = ((byte2 & 15) << 2) | (byte3 >> 6); + enc4 = isNaN(byte3) ? 64 : byte3 & 63; + } + + outStr += b64.charAt(enc1) + b64.charAt(enc2) + b64.charAt(enc3) + b64.charAt(enc4); + } + + return outStr; + } + + } // api + ; + + + function _emit(target, fn, name, res, ext){ + var evt = { + type: name.type || name + , target: target + , result: res + }; + _extend(evt, ext); + fn(evt); + } + + + function _hasSupportReadAs(method){ + return FileReader && !!FileReader.prototype['readAs' + method]; + } + + + function _readAs(file, fn, method, encoding){ + if( api.isBlob(file) && _hasSupportReadAs(method) ){ + var Reader = new FileReader; + + // Add event listener + _on(Reader, _readerEvents, function _fn(evt){ + var type = evt.type; + if( type == 'progress' ){ + _emit(file, fn, evt, evt.target.result, { loaded: evt.loaded, total: evt.total }); + } + else if( type == 'loadend' ){ + _off(Reader, _readerEvents, _fn); + Reader = null; + } + else { + _emit(file, fn, evt, evt.target.result); + } + }); + + + try { + // ReadAs ... + if( encoding ){ + Reader['readAs' + method](file, encoding); + } + else { + Reader['readAs' + method](file); + } + } + catch (err){ + _emit(file, fn, 'error', undef, { error: err.toString() }); + } + } + else { + _emit(file, fn, 'error', undef, { error: 'filreader_not_support_' + method }); + } + } + + + function _isRegularFile(file, callback){ + // http://stackoverflow.com/questions/8856628/detecting-folders-directories-in-javascript-filelist-objects + if( !file.type && (safari || ((file.size % 4096) === 0 && (file.size <= 102400))) ){ + if( FileReader ){ + try { + var reader = new FileReader(); + + _one(reader, _readerEvents, function (evt){ + var isFile = evt.type != 'error'; + if( isFile ){ + if ( reader.readyState == null || reader.readyState === reader.LOADING ) { + reader.abort(); + } + callback(isFile); + } + else { + callback(false, reader.error); + } + }); + + reader.readAsDataURL(file); + } catch( err ){ + callback(false, err); + } + } + else { + callback(null, new Error('FileReader is not supported')); + } + } + else { + callback(true); + } + } + + + function _isEntry(item){ + return item && (item.isFile || item.isDirectory); + } + + + function _getAsEntry(item){ + var entry; + if( item.getAsEntry ){ entry = item.getAsEntry(); } + else if( item.webkitGetAsEntry ){ entry = item.webkitGetAsEntry(); } + return entry; + } + + + function _readEntryAsFiles(entry, callback){ + if( !entry ){ + // error + var err = new Error('invalid entry'); + entry = new Object(entry); + entry.error = err; + callback(err.message, [], [entry]); + } + else if( entry.isFile ){ + // Read as file + entry.file(function (file){ + // success + file.fullPath = entry.fullPath; + callback(false, [file], [file]); + }, function (err){ + // error + entry.error = err; + callback('FileError.code: ' + err.code, [], [entry]); + }); + } + else if( entry.isDirectory ){ + var + reader = entry.createReader() + , firstAttempt = true + , files = [] + , all = [entry] + ; + + var onerror = function (err){ + // error + entry.error = err; + callback('DirectoryError.code: ' + err.code, files, all); + }; + var ondone = function ondone(entries){ + if( firstAttempt ){ + firstAttempt = false; + if( !entries.length ){ + entry.error = new Error('directory is empty'); + } + } + + // success + if( entries.length ){ + api.afor(entries, function (next, entry){ + _readEntryAsFiles(entry, function (err, entryFiles, allEntries){ + if( !err ){ + files = files.concat(entryFiles); + } + all = all.concat(allEntries); + + if( next ){ + next(); + } + else { + reader.readEntries(ondone, onerror); + } + }); + }); + } + else { + callback(false, files, all); + } + }; + + reader.readEntries(ondone, onerror); + } + else { + _readEntryAsFiles(_getAsEntry(entry), callback); + } + } + + + function _simpleClone(obj){ + var copy = {}; + _each(obj, function (val, key){ + if( val && (typeof val === 'object') && (val.nodeType === void 0) ){ + val = _extend({}, val); + } + copy[key] = val; + }); + return copy; + } + + + function isInputFile(el){ + return _rinput.test(el && el.tagName); + } + + + function _getDataTransfer(evt){ + return (evt.originalEvent || evt || '').dataTransfer || {}; + } + + + function _isOriginTransform(trans){ + var key; + for( key in trans ){ + if( trans.hasOwnProperty(key) ){ + if( !(trans[key] instanceof Object || key === 'overlay' || key === 'filter') ){ + return true; + } + } + } + return false; + } + + + // Add default image info reader + api.addInfoReader(/^image/, function (file/**File*/, callback/**Function*/){ + if( !file.__dimensions ){ + var defer = file.__dimensions = api.defer(); + + api.readAsImage(file, function (evt){ + var img = evt.target; + defer.resolve(evt.type == 'load' ? false : 'error', { + width: img.width + , height: img.height + }); + img.src = api.EMPTY_PNG; + img = null; + }); + } + + file.__dimensions.then(callback); + }); + + + /** + * Drag'n'Drop special event + * + * @param {HTMLElement} el + * @param {Function} onHover + * @param {Function} onDrop + */ + api.event.dnd = function (el, onHover, onDrop){ + var _id, _type; + + if( !onDrop ){ + onDrop = onHover; + onHover = api.F; + } + + if( FileReader ){ + // Hover + _on(el, 'dragenter dragleave dragover', onHover.ff = onHover.ff || function (evt){ + var + types = _getDataTransfer(evt).types + , i = types && types.length + , debounceTrigger = false + ; + + while( i-- ){ + if( ~types[i].indexOf('File') ){ + evt[preventDefault](); + + if( _type !== evt.type ){ + _type = evt.type; // Store current type of event + + if( _type != 'dragleave' ){ + onHover.call(evt[currentTarget], true, evt); + } + + debounceTrigger = true; + } + + break; // exit from "while" + } + } + + if( debounceTrigger ){ + clearTimeout(_id); + _id = setTimeout(function (){ + onHover.call(evt[currentTarget], _type != 'dragleave', evt); + }, 50); + } + }); + + + // Drop + _on(el, 'drop', onDrop.ff = onDrop.ff || function (evt){ + evt[preventDefault](); + + _type = 0; + onHover.call(evt[currentTarget], false, evt); + + api.getDropFiles(evt, function (files, all){ + onDrop.call(evt[currentTarget], files, all, evt); + }); + }); + } + else { + api.log("Drag'n'Drop -- not supported"); + } + }; + + + /** + * Remove drag'n'drop + * @param {HTMLElement} el + * @param {Function} onHover + * @param {Function} onDrop + */ + api.event.dnd.off = function (el, onHover, onDrop){ + _off(el, 'dragenter dragleave dragover', onHover.ff); + _off(el, 'drop', onDrop.ff); + }; + + + // Support jQuery + if( jQuery && !jQuery.fn.dnd ){ + jQuery.fn.dnd = function (onHover, onDrop){ + return this.each(function (){ + api.event.dnd(this, onHover, onDrop); + }); + }; + + jQuery.fn.offdnd = function (onHover, onDrop){ + return this.each(function (){ + api.event.dnd.off(this, onHover, onDrop); + }); + }; + } + + // @export + window.FileAPI = _extend(api, window.FileAPI); + + + // Debug info + api.log('FileAPI: ' + api.version); + api.log('protocol: ' + window.location.protocol); + api.log('doctype: [' + doctype.name + '] ' + doctype.publicId + ' ' + doctype.systemId); + + + // @detect 'x-ua-compatible' + _each(document.getElementsByTagName('meta'), function (meta){ + if( /x-ua-compatible/i.test(meta.getAttribute('http-equiv')) ){ + api.log('meta.http-equiv: ' + meta.getAttribute('content')); + } + }); + + + // Configuration + try { + _supportConsoleLog = !!console.log; + _supportConsoleLogApply = !!console.log.apply; + } + catch (err) {} + + if( !api.flashUrl ){ api.flashUrl = api.staticPath + 'FileAPI.flash.swf'; } + if( !api.flashImageUrl ){ api.flashImageUrl = api.staticPath + 'FileAPI.flash.image.swf'; } + if( !api.flashWebcamUrl ){ api.flashWebcamUrl = api.staticPath + 'FileAPI.flash.camera.swf'; } +})(window, void 0); + +/*global window, FileAPI, document */ + +(function (api, document, undef) { + 'use strict'; + + var + min = Math.min, + round = Math.round, + getCanvas = function () { return document.createElement('canvas'); }, + support = false, + exifOrientation = { + 8: 270 + , 3: 180 + , 6: 90 + , 7: 270 + , 4: 180 + , 5: 90 + } + ; + + try { + support = getCanvas().toDataURL('image/png').indexOf('data:image/png') > -1; + } + catch (e){} + + + function Image(file){ + if( file instanceof Image ){ + var img = new Image(file.file); + api.extend(img.matrix, file.matrix); + return img; + } + else if( !(this instanceof Image) ){ + return new Image(file); + } + + this.file = file; + this.size = file.size || 100; + + this.matrix = { + sx: 0, + sy: 0, + sw: 0, + sh: 0, + dx: 0, + dy: 0, + dw: 0, + dh: 0, + resize: 0, // min, max OR preview + deg: 0, + quality: 1, // jpeg quality + filter: 0 + }; + } + + + Image.prototype = { + image: true, + constructor: Image, + + set: function (attrs){ + api.extend(this.matrix, attrs); + return this; + }, + + crop: function (x, y, w, h){ + if( w === undef ){ + w = x; + h = y; + x = y = 0; + } + return this.set({ sx: x, sy: y, sw: w, sh: h || w }); + }, + + resize: function (w, h, strategy){ + if( /min|max|height|width/.test(h) ){ + strategy = h; + h = w; + } + + return this.set({ dw: w, dh: h || w, resize: strategy }); + }, + + preview: function (w, h){ + return this.resize(w, h || w, 'preview'); + }, + + rotate: function (deg){ + return this.set({ deg: deg }); + }, + + filter: function (filter){ + return this.set({ filter: filter }); + }, + + overlay: function (images){ + return this.set({ overlay: images }); + }, + + clone: function (){ + return new Image(this); + }, + + _load: function (image, fn){ + var self = this; + + if( /img|video/i.test(image.nodeName) ){ + fn.call(self, null, image); + } + else { + api.readAsImage(image, function (evt){ + fn.call(self, evt.type != 'load', evt.result); + }); + } + }, + + _apply: function (image, fn){ + var + canvas = getCanvas() + , m = this.getMatrix(image) + , ctx = canvas.getContext('2d') + , width = image.videoWidth || image.width + , height = image.videoHeight || image.height + , deg = m.deg + , dw = m.dw + , dh = m.dh + , w = width + , h = height + , filter = m.filter + , copy // canvas copy + , buffer = image + , overlay = m.overlay + , queue = api.queue(function (){ image.src = api.EMPTY_PNG; fn(false, canvas); }) + , renderImageToCanvas = api.renderImageToCanvas + ; + + // Normalize angle + deg = deg - Math.floor(deg/360)*360; + + // For `renderImageToCanvas` + image._type = this.file.type; + + while(m.multipass && min(w/dw, h/dh) > 2 ){ + w = (w/2 + 0.5)|0; + h = (h/2 + 0.5)|0; + + copy = getCanvas(); + copy.width = w; + copy.height = h; + + if( buffer !== image ){ + renderImageToCanvas(copy, buffer, 0, 0, buffer.width, buffer.height, 0, 0, w, h); + buffer = copy; + } + else { + buffer = copy; + renderImageToCanvas(buffer, image, m.sx, m.sy, m.sw, m.sh, 0, 0, w, h); + m.sx = m.sy = m.sw = m.sh = 0; + } + } + + + canvas.width = (deg % 180) ? dh : dw; + canvas.height = (deg % 180) ? dw : dh; + + canvas.type = m.type; + canvas.quality = m.quality; + + ctx.rotate(deg * Math.PI / 180); + renderImageToCanvas(ctx.canvas, buffer + , m.sx, m.sy + , m.sw || buffer.width + , m.sh || buffer.height + , (deg == 180 || deg == 270 ? -dw : 0) + , (deg == 90 || deg == 180 ? -dh : 0) + , dw, dh + ); + dw = canvas.width; + dh = canvas.height; + + // Apply overlay + overlay && api.each([].concat(overlay), function (over){ + queue.inc(); + // preload + var img = new window.Image, fn = function (){ + var + x = over.x|0 + , y = over.y|0 + , w = over.w || img.width + , h = over.h || img.height + , rel = over.rel + ; + + // center | right | left + x = (rel == 1 || rel == 4 || rel == 7) ? (dw - w + x)/2 : (rel == 2 || rel == 5 || rel == 8 ? dw - (w + x) : x); + + // center | bottom | top + y = (rel == 3 || rel == 4 || rel == 5) ? (dh - h + y)/2 : (rel >= 6 ? dh - (h + y) : y); + + api.event.off(img, 'error load abort', fn); + + try { + ctx.globalAlpha = over.opacity || 1; + ctx.drawImage(img, x, y, w, h); + } + catch (er){} + + queue.next(); + }; + + api.event.on(img, 'error load abort', fn); + img.src = over.src; + + if( img.complete ){ + fn(); + } + }); + + if( filter ){ + queue.inc(); + Image.applyFilter(canvas, filter, queue.next); + } + + queue.check(); + }, + + getMatrix: function (image){ + var + m = api.extend({}, this.matrix) + , sw = m.sw = m.sw || image.videoWidth || image.naturalWidth || image.width + , sh = m.sh = m.sh || image.videoHeight || image.naturalHeight || image.height + , dw = m.dw = m.dw || sw + , dh = m.dh = m.dh || sh + , sf = sw/sh, df = dw/dh + , strategy = m.resize + ; + + if( strategy == 'preview' ){ + if( dw != sw || dh != sh ){ + // Make preview + var w, h; + + if( df >= sf ){ + w = sw; + h = w / df; + } else { + h = sh; + w = h * df; + } + + if( w != sw || h != sh ){ + m.sx = ~~((sw - w)/2); + m.sy = ~~((sh - h)/2); + sw = w; + sh = h; + } + } + } + else if( strategy == 'height' ){ + dw = dh * sf; + } + else if( strategy == 'width' ){ + dh = dw / sf; + } + else if( strategy ){ + if( !(sw > dw || sh > dh) ){ + dw = sw; + dh = sh; + } + else if( strategy == 'min' ){ + dw = round(sf < df ? min(sw, dw) : dh*sf); + dh = round(sf < df ? dw/sf : min(sh, dh)); + } + else { + dw = round(sf >= df ? min(sw, dw) : dh*sf); + dh = round(sf >= df ? dw/sf : min(sh, dh)); + } + } + + m.sw = sw; + m.sh = sh; + m.dw = dw; + m.dh = dh; + m.multipass = api.multiPassResize; + return m; + }, + + _trans: function (fn){ + this._load(this.file, function (err, image){ + if( err ){ + fn(err); + } + else { + try { + this._apply(image, fn); + } catch (err){ + api.log('[err] FileAPI.Image.fn._apply:', err); + fn(err); + } + } + }); + }, + + + get: function (fn){ + if( api.support.transform ){ + var _this = this, matrix = _this.matrix; + + if( matrix.deg == 'auto' ){ + api.getInfo(_this.file, function (err, info){ + // rotate by exif orientation + matrix.deg = exifOrientation[info && info.exif && info.exif.Orientation] || 0; + _this._trans(fn); + }); + } + else { + _this._trans(fn); + } + } + else { + fn('not_support_transform'); + } + + return this; + }, + + + toData: function (fn){ + return this.get(fn); + } + + }; + + + Image.exifOrientation = exifOrientation; + + + Image.transform = function (file, transform, autoOrientation, fn){ + function _transform(err, img){ + // img -- info object + var + images = {} + , queue = api.queue(function (err){ + fn(err, images); + }) + ; + + if( !err ){ + api.each(transform, function (params, name){ + if( !queue.isFail() ){ + var ImgTrans = new Image(img.nodeType ? img : file), isFn = typeof params == 'function'; + + if( isFn ){ + params(img, ImgTrans); + } + else if( params.width ){ + ImgTrans[params.preview ? 'preview' : 'resize'](params.width, params.height, params.strategy); + } + else { + if( params.maxWidth && (img.width > params.maxWidth || img.height > params.maxHeight) ){ + ImgTrans.resize(params.maxWidth, params.maxHeight, 'max'); + } + } + + if( params.crop ){ + var crop = params.crop; + ImgTrans.crop(crop.x|0, crop.y|0, crop.w || crop.width, crop.h || crop.height); + } + + if( params.rotate === undef && autoOrientation ){ + params.rotate = 'auto'; + } + + ImgTrans.set({ type: ImgTrans.matrix.type || params.type || file.type || 'image/png' }); + + if( !isFn ){ + ImgTrans.set({ + deg: params.rotate + , overlay: params.overlay + , filter: params.filter + , quality: params.quality || 1 + }); + } + + queue.inc(); + ImgTrans.toData(function (err, image){ + if( err ){ + queue.fail(); + } + else { + images[name] = image; + queue.next(); + } + }); + } + }); + } + else { + queue.fail(); + } + } + + + // @todo: Оло-ло, нужно рефакторить это место + if( file.width ){ + _transform(false, file); + } else { + api.getInfo(file, _transform); + } + }; + + + // @const + api.each(['TOP', 'CENTER', 'BOTTOM'], function (x, i){ + api.each(['LEFT', 'CENTER', 'RIGHT'], function (y, j){ + Image[x+'_'+y] = i*3 + j; + Image[y+'_'+x] = i*3 + j; + }); + }); + + + /** + * Trabsform element to canvas + * + * @param {Image|HTMLVideoElement} el + * @returns {Canvas} + */ + Image.toCanvas = function(el){ + var canvas = document.createElement('canvas'); + canvas.width = el.videoWidth || el.width; + canvas.height = el.videoHeight || el.height; + canvas.getContext('2d').drawImage(el, 0, 0); + return canvas; + }; + + + /** + * Create image from DataURL + * @param {String} dataURL + * @param {Object} size + * @param {Function} callback + */ + Image.fromDataURL = function (dataURL, size, callback){ + var img = api.newImage(dataURL); + api.extend(img, size); + callback(img); + }; + + + /** + * Apply filter (caman.js) + * + * @param {Canvas|Image} canvas + * @param {String|Function} filter + * @param {Function} doneFn + */ + Image.applyFilter = function (canvas, filter, doneFn){ + if( typeof filter == 'function' ){ + filter(canvas, doneFn); + } + else if( window.Caman ){ + // http://camanjs.com/guides/ + window.Caman(canvas.tagName == 'IMG' ? Image.toCanvas(canvas) : canvas, function (){ + if( typeof filter == 'string' ){ + this[filter](); + } + else { + api.each(filter, function (val, method){ + this[method](val); + }, this); + } + this.render(doneFn); + }); + } + }; + + + /** + * For load-image-ios.js + */ + api.renderImageToCanvas = function (canvas, img, sx, sy, sw, sh, dx, dy, dw, dh){ + try { + return canvas.getContext('2d').drawImage(img, sx, sy, sw, sh, dx, dy, dw, dh); + } catch (ex) { + api.log('renderImageToCanvas failed'); + throw ex; + } + }; + + + // @export + api.support.canvas = api.support.transform = support; + api.Image = Image; +})(FileAPI, document); + +/* + * JavaScript Load Image iOS scaling fixes 1.0.3 + * https://github.com/blueimp/JavaScript-Load-Image + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * iOS image scaling fixes based on + * https://github.com/stomita/ios-imagefile-megapixel + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/MIT + */ + +/*jslint nomen: true, bitwise: true */ +/*global FileAPI, window, document */ + +(function (factory) { + 'use strict'; + factory(FileAPI); +}(function (loadImage) { + 'use strict'; + + // Only apply fixes on the iOS platform: + if (!window.navigator || !window.navigator.platform || + !(/iP(hone|od|ad)/).test(window.navigator.platform)) { + return; + } + + var originalRenderMethod = loadImage.renderImageToCanvas; + + // Detects subsampling in JPEG images: + loadImage.detectSubsampling = function (img) { + var canvas, + context; + if (img.width * img.height > 1024 * 1024) { // only consider mexapixel images + canvas = document.createElement('canvas'); + canvas.width = canvas.height = 1; + context = canvas.getContext('2d'); + context.drawImage(img, -img.width + 1, 0); + // subsampled image becomes half smaller in rendering size. + // check alpha channel value to confirm image is covering edge pixel or not. + // if alpha value is 0 image is not covering, hence subsampled. + return context.getImageData(0, 0, 1, 1).data[3] === 0; + } + return false; + }; + + // Detects vertical squash in JPEG images: + loadImage.detectVerticalSquash = function (img, subsampled) { + var naturalHeight = img.naturalHeight || img.height, + canvas = document.createElement('canvas'), + context = canvas.getContext('2d'), + data, + sy, + ey, + py, + alpha; + if (subsampled) { + naturalHeight /= 2; + } + canvas.width = 1; + canvas.height = naturalHeight; + context.drawImage(img, 0, 0); + data = context.getImageData(0, 0, 1, naturalHeight).data; + // search image edge pixel position in case it is squashed vertically: + sy = 0; + ey = naturalHeight; + py = naturalHeight; + while (py > sy) { + alpha = data[(py - 1) * 4 + 3]; + if (alpha === 0) { + ey = py; + } else { + sy = py; + } + py = (ey + sy) >> 1; + } + return (py / naturalHeight) || 1; + }; + + // Renders image to canvas while working around iOS image scaling bugs: + // https://github.com/blueimp/JavaScript-Load-Image/issues/13 + loadImage.renderImageToCanvas = function ( + canvas, + img, + sourceX, + sourceY, + sourceWidth, + sourceHeight, + destX, + destY, + destWidth, + destHeight + ) { + if (img._type === 'image/jpeg') { + var context = canvas.getContext('2d'), + tmpCanvas = document.createElement('canvas'), + tileSize = 1024, + tmpContext = tmpCanvas.getContext('2d'), + subsampled, + vertSquashRatio, + tileX, + tileY; + tmpCanvas.width = tileSize; + tmpCanvas.height = tileSize; + context.save(); + subsampled = loadImage.detectSubsampling(img); + if (subsampled) { + sourceX /= 2; + sourceY /= 2; + sourceWidth /= 2; + sourceHeight /= 2; + } + vertSquashRatio = loadImage.detectVerticalSquash(img, subsampled); + if (subsampled || vertSquashRatio !== 1) { + sourceY *= vertSquashRatio; + destWidth = Math.ceil(tileSize * destWidth / sourceWidth); + destHeight = Math.ceil( + tileSize * destHeight / sourceHeight / vertSquashRatio + ); + destY = 0; + tileY = 0; + while (tileY < sourceHeight) { + destX = 0; + tileX = 0; + while (tileX < sourceWidth) { + tmpContext.clearRect(0, 0, tileSize, tileSize); + tmpContext.drawImage( + img, + sourceX, + sourceY, + sourceWidth, + sourceHeight, + -tileX, + -tileY, + sourceWidth, + sourceHeight + ); + context.drawImage( + tmpCanvas, + 0, + 0, + tileSize, + tileSize, + destX, + destY, + destWidth, + destHeight + ); + tileX += tileSize; + destX += destWidth; + } + tileY += tileSize; + destY += destHeight; + } + context.restore(); + return canvas; + } + } + return originalRenderMethod( + canvas, + img, + sourceX, + sourceY, + sourceWidth, + sourceHeight, + destX, + destY, + destWidth, + destHeight + ); + }; + +})); + +/*global window, FileAPI */ + +(function (api, window){ + "use strict"; + + var + document = window.document + , FormData = window.FormData + , Form = function (){ this.items = []; } + , encodeURIComponent = window.encodeURIComponent + ; + + + Form.prototype = { + + append: function (name, blob, file, type){ + this.items.push({ + name: name + , blob: blob && blob.blob || (blob == void 0 ? '' : blob) + , file: blob && (file || blob.name) + , type: blob && (type || blob.type) + }); + }, + + each: function (fn){ + var i = 0, n = this.items.length; + for( ; i < n; i++ ){ + fn.call(this, this.items[i]); + } + }, + + toData: function (fn, options){ + // allow chunked transfer if we have only one file to send + // flag is used below and in XHR._send + options._chunked = api.support.chunked && options.chunkSize > 0 && api.filter(this.items, function (item){ return item.file; }).length == 1; + + if( !api.support.html5 ){ + api.log('FileAPI.Form.toHtmlData'); + this.toHtmlData(fn); + } + else if( !api.formData || this.multipart || !FormData ){ + api.log('FileAPI.Form.toMultipartData'); + this.toMultipartData(fn); + } + else if( options._chunked ){ + api.log('FileAPI.Form.toPlainData'); + this.toPlainData(fn); + } + else { + api.log('FileAPI.Form.toFormData'); + this.toFormData(fn); + } + }, + + _to: function (data, complete, next, arg){ + var queue = api.queue(function (){ + complete(data); + }); + + this.each(function (file){ + try{ + next(file, data, queue, arg); + } + catch( err ){ + api.log('FileAPI.Form._to: ' + err.message); + complete(err); + } + }); + + queue.check(); + }, + + + toHtmlData: function (fn){ + this._to(document.createDocumentFragment(), fn, function (file, data/**DocumentFragment*/){ + var blob = file.blob, hidden; + + if( file.file ){ + api.reset(blob, true); + // set new name + blob.name = file.name; + blob.disabled = false; + data.appendChild(blob); + } + else { + hidden = document.createElement('input'); + hidden.name = file.name; + hidden.type = 'hidden'; + hidden.value = blob; + data.appendChild(hidden); + } + }); + }, + + toPlainData: function (fn){ + this._to({}, fn, function (file, data, queue){ + if( file.file ){ + data.type = file.file; + } + + if( file.blob.toBlob ){ + // canvas + queue.inc(); + _convertFile(file, function (file, blob){ + data.name = file.name; + data.file = blob; + data.size = blob.length; + data.type = file.type; + queue.next(); + }); + } + else if( file.file ){ + // file + data.name = file.blob.name; + data.file = file.blob; + data.size = file.blob.size; + data.type = file.type; + } + else { + // additional data + if( !data.params ){ + data.params = []; + } + data.params.push(encodeURIComponent(file.name) +"="+ encodeURIComponent(file.blob)); + } + + data.start = -1; + data.end = data.file && data.file.FileAPIReadPosition || -1; + data.retry = 0; + }); + }, + + toFormData: function (fn){ + this._to(new FormData, fn, function (file, data, queue){ + if( file.blob && file.blob.toBlob ){ + queue.inc(); + _convertFile(file, function (file, blob){ + data.append(file.name, blob, file.file); + queue.next(); + }); + } + else if( file.file ){ + data.append(file.name, file.blob, file.file); + } + else { + data.append(file.name, file.blob); + } + + if( file.file ){ + data.append('_'+file.name, file.file); + } + }); + }, + + + toMultipartData: function (fn){ + this._to([], fn, function (file, data, queue, boundary){ + queue.inc(); + _convertFile(file, function (file, blob){ + data.push( + '--_' + boundary + ('\r\nContent-Disposition: form-data; name="'+ file.name +'"'+ (file.file ? '; filename="'+ encodeURIComponent(file.file) +'"' : '') + + (file.file ? '\r\nContent-Type: '+ (file.type || 'application/octet-stream') : '') + + '\r\n' + + '\r\n'+ (file.file ? blob : encodeURIComponent(blob)) + + '\r\n') + ); + queue.next(); + }, true); + }, api.expando); + } + }; + + + function _convertFile(file, fn, useBinaryString){ + var blob = file.blob, filename = file.file; + + if( filename ){ + if( !blob.toDataURL ){ + // The Blob is not an image. + api.readAsBinaryString(blob, function (evt){ + if( evt.type == 'load' ){ + fn(file, evt.result); + } + }); + return; + } + + var + mime = { 'image/jpeg': '.jpe?g', 'image/png': '.png' } + , type = mime[file.type] ? file.type : 'image/png' + , ext = mime[type] || '.png' + , quality = blob.quality || 1 + ; + + if( !filename.match(new RegExp(ext+'$', 'i')) ){ + // Does not change the current extension, but add a new one. + filename += ext.replace('?', ''); + } + + file.file = filename; + file.type = type; + + if( !useBinaryString && blob.toBlob ){ + blob.toBlob(function (blob){ + fn(file, blob); + }, type, quality); + } + else { + fn(file, api.toBinaryString(blob.toDataURL(type, quality))); + } + } + else { + fn(file, blob); + } + } + + + // @export + api.Form = Form; +})(FileAPI, window); + +/*global window, FileAPI, Uint8Array */ + +(function (window, api){ + "use strict"; + + var + noop = function (){} + , document = window.document + + , XHR = function (options){ + this.uid = api.uid(); + this.xhr = { + abort: noop + , getResponseHeader: noop + , getAllResponseHeaders: noop + }; + this.options = options; + }, + + _xhrResponsePostfix = { '': 1, XML: 1, Text: 1, Body: 1 } + ; + + + XHR.prototype = { + status: 0, + statusText: '', + constructor: XHR, + + getResponseHeader: function (name){ + return this.xhr.getResponseHeader(name); + }, + + getAllResponseHeaders: function (){ + return this.xhr.getAllResponseHeaders() || {}; + }, + + end: function (status, statusText){ + var _this = this, options = _this.options; + + _this.end = + _this.abort = noop; + _this.status = status; + + if( statusText ){ + _this.statusText = statusText; + } + + api.log('xhr.end:', status, statusText); + options.complete(status == 200 || status == 201 ? false : _this.statusText || 'unknown', _this); + + if( _this.xhr && _this.xhr.node ){ + setTimeout(function (){ + var node = _this.xhr.node; + try { node.parentNode.removeChild(node); } catch (e){} + try { delete window[_this.uid]; } catch (e){} + window[_this.uid] = _this.xhr.node = null; + }, 9); + } + }, + + abort: function (){ + this.end(0, 'abort'); + + if( this.xhr ){ + this.xhr.aborted = true; + this.xhr.abort(); + } + }, + + send: function (FormData){ + var _this = this, options = this.options; + + FormData.toData(function (data){ + if( data instanceof Error ){ + _this.end(0, data.message); + } + else{ + // Start uploading + options.upload(options, _this); + _this._send.call(_this, options, data); + } + }, options); + }, + + _send: function (options, data){ + var _this = this, xhr, uid = _this.uid, onLoadFnName = _this.uid + "Load", url = options.url; + + api.log('XHR._send:', data); + + if( !options.cache ){ + // No cache + url += (~url.indexOf('?') ? '&' : '?') + api.uid(); + } + + if( data.nodeName ){ + var jsonp = options.jsonp; + + // prepare callback in GET + url = url.replace(/([a-z]+)=(\?)/i, '$1='+uid); + + // legacy + options.upload(options, _this); + + var + onPostMessage = function (evt){ + if( ~url.indexOf(evt.origin) ){ + try { + var result = api.parseJSON(evt.data); + if( result.id == uid ){ + complete(result.status, result.statusText, result.response); + } + } catch( err ){ + complete(0, err.message); + } + } + }, + + // jsonp-callack + complete = window[uid] = function (status, statusText, response){ + _this.readyState = 4; + _this.responseText = response; + _this.end(status, statusText); + + api.event.off(window, 'message', onPostMessage); + window[uid] = xhr = transport = window[onLoadFnName] = null; + } + ; + + _this.xhr.abort = function (){ + try { + if( transport.stop ){ transport.stop(); } + else if( transport.contentWindow.stop ){ transport.contentWindow.stop(); } + else { transport.contentWindow.document.execCommand('Stop'); } + } + catch (er) {} + complete(0, "abort"); + }; + + api.event.on(window, 'message', onPostMessage); + + window[onLoadFnName] = function (){ + try { + var + win = transport.contentWindow + , doc = win.document + , result = win.result || api.parseJSON(doc.body.innerHTML) + ; + complete(result.status, result.statusText, result.response); + } catch (e){ + api.log('[transport.onload]', e); + } + }; + + xhr = document.createElement('div'); + xhr.innerHTML = '
                    ' + + '' + + (jsonp && (options.url.indexOf('=?') < 0) ? '' : '') + + '
                    ' + ; + + // get form-data & transport + var + form = xhr.getElementsByTagName('form')[0] + , transport = xhr.getElementsByTagName('iframe')[0] + ; + + form.appendChild(data); + + api.log(form.parentNode.innerHTML); + + // append to DOM + document.body.appendChild(xhr); + + // keep a reference to node-transport + _this.xhr.node = xhr; + + // send + _this.readyState = 2; // loaded + try { + form.submit(); + } catch (err) { + api.log('iframe.error: ' + err); + } + form = null; + } + else { + // Clean url + url = url.replace(/([a-z]+)=(\?)&?/i, ''); + + // html5 + if (this.xhr && this.xhr.aborted) { + api.log("Error: already aborted"); + return; + } + xhr = _this.xhr = api.getXHR(); + + if (data.params) { + url += (url.indexOf('?') < 0 ? "?" : "&") + data.params.join("&"); + } + + xhr.open('POST', url, true); + + if( api.withCredentials ){ + xhr.withCredentials = "true"; + } + + if( !options.headers || !options.headers['X-Requested-With'] ){ + xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest'); + } + + api.each(options.headers, function (val, key){ + xhr.setRequestHeader(key, val); + }); + + + if ( options._chunked ) { + // chunked upload + if( xhr.upload ){ + xhr.upload.addEventListener('progress', api.throttle(function (/**Event*/evt){ + if (!data.retry) { + // show progress only for correct chunk uploads + options.progress({ + type: evt.type + , total: data.size + , loaded: data.start + evt.loaded + , totalSize: data.size + }, _this, options); + } + }, 100), false); + } + + xhr.onreadystatechange = function (){ + var lkb = parseInt(xhr.getResponseHeader('X-Last-Known-Byte'), 10); + + _this.status = xhr.status; + _this.statusText = xhr.statusText; + _this.readyState = xhr.readyState; + + if( xhr.readyState == 4 ){ + for( var k in _xhrResponsePostfix ){ + _this['response'+k] = xhr['response'+k]; + } + xhr.onreadystatechange = null; + + if (!xhr.status || xhr.status - 201 > 0) { + api.log("Error: " + xhr.status); + // some kind of error + // 0 - connection fail or timeout, if xhr.aborted is true, then it's not recoverable user action + // up - server error + if (((!xhr.status && !xhr.aborted) || 500 == xhr.status || 416 == xhr.status) && ++data.retry <= options.chunkUploadRetry) { + // let's try again the same chunk + // only applicable for recoverable error codes 500 && 416 + var delay = xhr.status ? 0 : api.chunkNetworkDownRetryTimeout; + + // inform about recoverable problems + options.pause(data.file, options); + + // smart restart if server reports about the last known byte + api.log("X-Last-Known-Byte: " + lkb); + if (lkb) { + data.end = lkb; + } else { + data.end = data.start - 1; + if (416 == xhr.status) { + data.end = data.end - options.chunkSize; + } + } + + setTimeout(function () { + _this._send(options, data); + }, delay); + } else { + // no mo retries + _this.end(xhr.status); + } + } else { + // success + data.retry = 0; + + if (data.end == data.size - 1) { + // finished + _this.end(xhr.status); + } else { + // next chunk + + // shift position if server reports about the last known byte + api.log("X-Last-Known-Byte: " + lkb); + if (lkb) { + data.end = lkb; + } + data.file.FileAPIReadPosition = data.end; + + setTimeout(function () { + _this._send(options, data); + }, 0); + } + } + + xhr = null; + } + }; + + data.start = data.end + 1; + data.end = Math.max(Math.min(data.start + options.chunkSize, data.size) - 1, data.start); + + // Retrieve a slice of file + var + file = data.file + , slice = (file.slice || file.mozSlice || file.webkitSlice).call(file, data.start, data.end + 1) + ; + + if( data.size && !slice.size ){ + setTimeout(function (){ + _this.end(-1); + }); + } else { + xhr.setRequestHeader("Content-Range", "bytes " + data.start + "-" + data.end + "/" + data.size); + xhr.setRequestHeader("Content-Disposition", 'attachment; filename=' + encodeURIComponent(data.name)); + xhr.setRequestHeader("Content-Type", data.type || "application/octet-stream"); + + xhr.send(slice); + } + + file = slice = null; + } else { + // single piece upload + if( xhr.upload ){ + // https://github.com/blueimp/jQuery-File-Upload/wiki/Fixing-Safari-hanging-on-very-high-speed-connections-%281Gbps%29 + xhr.upload.addEventListener('progress', api.throttle(function (/**Event*/evt){ + options.progress(evt, _this, options); + }, 100), false); + } + + xhr.onreadystatechange = function (){ + _this.status = xhr.status; + _this.statusText = xhr.statusText; + _this.readyState = xhr.readyState; + + if( xhr.readyState == 4 ){ + for( var k in _xhrResponsePostfix ){ + _this['response'+k] = xhr['response'+k]; + } + xhr.onreadystatechange = null; + + if (!xhr.status || xhr.status > 201) { + api.log("Error: " + xhr.status); + if (((!xhr.status && !xhr.aborted) || 500 == xhr.status) && (options.retry || 0) < options.uploadRetry) { + options.retry = (options.retry || 0) + 1; + var delay = api.networkDownRetryTimeout; + + // inform about recoverable problems + options.pause(options.file, options); + + setTimeout(function () { + _this._send(options, data); + }, delay); + } else { + //success + _this.end(xhr.status); + } + } else { + //success + _this.end(xhr.status); + } + + xhr = null; + } + }; + + if( api.isArray(data) ){ + // multipart + xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=_'+api.expando); + var rawData = data.join('') +'--_'+ api.expando +'--'; + + /** @namespace xhr.sendAsBinary https://developer.mozilla.org/ru/XMLHttpRequest#Sending_binary_content */ + if( xhr.sendAsBinary ){ + xhr.sendAsBinary(rawData); + } + else { + var bytes = Array.prototype.map.call(rawData, function(c){ return c.charCodeAt(0) & 0xff; }); + xhr.send(new Uint8Array(bytes).buffer); + + } + } else { + // FormData + xhr.send(data); + } + } + } + } + }; + + + // @export + api.XHR = XHR; +})(window, FileAPI); + +/** + * @class FileAPI.Camera + * @author RubaXa + * @support Chrome 21+, FF 18+, Opera 12+ + */ + +/*global window, FileAPI, jQuery */ +/** @namespace LocalMediaStream -- https://developer.mozilla.org/en-US/docs/WebRTC/MediaStream_API#LocalMediaStream */ +(function (window, api){ + "use strict"; + + var + URL = window.URL || window.webkitURL, + + document = window.document, + navigator = window.navigator, + + getMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia, + + html5 = !!getMedia + ; + + + // Support "media" + api.support.media = html5; + + + var Camera = function (video){ + this.video = video; + }; + + + Camera.prototype = { + isActive: function (){ + return !!this._active; + }, + + + /** + * Start camera streaming + * @param {Function} callback + */ + start: function (callback){ + var + _this = this + , video = _this.video + , _successId + , _failId + , _complete = function (err){ + _this._active = !err; + clearTimeout(_failId); + clearTimeout(_successId); +// api.event.off(video, 'loadedmetadata', _complete); + callback && callback(err, _this); + } + ; + + getMedia.call(navigator, { video: true }, function (stream/**LocalMediaStream*/){ + // Success + _this.stream = stream; + +// api.event.on(video, 'loadedmetadata', function (){ +// _complete(null); +// }); + + // Set camera stream + video.src = URL.createObjectURL(stream); + + // Note: onloadedmetadata doesn't fire in Chrome when using it with getUserMedia. + // See crbug.com/110938. + _successId = setInterval(function (){ + if( _detectVideoSignal(video) ){ + _complete(null); + } + }, 1000); + + _failId = setTimeout(function (){ + _complete('timeout'); + }, 5000); + + // Go-go-go! + video.play(); + }, _complete/*error*/); + }, + + + /** + * Stop camera streaming + */ + stop: function (){ + try { + this._active = false; + this.video.pause(); + + try { + this.stream.stop(); + } catch (err) { + api.each(this.stream.getTracks(), function (track) { + track.stop(); + }); + } + + this.stream = null; + } catch( err ){ + api.log('[FileAPI.Camera] stop:', err); + } + }, + + + /** + * Create screenshot + * @return {FileAPI.Camera.Shot} + */ + shot: function (){ + return new Shot(this.video); + } + }; + + + /** + * Get camera element from container + * + * @static + * @param {HTMLElement} el + * @return {Camera} + */ + Camera.get = function (el){ + return new Camera(el.firstChild); + }; + + + /** + * Publish camera element into container + * + * @static + * @param {HTMLElement} el + * @param {Object} options + * @param {Function} [callback] + */ + Camera.publish = function (el, options, callback){ + if( typeof options == 'function' ){ + callback = options; + options = {}; + } + + // Dimensions of "camera" + options = api.extend({}, { + width: '100%' + , height: '100%' + , start: true + }, options); + + + if( el.jquery ){ + // Extract first element, from jQuery collection + el = el[0]; + } + + + var doneFn = function (err){ + if( err ){ + callback(err); + } + else { + // Get camera + var cam = Camera.get(el); + if( options.start ){ + cam.start(callback); + } + else { + callback(null, cam); + } + } + }; + + + el.style.width = _px(options.width); + el.style.height = _px(options.height); + + + if( api.html5 && html5 ){ + // Create video element + var video = document.createElement('video'); + + // Set dimensions + video.style.width = _px(options.width); + video.style.height = _px(options.height); + + // Clean container + if( window.jQuery ){ + jQuery(el).empty(); + } else { + el.innerHTML = ''; + } + + // Add "camera" to container + el.appendChild(video); + + // end + doneFn(); + } + else { + Camera.fallback(el, options, doneFn); + } + }; + + + Camera.fallback = function (el, options, callback){ + callback('not_support_camera'); + }; + + + /** + * @class FileAPI.Camera.Shot + */ + var Shot = function (video){ + var canvas = video.nodeName ? api.Image.toCanvas(video) : video; + var shot = api.Image(canvas); + shot.type = 'image/png'; + shot.width = canvas.width; + shot.height = canvas.height; + shot.size = canvas.width * canvas.height * 4; + return shot; + }; + + + /** + * Add "px" postfix, if value is a number + * + * @private + * @param {*} val + * @return {String} + */ + function _px(val){ + return val >= 0 ? val + 'px' : val; + } + + + /** + * @private + * @param {HTMLVideoElement} video + * @return {Boolean} + */ + function _detectVideoSignal(video){ + var canvas = document.createElement('canvas'), ctx, res = false; + try { + ctx = canvas.getContext('2d'); + ctx.drawImage(video, 0, 0, 1, 1); + res = ctx.getImageData(0, 0, 1, 1).data[4] != 255; + } + catch( err ){ + api.log('[FileAPI.Camera] detectVideoSignal:', err); + } + return res; + } + + + // @export + Camera.Shot = Shot; + api.Camera = Camera; +})(window, FileAPI); + +/** + * FileAPI fallback to Flash + * + * @flash-developer "Vladimir Demidov" + */ + +/*global window, ActiveXObject, FileAPI */ +(function (window, jQuery, api) { + "use strict"; + + var + document = window.document + , location = window.location + , navigator = window.navigator + , _each = api.each + ; + + + api.support.flash = (function (){ + var mime = navigator.mimeTypes, has = false; + + if( navigator.plugins && typeof navigator.plugins['Shockwave Flash'] == 'object' ){ + has = navigator.plugins['Shockwave Flash'].description && !(mime && mime['application/x-shockwave-flash'] && !mime['application/x-shockwave-flash'].enabledPlugin); + } + else { + try { + has = !!(window.ActiveXObject && new ActiveXObject('ShockwaveFlash.ShockwaveFlash')); + } + catch(er){ + api.log('Flash -- does not supported.'); + } + } + + if( has && /^file:/i.test(location) ){ + api.log('[warn] Flash does not work on `file:` protocol.'); + } + + return has; + })(); + + + api.support.flash + && (0 + || !api.html5 || !api.support.html5 + || (api.cors && !api.support.cors) + || (api.media && !api.support.media) + ) + && (function (){ + var + _attr = api.uid() + , _retry = 0 + , _files = {} + , _rhttp = /^https?:/i + + , flash = { + _fn: {}, + + + /** + * Initialization & preload flash object + */ + init: function (){ + var child = document.body && document.body.firstChild; + + if( child ){ + do { + if( child.nodeType == 1 ){ + api.log('FlashAPI.state: awaiting'); + + var dummy = document.createElement('div'); + + dummy.id = '_' + _attr; + + _css(dummy, { + top: 1 + , right: 1 + , width: 5 + , height: 5 + , position: 'absolute' + , zIndex: 2147483647+'' // set max zIndex + }); + + child.parentNode.insertBefore(dummy, child); + flash.publish(dummy, _attr); + + return; + } + } + while( child = child.nextSibling ); + } + + if( _retry < 10 ){ + setTimeout(flash.init, ++_retry*50); + } + }, + + + /** + * Publish flash-object + * + * @param {HTMLElement} el + * @param {String} id + * @param {Object} [opts] + */ + publish: function (el, id, opts){ + opts = opts || {}; + el.innerHTML = _makeFlashHTML({ + id: id + , src: _getUrl(api.flashUrl, 'r=' + api.version) +// , src: _getUrl('http://v.demidov.boom.corp.mail.ru/uploaderfileapi/FlashFileAPI.swf?1') + , wmode: opts.camera ? '' : 'transparent' + , flashvars: 'callback=' + (opts.onEvent || 'FileAPI.Flash.onEvent') + + '&flashId='+ id + + '&storeKey='+ navigator.userAgent.match(/\d/ig).join('') +'_'+ api.version + + (flash.isReady || (api.pingUrl ? '&ping='+api.pingUrl : '')) + + '&timeout='+api.flashAbortTimeout + + (opts.camera ? '&useCamera=' + _getUrl(api.flashWebcamUrl) : '') + + '&debug='+(api.debug?"1":"") + }, opts); + }, + + + ready: function (){ + api.log('FlashAPI.state: ready'); + + flash.ready = api.F; + flash.isReady = true; + flash.patch(); + flash.patchCamera && flash.patchCamera(); + api.event.on(document, 'mouseover', flash.mouseover); + api.event.on(document, 'click', function (evt){ + if( flash.mouseover(evt) ){ + evt.preventDefault + ? evt.preventDefault() + : (evt.returnValue = true) + ; + } + }); + }, + + + getEl: function (){ + return document.getElementById('_'+_attr); + }, + + + getWrapper: function (node){ + do { + if( /js-fileapi-wrapper/.test(node.className) ){ + return node; + } + } + while( (node = node.parentNode) && (node !== document.body) ); + }, + + + mouseover: function (evt){ + var target = api.event.fix(evt).target; + + if( /input/i.test(target.nodeName) && target.type == 'file' && !target.disabled ){ + var + state = target.getAttribute(_attr) + , wrapper = flash.getWrapper(target) + ; + + if( api.multiFlash ){ + // check state: + // p — published + // i — initialization + // r — ready + if( state == 'i' || state == 'r' ){ + // publish fail + return false; + } + else if( state != 'p' ){ + // set "init" state + target.setAttribute(_attr, 'i'); + + var dummy = document.createElement('div'); + + if( !wrapper ){ + api.log('[err] FlashAPI.mouseover: js-fileapi-wrapper not found'); + return; + } + + _css(dummy, { + top: 0 + , left: 0 + , width: target.offsetWidth + , height: target.offsetHeight + , zIndex: 2147483647+'' // set max zIndex + , position: 'absolute' + }); + + wrapper.appendChild(dummy); + flash.publish(dummy, api.uid()); + + // set "publish" state + target.setAttribute(_attr, 'p'); + } + + return true; + } + else if( wrapper ){ + // Use one flash element + var box = _getDimensions(wrapper); + + _css(flash.getEl(), box); + + // Set current input + flash.curInp = target; + } + } + else if( !/object|embed/i.test(target.nodeName) ){ + _css(flash.getEl(), { top: 1, left: 1, width: 5, height: 5 }); + } + }, + + onEvent: function (evt){ + var type = evt.type; + + if( type == 'ready' ){ + try { + // set "ready" state + flash.getInput(evt.flashId).setAttribute(_attr, 'r'); + } catch (e){ + } + + flash.ready(); + setTimeout(function (){ flash.mouseenter(evt); }, 50); + return true; + } + else if( type === 'ping' ){ + api.log('(flash -> js).ping:', [evt.status, evt.savedStatus], evt.error); + } + else if( type === 'log' ){ + api.log('(flash -> js).log:', evt.target); + } + else if( type in flash ){ + setTimeout(function (){ + api.log('FlashAPI.event.'+evt.type+':', evt); + flash[type](evt); + }, 1); + } + }, + + + mouseenter: function (evt){ + var node = flash.getInput(evt.flashId); + + if( node ){ + // Set multiple mode + flash.cmd(evt, 'multiple', node.getAttribute('multiple') != null); + + + // Set files filter + var accept = [], exts = {}; + + _each((node.getAttribute('accept') || '').split(/,\s*/), function (mime){ + api.accept[mime] && _each(api.accept[mime].split(' '), function (ext){ + exts[ext] = 1; + }); + }); + + _each(exts, function (i, ext){ + accept.push( ext ); + }); + + flash.cmd(evt, 'accept', accept.length ? accept.join(',')+','+accept.join(',').toUpperCase() : '*'); + } + }, + + + get: function (id){ + return document[id] || window[id] || document.embeds[id]; + }, + + + getInput: function (id){ + if( api.multiFlash ){ + try { + var node = flash.getWrapper(flash.get(id)); + if( node ){ + return node.getElementsByTagName('input')[0]; + } + } catch (e){ + api.log('[err] Can not find "input" by flashId:', id, e); + } + } else { + return flash.curInp; + } + }, + + + select: function (evt){ + var + inp = flash.getInput(evt.flashId) + , uid = api.uid(inp) + , files = evt.target.files + , event + ; + + _each(files, function (file){ + api.checkFileObj(file); + }); + + _files[uid] = files; + + if( document.createEvent ){ + event = document.createEvent('Event'); + event.files = files; + event.initEvent('change', true, true); + inp.dispatchEvent(event); + } + else if( jQuery ){ + jQuery(inp).trigger({ type: 'change', files: files }); + } + else { + event = document.createEventObject(); + event.files = files; + inp.fireEvent('onchange', event); + } + }, + + + cmd: function (id, name, data, last){ + try { + api.log('(js -> flash).'+name+':', data); + return flash.get(id.flashId || id).cmd(name, data); + } catch (err){ + api.log('(js -> flash).onError:', err.toString()); + if( !last ){ + // try again + setTimeout(function (){ flash.cmd(id, name, data, true); }, 50); + } + } + }, + + + patch: function (){ + api.flashEngine = true; + + // FileAPI + _inherit(api, { + getFiles: function (input, filter, callback){ + if( callback ){ + api.filterFiles(api.getFiles(input), filter, callback); + return null; + } + + var files = api.isArray(input) ? input : _files[api.uid(input.target || input.srcElement || input)]; + + + if( !files ){ + // Файлов нету, вызываем родительский метод + return this.parent.apply(this, arguments); + } + + + if( filter ){ + filter = api.getFilesFilter(filter); + files = api.filter(files, function (file){ return filter.test(file.name); }); + } + + return files; + }, + + + getInfo: function (file, fn){ + if( _isHtmlFile(file) ){ + this.parent.apply(this, arguments); + } + else if( file.isShot ){ + fn(null, file.info = { + width: file.width, + height: file.height + }); + } + else { + if( !file.__info ){ + var defer = file.__info = api.defer(); + + flash.cmd(file, 'getFileInfo', { + id: file.id + , callback: _wrap(function _(err, info){ + _unwrap(_); + defer.resolve(err, file.info = info); + }) + }); + } + + file.__info.then(fn); + } + } + }); + + + // FileAPI.Image + api.support.transform = true; + api.Image && _inherit(api.Image.prototype, { + get: function (fn, scaleMode){ + this.set({ scaleMode: scaleMode || 'noScale' }); // noScale, exactFit + return this.parent(fn); + }, + + _load: function (file, fn){ + api.log('FlashAPI.Image._load:', file); + + if( _isHtmlFile(file) ){ + this.parent.apply(this, arguments); + } + else { + var _this = this; + api.getInfo(file, function (err){ + fn.call(_this, err, file); + }); + } + }, + + _apply: function (file, fn){ + api.log('FlashAPI.Image._apply:', file); + + if( _isHtmlFile(file) ){ + this.parent.apply(this, arguments); + } + else { + var m = this.getMatrix(file.info), doneFn = fn; + + flash.cmd(file, 'imageTransform', { + id: file.id + , matrix: m + , callback: _wrap(function _(err, base64){ + api.log('FlashAPI.Image._apply.callback:', err); + _unwrap(_); + + if( err ){ + doneFn(err); + } + else if( !api.support.html5 && (!api.support.dataURI || base64.length > 3e4) ){ + _makeFlashImage({ + width: (m.deg % 180) ? m.dh : m.dw + , height: (m.deg % 180) ? m.dw : m.dh + , scale: m.scaleMode + }, base64, doneFn); + } + else { + if( m.filter ){ + doneFn = function (err, img){ + if( err ){ + fn(err); + } + else { + api.Image.applyFilter(img, m.filter, function (){ + fn(err, this.canvas); + }); + } + }; + } + + api.newImage('data:'+ file.type +';base64,'+ base64, doneFn); + } + }) + }); + } + }, + + toData: function (fn){ + var + file = this.file + , info = file.info + , matrix = this.getMatrix(info) + ; + api.log('FlashAPI.Image.toData'); + + if( _isHtmlFile(file) ){ + this.parent.apply(this, arguments); + } + else { + if( matrix.deg == 'auto' ){ + matrix.deg = api.Image.exifOrientation[info && info.exif && info.exif.Orientation] || 0; + } + + fn.call(this, !file.info, { + id: file.id + , flashId: file.flashId + , name: file.name + , type: file.type + , matrix: matrix + }); + } + } + }); + + + api.Image && _inherit(api.Image, { + fromDataURL: function (dataURL, size, callback){ + if( !api.support.dataURI || dataURL.length > 3e4 ){ + _makeFlashImage( + api.extend({ scale: 'exactFit' }, size) + , dataURL.replace(/^data:[^,]+,/, '') + , function (err, el){ callback(el); } + ); + } + else { + this.parent(dataURL, size, callback); + } + } + }); + + // FileAPI.Form + _inherit(api.Form.prototype, { + toData: function (fn){ + var items = this.items, i = items.length; + + for( ; i--; ){ + if( items[i].file && _isHtmlFile(items[i].blob) ){ + return this.parent.apply(this, arguments); + } + } + + api.log('FlashAPI.Form.toData'); + fn(items); + } + }); + + + // FileAPI.XHR + _inherit(api.XHR.prototype, { + _send: function (options, formData){ + if( + formData.nodeName + || formData.append && api.support.html5 + || api.isArray(formData) && (typeof formData[0] === 'string') + ){ + // HTML5, Multipart or IFrame + return this.parent.apply(this, arguments); + } + + + var + data = {} + , files = {} + , _this = this + , flashId + , fileId + ; + + _each(formData, function (item){ + if( item.file ){ + files[item.name] = item = _getFileDescr(item.blob); + fileId = item.id; + flashId = item.flashId; + } + else { + data[item.name] = item.blob; + } + }); + + if( !fileId ){ + flashId = _attr; + } + + if( !flashId ){ + api.log('[err] FlashAPI._send: flashId -- undefined'); + return this.parent.apply(this, arguments); + } + else { + api.log('FlashAPI.XHR._send: '+ flashId +' -> '+ fileId); + } + + _this.xhr = { + headers: {}, + abort: function (){ flash.cmd(flashId, 'abort', { id: fileId }); }, + getResponseHeader: function (name){ return this.headers[name]; }, + getAllResponseHeaders: function (){ return this.headers; } + }; + + var queue = api.queue(function (){ + flash.cmd(flashId, 'upload', { + url: _getUrl(options.url.replace(/([a-z]+)=(\?)&?/i, '')) + , data: data + , files: fileId ? files : null + , headers: options.headers || {} + , callback: _wrap(function upload(evt){ + var type = evt.type, result = evt.result; + + api.log('FlashAPI.upload.'+type); + + if( type == 'progress' ){ + evt.loaded = Math.min(evt.loaded, evt.total); // @todo fixme + evt.lengthComputable = true; + options.progress(evt); + } + else if( type == 'complete' ){ + _unwrap(upload); + + if( typeof result == 'string' ){ + _this.responseText = result.replace(/%22/g, "\"").replace(/%5c/g, "\\").replace(/%26/g, "&").replace(/%25/g, "%"); + } + + _this.end(evt.status || 200); + } + else if( type == 'abort' || type == 'error' ){ + _this.end(evt.status || 0, evt.message); + _unwrap(upload); + } + }) + }); + }); + + + // #2174: FileReference.load() call while FileReference.upload() or vice versa + _each(files, function (file){ + queue.inc(); + api.getInfo(file, queue.next); + }); + + queue.check(); + } + }); + } + } + ; + + + function _makeFlashHTML(opts){ + return ('' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '').replace(/#(\w+)#/ig, function (a, name){ return opts[name]; }) + ; + } + + + function _css(el, css){ + if( el && el.style ){ + var key, val; + for( key in css ){ + val = css[key]; + if( typeof val == 'number' ){ + val += 'px'; + } + try { el.style[key] = val; } catch (e) {} + } + } + } + + + function _inherit(obj, methods){ + _each(methods, function (fn, name){ + var prev = obj[name]; + obj[name] = function (){ + this.parent = prev; + return fn.apply(this, arguments); + }; + }); + } + + function _isHtmlFile(file){ + return file && !file.flashId; + } + + function _wrap(fn){ + var id = fn.wid = api.uid(); + flash._fn[id] = fn; + return 'FileAPI.Flash._fn.'+id; + } + + + function _unwrap(fn){ + try { + flash._fn[fn.wid] = null; + delete flash._fn[fn.wid]; + } + catch(e){} + } + + + function _getUrl(url, params){ + if( !_rhttp.test(url) ){ + if( /^\.\//.test(url) || '/' != url.charAt(0) ){ + var path = location.pathname; + path = path.substr(0, path.lastIndexOf('/')); + url = (path +'/'+ url).replace('/./', '/'); + } + + if( '//' != url.substr(0, 2) ){ + url = '//' + location.host + url; + } + + if( !_rhttp.test(url) ){ + url = location.protocol + url; + } + } + + if( params ){ + url += (/\?/.test(url) ? '&' : '?') + params; + } + + return url; + } + + + function _makeFlashImage(opts, base64, fn){ + var + key + , flashId = api.uid() + , el = document.createElement('div') + , attempts = 10 + ; + + for( key in opts ){ + el.setAttribute(key, opts[key]); + el[key] = opts[key]; + } + + _css(el, opts); + + opts.width = '100%'; + opts.height = '100%'; + + el.innerHTML = _makeFlashHTML(api.extend({ + id: flashId + , src: _getUrl(api.flashImageUrl, 'r='+ api.uid()) + , wmode: 'opaque' + , flashvars: 'scale='+ opts.scale +'&callback='+_wrap(function _(){ + _unwrap(_); + if( --attempts > 0 ){ + _setImage(); + } + return true; + }) + }, opts)); + + function _setImage(){ + try { + // Get flash-object by id + var img = flash.get(flashId); + img.setImage(base64); + } catch (e){ + api.log('[err] FlashAPI.Preview.setImage -- can not set "base64":', e); + } + } + + fn(false, el); + el = null; + } + + + function _getFileDescr(file){ + return { + id: file.id + , name: file.name + , matrix: file.matrix + , flashId: file.flashId + }; + } + + + function _getDimensions(el){ + var + box = el.getBoundingClientRect() + , body = document.body + , docEl = (el && el.ownerDocument).documentElement + ; + + return { + top: box.top + (window.pageYOffset || docEl.scrollTop) - (docEl.clientTop || body.clientTop || 0) + , left: box.left + (window.pageXOffset || docEl.scrollLeft) - (docEl.clientLeft || body.clientLeft || 0) + , width: box.right - box.left + , height: box.bottom - box.top + }; + } + + // @export + api.Flash = flash; + + + // Check dataURI support + api.newImage('data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==', function (err, img){ + api.support.dataURI = !(img.width != 1 || img.height != 1); + flash.init(); + }); + })(); +})(window, window.jQuery, FileAPI); + +/** + * FileAPI fallback to Flash + * + * @flash-developer "Vladimir Demidov" + */ + +/*global window, FileAPI */ +(function (window, jQuery, api) { + "use strict"; + + var _each = api.each, + _cameraQueue = []; + + if (api.support.flash && (api.media && (!api.support.media || !api.html5))) { + (function () { + function _wrap(fn) { + var id = fn.wid = api.uid(); + api.Flash._fn[id] = fn; + return 'FileAPI.Flash._fn.' + id; + } + + + function _unwrap(fn) { + try { + api.Flash._fn[fn.wid] = null; + delete api.Flash._fn[fn.wid]; + } catch (e) { + } + } + + var flash = api.Flash; + api.extend(api.Flash, { + + patchCamera: function () { + api.Camera.fallback = function (el, options, callback) { + var camId = api.uid(); + api.log('FlashAPI.Camera.publish: ' + camId); + flash.publish(el, camId, api.extend(options, { + camera: true, + onEvent: _wrap(function _(evt) { + if (evt.type === 'camera') { + _unwrap(_); + + if (evt.error) { + api.log('FlashAPI.Camera.publish.error: ' + evt.error); + callback(evt.error); + } else { + api.log('FlashAPI.Camera.publish.success: ' + camId); + callback(null); + } + } + }) + })); + }; + // Run + _each(_cameraQueue, function (args) { + api.Camera.fallback.apply(api.Camera, args); + }); + _cameraQueue = []; + + + // FileAPI.Camera:proto + api.extend(api.Camera.prototype, { + _id: function () { + return this.video.id; + }, + + start: function (callback) { + var _this = this; + flash.cmd(this._id(), 'camera.on', { + callback: _wrap(function _(evt) { + _unwrap(_); + + if (evt.error) { + api.log('FlashAPI.camera.on.error: ' + evt.error); + callback(evt.error, _this); + } else { + api.log('FlashAPI.camera.on.success: ' + _this._id()); + _this._active = true; + callback(null, _this); + } + }) + }); + }, + + stop: function () { + this._active = false; + flash.cmd(this._id(), 'camera.off'); + }, + + shot: function () { + api.log('FlashAPI.Camera.shot:', this._id()); + + var shot = api.Flash.cmd(this._id(), 'shot', {}); + shot.type = 'image/png'; + shot.flashId = this._id(); + shot.isShot = true; + + return new api.Camera.Shot(shot); + } + }); + } + }); + + api.Camera.fallback = function () { + _cameraQueue.push(arguments); + }; + + }()); + } +}(window, window.jQuery, FileAPI)); +if( typeof define === "function" && define.amd ){ define("FileAPI", [], function (){ return FileAPI; }); } \ No newline at end of file diff --git a/assets/js/fileapi/FileAPI/FileAPI.min.js b/assets/js/fileapi/FileAPI/FileAPI.min.js new file mode 100755 index 0000000000..01020adec0 --- /dev/null +++ b/assets/js/fileapi/FileAPI/FileAPI.min.js @@ -0,0 +1,3 @@ +/*! FileAPI 2.0.19 - BSD | git://github.com/mailru/FileAPI.git */ +!function(a){"use strict";var b=a.HTMLCanvasElement&&a.HTMLCanvasElement.prototype,c=a.Blob&&function(){try{return Boolean(new Blob)}catch(a){return!1}}(),d=c&&a.Uint8Array&&function(){try{return 100===new Blob([new Uint8Array(100)]).size}catch(a){return!1}}(),e=a.BlobBuilder||a.WebKitBlobBuilder||a.MozBlobBuilder||a.MSBlobBuilder,f=(c||e)&&a.atob&&a.ArrayBuffer&&a.Uint8Array&&function(a){var b,f,g,h,i,j;for(b=a.split(",")[0].indexOf("base64")>=0?atob(a.split(",")[1]):decodeURIComponent(a.split(",")[1]),f=new ArrayBuffer(b.length),g=new Uint8Array(f),h=0;h0,H=a.dataURLtoBlob,I=/img/i,J=/canvas/i,K=/img|canvas/i,L=/input/i,M=/^data:[^,]+,/,N={}.toString,O=a.Math,P=function(b){return b=new a.Number(O.pow(1024,b)),b.from=function(a){return O.round(a*this)},b},Q={},R=[],S="abort progress error load loadend",T="status statusText readyState response responseXML responseText responseBody".split(" "),U="currentTarget",V="preventDefault",W=function(a){return a&&"length"in a},X=function(a,b,c){if(a)if(W(a))for(var d=0,e=a.length;e>d;d++)d in a&&b.call(c,a[d],d,a);else for(var f in a)a.hasOwnProperty(f)&&b.call(c,a[f],f,a)},Y=function(a){for(var b=arguments,c=1,d=function(b,c){a[c]=b};c=c&&!d&&f.end()},isFail:function(){return d},fail:function(){!d&&a(d=!0)},end:function(){e||(e=!0,a())}};return f},each:X,afor:function(a,b){var c=0,d=a.length;W(a)&&d--?!function e(){b(d!=c&&e,a[c],c++)}():b(!1)},extend:Y,isFile:function(a){return"[object File]"===N.call(a)},isBlob:function(a){return this.isFile(a)||"[object Blob]"===N.call(a)},isCanvas:function(a){return a&&J.test(a.nodeName)},getFilesFilter:function(a){return a="string"==typeof a?a:a.getAttribute&&a.getAttribute("accept")||"",a?new RegExp("("+a.replace(/\./g,"\\.").replace(/,/g,"|")+")$","i"):/./},readAsDataURL:function(a,b){ca.isCanvas(a)?c(a,b,"load",ca.toDataURL(a)):e(a,b,"DataURL")},readAsBinaryString:function(a,b){d("BinaryString")?e(a,b,"BinaryString"):e(a,function(a){if("load"==a.type)try{a.result=ca.toBinaryString(a.result)}catch(c){a.type="error",a.message=c.toString()}b(a)},"DataURL")},readAsArrayBuffer:function(a,b){e(a,b,"ArrayBuffer")},readAsText:function(a,b,c){c||(c=b,b="utf-8"),e(a,c,"Text",b)},toDataURL:function(a,b){return"string"==typeof a?a:a.toDataURL?a.toDataURL(b||"image/png"):void 0},toBinaryString:function(b){return a.atob(ca.toDataURL(b).replace(M,""))},readAsImage:function(a,d,e){if(ca.isBlob(a))if(w){var f=w.createObjectURL(a);f===b?c(a,d,"error"):ca.readAsImage(f,d,e)}else ca.readAsDataURL(a,function(b){"load"==b.type?ca.readAsImage(b.result,d,e):(e||"error"==b.type)&&c(a,d,b,null,{loaded:b.loaded,total:b.total})});else if(ca.isCanvas(a))c(a,d,"load",a);else if(I.test(a.nodeName))if(a.complete)c(a,d,"load",a);else{var g="error abort load";_(a,g,function i(b){"load"==b.type&&w&&w.revokeObjectURL(a.src),$(a,g,i),c(a,d,b,a)})}else if(a.iframe)c(a,d,{type:"error"});else{var h=ca.newImage(a.dataURL||a);ca.readAsImage(h,d,e)}},checkFileObj:function(a){var b={},c=ca.accept;return"object"==typeof a?b=a:b.name=(a+"").split(/\\|\//g).pop(),null==b.type&&(b.type=b.name.split(".").pop()),X(c,function(a,c){a=new RegExp(a.replace(/\s/g,"|"),"i"),(a.test(b.type)||ca.ext2mime[b.type])&&(b.type=ca.ext2mime[b.type]||c.split("/")[0]+"/"+b.type)}),b},getDropFiles:function(a,b){var c,d=[],e=[],j=l(a),k=j.files,m=j.items,n=W(m)&&m[0]&&h(m[0]),o=ca.queue(function(){b(d,e)});if(n)if(G&&k){var p,q,r=k.length;for(c=new Array(r);r--;){p=k[r];try{q=h(m[r])}catch(s){ca.log("[err] getDropFiles: ",s),q=null}g(q)&&(q.isDirectory||q.isFile&&p.name==p.name.normalize("NFC"))?c[r]=q:c[r]=p}}else c=m;else c=k;X(c||[],function(a){o.inc();try{n&&g(a)?i(a,function(a,b,c){a?ca.log("[err] getDropFiles:",a):d.push.apply(d,b),e.push.apply(e,c),o.next()}):f(a,function(b,c){b?d.push(a):a.error=c,e.push(a),o.next()})}catch(b){o.next(),ca.log("[err] getDropFiles: ",b)}}),o.check()},getFiles:function(a,b,c){var d=[];return c?(ca.filterFiles(ca.getFiles(a),b,c),null):(a.jquery&&(a.each(function(){d=d.concat(ca.getFiles(this))}),a=d,d=[]),"string"==typeof b&&(b=ca.getFilesFilter(b)),a.originalEvent?a=aa(a.originalEvent):a.srcElement&&(a=aa(a)),a.dataTransfer?a=a.dataTransfer:a.target&&(a=a.target),a.files?(d=a.files,D||(d[0].blob=a,d[0].iframe=!0)):!D&&k(a)?ca.trim(a.value)&&(d=[ca.checkFileObj(a.value)],d[0].blob=a,d[0].iframe=!0):W(a)&&(d=a),ca.filter(d,function(a){return!b||b.test(a.name)}))},getTotalSize:function(a){for(var b=0,c=a&&a.length;c--;)b+=a[c].size;return b},getInfo:function(a,b){var c={},d=R.concat();ca.isBlob(a)?!function e(){var f=d.shift();f?f.test(a.type)?f(a,function(a,d){a?b(a):(Y(c,d),e())}):e():b(!1,c)}():b("not_support_info",c)},addInfoReader:function(a,b){b.test=function(b){return a.test(b)},R.push(b)},filter:function(a,b){for(var c,d=[],e=0,f=a.length;f>e;e++)e in a&&(c=a[e],b.call(c,c,e,a)&&d.push(c));return d},filterFiles:function(a,b,c){if(a.length){var d,e=a.concat(),f=[],g=[];!function h(){e.length?(d=e.shift(),ca.getInfo(d,function(a,c){(b(d,a?!1:c)?f:g).push(d),h()})):c(f,g)}()}else c([],a)},upload:function(a){a=Y({jsonp:"callback",prepare:ca.F,beforeupload:ca.F,upload:ca.F,fileupload:ca.F,fileprogress:ca.F,filecomplete:ca.F,progress:ca.F,complete:ca.F,pause:ca.F,imageOriginal:!0,chunkSize:ca.chunkSize,chunkUploadRetry:ca.chunkUploadRetry,uploadRetry:ca.uploadRetry},a),a.imageAutoOrientation&&!a.imageTransform&&(a.imageTransform={rotate:"auto"});var b,c=new ca.XHR(a),d=this._getFilesDataArray(a.files),e=this,f=0,g=0,h=!1;return X(d,function(a){f+=a.size}),c.files=[],X(d,function(a){c.files.push(a.file)}),c.total=f,c.loaded=0,c.filesLeft=d.length,a.beforeupload(c,a),b=function(){var i=d.shift(),k=i&&i.file,l=!1,m=j(a);if(c.filesLeft=d.length,k&&k.name===ca.expando&&(k=null,ca.log("[warn] FileAPI.upload() — called without files")),("abort"!=c.statusText||c.current)&&i){if(h=!1,c.currentFile=k,k&&a.prepare(k,m)===!1)return void b.call(e);m.file=k,e._getFormData(m,i,function(h){g||a.upload(c,a);var j=new ca.XHR(Y({},m,{upload:k?function(){a.fileupload(k,j,m)}:q,progress:k?function(b){l||(l=b.loaded===b.total,a.fileprogress({type:"progress",total:i.total=b.total,loaded:i.loaded=b.loaded},k,j,m),a.progress({type:"progress",total:f,loaded:c.loaded=g+i.size*(b.loaded/b.total)||0},k,j,m))}:q,complete:function(d){X(T,function(a){c[a]=j[a]}),k&&(i.total=i.total||i.size,i.loaded=i.total,d||(this.progress(i),l=!0,g+=i.size,c.loaded=g),a.filecomplete(d,j,k,m)),setTimeout(function(){b.call(e)},0)}}));c.abort=function(a){a||(d.length=0),this.current=a,j.abort()},j.send(h)})}else{var n=200==c.status||201==c.status||204==c.status;a.complete(n?!1:c.statusText||"error",c,a),h=!0}},setTimeout(b,0),c.append=function(a,g){a=ca._getFilesDataArray([].concat(a)),X(a,function(a){f+=a.size,c.files.push(a.file),g?d.unshift(a):d.push(a)}),c.statusText="",h&&b.call(e)},c.remove=function(a){for(var b,c=d.length;c--;)d[c].file==a&&(b=d.splice(c,1),f-=b.size);return b},c},_getFilesDataArray:function(a){var b=[],c={};if(k(a)){var d=ca.getFiles(a);c[a.name||"file"]=null!==a.getAttribute("multiple")?d:d[0]}else W(a)&&k(a[0])?X(a,function(a){c[a.name||"file"]=ca.getFiles(a)}):c=a;return X(c,function e(a,c){W(a)?X(a,function(a){e(a,c)}):a&&(a.name||a.image)&&b.push({name:c,file:a,size:a.size,total:a.size,loaded:0})}),b.length||b.push({file:{name:ca.expando}}),b},_getFormData:function(a,b,c){var d=b.file,e=b.name,f=d.name,g=d.type,h=ca.support.transform&&a.imageTransform,i=new ca.Form,j=ca.queue(function(){c(i)}),k=h&&m(h),l=ca.postNameConcat;X(a.data,function n(a,b){"object"==typeof a?X(a,function(a,c){n(a,l(b,c))}):i.append(b,a)}),function o(b){b.image?(j.inc(),b.toData(function(a,c){b.file&&(c.type=b.file.type,c.quality=b.matrix.quality,f=b.file&&b.file.name),f=f||(new Date).getTime()+".png",o(c),j.next()})):ca.Image&&h&&(/^image/.test(b.type)||K.test(b.nodeName))?(j.inc(),k&&(h=[h]),ca.Image.transform(b,h,a.imageAutoOrientation,function(c,d){if(k&&!c)H||ca.flashEngine||(i.multipart=!0),i.append(e,d[0],f,h[0].type||g);else{var m=0;c||X(d,function(a,b){H||ca.flashEngine||(i.multipart=!0),h[b].postName||(m=1),i.append(h[b].postName||l(e,b),a,f,h[b].type||g)}),(c||a.imageOriginal)&&i.append(l(e,m?"original":null),b,f,g)}j.next()})):f!==ca.expando&&i.append(e,b,f)}(d),j.check()},reset:function(a,b){var c,d;return C?(d=C(a).clone(!0).insertBefore(a).val("")[0],b||C(a).remove()):(c=a.parentNode,d=c.insertBefore(a.cloneNode(!0),a),d.value="",b||c.removeChild(a),X(Q[ca.uid(a)],function(b,c){X(b,function(b){$(a,c,b),Z(d,c,b)})})),d},load:function(a,b){var c=ca.getXHR();return c?(c.open("GET",a,!0),c.overrideMimeType&&c.overrideMimeType("text/plain; charset=x-user-defined"),Z(c,"progress",function(a){a.lengthComputable&&b({type:a.type,loaded:a.loaded,total:a.total},c)}),c.onreadystatechange=function(){if(4==c.readyState)if(c.onreadystatechange=null,200==c.status){a=a.split("/");var d={name:a[a.length-1],size:c.getResponseHeader("Content-Length"),type:c.getResponseHeader("Content-Type")};d.dataURL="data:"+d.type+";base64,"+ca.encode64(c.responseBody||c.responseText),b({type:"load",result:d},c)}else b({type:"error"},c)},c.send(null)):b({type:"error"}),c},encode64:function(a){var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",c="",d=0;for("string"!=typeof a&&(a=String(a));d>2,k=(3&g)<<4|h>>4;isNaN(h)?e=f=64:(e=(15&h)<<2|i>>6,f=isNaN(i)?64:63&i),c+=b.charAt(j)+b.charAt(k)+b.charAt(e)+b.charAt(f)}return c}};ca.addInfoReader(/^image/,function(a,b){if(!a.__dimensions){var c=a.__dimensions=ca.defer();ca.readAsImage(a,function(a){var b=a.target;c.resolve("load"==a.type?!1:"error",{width:b.width,height:b.height}),b.src=ca.EMPTY_PNG,b=null})}a.__dimensions.then(b)}),ca.event.dnd=function(a,b,c){var d,e;c||(c=b,b=ca.F),z?(Z(a,"dragenter dragleave dragover",b.ff=b.ff||function(a){for(var c=l(a).types,f=c&&c.length,g=!1;f--;)if(~c[f].indexOf("File")){a[V](),e!==a.type&&(e=a.type,"dragleave"!=e&&b.call(a[U],!0,a),g=!0);break}g&&(clearTimeout(d),d=setTimeout(function(){b.call(a[U],"dragleave"!=e,a)},50))}),Z(a,"drop",c.ff=c.ff||function(a){a[V](),e=0,b.call(a[U],!1,a),ca.getDropFiles(a,function(b,d){c.call(a[U],b,d,a)})})):ca.log("Drag'n'Drop -- not supported")},ca.event.dnd.off=function(a,b,c){$(a,"dragenter dragleave dragover",b.ff),$(a,"drop",c.ff)},C&&!C.fn.dnd&&(C.fn.dnd=function(a,b){return this.each(function(){ca.event.dnd(this,a,b)})},C.fn.offdnd=function(a,b){return this.each(function(){ca.event.dnd.off(this,a,b)})}),a.FileAPI=Y(ca,a.FileAPI),ca.log("FileAPI: "+ca.version),ca.log("protocol: "+a.location.protocol),ca.log("doctype: ["+s.name+"] "+s.publicId+" "+s.systemId),X(r.getElementsByTagName("meta"),function(a){/x-ua-compatible/i.test(a.getAttribute("http-equiv"))&&ca.log("meta.http-equiv: "+a.getAttribute("content"))});try{n=!!console.log,o=!!console.log.apply}catch(da){}ca.flashUrl||(ca.flashUrl=ca.staticPath+"FileAPI.flash.swf"),ca.flashImageUrl||(ca.flashImageUrl=ca.staticPath+"FileAPI.flash.image.swf"),ca.flashWebcamUrl||(ca.flashWebcamUrl=ca.staticPath+"FileAPI.flash.camera.swf")}(window,void 0),function(a,b,c){"use strict";function d(b){if(b instanceof d){var c=new d(b.file);return a.extend(c.matrix,b.matrix),c}return this instanceof d?(this.file=b,this.size=b.size||100,void(this.matrix={sx:0,sy:0,sw:0,sh:0,dx:0,dy:0,dw:0,dh:0,resize:0,deg:0,quality:1,filter:0})):new d(b)}var e=Math.min,f=Math.round,g=function(){return b.createElement("canvas")},h=!1,i={8:270,3:180,6:90,7:270,4:180,5:90};try{h=g().toDataURL("image/png").indexOf("data:image/png")>-1}catch(j){}d.prototype={image:!0,constructor:d,set:function(b){return a.extend(this.matrix,b),this},crop:function(a,b,d,e){return d===c&&(d=a,e=b,a=b=0),this.set({sx:a,sy:b,sw:d,sh:e||d})},resize:function(a,b,c){return/min|max|height|width/.test(b)&&(c=b,b=a),this.set({dw:a,dh:b||a,resize:c})},preview:function(a,b){return this.resize(a,b||a,"preview")},rotate:function(a){return this.set({deg:a})},filter:function(a){return this.set({filter:a})},overlay:function(a){return this.set({overlay:a})},clone:function(){return new d(this)},_load:function(b,c){var d=this;/img|video/i.test(b.nodeName)?c.call(d,null,b):a.readAsImage(b,function(a){c.call(d,"load"!=a.type,a.result)})},_apply:function(b,c){var f,h=g(),i=this.getMatrix(b),j=h.getContext("2d"),k=b.videoWidth||b.width,l=b.videoHeight||b.height,m=i.deg,n=i.dw,o=i.dh,p=k,q=l,r=i.filter,s=b,t=i.overlay,u=a.queue(function(){b.src=a.EMPTY_PNG,c(!1,h)}),v=a.renderImageToCanvas;for(m-=360*Math.floor(m/360),b._type=this.file.type;i.multipass&&e(p/n,q/o)>2;)p=p/2+.5|0,q=q/2+.5|0,f=g(),f.width=p,f.height=q,s!==b?(v(f,s,0,0,s.width,s.height,0,0,p,q),s=f):(s=f,v(s,b,i.sx,i.sy,i.sw,i.sh,0,0,p,q),i.sx=i.sy=i.sw=i.sh=0);h.width=m%180?o:n,h.height=m%180?n:o,h.type=i.type,h.quality=i.quality,j.rotate(m*Math.PI/180),v(j.canvas,s,i.sx,i.sy,i.sw||s.width,i.sh||s.height,180==m||270==m?-n:0,90==m||180==m?-o:0,n,o),n=h.width,o=h.height,t&&a.each([].concat(t),function(b){u.inc();var c=new window.Image,d=function(){var e=0|b.x,f=0|b.y,g=b.w||c.width,h=b.h||c.height,i=b.rel;e=1==i||4==i||7==i?(n-g+e)/2:2==i||5==i||8==i?n-(g+e):e,f=3==i||4==i||5==i?(o-h+f)/2:i>=6?o-(h+f):f,a.event.off(c,"error load abort",d);try{j.globalAlpha=b.opacity||1,j.drawImage(c,e,f,g,h)}catch(k){}u.next()};a.event.on(c,"error load abort",d),c.src=b.src,c.complete&&d()}),r&&(u.inc(),d.applyFilter(h,r,u.next)),u.check()},getMatrix:function(b){var c=a.extend({},this.matrix),d=c.sw=c.sw||b.videoWidth||b.naturalWidth||b.width,g=c.sh=c.sh||b.videoHeight||b.naturalHeight||b.height,h=c.dw=c.dw||d,i=c.dh=c.dh||g,j=d/g,k=h/i,l=c.resize;if("preview"==l){if(h!=d||i!=g){var m,n;k>=j?(m=d,n=m/k):(n=g,m=n*k),(m!=d||n!=g)&&(c.sx=~~((d-m)/2),c.sy=~~((g-n)/2),d=m,g=n)}}else"height"==l?h=i*j:"width"==l?i=h/j:l&&(d>h||g>i?"min"==l?(h=f(k>j?e(d,h):i*j),i=f(k>j?h/j:e(g,i))):(h=f(j>=k?e(d,h):i*j),i=f(j>=k?h/j:e(g,i))):(h=d,i=g));return c.sw=d,c.sh=g,c.dw=h,c.dh=i,c.multipass=a.multiPassResize,c},_trans:function(b){this._load(this.file,function(c,d){if(c)b(c);else try{this._apply(d,b)}catch(c){a.log("[err] FileAPI.Image.fn._apply:",c),b(c)}})},get:function(b){if(a.support.transform){var c=this,d=c.matrix;"auto"==d.deg?a.getInfo(c.file,function(a,e){d.deg=i[e&&e.exif&&e.exif.Orientation]||0,c._trans(b)}):c._trans(b)}else b("not_support_transform");return this},toData:function(a){return this.get(a)}},d.exifOrientation=i,d.transform=function(b,e,f,g){function h(h,i){var j={},k=a.queue(function(a){g(a,j)});h?k.fail():a.each(e,function(a,e){if(!k.isFail()){var g=new d(i.nodeType?i:b),h="function"==typeof a;if(h?a(i,g):a.width?g[a.preview?"preview":"resize"](a.width,a.height,a.strategy):a.maxWidth&&(i.width>a.maxWidth||i.height>a.maxHeight)&&g.resize(a.maxWidth,a.maxHeight,"max"),a.crop){var l=a.crop;g.crop(0|l.x,0|l.y,l.w||l.width,l.h||l.height)}a.rotate===c&&f&&(a.rotate="auto"),g.set({type:g.matrix.type||a.type||b.type||"image/png"}),h||g.set({deg:a.rotate,overlay:a.overlay,filter:a.filter,quality:a.quality||1}),k.inc(),g.toData(function(a,b){a?k.fail():(j[e]=b,k.next())})}})}b.width?h(!1,b):a.getInfo(b,h)},a.each(["TOP","CENTER","BOTTOM"],function(b,c){a.each(["LEFT","CENTER","RIGHT"],function(a,e){d[b+"_"+a]=3*c+e,d[a+"_"+b]=3*c+e})}),d.toCanvas=function(a){var c=b.createElement("canvas");return c.width=a.videoWidth||a.width,c.height=a.videoHeight||a.height,c.getContext("2d").drawImage(a,0,0),c},d.fromDataURL=function(b,c,d){var e=a.newImage(b);a.extend(e,c),d(e)},d.applyFilter=function(b,c,e){"function"==typeof c?c(b,e):window.Caman&&window.Caman("IMG"==b.tagName?d.toCanvas(b):b,function(){"string"==typeof c?this[c]():a.each(c,function(a,b){this[b](a)},this),this.render(e)})},a.renderImageToCanvas=function(b,c,d,e,f,g,h,i,j,k){try{return b.getContext("2d").drawImage(c,d,e,f,g,h,i,j,k)}catch(l){throw a.log("renderImageToCanvas failed"),l}},a.support.canvas=a.support.transform=h,a.Image=d}(FileAPI,document),function(a){"use strict";a(FileAPI)}(function(a){"use strict";if(window.navigator&&window.navigator.platform&&/iP(hone|od|ad)/.test(window.navigator.platform)){var b=a.renderImageToCanvas;a.detectSubsampling=function(a){var b,c;return a.width*a.height>1048576?(b=document.createElement("canvas"),b.width=b.height=1,c=b.getContext("2d"),c.drawImage(a,-a.width+1,0),0===c.getImageData(0,0,1,1).data[3]):!1},a.detectVerticalSquash=function(a,b){var c,d,e,f,g,h=a.naturalHeight||a.height,i=document.createElement("canvas"),j=i.getContext("2d");for(b&&(h/=2),i.width=1,i.height=h,j.drawImage(a,0,0),c=j.getImageData(0,0,1,h).data,d=0,e=h,f=h;f>d;)g=c[4*(f-1)+3],0===g?e=f:d=f,f=e+d>>1;return f/h||1},a.renderImageToCanvas=function(c,d,e,f,g,h,i,j,k,l){if("image/jpeg"===d._type){var m,n,o,p,q=c.getContext("2d"),r=document.createElement("canvas"),s=1024,t=r.getContext("2d");if(r.width=s,r.height=s,q.save(),m=a.detectSubsampling(d),m&&(e/=2,f/=2,g/=2,h/=2),n=a.detectVerticalSquash(d,m),m||1!==n){for(f*=n,k=Math.ceil(s*k/g),l=Math.ceil(s*l/h/n),j=0,p=0;h>p;){for(i=0,o=0;g>o;)t.clearRect(0,0,s,s),t.drawImage(d,e,f,g,h,-o,-p,g,h),q.drawImage(r,0,0,s,s,i,j,k,l),o+=s,i+=k;p+=s,j+=l}return q.restore(),c}}return b(c,d,e,f,g,h,i,j,k,l)}}}),function(a,b){"use strict";function c(b,c,d){var e=b.blob,f=b.file;if(f){if(!e.toDataURL)return void a.readAsBinaryString(e,function(a){"load"==a.type&&c(b,a.result)});var g={"image/jpeg":".jpe?g","image/png":".png"},h=g[b.type]?b.type:"image/png",i=g[h]||".png",j=e.quality||1;f.match(new RegExp(i+"$","i"))||(f+=i.replace("?","")),b.file=f,b.type=h,!d&&e.toBlob?e.toBlob(function(a){c(b,a)},h,j):c(b,a.toBinaryString(e.toDataURL(h,j)))}else c(b,e)}var d=b.document,e=b.FormData,f=function(){this.items=[]},g=b.encodeURIComponent;f.prototype={append:function(a,b,c,d){this.items.push({name:a,blob:b&&b.blob||(void 0==b?"":b),file:b&&(c||b.name),type:b&&(d||b.type)})},each:function(a){for(var b=0,c=this.items.length;c>b;b++)a.call(this,this.items[b])},toData:function(b,c){c._chunked=a.support.chunked&&c.chunkSize>0&&1==a.filter(this.items,function(a){return a.file}).length,a.support.html5?a.formData&&!this.multipart&&e?c._chunked?(a.log("FileAPI.Form.toPlainData"),this.toPlainData(b)):(a.log("FileAPI.Form.toFormData"),this.toFormData(b)):(a.log("FileAPI.Form.toMultipartData"),this.toMultipartData(b)):(a.log("FileAPI.Form.toHtmlData"),this.toHtmlData(b))},_to:function(b,c,d,e){var f=a.queue(function(){c(b)});this.each(function(g){try{d(g,b,f,e)}catch(h){a.log("FileAPI.Form._to: "+h.message),c(h)}}),f.check()},toHtmlData:function(b){this._to(d.createDocumentFragment(),b,function(b,c){var e,f=b.blob;b.file?(a.reset(f,!0),f.name=b.name,f.disabled=!1,c.appendChild(f)):(e=d.createElement("input"),e.name=b.name,e.type="hidden",e.value=f,c.appendChild(e))})},toPlainData:function(a){this._to({},a,function(a,b,d){a.file&&(b.type=a.file),a.blob.toBlob?(d.inc(),c(a,function(a,c){b.name=a.name,b.file=c,b.size=c.length,b.type=a.type,d.next()})):a.file?(b.name=a.blob.name,b.file=a.blob,b.size=a.blob.size,b.type=a.type):(b.params||(b.params=[]),b.params.push(g(a.name)+"="+g(a.blob))),b.start=-1,b.end=b.file&&b.file.FileAPIReadPosition||-1,b.retry=0})},toFormData:function(a){this._to(new e,a,function(a,b,d){a.blob&&a.blob.toBlob?(d.inc(),c(a,function(a,c){b.append(a.name,c,a.file),d.next()})):a.file?b.append(a.name,a.blob,a.file):b.append(a.name,a.blob),a.file&&b.append("_"+a.name,a.file)})},toMultipartData:function(b){this._to([],b,function(a,b,d,e){d.inc(),c(a,function(a,c){b.push("--_"+e+('\r\nContent-Disposition: form-data; name="'+a.name+'"'+(a.file?'; filename="'+g(a.file)+'"':"")+(a.file?"\r\nContent-Type: "+(a.type||"application/octet-stream"):"")+"\r\n\r\n"+(a.file?c:g(c))+"\r\n")),d.next()},!0)},a.expando)}},a.Form=f}(FileAPI,window),function(a,b){"use strict";var c=function(){},d=a.document,e=function(a){this.uid=b.uid(),this.xhr={abort:c,getResponseHeader:c,getAllResponseHeaders:c},this.options=a},f={"":1,XML:1,Text:1,Body:1};e.prototype={status:0,statusText:"",constructor:e,getResponseHeader:function(a){return this.xhr.getResponseHeader(a)},getAllResponseHeaders:function(){return this.xhr.getAllResponseHeaders()||{}},end:function(d,e){var f=this,g=f.options;f.end=f.abort=c,f.status=d,e&&(f.statusText=e),b.log("xhr.end:",d,e),g.complete(200==d||201==d?!1:f.statusText||"unknown",f),f.xhr&&f.xhr.node&&setTimeout(function(){var b=f.xhr.node;try{b.parentNode.removeChild(b)}catch(c){}try{delete a[f.uid]}catch(c){}a[f.uid]=f.xhr.node=null},9)},abort:function(){this.end(0,"abort"),this.xhr&&(this.xhr.aborted=!0,this.xhr.abort())},send:function(a){var b=this,c=this.options;a.toData(function(a){a instanceof Error?b.end(0,a.message):(c.upload(c,b),b._send.call(b,c,a))},c)},_send:function(c,e){var g,h=this,i=h.uid,j=h.uid+"Load",k=c.url;if(b.log("XHR._send:",e),c.cache||(k+=(~k.indexOf("?")?"&":"?")+b.uid()),e.nodeName){var l=c.jsonp;k=k.replace(/([a-z]+)=(\?)/i,"$1="+i),c.upload(c,h);var m=function(a){if(~k.indexOf(a.origin))try{var c=b.parseJSON(a.data);c.id==i&&n(c.status,c.statusText,c.response)}catch(d){n(0,d.message)}},n=a[i]=function(c,d,e){h.readyState=4,h.responseText=e,h.end(c,d),b.event.off(a,"message",m),a[i]=g=p=a[j]=null};h.xhr.abort=function(){try{p.stop?p.stop():p.contentWindow.stop?p.contentWindow.stop():p.contentWindow.document.execCommand("Stop")}catch(a){}n(0,"abort")},b.event.on(a,"message",m),a[j]=function(){try{var a=p.contentWindow,c=a.document,d=a.result||b.parseJSON(c.body.innerHTML);n(d.status,d.statusText,d.response)}catch(e){b.log("[transport.onload]",e)}},g=d.createElement("div"),g.innerHTML='
                    '+(l&&c.url.indexOf("=?")<0?'':"")+"
                    ";var o=g.getElementsByTagName("form")[0],p=g.getElementsByTagName("iframe")[0];o.appendChild(e),b.log(o.parentNode.innerHTML),d.body.appendChild(g),h.xhr.node=g,h.readyState=2;try{o.submit()}catch(q){b.log("iframe.error: "+q)}o=null}else{if(k=k.replace(/([a-z]+)=(\?)&?/i,""),this.xhr&&this.xhr.aborted)return void b.log("Error: already aborted");if(g=h.xhr=b.getXHR(),e.params&&(k+=(k.indexOf("?")<0?"?":"&")+e.params.join("&")),g.open("POST",k,!0),b.withCredentials&&(g.withCredentials="true"),c.headers&&c.headers["X-Requested-With"]||g.setRequestHeader("X-Requested-With","XMLHttpRequest"),b.each(c.headers,function(a,b){g.setRequestHeader(b,a)}),c._chunked){g.upload&&g.upload.addEventListener("progress",b.throttle(function(a){e.retry||c.progress({type:a.type,total:e.size,loaded:e.start+a.loaded,totalSize:e.size},h,c)},100),!1),g.onreadystatechange=function(){var a=parseInt(g.getResponseHeader("X-Last-Known-Byte"),10);if(h.status=g.status,h.statusText=g.statusText,h.readyState=g.readyState,4==g.readyState){for(var d in f)h["response"+d]=g["response"+d];if(g.onreadystatechange=null,!g.status||g.status-201>0)if(b.log("Error: "+g.status),(!g.status&&!g.aborted||500==g.status||416==g.status)&&++e.retry<=c.chunkUploadRetry){var i=g.status?0:b.chunkNetworkDownRetryTimeout;c.pause(e.file,c),b.log("X-Last-Known-Byte: "+a),a?e.end=a:(e.end=e.start-1,416==g.status&&(e.end=e.end-c.chunkSize)),setTimeout(function(){h._send(c,e)},i)}else h.end(g.status);else e.retry=0,e.end==e.size-1?h.end(g.status):(b.log("X-Last-Known-Byte: "+a),a&&(e.end=a),e.file.FileAPIReadPosition=e.end,setTimeout(function(){h._send(c,e)},0));g=null}},e.start=e.end+1,e.end=Math.max(Math.min(e.start+c.chunkSize,e.size)-1,e.start);var r=e.file,s=(r.slice||r.mozSlice||r.webkitSlice).call(r,e.start,e.end+1);e.size&&!s.size?setTimeout(function(){h.end(-1)}):(g.setRequestHeader("Content-Range","bytes "+e.start+"-"+e.end+"/"+e.size),g.setRequestHeader("Content-Disposition","attachment; filename="+encodeURIComponent(e.name)),g.setRequestHeader("Content-Type",e.type||"application/octet-stream"),g.send(s)),r=s=null}else if(g.upload&&g.upload.addEventListener("progress",b.throttle(function(a){c.progress(a,h,c)},100),!1),g.onreadystatechange=function(){if(h.status=g.status,h.statusText=g.statusText,h.readyState=g.readyState,4==g.readyState){for(var a in f)h["response"+a]=g["response"+a];if(g.onreadystatechange=null,!g.status||g.status>201)if(b.log("Error: "+g.status),(!g.status&&!g.aborted||500==g.status)&&(c.retry||0)=0?a+"px":a}function d(a){var c,d=f.createElement("canvas"),e=!1;try{c=d.getContext("2d"),c.drawImage(a,0,0,1,1),e=255!=c.getImageData(0,0,1,1).data[4]}catch(g){b.log("[FileAPI.Camera] detectVideoSignal:",g)}return e}var e=a.URL||a.webkitURL,f=a.document,g=a.navigator,h=g.getUserMedia||g.webkitGetUserMedia||g.mozGetUserMedia||g.msGetUserMedia,i=!!h;b.support.media=i;var j=function(a){this.video=a};j.prototype={isActive:function(){return!!this._active},start:function(a){var b,c,f=this,i=f.video,j=function(d){f._active=!d,clearTimeout(c),clearTimeout(b),a&&a(d,f)};h.call(g,{video:!0},function(a){f.stream=a,i.src=e.createObjectURL(a),b=setInterval(function(){d(i)&&j(null)},1e3),c=setTimeout(function(){j("timeout"); +},5e3),i.play()},j)},stop:function(){try{this._active=!1,this.video.pause();try{this.stream.stop()}catch(a){b.each(this.stream.getTracks(),function(a){a.stop()})}this.stream=null}catch(a){b.log("[FileAPI.Camera] stop:",a)}},shot:function(){return new k(this.video)}},j.get=function(a){return new j(a.firstChild)},j.publish=function(d,e,g){"function"==typeof e&&(g=e,e={}),e=b.extend({},{width:"100%",height:"100%",start:!0},e),d.jquery&&(d=d[0]);var h=function(a){if(a)g(a);else{var b=j.get(d);e.start?b.start(g):g(null,b)}};if(d.style.width=c(e.width),d.style.height=c(e.height),b.html5&&i){var k=f.createElement("video");k.style.width=c(e.width),k.style.height=c(e.height),a.jQuery?jQuery(d).empty():d.innerHTML="",d.appendChild(k),h()}else j.fallback(d,e,h)},j.fallback=function(a,b,c){c("not_support_camera")};var k=function(a){var c=a.nodeName?b.Image.toCanvas(a):a,d=b.Image(c);return d.type="image/png",d.width=c.width,d.height=c.height,d.size=c.width*c.height*4,d};j.Shot=k,b.Camera=j}(window,FileAPI),function(a,b,c){"use strict";var d=a.document,e=a.location,f=a.navigator,g=c.each;c.support.flash=function(){var b=f.mimeTypes,d=!1;if(f.plugins&&"object"==typeof f.plugins["Shockwave Flash"])d=f.plugins["Shockwave Flash"].description&&!(b&&b["application/x-shockwave-flash"]&&!b["application/x-shockwave-flash"].enabledPlugin);else try{d=!(!a.ActiveXObject||!new ActiveXObject("ShockwaveFlash.ShockwaveFlash"))}catch(g){c.log("Flash -- does not supported.")}return d&&/^file:/i.test(e)&&c.log("[warn] Flash does not work on `file:` protocol."),d}(),c.support.flash&&(!c.html5||!c.support.html5||c.cors&&!c.support.cors||c.media&&!c.support.media)&&function(){function h(a){return('').replace(/#(\w+)#/gi,function(b,c){return a[c]})}function i(a,b){if(a&&a.style){var c,d;for(c in b){d=b[c],"number"==typeof d&&(d+="px");try{a.style[c]=d}catch(e){}}}}function j(a,b){g(b,function(b,c){var d=a[c];a[c]=function(){return this.parent=d,b.apply(this,arguments)}})}function k(a){return a&&!a.flashId}function l(a){var b=a.wid=c.uid();return v._fn[b]=a,"FileAPI.Flash._fn."+b}function m(a){try{v._fn[a.wid]=null,delete v._fn[a.wid]}catch(b){}}function n(a,b){if(!u.test(a)){if(/^\.\//.test(a)||"/"!=a.charAt(0)){var c=e.pathname;c=c.substr(0,c.lastIndexOf("/")),a=(c+"/"+a).replace("/./","/")}"//"!=a.substr(0,2)&&(a="//"+e.host+a),u.test(a)||(a=e.protocol+a)}return b&&(a+=(/\?/.test(a)?"&":"?")+b),a}function o(a,b,e){function f(){try{var a=v.get(j);a.setImage(b)}catch(d){c.log('[err] FlashAPI.Preview.setImage -- can not set "base64":',d)}}var g,j=c.uid(),k=d.createElement("div"),o=10;for(g in a)k.setAttribute(g,a[g]),k[g]=a[g];i(k,a),a.width="100%",a.height="100%",k.innerHTML=h(c.extend({id:j,src:n(c.flashImageUrl,"r="+c.uid()),wmode:"opaque",flashvars:"scale="+a.scale+"&callback="+l(function p(){return m(p),--o>0&&f(),!0})},a)),e(!1,k),k=null}function p(a){return{id:a.id,name:a.name,matrix:a.matrix,flashId:a.flashId}}function q(b){var c=b.getBoundingClientRect(),e=d.body,f=(b&&b.ownerDocument).documentElement;return{top:c.top+(a.pageYOffset||f.scrollTop)-(f.clientTop||e.clientTop||0),left:c.left+(a.pageXOffset||f.scrollLeft)-(f.clientLeft||e.clientLeft||0),width:c.right-c.left,height:c.bottom-c.top}}var r=c.uid(),s=0,t={},u=/^https?:/i,v={_fn:{},init:function(){var a=d.body&&d.body.firstChild;if(a)do if(1==a.nodeType){c.log("FlashAPI.state: awaiting");var b=d.createElement("div");return b.id="_"+r,i(b,{top:1,right:1,width:5,height:5,position:"absolute",zIndex:"2147483647"}),a.parentNode.insertBefore(b,a),void v.publish(b,r)}while(a=a.nextSibling);10>s&&setTimeout(v.init,50*++s)},publish:function(a,b,d){d=d||{},a.innerHTML=h({id:b,src:n(c.flashUrl,"r="+c.version),wmode:d.camera?"":"transparent",flashvars:"callback="+(d.onEvent||"FileAPI.Flash.onEvent")+"&flashId="+b+"&storeKey="+f.userAgent.match(/\d/gi).join("")+"_"+c.version+(v.isReady||(c.pingUrl?"&ping="+c.pingUrl:""))+"&timeout="+c.flashAbortTimeout+(d.camera?"&useCamera="+n(c.flashWebcamUrl):"")+"&debug="+(c.debug?"1":"")},d)},ready:function(){c.log("FlashAPI.state: ready"),v.ready=c.F,v.isReady=!0,v.patch(),v.patchCamera&&v.patchCamera(),c.event.on(d,"mouseover",v.mouseover),c.event.on(d,"click",function(a){v.mouseover(a)&&(a.preventDefault?a.preventDefault():a.returnValue=!0)})},getEl:function(){return d.getElementById("_"+r)},getWrapper:function(a){do if(/js-fileapi-wrapper/.test(a.className))return a;while((a=a.parentNode)&&a!==d.body)},mouseover:function(a){var b=c.event.fix(a).target;if(/input/i.test(b.nodeName)&&"file"==b.type&&!b.disabled){var e=b.getAttribute(r),f=v.getWrapper(b);if(c.multiFlash){if("i"==e||"r"==e)return!1;if("p"!=e){b.setAttribute(r,"i");var g=d.createElement("div");if(!f)return void c.log("[err] FlashAPI.mouseover: js-fileapi-wrapper not found");i(g,{top:0,left:0,width:b.offsetWidth,height:b.offsetHeight,zIndex:"2147483647",position:"absolute"}),f.appendChild(g),v.publish(g,c.uid()),b.setAttribute(r,"p")}return!0}if(f){var h=q(f);i(v.getEl(),h),v.curInp=b}}else/object|embed/i.test(b.nodeName)||i(v.getEl(),{top:1,left:1,width:5,height:5})},onEvent:function(a){var b=a.type;if("ready"==b){try{v.getInput(a.flashId).setAttribute(r,"r")}catch(d){}return v.ready(),setTimeout(function(){v.mouseenter(a)},50),!0}"ping"===b?c.log("(flash -> js).ping:",[a.status,a.savedStatus],a.error):"log"===b?c.log("(flash -> js).log:",a.target):b in v&&setTimeout(function(){c.log("FlashAPI.event."+a.type+":",a),v[b](a)},1)},mouseenter:function(a){var b=v.getInput(a.flashId);if(b){v.cmd(a,"multiple",null!=b.getAttribute("multiple"));var d=[],e={};g((b.getAttribute("accept")||"").split(/,\s*/),function(a){c.accept[a]&&g(c.accept[a].split(" "),function(a){e[a]=1})}),g(e,function(a,b){d.push(b)}),v.cmd(a,"accept",d.length?d.join(",")+","+d.join(",").toUpperCase():"*")}},get:function(b){return d[b]||a[b]||d.embeds[b]},getInput:function(a){if(!c.multiFlash)return v.curInp;try{var b=v.getWrapper(v.get(a));if(b)return b.getElementsByTagName("input")[0]}catch(d){c.log('[err] Can not find "input" by flashId:',a,d)}},select:function(a){var e,f=v.getInput(a.flashId),h=c.uid(f),i=a.target.files;g(i,function(a){c.checkFileObj(a)}),t[h]=i,d.createEvent?(e=d.createEvent("Event"),e.files=i,e.initEvent("change",!0,!0),f.dispatchEvent(e)):b?b(f).trigger({type:"change",files:i}):(e=d.createEventObject(),e.files=i,f.fireEvent("onchange",e))},cmd:function(a,b,d,e){try{return c.log("(js -> flash)."+b+":",d),v.get(a.flashId||a).cmd(b,d)}catch(f){c.log("(js -> flash).onError:",f.toString()),e||setTimeout(function(){v.cmd(a,b,d,!0)},50)}},patch:function(){c.flashEngine=!0,j(c,{getFiles:function(a,b,d){if(d)return c.filterFiles(c.getFiles(a),b,d),null;var e=c.isArray(a)?a:t[c.uid(a.target||a.srcElement||a)];return e?(b&&(b=c.getFilesFilter(b),e=c.filter(e,function(a){return b.test(a.name)})),e):this.parent.apply(this,arguments)},getInfo:function(a,b){if(k(a))this.parent.apply(this,arguments);else if(a.isShot)b(null,a.info={width:a.width,height:a.height});else{if(!a.__info){var d=a.__info=c.defer();v.cmd(a,"getFileInfo",{id:a.id,callback:l(function e(b,c){m(e),d.resolve(b,a.info=c)})})}a.__info.then(b)}}}),c.support.transform=!0,c.Image&&j(c.Image.prototype,{get:function(a,b){return this.set({scaleMode:b||"noScale"}),this.parent(a)},_load:function(a,b){if(c.log("FlashAPI.Image._load:",a),k(a))this.parent.apply(this,arguments);else{var d=this;c.getInfo(a,function(c){b.call(d,c,a)})}},_apply:function(a,b){if(c.log("FlashAPI.Image._apply:",a),k(a))this.parent.apply(this,arguments);else{var d=this.getMatrix(a.info),e=b;v.cmd(a,"imageTransform",{id:a.id,matrix:d,callback:l(function f(g,h){c.log("FlashAPI.Image._apply.callback:",g),m(f),g?e(g):c.support.html5||c.support.dataURI&&!(h.length>3e4)?(d.filter&&(e=function(a,e){a?b(a):c.Image.applyFilter(e,d.filter,function(){b(a,this.canvas)})}),c.newImage("data:"+a.type+";base64,"+h,e)):o({width:d.deg%180?d.dh:d.dw,height:d.deg%180?d.dw:d.dh,scale:d.scaleMode},h,e)})})}},toData:function(a){var b=this.file,d=b.info,e=this.getMatrix(d);c.log("FlashAPI.Image.toData"),k(b)?this.parent.apply(this,arguments):("auto"==e.deg&&(e.deg=c.Image.exifOrientation[d&&d.exif&&d.exif.Orientation]||0),a.call(this,!b.info,{id:b.id,flashId:b.flashId,name:b.name,type:b.type,matrix:e}))}}),c.Image&&j(c.Image,{fromDataURL:function(a,b,d){!c.support.dataURI||a.length>3e4?o(c.extend({scale:"exactFit"},b),a.replace(/^data:[^,]+,/,""),function(a,b){d(b)}):this.parent(a,b,d)}}),j(c.Form.prototype,{toData:function(a){for(var b=this.items,d=b.length;d--;)if(b[d].file&&k(b[d].blob))return this.parent.apply(this,arguments);c.log("FlashAPI.Form.toData"),a(b)}}),j(c.XHR.prototype,{_send:function(a,b){if(b.nodeName||b.append&&c.support.html5||c.isArray(b)&&"string"==typeof b[0])return this.parent.apply(this,arguments);var d,e,f={},h={},i=this;if(g(b,function(a){a.file?(h[a.name]=a=p(a.blob),e=a.id,d=a.flashId):f[a.name]=a.blob}),e||(d=r),!d)return c.log("[err] FlashAPI._send: flashId -- undefined"),this.parent.apply(this,arguments);c.log("FlashAPI.XHR._send: "+d+" -> "+e),i.xhr={headers:{},abort:function(){v.cmd(d,"abort",{id:e})},getResponseHeader:function(a){return this.headers[a]},getAllResponseHeaders:function(){return this.headers}};var j=c.queue(function(){v.cmd(d,"upload",{url:n(a.url.replace(/([a-z]+)=(\?)&?/i,"")),data:f,files:e?h:null,headers:a.headers||{},callback:l(function b(d){var e=d.type,f=d.result;c.log("FlashAPI.upload."+e),"progress"==e?(d.loaded=Math.min(d.loaded,d.total),d.lengthComputable=!0,a.progress(d)):"complete"==e?(m(b),"string"==typeof f&&(i.responseText=f.replace(/%22/g,'"').replace(/%5c/g,"\\").replace(/%26/g,"&").replace(/%25/g,"%")),i.end(d.status||200)):("abort"==e||"error"==e)&&(i.end(d.status||0,d.message),m(b))})})});g(h,function(a){j.inc(),c.getInfo(a,j.next)}),j.check()}})}};c.Flash=v,c.newImage("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///ywAAAAAAQABAAACAUwAOw==",function(a,b){c.support.dataURI=!(1!=b.width||1!=b.height),v.init()})}()}(window,window.jQuery,FileAPI),function(a,b,c){"use strict";var d=c.each,e=[];!c.support.flash||!c.media||c.support.media&&c.html5||!function(){function a(a){var b=a.wid=c.uid();return c.Flash._fn[b]=a,"FileAPI.Flash._fn."+b}function b(a){try{c.Flash._fn[a.wid]=null,delete c.Flash._fn[a.wid]}catch(b){}}var f=c.Flash;c.extend(c.Flash,{patchCamera:function(){c.Camera.fallback=function(d,e,g){var h=c.uid();c.log("FlashAPI.Camera.publish: "+h),f.publish(d,h,c.extend(e,{camera:!0,onEvent:a(function i(a){"camera"===a.type&&(b(i),a.error?(c.log("FlashAPI.Camera.publish.error: "+a.error),g(a.error)):(c.log("FlashAPI.Camera.publish.success: "+h),g(null)))})}))},d(e,function(a){c.Camera.fallback.apply(c.Camera,a)}),e=[],c.extend(c.Camera.prototype,{_id:function(){return this.video.id},start:function(d){var e=this;f.cmd(this._id(),"camera.on",{callback:a(function g(a){b(g),a.error?(c.log("FlashAPI.camera.on.error: "+a.error),d(a.error,e)):(c.log("FlashAPI.camera.on.success: "+e._id()),e._active=!0,d(null,e))})})},stop:function(){this._active=!1,f.cmd(this._id(),"camera.off")},shot:function(){c.log("FlashAPI.Camera.shot:",this._id());var a=c.Flash.cmd(this._id(),"shot",{});return a.type="image/png",a.flashId=this._id(),a.isShot=!0,new c.Camera.Shot(a)}})}}),c.Camera.fallback=function(){e.push(arguments)}}()}(window,window.jQuery,FileAPI),"function"==typeof define&&define.amd&&define("FileAPI",[],function(){return FileAPI}); \ No newline at end of file diff --git a/assets/js/fileapi/FileAPI/crossdomain.xml.example b/assets/js/fileapi/FileAPI/crossdomain.xml.example new file mode 100755 index 0000000000..32920c4f07 --- /dev/null +++ b/assets/js/fileapi/FileAPI/crossdomain.xml.example @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/js/fileapi/FileAPI/jquery.fileapi.min.js b/assets/js/fileapi/FileAPI/jquery.fileapi.min.js new file mode 100755 index 0000000000..ec7369ec59 --- /dev/null +++ b/assets/js/fileapi/FileAPI/jquery.fileapi.min.js @@ -0,0 +1,2 @@ +/*! fileapi 2.0.1 - BSD | git://github.com/mailru/FileAPI.git */ +(function(e,t){"use strict";var n=e.noop,i=!e.fn.prop,a=i?"attr":"prop",r="data-fileapi",o="data-fileapi-id",s=function(i,a){if(this.$el=i=e(i).on("change.fileapi",e.proxy(this,"_onSelect")),this.el=i[0],this._options={},this.options=a=e.extend({url:0,data:{},accept:0,multiple:!1,paramName:0,dataType:"json",duplicate:!1,chunkSize:0,chunkUploadRetry:3,maxSize:0,maxFiles:0,imageSize:0,sortFn:0,filterFn:0,autoUpload:!1,lang:{B:"bytes",KB:"KB",MB:"MB",GB:"GB",TB:"TB"},sizeFormat:"0.00",imageTransform:0,elements:{ctrl:{upload:'[data-fileapi="ctrl.upload"]',reset:'[data-fileapi="ctrl.reset"]',abort:'[data-fileapi="ctrl.abort"]'},empty:{show:'[data-fileapi="empty.show"]',hide:'[data-fileapi="empty.hide"]'},emptyQueue:{show:'[data-fileapi="emptyQueue.show"]',hide:'[data-fileapi="emptyQueue.hide"]'},active:{show:'[data-fileapi="active.show"]',hide:'[data-fileapi="active.hide"]'},size:'[data-fileapi="size"]',name:'[data-fileapi="name"]',progress:'[data-fileapi="progress"]',file:{tpl:'[data-fileapi="file.tpl"]',progress:'[data-fileapi="file.progress"]',active:{show:'[data-fileapi="active.show"]',hide:'[data-fileapi="active.hide"]'},preview:{el:0,get:0,width:0,height:0,processing:0}},dnd:{el:'[data-fileapi="dnd"]',hover:"dnd_hover"}},onDrop:n,onDropHover:n,onSelect:n,onUpload:n,onProgress:n,onComplete:n,onFileUpload:n,onFileProgress:n,onFileComplete:n},a),!a.url){var o=this.$el.attr("action")||this.$el.find("form").attr("action");o?a.url=o:this._throw("url — is not defined")}this.$files=this.elem("list"),this.itemTplFn=e.fn.fileapi.tpl(e("
                    ").append(this.elem("file.tpl")).html()),t.each(a,function(e,t){this._setOption(t,e)},this),this.$el.on("reset.fileapi",e.proxy(this,"_onReset")).on("submit.fileapi",e.proxy(this,"_onSubmit")).on("upload.fileapi progress.fileapi complete.fileapi",e.proxy(this,"_onUploadEvent")).on("fileupload.fileapi fileprogress.fileapi filecomplete.fileapi",e.proxy(this,"_onFileUploadEvent")).on("click","["+r+"]",e.proxy(this,"_onActionClick"));var s=a.elements.ctrl;s&&(s.reset&&this.$el.on("click.fileapi",s.reset,e.proxy(this,"_onReset")),s.upload&&this.$el.on("click.fileapi",s.upload,e.proxy(this,"_onSubmit"))),this.elem("dnd.el",!0).dnd(e.proxy(this,"_onDropHover"),e.proxy(this,"_onDrop")),this.$progress=this.elem("progress"),this._crop={},this._rotate={},this.files=[],this.uploaded=[],this.clear()};s.prototype={constructor:s,_throw:function(e){throw"jquery.fileapi: "+e},_getFiles:function(e,n){var i=this.options,a=i.maxSize,r=i.filterFn,o=t.getFiles(e),s={all:o,files:[],other:[],duplicate:i.duplicate?[]:this._extractDuplicateFiles(o)},l=i.imageSize,u=this;l||r?t.filterFiles(o,function(e,t){var n=!0;return t&&l&&(n=(!l.minWidth||t.width>=l.minWidth)&&(!l.minHeight||t.height>=l.minHeight)&&(!l.maxWidth||t.height<=l.maxWidth)&&(!l.maxHeight||t.height<=l.maxHeight)),n&&(!a||a>=e.size)&&(!r||r(e,t))},function(e,t){s.files=e,s.other=t,n.call(u,s)}):(t.each(o,function(e){s[!a||a>=e.size?"files":"other"].push(e)}),n.call(u,s))},_extractDuplicateFiles:function(e){for(var t,n=[],i=e.length,a=this.files;i--;)for(t=a.length;t--;)if(this._fileCompare(e[i],a[t])){n.push(e.splice(i,1));break}return n},_fileCompare:function(e,t){return e.size==t.size&&e.name==t.name},_getFormatedSize:function(e){var n=this.options,i="B";return e>=t.TB?e/=t[i="TB"]:e>=t.GB?e/=t[i="GB"]:e>=t.MB?e/=t[i="MB"]:e>=t.KB&&(e/=t[i="KB"]),n.sizeFormat.replace(/^\d+([^\d]+)(\d*)/,function(t,a,r){return e=e.toFixed(r.length),(e+"").replace(".",a)+" "+n.lang[i]})},_onSelect:function(t){this._getFiles(t,e.proxy(function(e){e.all.length&&this.emit("select",e)!==!1&&this.add(e.files)},this))},_onActionClick:function(n){var i=n.currentTarget,a=e.attr(i,r),s=e(i).closest("["+o+"]",this.$el),l=s.attr(o),u=!0;"remove"==a?(s.remove(),this.queue=t.filter(this.queue,function(e){return t.uid(e)!=l}),this.files=t.filter(this.files,function(e){return t.uid(e)!=l}),this._redraw()):/^rotate/.test(a)?this.rotate(l,/ccw/.test(a)?"-=90":"+=90"):u=!1,u&&n.preventDefault()},_onSubmit:function(e){this.upload(),e.preventDefault()},_onReset:function(e){this.clear(),e.preventDefault()},_onDrop:function(e){this._getFiles(e,function(e){this.emit("drop",e)!==!1&&this.add(e.files)})},_onDropHover:function(t,n){if(this.emit("dropHover",{state:t,event:n})!==!1){var i=this.option("elements.dnd.hover");i&&e(n.currentTarget).toggleClass(i,t)}},_getUploadEvent:function(t){var n=this.xhr,i={xhr:n,file:n.currentFile,files:n.files,widget:this};return e.extend(i,t)},_emitUploadEvent:function(e){var t=this._getUploadEvent();this.emit(e+"upload",t)},_emitProgressEvent:function(e,t){var n=this._getUploadEvent(t);this.emit(e+"progress",n)},_emitCompleteEvent:function(t,n){var i=this.xhr,a=this._getUploadEvent({error:n,status:i.status,statusText:i.statusText,result:i.responseText});"json"==this.options.dataType&&(a.result=e.parseJSON(a.result)),this.emit(t+"complete",a)},_onUploadEvent:function(e,t){var n=this,i=this.$progress,a=e.type;if("progress"==a)i.stop().animate({width:100*(t.loaded/t.total)+"%"},300);else if("upload"==a)i.width(0);else{var r=function(){i.dequeue(),n.clear()};this.xhr=null,this.active=!1,i.length?i.queue(r):r()}},_onFileUploadPrepare:function(n,i){var a=t.uid(n),r=this._rotate[a],o=this._crop[a];if(r||o){var s=i.imageTransform=i.imageTransform||{};e.isEmptyObject(s)||parseInt(s.maxWidth||s.minWidth||s.width,10)>0||s.type||s.quality?(s.crop=o,s.rotate=r):t.each(s,function(e){e.crop=o,e.rotate=r})}},_onFileUploadEvent:function(e,n){var i=this,a=e.type.substr(4),o=t.uid(n.file),s=this.fileElem(o),l=this._$fileprogress;if(this.__fileId!==o&&(this.__fileId=o,this._$fileprogress=l=s.find(this.option("elements.file.progress"))),"progress"==a)l.stop().animate({width:100*(n.loaded/n.total)+"%"},300);else if("upload"==a||"complete"==a){var u=function(){var e="elements.file."+a;"upload"==a&&(s.find("["+r+'="remove"]').hide(),l.width(0)),l.dequeue(),s.find(i.option(e+".show")).show(),s.find(i.option(e+".hide")).hide()};l.length?l.queue(u):u(),"complete"==a&&(this.uploaded.push(n.file),delete this._rotate[o])}},_redraw:function(){var n=!!this.active,i=this.files,r=!i.length&&!n,s=!this.queue.length&&!n,l=[],u=0,c=this.$files,f=c.children().length,d=this.option("elements.file.preview");t.each(i,function(n,i){var a=t.uid(n);if(l.push(n.name),u+=n.size,c.length&&!this.fileElem(a).length){var r=this.itemTplFn({$idx:f+i,uid:n.uid,name:n.name,type:n.type,size:n.size,sizeText:this._getFormatedSize(n.size)});c.append(e(r).attr(o,a)),d.el&&this._makeFilePreview(a,n,d)}},this),this.elem("name").text(l.join(", ")),this.elem("size").text(this._getFormatedSize(u)),this.__empty!==r&&(this.__empty=r,this.elem("empty.show").toggle(r),this.elem("empty.hide").toggle(!r)),this.__emptyQueue!==s&&(this.__emptyQueue=r,this.elem("emptyQueue.show").toggle(s),this.elem("emptyQueue.hide").toggle(!s)),this.__active!==n&&(this.__active=n,this.elem("active.show").toggle(n),this.elem("active.hide").toggle(!n),this.$(".js-fileapi-wrapper,:file")[n?"attr":"removeAttr"]("aria-disabled",n)[a]("disabled",n)),this.elem("ctrl.upload").add(this.elem("ctrl.reset"))[r||n?"attr":"removeAttr"]("aria-disabled",r||n)[a]("disabled",r||n)},_makeFilePreview:function(e,n,i,a){var r=this,o=a?r.$(i.el):r.fileElem(e).find(i.el);if(/^image/.test(n.type)){t.log("_makeFilePreview:",e,n);var s=t.Image(n),l=function(){s.get(function(t,a){r._crop[e]||(t?(i.get&&i.get(o,n),r.emit("filePreviewError",{error:t,file:n})):o.html(a))})};i.width&&s.preview(i.width,i.height),i.rotate&&s.rotate(i.rotate),i.processing?i.processing(n,s,l):l()}else i.get&&i.get(o,n)},emit:function(t,n){var i,a=this.options,r=e.Event(t);return r.widget=this,t=e.camelCase("on-"+t.replace(/(file)(upload)/,"$1-$2")),e.isFunction(a[t])&&(i=a[t].call(this.el,r,n)),i!==!1&&this.$el.triggerHandler(r,n)},add:function(e){if(e.length){var n=this.options,i=n.sortFn,a=n.elements.preview;i&&e.sort(i),a&&a.el&&t.each(e,function(e){this._makeFilePreview(t.uid(e),e,a,!0)},this),this.xhr&&this.xhr.append(e),this.queue=this.queue.concat(e),this.files=this.files.concat(e),this.options.autoUpload?this.upload():this._redraw()}},$:function(t,n){return"string"==typeof t&&(t=/^#/.test(t)?t:(n?e(n):this.$el).find(t)),e(t)},elem:function(t,n){var i=this.option("elements."+t);return void 0===i&&n&&(i=this.option("elements."+t.substr(0,t.lastIndexOf(".")))),this.$("string"!=e.type(i)&&e.isEmptyObject(i)?[]:i)},fileElem:function(e){return this.$("["+o+'="'+e+'"]')},option:function(n,i){if(void 0!==i&&e.isPlainObject(i))return t.each(i,function(e,t){this.option(n+"."+t,e)},this),this;var a,r,o=this.options,s=o[n],l=0;if(-1!=n.indexOf("."))for(s=o,n=n.split("."),a=n.length;a>l;l++){if(r=n[l],void 0!==i&&1===a-l){s[r]=i;break}void 0===s[r]&&(s[r]={}),s=s[r]}else void 0!==i&&(o[n]=i);return void 0!==i&&(this._setOption(n,i,this._options[n]),this._options[n]=i),void 0!==i?i:s},_setOption:function(e,t){switch(e){case"accept":case"multiple":case"paramName":"paramName"==e&&(e="name"),t&&this.$(":file")[a](e,t)}},serialize:function(){var t,n={};return this.$el.find(":input").each(function(i,a){(i=a.name)&&!a.disabled&&(a.checked||/select|textarea|input/i.test(a.nodeName)&&/checkbox|radio/i.test(a.type))&&(t=e(a).val(),void 0!==n[i]?(n[i].push||(n[i]=[n[i]]),n[i].push(t)):n[i]=t)}),n},upload:function(){if(!this.active){this.active=!0;var n=this.$el,i=this.options,a={},r={url:i.url,data:e.extend({},this.serialize(),i.data),files:a,chunkSize:0|i.chunkSize,chunkUploadRetry:0|i.chunkUploadRetry,prepare:e.proxy(this,"_onFileUploadPrepare"),imageTransform:i.imageTransform};a[n.find(":file").attr("name")||"files[]"]=this.queue,t.each(["upload","progress","complete"],function(t){r[t]=e.proxy(this,e.camelCase("_emit-"+t+"Event"),""),r["file"+t]=e.proxy(this,e.camelCase("_emit-"+t+"Event"),"file")},this),this.xhr=t.upload(r),this._redraw()}},crop:function(n,i){var a=t.uid(n),r=this.options,o=r.multiple?this.option("elements.file.preview"):r.elements.preview,s=(r.multiple?this.fileElem(a):this.$el).find(o&&o.el);s.length&&t.getInfo(n,e.proxy(function(a,r){if(!a){s.find("div>div").length||s.html(e("
                    ").css(o).css("overflow","hidden")),this.__cropFile!==n&&(this.__cropFile=n,t.Image(n).get(function(t,n){s.find(">div>div").html(e(n).width("100%").height("100%"))},"exactFit"));var l=o.width/i.w,u=o.height/i.h;s.find(">div>div").css({width:Math.round(l*r.width),height:Math.round(u*r.height),marginLeft:-Math.round(l*i.x),marginTop:-Math.round(u*i.y)})}},this)),this._crop[a]=i},rotate:function(e,n){var i="object"==typeof e?t.uid(e):e,a=this.options,r=a.multiple?this.option("elements.file.preview"):a.elements.preview,o=(a.multiple?this.fileElem(i):this.$el).find(r&&r.el),s=this._rotate;/([+-])=/.test(n)?n=s[i]=(s[i]||0)+("+"==RegExp.$1?1:-1)*n.substr(2):s[i]=n,o.css({"-webkit-transform":"rotate("+n+"deg)","-moz-transform":"rotate("+n+"deg)",transform:"rotate("+n+"deg)"})},clear:function(){this.queue=[],this._redraw()},widget:function(){return this},destroy:function(){this.$el.off(".fileapi").removeData("fileapi")}},e.fn.fileapi=function(t,n){var i=this.data("fileapi");if(i){if("widget"===t)return i;if("string"==typeof t){var a,r=i[t];return e.isFunction(r)?a=r.call(i,n,arguments[2]):void 0===r&&(a=this.option(t,n)),void 0===a?this:a}}else this.data("fileapi",new s(this,t));return this},e.fn.fileapi.version="0.1.0",e.fn.fileapi.tpl=function(e){var t=0,n="__b+='";return e.replace(/(?:<|<)%([-=])?([\s\S]+?)%(?:>|>)|$/g,function(i,a,r,o){return n+=e.slice(t,o).replace(/[\r\n"']/g,function(e){return"\\"+e}),r&&(n+=a?"'+\n((__x=("+r+"))==null?'':"+("-"==a?"__esc(__x)":"__x")+")\n+'":"';\n"+r+"\n__b+='"),t=o+i.length,i}),Function("ctx","var __x,__b='',__esc=function(val){return typeof val=='string'?val.replace(/.js', 'bower.json'] + }, + + uglify: { + options: { + banner: '/*! <%= pkg.name %> <%= pkg.version %> - <%= pkg.license %> | <%= pkg.repository.url %> */\n' + }, + dist: { + files: { + '<%= pkg.name %>.min.js': ['<%= pkg.main %>'] + } + } + } + }); + + + // These plugins provide necessary tasks. + grunt.loadNpmTasks('grunt-version'); + grunt.loadNpmTasks('grunt-contrib-jshint'); + grunt.loadNpmTasks('grunt-contrib-uglify'); + + // Load custom QUnit task, based on grunt-contrib-qunit, but support "files" option. + grunt.loadTasks('./tests/grunt-task/'); + + // "npm test" runs these tasks + grunt.registerTask('test', ['jshint', 'qunit']); + + + grunt.registerTask('build', ['version', 'uglify']); + + // Default task. + grunt.registerTask('default', ['test', 'build']); +}; diff --git a/assets/js/fileapi/README.md b/assets/js/fileapi/README.md new file mode 100755 index 0000000000..9f240eb08d --- /dev/null +++ b/assets/js/fileapi/README.md @@ -0,0 +1,556 @@ +# $.fn.fileapi +jQuery plugin for [FileAPI](https://github.com/mailru/FileAPI/) (multiupload, image upload, crop, resize and etc.) + + +## Install +```html + + + + + + +``` + +--- + + +## Example +```html +
                    +
                    + +
                    +
                    +
                    +
                    +
                    + +``` + + +--- + + +## Options + +### url`:String` +URL to which the request is sent.
                    +If `undefined` or empty, it is set to the action property of the file upload form if available. + + +### autoUpload`:Boolean` +To enable automatic uploads, set this option to `true`. + + +### data`:Object` +Additional form data to be sent along with the file uploads can be set using this option. + + +### headers`:Object` +Additional request headers. + + +### multiple`:Boolean` +It specifies that multiple files can be selected at once, default `true`. + + +### accept`:String` +If the value of the type attribute is file, this attribute indicates the types of files that the server accepts; +otherwise it is ignored. The value must be a comma-separated list of unique content type specifiers: `image/*`, `audio/*`, `video/*`, etc. + + +### duplicate`:Boolean` +The ability to upload duplicates, default `false`. + + +### paramName`:String` +The parameter name for the file form data (the request argument name).
                    +If `undefined` or empty, the name property of the file input field is used, or `files[]` if the file input name property is also empty. + + +### dataType`:String` +The type of data that is expected back from the server, default `json`. + + +### chunkSize`:Number` +Chunk size in bytes, eg: `.5 * FileAPI.MB`. + + +### chunkUploadRetry`:Number` +Number of retries during upload chunks. + + +### maxSize`:Number` +The maximum allowed file size in bytes, by default unlimited. + + +### maxFiles`:Number` +This option limits the number of files that are allowed to be uploaded using this plugin. + + +### imageSize`:Object` +Allowable size of uploaded images, eg: `{ minWidth: 320, minHeight: 240, maxWidth: 3840, maxHeight: 2160 }`. + + +### sortFn`:Function` +Sort function of selected files. + + +### filterFn`:Function` +Filter function of selected files, eg: `function (file, info){ return /^image/.test(file.type) && info.width > 320 }`. + + +### imageTransform`:Object` +Rules of changes the original image on the client (see [details](https://github.com/mailru/FileAPI#imagetransformobject)). +```js +imageTransform: { + // resize by max side + maxWidth: 800, + maxHeight: 600 +} +``` + + +### imageOriginal`:Boolean` +Sent to the server the original image or not, if defined imageTransform option. + + +### elements`:Object` +```js +// Default options +elements: { + // Controls + ctrl: { + upload: '[data-fileapi="ctrl.upload"]', + reset: '[data-fileapi="ctrl.reset"]', + abort: '[data-fileapi="ctrl.abort"]' + }, + // Display element depending on files + empty: { + show: '[data-fileapi="empty.show"]', + hide: '[data-fileapi="empty.hide"]' + }, + // Display element depending on queue state + emptyQueue: { + show: '[data-fileapi="emptyQueue.show"]', + hide: '[data-fileapi="emptyQueue.hide"]' + }, + // Display element depending on upload state + active: { + show: '[data-fileapi="active.show"]', + hide: '[data-fileapi="active.hide"]' + }, + // Preview file (single upload) + preview: { + el: 0, // css selector + width: 0, + height: 0, + keepAspectRatio: false // optional: false to stretch cropped image to preview area, true scale image proportionally + }, + // Total size of queue + size: '[data-fileapi="size"]', + // Selected file name + name: '[data-fileapi="name"]', + // Progress bar total + progress: '[data-fileapi="progress"]', + // Filelist options + file: { + // Template + tpl: '[data-fileapi="file.tpl"]', + // Progress bar + progress: '[data-fileapi="file.progress"]', + // Display element depending on upload state + active: { + show: '[data-fileapi="active.show"]', + hide: '[data-fileapi="active.hide"]' + }, + // Preview file or icon + preview: { + el: 0, // css selector + get: 0, // eg: function($el, file){ $el.append(''); } + width: 0, + height: 0, + keepAspectRatio: false // optional: false to stretch cropped image to preview area, true scale image proportionally + } + }, + // Drag and drop + dnd: { + // DropZone: selector or element + el: '[data-fileapi="dnd"]', + // Hover class + hover: 'dnd_hover' + } +} +``` + +--- + +## Events +### onSelect`:Function`(evt`:$.Event`, data`:FilesObject`) +Retrieve file List, takes two arguments. + +```js +$('...').fileapi({ + onSelect: function (evt, data){ + data.all; // All files + data.files; // Correct files + if( data.other.length ){ + // errors + var errors = data.other[0].errors; + if( errors ){ + errors.maxSize; // File size exceeds the maximum size `@see maxSize` + errors.maxFiles; // Number of files selected exceeds the maximum `@see maxFiles` + errors.minWidth; // Width of the image is smaller than the specified `@see imageSize` + errors.minHeight; + errors.maxWidth; // Width of the image greater than the specified `@see imageSize` + errors.maxHeight; + } + } + } +}); +``` + +### onBeforeUpload`:Function`(evt`:$.Event`, uiEvt`:Object`) +Before start uploading. +```js +function (evt, uiEvt){ + var files = uiEvt.files; + var widget = uiEvt.widget; + if (files.length > 1000) { + return false; // prevent uploading + } +} +``` + +### onUpload`:Function`(evt`:$.Event`, uiEvt`:Object`) +Start uploading. +```js +function (evt, uiEvt){ + // Base properties + var file = uiEvt.file; + var files = uiEvt.files; + var widget = uiEvt.widget; + var xhr = uiEvt.xhr; +} +``` + +### onFilePrepare`:Function`(evt`:$.Event`, uiEvt`:Object`) +Preparation of data before uploading. + +```js +function (evt, uiEvt){ + var file = uiEvt.file; + uiEvt.options.data.fileType = file.type; +} +``` + +### onFileUpload`:Function`(evt`:$.Event`, uiEvt`:Object`) +Start upload the same file. + +### onProgress`:Function`(evt`:$.Event`, uiEvt`:Object`) +Common uploading progress. +```js +function (evt, uiEvt){ + var part = uiEvt.loaded / uiEvt.total; +} +``` + +### onFileProgress`:Function`(evt`:$.Event`, uiEvt`:Object`) +Progress upload the same file. +```js +function (evt, uiEvt){ + var file = uiEvt.file; + var part = uiEvt.loaded / uiEvt.total; +} +``` + +### onComplete`:Function`(evt`:$.Event`, uiEvt`:Object`) +Completion of the entire uploading. + +### onFileComplete`:Function`(evt`:$.Event`, uiEvt`:Object`) +Completion of uploading the file. +```js +function (evt, uiEvt){ + var error = uiEvt.error; + var result = uiEvt.result; // server response +} +``` + +### onDrop`:Function`(evt`:$.Event`, data`:FilesObject`) +Retrieve file List, takes two arguments. + +### onDropHover`:Function`(evt`:$.Event`, uiEvt`:Object`) +```js +$('#box').fileapi({ + onDropHover: function (evt, uiEvt){ + $(this).toggleClass('dnd_hover', uiEvt.state); + } +}); +``` + +### onFileRemove(evt`:$.Event`, file`:File`) +Removing a file from the queue +```js +function (evt, file){ + if( !confirm('Remove "'+file.name+'"?') ){ + return false; + } +} +``` + +### onFileRemoveCompleted(evt`:$.Event`, file`:File`) +Removing a file from the queue +```js +function (evt, file){ + // Send ajax-request + $.post('/remove-ctrl.php', { uid: FileAPI.uid(file) }); +} +``` + + +## Cropper +Based on [Jсrop](http://deepliquid.com/content/Jcrop.html). + +```html + + + + + + +``` + +Usage: +```js +$('#userpic').fileapi({ + url: '...', + accept: 'image/*', + onSelect: function (imageFile){ + $('#userpic-upload-btn') + .unbind('.fileapi') + .bind('click.fileapi', function (){ + $('#userpic').fileapi('upload'); + }) + ; + + $('#image-preview').cropper({ + file: imageFile + , bgColor: '#fff' + , maxSize: [320, 240] // viewport max size + , minSize: [100, 100] // crop min size + , aspectRatio: 1 // optional, aspect ratio: 0 - disable, >0 - fixed, remove this option: autocalculation from minSize + , onSelect: function (coords){ + $('#userpic').fileapi('crop', imageFile, coords); + } + }); + } +}); +``` + +--- + + +## Customization + +```js +$('#upload').fileapi({ + multiple: true, + + // Restores the list of files uploaded earlier *** IE < 9 — NOT SUPPORTED *** + files: [{ + src: "http://path/to/filename.png", + type: "image/png", + name: "filename.png", + size: 31409, + data: { id: 999, token: "..." } + }], + + // Remove a file from the upload queue + onFileRemove: function (evt, file){ + if( !confirm("Are you sure?") ){ + // Cancel remove + evt.preventDefault(); + } + }, + + onFileComplete: function (evt, uiEvt){ + var file = uiEvt.file; + var json = uiEvt.result; + + file.data = { + id: json.id, + token: json.token + }; + }, + + onFileRemoveCompleted: function (evt, file){ + evt.preventDefault(); + + file.$el + .attr('disabled', true) + .addClass('my_disabled') + ; + + new ModalConfirm('Delete "'+file.name+'"?') + .then(function (){ + $.post('/api/remove', file.data); + + $('#upload').fileapi("remove", file); + // or so + evt.widget.remove(file); + }, function (){ + file.$el + .attr('disabled', false) + .removeClass('my_disabled') + ; + }) + ; + } + +}) +``` + + +--- + +## Using with Bootstrap + +You can use this uploader with Bootstrap framework without writing much additional CSS. Just add the following CSS to your page to hide the browser's "browse" button: + +```css +#id-of-uploader .btn { + cursor: pointer; + display: inline-block; + position: relative; + overflow: hidden; +} + +#id-of-uploader .btn input { + top: -10px; + right: -40px; + z-index: 2; + position: absolute; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); + font-size: 50px; +} +``` + + +--- + + +## MIT LICENSE +Copyright 2013 Lebedev Konstantin +http://rubaxa.github.io/jquery.fileapi/ + +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. + + +--- + + +## Changelog + +### 0.4.6 + * FileAPI up to 2.0.9 + * #12: `onRemoveCompleted` -> `onFileRemoveCompleted` + * #100: fixed `maxSize` option + +### 0.4.5 + * #95: fixed `rotate` method + * #94: fixed `redraw` method + +### 0.4.4 + * #93: `files` option and userpic + * #90: fixed rotate + imageAutoOrientation + +### 0.4.3 + * #84: fixed modal.js + * #82: clear(all: true) + * #61: always parse result (dataType === 'json') + +### 0.4.2 + * #73: git -> gif (fixed typo) + +### 0.4.1 + * #67: `resize` method + * #63: `remove` method + * - console.log + * `modal` close + +### 0.4.0 +* #57: + `onBeforeUpload` event +* support `disabled` dom-attribute +* #34: fixed `imageTransform` +* + FileAPI v2.0.3 +* #35: + `imageOriginal` option + +### 0.3.1 + * fixed `crop` method + * + `onFilePrepare` event + +### 0.3.0 + * + QUnit tests + * + `onFileRemove` and `onRemoveCompleted` events + * + `abort(text)` method + * + `remove(file)` method + * fixed `serialize()` method + +### 0.2.0 + * enhancement `ui event` in onSelect + * + `maxFiles` option support + * fixed `onFileUpload` & `onFileProgress` events + * + #9: Preview with aspect ratio keeping support (optional) + +### 0.1.4 + * + `headers:Object` + * + `queue()`; * `clear()`; + * `clearOnComplete: false` + * * `resetOnSelect` -> `clearOnSelect` + +### 0.1.1 + * + `resetOnSelect` option, default `!multiple` + * fix $.fn.cropper reinit + + +### 0.1.0 + * Inital commit + + +[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/RubaXa/jquery.fileapi/trend.png)](https://bitdeli.com/free "Bitdeli Badge") + diff --git a/assets/js/fileapi/bower.json b/assets/js/fileapi/bower.json new file mode 100755 index 0000000000..d90127c552 --- /dev/null +++ b/assets/js/fileapi/bower.json @@ -0,0 +1,26 @@ +{ + "name": "jquery.fileapi", + "main": "jquery.fileapi.js", + "version": "0.4.9", + "homepage": "http://rubaxa.github.io/jquery.fileapi/", + "authors": [ + "RubaXa " + ], + "description": "jQuery plugin for FileAPI (multiupload, image upload, crop, resize and etc.)", + "keywords": [ + "FileAPI", + "multiupload", + "upload", + "file", + "html5", + "chunked", + "jquery" + ], + "license": "MIT", + "ignore": [ + "node_modules", + "bower_components", + "test", + "tests" + ] +} diff --git a/assets/js/fileapi/composer.json b/assets/js/fileapi/composer.json new file mode 100755 index 0000000000..c3e245a640 --- /dev/null +++ b/assets/js/fileapi/composer.json @@ -0,0 +1,13 @@ +{ + "name": "rubaxa/fileapi", + "description": "jQuery plugin for FileAPI (multiupload, image upload, crop, resize and etc.)", + "keywords": ["jquery", "fileapi", "multiupload", "file upload", "upload"], + "homepage": "https://github.com/RubaXa/jquery.fileapi", + "license": "MIT", + "authors": [ + { + "name": "Konstantin Lebedev", + "email": "ibnRubaXa@gmail.com" + } + ] +} diff --git a/assets/js/fileapi/index.html b/assets/js/fileapi/index.html new file mode 100755 index 0000000000..20c12bb2a6 --- /dev/null +++ b/assets/js/fileapi/index.html @@ -0,0 +1,519 @@ + + + + + + + jQuery plugin for FileAPI + + + + + + + + + + + + +
                    +
                    + + + +
                    + +
                    +
                    +
                    + +
                    +
                    +
                    +
                    +
                    + + +
                    +
                    + +
                    +
                    +
                    +
                    + Browse + +
                    + +
                    +
                    + +
                    +

                    Simple button

                    +
                    + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + Choose + +
                    + +
                    +
                    +
                    + +
                    +

                    Userpic + crop

                    +
                    + + +
                    + +
                    +
                    +
                    +
                    +
                    +
                    + Webcam +
                    + +
                    +
                    +
                    + +
                    +

                    Webcam

                    +
                    + + +
                    + +
                    +
                    +
                    +
                    +
                    + Browse + +
                    + + + () + + +
                    + + + +
                    +
                    +
                    +
                    +

                    File upload

                    +
                    + +
                    + +
                    +
                    +
                    +
                    +
                    Добавить файлы в очередь загрузки, например изображения ;]
                    + +
                    +
                    +
                    +
                    +
                    +
                    + <% if( /^image/.test(type) ){ %> +
                    + <% } %> +
                    +
                    <%-name%>
                    +
                    +
                    + +
                    +
                    + Add + +
                    +
                    + Upload +
                    +
                    +
                    +
                    +
                    +

                    Multiupload

                    +
                    + +
                    + +
                    +
                    +
                    +
                    Drag and drop, automatic upload
                    +
                    +
                    + Choose files + +
                    +
                    + +
                    +
                    +
                    +
                    +
                    +
                    +
                    <%-name%>
                    +
                    +
                    +
                    +
                    + +
                    +

                    Drag'n'drop upload

                    +
                    + + +
                    + + +
                    +
                    Loading…
                    + +
                    +
                    + +
                    + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/js/fileapi/jcrop/Jcrop.gif b/assets/js/fileapi/jcrop/Jcrop.gif new file mode 100755 index 0000000000..72ea7ccb53 Binary files /dev/null and b/assets/js/fileapi/jcrop/Jcrop.gif differ diff --git a/assets/js/fileapi/jcrop/jquery.Jcrop.min.css b/assets/js/fileapi/jcrop/jquery.Jcrop.min.css new file mode 100755 index 0000000000..edc76b2b3f --- /dev/null +++ b/assets/js/fileapi/jcrop/jquery.Jcrop.min.css @@ -0,0 +1,29 @@ +/* jquery.Jcrop.min.css v0.9.12 (build:20130126) */ +.jcrop-holder{direction:ltr;text-align:left;} +.jcrop-vline,.jcrop-hline{background:#FFF url(Jcrop.gif);font-size:0;position:absolute;} +.jcrop-vline{height:100%;width:1px!important;} +.jcrop-vline.right{right:0;} +.jcrop-hline{height:1px!important;width:100%;} +.jcrop-hline.bottom{bottom:0;} +.jcrop-tracker{-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none;height:100%;width:100%;} +.jcrop-handle{background-color:#333;border:1px #EEE solid;font-size:1px;height:7px;width:7px;} +.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0;} +.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px;} +.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%;} +.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%;} +.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0;} +.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0;} +.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0;} +.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px;} +.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%;} +.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px;} +.jcrop-dragbar.ord-n{margin-top:-4px;} +.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px;} +.jcrop-dragbar.ord-e{margin-right:-4px;right:0;} +.jcrop-dragbar.ord-w{margin-left:-4px;} +.jcrop-light .jcrop-vline,.jcrop-light .jcrop-hline{background:#FFF;filter:alpha(opacity=70)!important;opacity:.70!important;} +.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#FFF;border-radius:3px;} +.jcrop-dark .jcrop-vline,.jcrop-dark .jcrop-hline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important;} +.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#FFF;border-color:#000;border-radius:3px;} +.solid-line .jcrop-vline,.solid-line .jcrop-hline{background:#FFF;} +.jcrop-holder img,img.jcrop-preview{max-width:none;} diff --git a/assets/js/fileapi/jcrop/jquery.Jcrop.min.js b/assets/js/fileapi/jcrop/jquery.Jcrop.min.js new file mode 100755 index 0000000000..4c9c7adb6e --- /dev/null +++ b/assets/js/fileapi/jcrop/jquery.Jcrop.min.js @@ -0,0 +1,22 @@ +/** + * jquery.Jcrop.min.js v0.9.12 (build:20130202) + * jQuery Image Cropping Plugin - released under MIT License + * Copyright (c) 2008-2013 Tapmodo Interactive LLC + * https://github.com/tapmodo/Jcrop + */ +(function(a){a.Jcrop=function(b,c){function i(a){return Math.round(a)+"px"}function j(a){return d.baseClass+"-"+a}function k(){return a.fx.step.hasOwnProperty("backgroundColor")}function l(b){var c=a(b).offset();return[c.left,c.top]}function m(a){return[a.pageX-e[0],a.pageY-e[1]]}function n(b){typeof b!="object"&&(b={}),d=a.extend(d,b),a.each(["onChange","onSelect","onRelease","onDblClick"],function(a,b){typeof d[b]!="function"&&(d[b]=function(){})})}function o(a,b,c){e=l(D),bc.setCursor(a==="move"?a:a+"-resize");if(a==="move")return bc.activateHandlers(q(b),v,c);var d=_.getFixed(),f=r(a),g=_.getCorner(r(f));_.setPressed(_.getCorner(f)),_.setCurrent(g),bc.activateHandlers(p(a,d),v,c)}function p(a,b){return function(c){if(!d.aspectRatio)switch(a){case"e":c[1]=b.y2;break;case"w":c[1]=b.y2;break;case"n":c[0]=b.x2;break;case"s":c[0]=b.x2}else switch(a){case"e":c[1]=b.y+1;break;case"w":c[1]=b.y+1;break;case"n":c[0]=b.x+1;break;case"s":c[0]=b.x+1}_.setCurrent(c),bb.update()}}function q(a){var b=a;return bd.watchKeys +(),function(a){_.moveOffset([a[0]-b[0],a[1]-b[1]]),b=a,bb.update()}}function r(a){switch(a){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function s(a){return function(b){return d.disabled?!1:a==="move"&&!d.allowMove?!1:(e=l(D),W=!0,o(a,m(b)),b.stopPropagation(),b.preventDefault(),!1)}}function t(a,b,c){var d=a.width(),e=a.height();d>b&&b>0&&(d=b,e=b/a.width()*a.height()),e>c&&c>0&&(e=c,d=c/a.height()*a.width()),T=a.width()/d,U=a.height()/e,a.width(d).height(e)}function u(a){return{x:a.x*T,y:a.y*U,x2:a.x2*T,y2:a.y2*U,w:a.w*T,h:a.h*U}}function v(a){var b=_.getFixed();b.w>d.minSelect[0]&&b.h>d.minSelect[1]?(bb.enableHandles(),bb.done()):bb.release(),bc.setCursor(d.allowSelect?"crosshair":"default")}function w(a){if(d.disabled)return!1;if(!d.allowSelect)return!1;W=!0,e=l(D),bb.disableHandles(),bc.setCursor("crosshair");var b=m(a);return _.setPressed(b),bb.update(),bc.activateHandlers(x,v,a.type.substring +(0,5)==="touch"),bd.watchKeys(),a.stopPropagation(),a.preventDefault(),!1}function x(a){_.setCurrent(a),bb.update()}function y(){var b=a("
                    ").addClass(j("tracker"));return g&&b.css({opacity:0,backgroundColor:"white"}),b}function be(a){G.removeClass().addClass(j("holder")).addClass(a)}function bf(a,b){function t(){window.setTimeout(u,l)}var c=a[0]/T,e=a[1]/U,f=a[2]/T,g=a[3]/U;if(X)return;var h=_.flipCoords(c,e,f,g),i=_.getFixed(),j=[i.x,i.y,i.x2,i.y2],k=j,l=d.animationDelay,m=h[0]-j[0],n=h[1]-j[1],o=h[2]-j[2],p=h[3]-j[3],q=0,r=d.swingSpeed;c=k[0],e=k[1],f=k[2],g=k[3],bb.animMode(!0);var s,u=function(){return function(){q+=(100-q)/r,k[0]=Math.round(c+q/100*m),k[1]=Math.round(e+q/100*n),k[2]=Math.round(f+q/100*o),k[3]=Math.round(g+q/100*p),q>=99.8&&(q=100),q<100?(bh(k),t()):(bb.done(),bb.animMode(!1),typeof b=="function"&&b.call(bs))}}();t()}function bg(a){bh([a[0]/T,a[1]/U,a[2]/T,a[3]/U]),d.onSelect.call(bs,u(_.getFixed())),bb.enableHandles()}function bh(a){_.setPressed([a[0],a[1]]),_.setCurrent([a[2], +a[3]]),bb.update()}function bi(){return u(_.getFixed())}function bj(){return _.getFixed()}function bk(a){n(a),br()}function bl(){d.disabled=!0,bb.disableHandles(),bb.setCursor("default"),bc.setCursor("default")}function bm(){d.disabled=!1,br()}function bn(){bb.done(),bc.activateHandlers(null,null)}function bo(){G.remove(),A.show(),A.css("visibility","visible"),a(b).removeData("Jcrop")}function bp(a,b){bb.release(),bl();var c=new Image;c.onload=function(){var e=c.width,f=c.height,g=d.boxWidth,h=d.boxHeight;D.width(e).height(f),D.attr("src",a),H.attr("src",a),t(D,g,h),E=D.width(),F=D.height(),H.width(E).height(F),M.width(E+L*2).height(F+L*2),G.width(E).height(F),ba.resize(E,F),bm(),typeof b=="function"&&b.call(bs)},c.src=a}function bq(a,b,c){var e=b||d.bgColor;d.bgFade&&k()&&d.fadeTime&&!c?a.animate({backgroundColor:e},{queue:!1,duration:d.fadeTime}):a.css("backgroundColor",e)}function br(a){d.allowResize?a?bb.enableOnly():bb.enableHandles():bb.disableHandles(),bc.setCursor(d.allowSelect?"crosshair":"default"),bb +.setCursor(d.allowMove?"move":"default"),d.hasOwnProperty("trueSize")&&(T=d.trueSize[0]/E,U=d.trueSize[1]/F),d.hasOwnProperty("setSelect")&&(bg(d.setSelect),bb.done(),delete d.setSelect),ba.refresh(),d.bgColor!=N&&(bq(d.shade?ba.getShades():G,d.shade?d.shadeColor||d.bgColor:d.bgColor),N=d.bgColor),O!=d.bgOpacity&&(O=d.bgOpacity,d.shade?ba.refresh():bb.setBgOpacity(O)),P=d.maxSize[0]||0,Q=d.maxSize[1]||0,R=d.minSize[0]||0,S=d.minSize[1]||0,d.hasOwnProperty("outerImage")&&(D.attr("src",d.outerImage),delete d.outerImage),bb.refresh()}var d=a.extend({},a.Jcrop.defaults),e,f=navigator.userAgent.toLowerCase(),g=/msie/.test(f),h=/msie [1-6]\./.test(f);typeof b!="object"&&(b=a(b)[0]),typeof c!="object"&&(c={}),n(c);var z={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},A=a(b),B=!0;if(b.tagName=="IMG"){if(A[0].width!=0&&A[0].height!=0)A.width(A[0].width),A.height(A[0].height);else{var C=new Image;C.src=A[0].src,A.width(C.width),A.height(C.height)}var D=A.clone().removeAttr("id"). +css(z).show();D.width(A.width()),D.height(A.height()),A.after(D).hide()}else D=A.css(z).show(),B=!1,d.shade===null&&(d.shade=!0);t(D,d.boxWidth,d.boxHeight);var E=D.width(),F=D.height(),G=a("
                    ").width(E).height(F).addClass(j("holder")).css({position:"relative",backgroundColor:d.bgColor}).insertAfter(A).append(D);d.addClass&&G.addClass(d.addClass);var H=a("
                    "),I=a("
                    ").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),J=a("
                    ").width("100%").height("100%").css("zIndex",320),K=a("
                    ").css({position:"absolute",zIndex:600}).dblclick(function(){var a=_.getFixed();d.onDblClick.call(bs,a)}).insertBefore(D).append(I,J);B&&(H=a("").attr("src",D.attr("src")).css(z).width(E).height(F),I.append(H)),h&&K.css({overflowY:"hidden"});var L=d.boundary,M=y().width(E+L*2).height(F+L*2).css({position:"absolute",top:i(-L),left:i(-L),zIndex:290}).mousedown(w),N=d.bgColor,O=d.bgOpacity,P,Q,R,S,T,U,V=!0,W,X,Y;e=l(D);var Z=function(){function a(){var a={},b=["touchstart" +,"touchmove","touchend"],c=document.createElement("div"),d;try{for(d=0;da+f&&(f-=f+a),0>b+g&&(g-=g+b),FE&&(r=E,u=Math.abs((r-a)/f),s=k<0?b-u:u+b)):(r=c,u=l/f,s=k<0?b-u:b+u,s<0?(s=0,t=Math.abs((s-b)*f),r=j<0?a-t:t+a):s>F&&(s=F,t=Math.abs(s-b)*f,r=j<0?a-t:t+a)),r>a?(r-ah&&(r=a+h),s>b?s=b+(r-a)/f:s=b-(r-a)/f):rh&&(r=a-h),s>b?s=b+(a-r)/f:s=b-(a-r)/f),r<0?(a-=r,r=0):r>E&&(a-=r-E,r=E),s<0?(b-=s,s=0):s>F&&(b-=s-F,s=F),q(o(a,b,r,s))}function n(a){return a[0]<0&&(a[0]=0),a[1]<0&&(a[1]=0),a[0]>E&&(a[0]=E),a[1]>F&&(a[1]=F),[Math.round(a[0]),Math.round(a[1])]}function o(a,b,c,d){var e=a,f=c,g=b,h=d;return cP&&(c=d>0?a+P:a-P),Q&&Math.abs +(f)>Q&&(e=f>0?b+Q:b-Q),S/U&&Math.abs(f)0?b+S/U:b-S/U),R/T&&Math.abs(d)0?a+R/T:a-R/T),a<0&&(c-=a,a-=a),b<0&&(e-=b,b-=b),c<0&&(a-=c,c-=c),e<0&&(b-=e,e-=e),c>E&&(g=c-E,a-=g,c-=g),e>F&&(g=e-F,b-=g,e-=g),a>E&&(g=a-F,e-=g,b-=g),b>F&&(g=b-F,e-=g,b-=g),q(o(a,b,c,e))}function q(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var a=0,b=0,c=0,e=0,f,g;return{flipCoords:o,setPressed:h,setCurrent:i,getOffset:j,moveOffset:k,getCorner:l,getFixed:m}}(),ba=function(){function f(a,b){e.left.css({height:i(b)}),e.right.css({height:i(b)})}function g(){return h(_.getFixed())}function h(a){e.top.css({left:i(a.x),width:i(a.w),height:i(a.y)}),e.bottom.css({top:i(a.y2),left:i(a.x),width:i(a.w),height:i(F-a.y2)}),e.right.css({left:i(a.x2),width:i(E-a.x2)}),e.left.css({width:i(a.x)})}function j(){return a("
                    ").css({position:"absolute",backgroundColor:d.shadeColor||d.bgColor}).appendTo(c)}function k(){b||(b=!0,c.insertBefore(D),g(),bb.setBgOpacity(1,0,1),H.hide(),l(d.shadeColor||d.bgColor,1),bb. +isAwake()?n(d.bgOpacity,1):n(1,1))}function l(a,b){bq(p(),a,b)}function m(){b&&(c.remove(),H.show(),b=!1,bb.isAwake()?bb.setBgOpacity(d.bgOpacity,1,1):(bb.setBgOpacity(1,1,1),bb.disableHandles()),bq(G,0,1))}function n(a,e){b&&(d.bgFade&&!e?c.animate({opacity:1-a},{queue:!1,duration:d.fadeTime}):c.css({opacity:1-a}))}function o(){d.shade?k():m(),bb.isAwake()&&n(d.bgOpacity)}function p(){return c.children()}var b=!1,c=a("
                    ").css({position:"absolute",zIndex:240,opacity:0}),e={top:j(),left:j().height(F),right:j().height(F),bottom:j()};return{update:g,updateRaw:h,getShades:p,setBgColor:l,enable:k,disable:m,resize:f,refresh:o,opacity:n}}(),bb=function(){function k(b){var c=a("
                    ").css({position:"absolute",opacity:d.borderOpacity}).addClass(j(b));return I.append(c),c}function l(b,c){var d=a("
                    ").mousedown(s(b)).css({cursor:b+"-resize",position:"absolute",zIndex:c}).addClass("ord-"+b);return Z.support&&d.bind("touchstart.jcrop",Z.createDragger(b)),J.append(d),d}function m(a){var b=d.handleSize,e=l(a,c++ +).css({opacity:d.handleOpacity}).addClass(j("handle"));return b&&e.width(b).height(b),e}function n(a){return l(a,c++).addClass("jcrop-dragbar")}function o(a){var b;for(b=0;b').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),c=a("
                    ").css({position:"absolute",overflow:"hidden"}).append(b);return d.keySupport&&(b.keydown(i).blur(f),h||!d.fixedSupport?(b.css({position:"absolute",left:"-20px"}),c.append(b).insertBefore(D)):b.insertBefore(D)),{watchKeys:e}}();Z.support&&M.bind("touchstart.jcrop",Z.newSelection),J.hide(),br(!0);var bs={setImage:bp,animateTo:bf,setSelect:bg,setOptions:bk,tellSelect:bi,tellScaled:bj,setClass:be,disable:bl,enable:bm,cancel:bn,release:bb.release,destroy:bo,focus:bd.watchKeys,getBounds:function(){return[E*T,F*U]},getWidgetSize:function(){return[E,F]},getScaleFactor:function(){return[T,U]},getOptions:function(){return d},ui:{holder:G,selection:K}};return g&&G.bind("selectstart",function(){return!1}),A.data("Jcrop",bs),bs},a.fn.Jcrop=function(b,c){var d;return this.each(function(){if(a(this).data("Jcrop")){if( +b==="api")return a(this).data("Jcrop");a(this).data("Jcrop").setOptions(b)}else this.tagName=="IMG"?a.Jcrop.Loader(this,function(){a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d)}):(a(this).css({display:"block",visibility:"hidden"}),d=a.Jcrop(this,b),a.isFunction(c)&&c.call(d))}),this},a.Jcrop.Loader=function(b,c,d){function g(){f.complete?(e.unbind(".jcloader"),a.isFunction(c)&&c.call(f)):window.setTimeout(g,50)}var e=a(b),f=e[0];e.bind("load.jcloader",g).bind("error.jcloader",function(b){e.unbind(".jcloader"),a.isFunction(d)&&d.call(f)}),f.complete&&a.isFunction(c)&&(e.unbind(".jcloader"),c.call(f))},a.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges +:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}})(jQuery); \ No newline at end of file diff --git a/assets/js/fileapi/jquery.fileapi.js b/assets/js/fileapi/jquery.fileapi.js new file mode 100755 index 0000000000..6b21ca5a0d --- /dev/null +++ b/assets/js/fileapi/jquery.fileapi.js @@ -0,0 +1,1382 @@ +/** + * jQuery plugin for FileAPI v2+ + * @auhtor RubaXa + */ + +/*jslint evil: true */ +/*global jQuery, FileAPI*/ +(function ($, api){ + "use strict"; + + var + noop = $.noop + , oldJQ = !$.fn.prop + , propFn = oldJQ ? 'attr' : 'prop' + , removePropFn = oldJQ ? 'removeAttr' : 'removeProp' + + , _dataAttr = 'data-fileapi' + , _dataFileId = 'data-fileapi-id' + + , _slice = [].slice + , _each = api.each + , _extend = api.extend + + , _bind = function (ctx, fn) { + var args = _slice.call(arguments, 2); + return fn.bind ? fn.bind.apply(fn, [ctx].concat(args)) : function (){ + return fn.apply(ctx, args.concat(_slice.call(arguments))); + }; + } + + , _optDataAttr = function (name){ + return '['+_dataAttr+'="'+name+'"]'; + } + + , _isID = function (selector){ + return selector.indexOf('#') === 0; + } + ; + + + + var Plugin = function (el, options){ + this.$el = el = $(el).on('change.fileapi', 'input[type="file"]', _bind(this, this._onSelect)); + this.el = el[0]; + + this._options = {}; // previous options + this.options = { // current options + url: 0, + data: {}, // additional POST-data + accept: 0, // accept mime types, "*" — unlimited + multiple: false, // single or multiple mode upload mode + paramName: 0, // POST-parameter name + dataType: 'json', + duplicate: false, // ignore duplicate + + uploadRetry: 0, + networkDownRetryTimeout: 5000, + + chunkSize: 0, // or chunk size in bytes, eg: .5 * FileAPI.MB + chunkUploadRetry: 3, // number of retries during upload chunks (html5) + chunkNetworkDownRetryTimeout: 2000, + + maxSize: 0, // max file size, 0 — unlimited + maxFiles: 0, // 0 unlimited + imageSize: 0, // { minWidth: 320, minHeight: 240, maxWidth: 3840, maxHeight: 2160 } + + sortFn: 0, + filterFn: 0, + autoUpload: false, + + clearOnSelect: void 0, + clearOnComplete: void 0, + + lang: { + B: 'bytes' + , KB: 'KB' + , MB: 'MB' + , GB: 'GB' + , TB: 'TB' + }, + sizeFormat: '0.00', + + imageOriginal: true, + imageTransform: 0, + imageAutoOrientation: !!FileAPI.support.exif, + + elements: { + ctrl: { + upload: _optDataAttr('ctrl.upload'), + reset: _optDataAttr('ctrl.reset'), + abort: _optDataAttr('ctrl.abort') + }, + empty: { + show: _optDataAttr('empty.show'), + hide: _optDataAttr('empty.hide') + }, + emptyQueue: { + show: _optDataAttr('emptyQueue.show'), + hide: _optDataAttr('emptyQueue.hide') + }, + active: { + show: _optDataAttr('active.show'), + hide: _optDataAttr('active.hide') + }, + size: _optDataAttr('size'), + name: _optDataAttr('name'), + progress: _optDataAttr('progress'), + list: _optDataAttr('list'), + file: { + tpl: _optDataAttr('file.tpl'), + progress: _optDataAttr('file.progress'), + active: { + show: _optDataAttr('file.active.show'), + hide: _optDataAttr('file.active.hide') + }, + preview: { + el: 0, + get: 0, + width: 0, + height: 0, + processing: 0 + }, + abort: _optDataAttr('file.abort'), + remove: _optDataAttr('file.remove'), + rotate: _optDataAttr('file.rotate') + }, + dnd: { + el: _optDataAttr('dnd'), + hover: 'dnd_hover', + fallback: _optDataAttr('dnd.fallback') + } + }, + + onDrop: noop, + onDropHover: noop, + + onSelect: noop, + + onBeforeUpload: noop, + onUpload: noop, + onProgress: noop, + onComplete: noop, + + onFilePrepare: noop, + onFileUpload: noop, + onFileProgress: noop, + onFileComplete: noop, + + onFileRemove: null, + onFileRemoveCompleted: null + }; + + $.extend(true, this.options, options); // deep extend + options = this.options; + + this.option('elements.file.preview.rotate', options.imageAutoOrientation); + + if( !options.url ){ + var url = this.$el.attr('action') || this.$el.find('form').attr('action'); + if( url ){ + options.url = url; + } else { + this._throw('url — is not defined'); + } + } + + + this.$files = this.$elem('list'); + + this.$fileTpl = this.$elem('file.tpl'); + this.itemTplFn = $.fn.fileapi.tpl( $('
                    ').append( this.$elem('file.tpl') ).html() ); + + + _each(options, function (value, option){ + this._setOption(option, value); + }, this); + + + this.$el + .on('reset.fileapi', _bind(this, this._onReset)) + .on('submit.fileapi', _bind(this, this._onSubmit)) + .on('upload.fileapi progress.fileapi complete.fileapi', _bind(this, this._onUploadEvent)) + .on('fileupload.fileapi fileprogress.fileapi filecomplete.fileapi', _bind(this, this._onFileUploadEvent)) + .on('click', '['+_dataAttr+']', _bind(this, this._onActionClick)) + ; + + + // Controls + var ctrl = options.elements.ctrl; + if( ctrl ){ + this._listen('click', ctrl.reset, _bind(this, this._onReset)); + this._listen('click', ctrl.upload, _bind(this, this._onSubmit)); + this._listen('click', ctrl.abort, _bind(this, this._onAbort)); + } + + // Drag'n'Drop + var dnd = FileAPI.support.dnd; + this.$elem('dnd.el', true).toggle(dnd); + this.$elem('dnd.fallback').toggle(!dnd); + + if( dnd ){ + this.$elem('dnd.el', true).dnd(_bind(this, this._onDropHover), _bind(this, this._onDrop)); + } + + + this.$progress = this.$elem('progress'); + + if( options.clearOnSelect === void 0 ){ + options.clearOnSelect = !options.multiple; + } + + this.clear(); + + if( $.isArray(options.files) ){ + this.files = $.map(options.files, function (file){ + if( $.type(file) === 'string' ){ + file = { src: file, size: 0 }; + } + + file.name = file.name || file.src.split('/').pop(); + file.type = file.type || /\.(jpe?g|png|bmp|gif|tiff?)/i.test(file.src) && 'image/' + file.src.split('.').pop(); // @todo: use FileAPI.getMimeType (v2.1+) + file.complete = true; + + return file; + }); + + this._redraw(); + } + }; + + + Plugin.prototype = { + constructor: Plugin, + + _throw: function (msg){ + throw "jquery.fileapi: " + msg; + }, + + _getFiles: function (evt, fn){ + var + opts = this.options + , maxSize = opts.maxSize + , maxFiles = opts.maxFiles + , filterFn = opts.filterFn + , countFiles = this.files.length + , files = api.getFiles(evt) + , data = { + all: files + , files: [] + , other: [] + , duplicate: opts.duplicate ? [] : this._extractDuplicateFiles(files) + } + , imageSize = opts.imageSize + , _this = this + ; + + if( imageSize || filterFn ){ + api.filterFiles(files, function (file, info){ + if( info && imageSize ){ + _checkFileByCriteria(file, 'minWidth', imageSize, info); + _checkFileByCriteria(file, 'minHeight', imageSize, info); + _checkFileByCriteria(file, 'maxWidth', imageSize, info); + _checkFileByCriteria(file, 'maxHeight', imageSize, info); + } + + _checkFileByCriteria(file, 'maxSize', maxSize, file.size); + + return !file.errors && (!filterFn || filterFn(file, info)); + }, function (success, rejected){ + _extractFilesOverLimit(maxFiles, countFiles, success, rejected); + + data.other = rejected; + data.files = success; + + fn.call(_this, data); + }); + } else { + _each(files, function (file){ + _checkFileByCriteria(file, 'maxSize', maxSize, file.size); + data[file.errors ? 'other' : 'files'].push(file); + }); + + _extractFilesOverLimit(maxFiles, countFiles, data.files, data.other); + fn.call(_this, data); + } + }, + + _extractDuplicateFiles: function (list/**Array*/){ + var duplicates = [], i = list.length, files = this.files, j; + + while( i-- ){ + j = files.length; + while( j-- ){ + if( this._fileCompare(list[i], files[j]) ){ + duplicates.push( list.splice(i, 1) ); + break; + } + } + } + + return duplicates; + }, + + _fileCompare: function (A/**File*/, B/**File*/){ + return (A.size == B.size) && (A.name == B.name); + }, + + _getFormatedSize: function (size){ + var opts = this.options, postfix = 'B'; + + if( size >= api.TB ){ + size /= api[postfix = 'TB']; + } + else if( size >= api.GB ){ + size /= api[postfix = 'GB']; + } + else if( size >= api.MB ){ + size /= api[postfix = 'MB']; + } + else if( size >= api.KB ){ + size /= api[postfix = 'KB']; + } + + return opts.sizeFormat.replace(/^\d+([^\d]+)(\d*)/, function (_, separator, fix){ + size = (parseFloat(size) || 0).toFixed(fix.length); + return (size + '').replace('.', separator) +' '+ opts.lang[postfix]; + }); + }, + + _onSelect: function (evt){ + if( this.options.clearOnSelect ){ + this.queue = []; + this.files = []; + } + + this._getFiles(evt, _bind(this, function (data){ + if( data.all.length && this.emit('select', data) !== false ){ + this.add(data.files); + } + + // Reset input + FileAPI.reset(evt.target); + })); + }, + + _onActionClick: function (evt){ + var + el = evt.currentTarget + , act = $.attr(el, _dataAttr) + , uid = $(el).closest('['+_dataFileId+']', this.$el).attr(_dataFileId) + , file = this._getFile(uid) + , prevent = true + ; + + if( !this.$file(uid).attr('disabled') ){ + if( 'file.remove' == act ){ + if( file && this.emit('fileRemove' + (file.complete ? 'Completed' : ''), file) ){ + this.remove(uid); + } + } + else if( /^file\.rotate/.test(act) ){ + this.rotate(uid, (/ccw/.test(act) ? '-=90' : '+=90')); + } + else { + prevent = false; + } + } + + if( prevent ){ + evt.preventDefault(); + } + }, + + _listen: function (name, selector, fn){ + selector && _each($.trim(selector).split(','), function (selector){ + selector = $.trim(selector); + + if( _isID(selector) ){ + $(selector).on(name+'.fileapi', fn); + } else { + this.$el.on(name+'.fileapi', selector, fn); + } + }, this); + }, + + _onSubmit: function (evt){ + evt.preventDefault(); + this.upload(); + }, + + _onReset: function (evt){ + evt.preventDefault(); + this.clear(true); + }, + + _onAbort: function (evt){ + evt.preventDefault(); + this.abort(); + }, + + _onDrop: function (files){ + this._getFiles(files, function (data){ + if( this.emit('drop', data) !== false ){ + this.add(data.files); + } + }); + }, + + _onDropHover: function (state, evt){ + if( this.emit('dropHover', { state: state, event: evt }) !== false ){ + var hover = this.option('elements.dnd.hover'); + if( hover ){ + $(evt.currentTarget).toggleClass(hover, state); + } + } + }, + + _getFile: function (uid){ + return api.filter(this.files, function (file){ return api.uid(file) == uid; })[0]; + }, + + _getUploadEvent: function (xhr, extra){ + xhr = this.xhr || xhr; + + var evt = { + xhr: xhr + , file: this.xhr.currentFile + , files: this.xhr.files + , widget: this + }; + + return _extend(evt, extra); + }, + + _emitUploadEvent: function (prefix, file, xhr){ + var evt = this._getUploadEvent(xhr); + this.emit(prefix+'Upload', evt); + }, + + _emitProgressEvent: function (prefix, event, file, xhr){ + var evt = this._getUploadEvent(xhr, event); + this.emit(prefix+'Progress', evt); + }, + + _emitCompleteEvent: function (prefix, err, xhr, file){ + var evt = this._getUploadEvent(xhr, { + error: err + , status: xhr.status + , statusText: xhr.statusText + , result: xhr.responseText + }); + + if( prefix == 'file' ){ + file.complete = true; + } + + if( this.options.dataType == 'json' ){ + try { + evt.result = $.parseJSON(evt.result); + } catch (err){ + evt.error = err; + } + } + + this.emit(prefix+'Complete', evt); + }, + + _onUploadEvent: function (evt, ui){ + var _this = this, $progress = _this.$progress, type = evt.type; + + if( type == 'progress' ){ + $progress.stop().animate({ width: ui.loaded/ui.total*100 + '%' }, 300); + } + else if( type == 'upload' ){ + // Начало загрузки + $progress.width(0); + } + else { + // Завершение загрузки + var fn = function (){ + $progress.dequeue(); + _this[_this.options.clearOnComplete ? 'clear' : 'dequeue'](); + }; + + this.xhr = null; + this.active = false; + + if( $progress.length ){ + $progress.queue(fn); + } else { + fn(); + } + } + }, + + _onFileUploadPrepare: function (file, opts){ + var + uid = api.uid(file) + , deg = this._rotate[uid] + , crop = this._crop[uid] + , resize = this._resize[uid] + , evt = this._getUploadEvent(this.xhr) + ; + + if( deg || crop || resize ){ + var trans = $.extend(true, {}, opts.imageTransform || {}); + deg = (deg != null) ? deg : (this.options.imageAutoOrientation ? 'auto' : void 0); + + if( $.isEmptyObject(trans) || _isOriginTransform(trans) ){ + _extend(trans, resize); + + trans.crop = crop; + trans.rotate = deg; + } + else { + _each(trans, function (opts){ + _extend(opts, resize); + + opts.crop = crop; + opts.rotate = deg; + }); + } + + opts.imageTransform = trans; + } + + evt.file = file; + evt.options = opts; + + this.emit('filePrepare', evt); + }, + + _onFileUploadEvent: function (evt, ui){ + var + _this = this + , type = evt.type.substr(4) + , uid = api.uid(ui.file) + , $file = this.$file(uid) + , $progress = this._$fileprogress + , opts = this.options + ; + + if( this.__fileId !== uid ){ + this.__fileId = uid; + this._$fileprogress = $progress = this.$elem('file.progress', $file); + } + + if( type == 'progress' ){ + $progress.stop().animate({ width: ui.loaded/ui.total*100 + '%' }, 300); + } + else if( type == 'upload' || type == 'complete' ){ + var fn = function (){ + var + elem = 'file.'+ type + , $remove = _this.$elem('file.remove', $file) + ; + + if( type == 'upload' ){ + $remove.hide(); + $progress.width(0); + } else if( opts.onFileRemoveCompleted ){ + $remove.show(); + } + + $progress.dequeue(); + + _this.$elem(elem + '.show', $file).show(); + _this.$elem(elem + '.hide', $file).hide(); + }; + + if( $progress.length ){ + $progress.queue(fn); + } else { + fn(); + } + + if( type == 'complete' ){ + this.uploaded.push(ui.file); + delete this._rotate[uid]; + } + } + }, + + _redraw: function (clearFiles/**Boolean*/, clearPreview/**Boolean*/){ + var + files = this.files + , active = !!this.active + , empty = !files.length && !active + , emptyQueue = !this.queue.length && !active + , name = [] + , size = 0 + , $files = this.$files + , offset = $files.children().length + , preview = this.option('elements.preview') + , filePreview = this.option('elements.file.preview') + ; + + if( clearFiles ){ + this.$files.empty(); + } + + if( clearPreview && preview && preview.el && !this.queue.length ) { + this.$(preview.el).empty(); + } + + _each(files, function (file, i){ + var uid = api.uid(file); + + name.push(file.name); + size += file.complete ? 0 : file.size; + + if( preview && preview.el ){ + this._makeFilePreview(uid, file, preview, true); + } + else if( $files.length && !this.$file(uid).length ){ + var + html = this.itemTplFn({ + $idx: offset + i + , uid: uid + , name: file.name + , type: file.type + , size: file.size + , complete: !!file.complete + , sizeText: this._getFormatedSize(file.size) + }) + + , $file = $(html).attr(_dataFileId, uid) + ; + + file.$el = $file; + $files.append( $file ); + + if( file.complete ){ + this.$elem('file.upload.hide', $file).hide(); + this.$elem('file.complete.hide', $file).hide(); + } + + if( filePreview.el ){ + this._makeFilePreview(uid, file, filePreview); + } + } + }, this); + + + this.$elem('name').text( name.join(', ') ); + this.$elem('size').text( !emptyQueue ? this._getFormatedSize(size) : '' ); + + + this.$elem('empty.show').toggle( empty ); + this.$elem('empty.hide').toggle( !empty ); + + + this.$elem('emptyQueue.show').toggle( emptyQueue ); + this.$elem('emptyQueue.hide').toggle( !emptyQueue ); + + + this.$elem('active.show').toggle( active ); + this.$elem('active.hide').toggle( !active ); + + + this.$('.js-fileapi-wrapper,:file') + [active ? 'attr' : 'removeAttr']('aria-disabled', active) + [propFn]('disabled', active) + ; + + // Upload control + this._disableElem('ctrl.upload', emptyQueue || active); + + // Reset control + this._disableElem('ctrl.reset', emptyQueue || active); + + // Abort control + this._disableElem('ctrl.abort', !active); + }, + + _disableElem: function (name, state){ + this.$elem(name) + [state ? 'attr' : 'removeAttr']('aria-disabled', 'disabled') + [propFn]('disabled', state) + ; + }, + + _makeFilePreview: function (uid, file, opts, global){ + var + _this = this + , $el = global ? _this.$(opts.el) : _this.$file(uid).find(opts.el) + ; + + if( !_this._crop[uid] ){ + if( /^image/.test(file.type) ){ + var + image = api.Image(file.src || file) + , doneFn = function (){ + image.get(function (err, img){ + if( !_this._crop[uid] ){ + if( err ){ + opts.get && opts.get($el, file); + _this.emit('previewError', [err, file]); + } else { + $el.html(img); + } + } + }); + } + ; + + if( opts.width ){ + image.preview(opts.width, opts.height); + } + + if( opts.rotate ){ + image.rotate('auto'); + } + + if( opts.processing ){ + opts.processing(file, image, doneFn); + } else { + doneFn(); + } + } + else { + opts.get && opts.get($el, file); + } + } + }, + + emit: function (name, arg){ + var opts = this.options, evt = $.Event(name.toLowerCase()), res; + evt.widget = this; + name = $.camelCase('on-'+name); + if( $.isFunction(opts[name]) ){ + res = opts[name].call(this.el, evt, arg); + } + this.$el.triggerHandler(evt, arg); + return (res !== false) && !evt.isDefaultPrevented(); + }, + + /** + * Add files to queue + * @param {Array} files + * @param {Boolean} [clear] + */ + add: function (files, clear){ + files = [].concat(files); + + if( files.length ){ + var + opts = this.options + , sortFn = opts.sortFn + ; + + if( sortFn ){ + files.sort(sortFn); + } + + if( this.xhr ){ + this.xhr.append(files); + } + + this.queue = clear ? files : this.queue.concat(files); + this.files = clear ? files : this.files.concat(files); + + if( this.active ){ + this.xhr.append(files); + this._redraw(clear); + } + else { + this._redraw(clear); + if( this.options.autoUpload ){ + this.upload(); + } + } + } + }, + + /** + * Find element + * @param {String} sel + * @param {jQuery} [ctx] + * @return {jQuery} + */ + $: function (sel, ctx){ + if( typeof sel === 'string' ){ + sel = /^#/.test(sel) ? sel : (ctx ? $(ctx) : this.$el).find(sel); + } + return $(sel); + }, + + /** + * @param {String} name + * @param {Boolean|jQuery} [up] + * @param {jQuery} [ctx] + * @return {jQuery} + */ + $elem: function (name, up, ctx){ + if( up && up.jquery ){ + ctx = up; + up = false; + } + + var sel = this.option('elements.'+name); + if( sel === void 0 && up ){ + sel = this.option('elements.'+name.substr(0, name.lastIndexOf('.'))); + } + + return this.$($.type(sel) != 'string' && $.isEmptyObject(sel) ? [] : sel, ctx); + }, + + /** + * @param {String} uid + * @return {jQuery} + */ + $file: function (uid){ + return this.$('['+_dataFileId+'="'+uid+'"]'); + }, + + /** + * Get/set options + * @param {String} name + * @param {*} [value] + * @return {*} + */ + option: function (name, value){ + if( value !== void 0 && $.isPlainObject(value) ){ + _each(value, function (val, key){ + this.option(name+'.'+key, val); + }, this); + + return this; + } + + var opts = this.options, val = opts[name], i = 0, len, part; + + if( name.indexOf('.') != -1 ){ + val = opts; + name = name.split('.'); + len = name.length; + + for( ; i < len; i++ ){ + part = name[i]; + + if( (value !== void 0) && (len - i === 1) ){ + val[part] = value; + break; + } + else if( !val[part] ){ + val[part] = {}; + } + + val = val[part]; + } + } + else if( value !== void 0 ){ + opts[name] = value; + } + + if( value !== void 0 ){ + this._setOption(name, value, this._options[name]); + this._options[name] = value; + } + + return value !== void 0 ? value : val; + }, + + _setOption: function (name, nVal){ + switch( name ){ + case 'accept': + case 'multiple': + this.$(':file')[nVal ? propFn : removePropFn](name, nVal); + break; + + + case 'paramName': + nVal && this.$(':file')[propFn]('name', nVal); + break; + } + }, + + serialize: function (){ + var obj = {}, val; + + this.$el.find(':input').each(function(name, node){ + if( + (name = node.name) && !node.disabled + && (node.checked || /select|textarea|input/i.test(node.nodeName) && !/checkbox|radio|file/i.test(node.type)) + ){ + val = $(node).val(); + if( obj[name] !== void 0 ){ + if( !obj[name].push ){ + obj[name] = [obj[name]]; + } + + obj[name].push(val); + } else { + obj[name] = val; + } + } + }); + + return obj; + }, + + upload: function (){ + if( !this.active && this.emit('beforeUpload', { widget: this, files: this.queue }) ){ + this.active = true; + + var + $el = this.$el + , opts = this.options + , files = {} + , uploadOpts = { + url: opts.url + , data: _extend({}, this.serialize(), opts.data) + , headers: opts.headers + , files: files + + , uploadRetry: opts.uploadRetry + , networkDownRetryTimeout: opts.networkDownRetryTimeout + , chunkSize: opts.chunkSize + , chunkUploadRetry: opts.chunkUploadRetry + , chunkNetworkDownRetryTimeout: opts.chunkNetworkDownRetryTimeout + + , prepare: _bind(this, this._onFileUploadPrepare) + , imageOriginal: opts.imageOriginal + , imageTransform: opts.imageTransform + , imageAutoOrientation: opts.imageAutoOrientation + } + ; + + // Set files + files[$el.find(':file').attr('name') || 'files[]'] = this.queue; + + // Add event listeners + _each(['Upload', 'Progress', 'Complete'], function (name){ + var lowerName = name.toLowerCase(); + uploadOpts[lowerName] = _bind(this, this['_emit'+name+'Event'], ''); + uploadOpts['file'+lowerName] = _bind(this, this['_emit'+name+'Event'], 'file'); + }, this); + + // Start uploading + this.xhr = api.upload(uploadOpts); + this._redraw(); + } + }, + + abort: function (text){ + if( this.active && this.xhr ){ + this.xhr.abort(text); + } + }, + + crop: function (file, coords){ + var + uid = api.uid(file) + , opts = this.options + , preview = opts.multiple ? this.option('elements.file.preview') : opts.elements.preview + , $el = (opts.multiple ? this.$file(uid) : this.$el).find(preview && preview.el) + ; + + if( $el.length ){ + api.getInfo(file, _bind(this, function (err, info){ + if( err ){ + this.emit('previewError', [err, file]); + } else { + if( !$el.find('div>div').length ){ + $el.html( + $('
                    ') + .css(preview) + .css('overflow', 'hidden') + ); + } + + if( this.__cropFile !== file ){ + this.__cropFile = file; + api.Image(file).rotate(opts.imageAutoOrientation ? 'auto' : 0).get(function (err, img){ + $el.find('>div>div').html($(img).width('100%').height('100%')); + }, 'exactFit'); + } + + + var + pw = preview.width, ph = preview.height + , mx = pw, my = ph + , rx = pw/coords.rw, ry = ph/coords.rh + ; + + if( preview.keepAspectRatio ){ + if (rx > 1 && ry > 1){ // image is smaller than preview (no scale) + rx = ry = 1; + my = coords.h; + mx = coords.w; + + } else { // image is bigger than preview (scale) + if( rx < ry ){ + ry = rx; + my = pw * coords.rh / coords.rw; + } else { + rx = ry; + mx = ph * coords.rw / coords.rh; + } + } + } + + $el.find('>div>div').css({ + width: Math.round(rx * info[coords.flip ? 'height' : 'width']) + , height: Math.round(ry * info[coords.flip ? 'width' : 'height']) + , marginLeft: -Math.round(rx * coords.rx) + , marginTop: -Math.round(ry * coords.ry) + }); + + if( preview.keepAspectRatio ){ // create side gaps + $el.find('>div').css({ + width: Math.round(mx) + , height: Math.round(my) + , marginLeft: mx < pw ? Math.round((pw - mx) / 2) : 0 + , marginTop: my < ph ? Math.round((ph - my) / 2) : 0 + }); + } + } + })); + } + + this._crop[uid] = coords; + }, + + resize: function (file, width, height, type){ + this._resize[api.uid(file)] = { + type: type + , width: width + , height: height + }; + }, + + rotate: function (file, deg){ + var + uid = $.type(file) == 'string' ? file : api.uid(file) + , opts = this.options + , preview = opts.multiple ? this.option('elements.file.preview') : opts.elements.preview + , $el = (opts.multiple ? this.$file(uid) : this.$el).find(preview && preview.el) + , _rotate = this._rotate + ; + + file = this._getFile(uid); + + api.getInfo(file, function (err, info) { + var orientation = info && info.exif && info.exif.Orientation, + startDeg = opts.imageAutoOrientation && api.Image.exifOrientation[orientation] || 0; + + if (_rotate[uid] == null) { + _rotate[uid] = startDeg || 0; + } + + if( /([+-])=/.test(deg) ){ + _rotate[uid] = deg = (_rotate[uid] + (RegExp.$1 == '+' ? 1 : -1) * deg.substr(2)); + } else { + _rotate[uid] = deg; + } + + // Store deg + file.rotate = deg; + + // Fix exif.rotate.auto + deg -= startDeg; + $el.css({ + '-webkit-transform': 'rotate('+deg+'deg)' + , '-moz-transform': 'rotate('+deg+'deg)' + , 'transform': 'rotate('+deg+'deg)' + }); + }); + }, + + remove: function (file){ + var uid = typeof file == 'object' ? api.uid(file) : file; + + this.$file(uid).remove(); + + this.queue = api.filter(this.queue, function (file){ return api.uid(file) != uid; }); + this.files = api.filter(this.files, function (file){ return api.uid(file) != uid; }); + + this._redraw(); + }, + + clear: function (all) { + this._crop = {}; + this._resize = {}; + this._rotate = {}; // rotate deg + + this.queue = []; + this.files = []; // all files + this.uploaded = []; // uploaded files + + all = all === void 0 ? true : all; + this._redraw(all, all); + }, + + dequeue: function (){ + this.queue = []; + this._redraw(); + }, + + widget: function (){ + return this; + }, + + toString: function (){ + return '[jQuery.FileAPI object]'; + }, + + destroy: function (){ + this.$files.empty().append(this.$fileTpl); + + this.$el + .off('.fileapi') + .removeData('fileapi') + ; + + _each(this.options.elements.ctrl, function (selector){ + _isID(selector) && $(selector).off('click.fileapi'); + }); + } + }; + + + function _isOriginTransform(trans){ + var key; + for( key in trans ){ + if( trans.hasOwnProperty(key) ){ + if( !(trans[key] instanceof Object || key === 'overlay') ){ + return true; + } + } + } + return false; + } + + + function _checkFileByCriteria(file, name, imageSize, info){ + if( imageSize && info ){ + var excepted = imageSize > 0 ? imageSize : imageSize[name], + actual = info > 0 ? info : info[name.substr(3).toLowerCase()], + val = (excepted - actual), + isMax = /max/.test(name) + ; + + if( (isMax && val < 0) || (!isMax && val > 0) ){ + if( !file.errors ){ + file.errors = {}; + } + file.errors[name] = Math.abs(val); + } + } + } + + + function _extractFilesOverLimit(limit, countFiles, files, other){ + if( limit ){ + var delta = files.length - (limit - countFiles); + if( delta > 0 ){ + _each(files.splice(0, delta), function (file, i){ + _checkFileByCriteria(file, 'maxFiles', -1, i); + other.push(file); + }); + } + } + } + + + + + + /** + * @export + * @param {Object} options + * @param {String} [value] + */ + $.fn.fileapi = function (options, value){ + var plugin = this.data('fileapi'); + + if( plugin ){ + if( options === 'widget' ){ + return plugin; + } + + if( typeof options == 'string' ){ + var fn = plugin[options], res; + + if( $.isFunction(fn) ){ + res = fn.apply(plugin, _slice.call(arguments, 1)); + } + else if( fn === void 0 ){ + res = plugin.option(options, value); + } + else if( options === 'files' ){ + res = fn; + } + + return res === void 0 ? this : res; + } + } else if( options == null || typeof options == 'object' ){ + this.data('fileapi', new Plugin(this, options)); + } + + return this; + }; + + + $.fn.fileapi.version = '0.4.9'; + $.fn.fileapi.tpl = function (text){ + var index = 0; + var source = "__b+='"; + + text.replace(/(?:<|<)%([-=])?([\s\S]+?)%(?:>|>)|$/g, function (match, mode, expr, offset){ + source += text.slice(index, offset).replace(/[\r\n"']/g, function (match){ return '\\'+match; }); + + if( expr ){ + if( mode ){ + source += "'+\n((__x=("+ expr +"))==null?'':" + (mode == "-" ? "__esc(__x)" : "__x")+")\n+'"; + } else { + source += "';\n"+ expr +"\n__b+='"; + } + } + + index = offset + match.length; + return match; + }); + + return new Function("ctx", "var __x,__b=''," + + "__esc=function(val){return typeof val=='string'?val.replace(/ 0 ){ + opts.aspectRatio = ratio; + } + + api.getInfo(file, function (err, info){ + var + Image = api.Image(file) + , maxSize = opts.maxSize + , deg = file.rotate + ; + + if( maxSize ){ + Image.resize( + Math.max(maxSize[0], minSize[0]) + , Math.max(maxSize[1], minSize[1]) + , 'max' + ); + } + + Image.rotate(deg === void 0 ? 'auto' : deg).get(function (err, img){ + var + selection = opts.selection + , minSide = Math.min(img.width, img.height) + + , selWidth = minSide + , selHeight = minSide / ratio + + , deg = FileAPI.Image.exifOrientation[info.exif && info.exif.Orientation] || 0 + ; + + if( selection ){ + if( /%/.test(selection) || (selection > 0 && selection < 1) ){ + selection = parseFloat(selection, 10) / (selection > 0 ? 1 : 100); + selWidth *= selection; + selHeight *= selection; + } + + var + selLeft = (img.width - selWidth)/2 + , selTop = (img.height - selHeight)/2 + ; + + opts.setSelect = [selLeft|0, selTop|0, (selLeft + selWidth)|0, (selTop + selHeight)|0]; + } + + _each(['onSelect', 'onChange'], function (name, fn){ + if( fn = opts[name] ){ + opts[name] = function (coords){ + var + flip = deg % 180 + , ow = info.width + , oh = info.height + , fx = coords.x/img.width + , fy = coords.y/img.height + , fw = coords.w/img.width + , fh = coords.h/img.height + , x = ow * (flip ? fy : fx) + , y = oh * (flip ? 1 - (coords.x + coords.w)/img.width : fy) + , w = ow * (flip ? fh : fw) + , h = oh * (flip ? fw : fh) + ; + + + fn({ + x: x + , y: y + , w: w + , h: h + , rx: fx * (flip ? oh : ow) + , ry: fy * (flip ? ow : oh) + , rw: fw * (flip ? oh : ow) + , rh: fh * (flip ? ow : oh) + , lx: coords.x // local coords + , ly: coords.y + , lw: coords.w + , lh: coords.h + , lx2: coords.x2 + , ly2: coords.y2 + , deg: deg + , flip: flip + }); + }; + } + }); + + var $inner = $('
                    ').css('lineHeight', 0).append( $(img).css('margin', 0) ); + $el.html($inner); + $inner.Jcrop(opts).trigger('resize'); + }); + }); + } + + return $el; + }; +})(jQuery, FileAPI); diff --git a/assets/js/fileapi/jquery.fileapi.min.js b/assets/js/fileapi/jquery.fileapi.min.js new file mode 100755 index 0000000000..d22a676cf6 --- /dev/null +++ b/assets/js/fileapi/jquery.fileapi.min.js @@ -0,0 +1,2 @@ +/*! jquery.fileapi 0.4.9 - MIT | git://github.com/rubaxa/jquery.fileapi.git */ +!function(a,b){"use strict";function c(a){var b;for(b in a)if(a.hasOwnProperty(b)&&!(a[b]instanceof Object||"overlay"===b))return!0;return!1}function d(a,b,c,d){if(c&&d){var e=c>0?c:c[b],f=d>0?d:d[b.substr(3).toLowerCase()],g=e-f,h=/max/.test(b);(h&&0>g||!h&&g>0)&&(a.errors||(a.errors={}),a.errors[b]=Math.abs(g))}}function e(a,b,c,e){if(a){var f=c.length-(a-b);f>0&&m(c.splice(0,f),function(a,b){d(a,"maxFiles",-1,b),e.push(a)})}}var f=a.noop,g=!a.fn.prop,h=g?"attr":"prop",i=g?"removeAttr":"removeProp",j="data-fileapi",k="data-fileapi-id",l=[].slice,m=b.each,n=b.extend,o=function(a,b){var c=l.call(arguments,2);return b.bind?b.bind.apply(b,[a].concat(c)):function(){return b.apply(a,c.concat(l.call(arguments)))}},p=function(a){return"["+j+'="'+a+'"]'},q=function(a){return 0===a.indexOf("#")},r=function(b,c){if(this.$el=b=a(b).on("change.fileapi",'input[type="file"]',o(this,this._onSelect)),this.el=b[0],this._options={},this.options={url:0,data:{},accept:0,multiple:!1,paramName:0,dataType:"json",duplicate:!1,uploadRetry:0,networkDownRetryTimeout:5e3,chunkSize:0,chunkUploadRetry:3,chunkNetworkDownRetryTimeout:2e3,maxSize:0,maxFiles:0,imageSize:0,sortFn:0,filterFn:0,autoUpload:!1,clearOnSelect:void 0,clearOnComplete:void 0,lang:{B:"bytes",KB:"KB",MB:"MB",GB:"GB",TB:"TB"},sizeFormat:"0.00",imageOriginal:!0,imageTransform:0,imageAutoOrientation:!!FileAPI.support.exif,elements:{ctrl:{upload:p("ctrl.upload"),reset:p("ctrl.reset"),abort:p("ctrl.abort")},empty:{show:p("empty.show"),hide:p("empty.hide")},emptyQueue:{show:p("emptyQueue.show"),hide:p("emptyQueue.hide")},active:{show:p("active.show"),hide:p("active.hide")},size:p("size"),name:p("name"),progress:p("progress"),list:p("list"),file:{tpl:p("file.tpl"),progress:p("file.progress"),active:{show:p("file.active.show"),hide:p("file.active.hide")},preview:{el:0,get:0,width:0,height:0,processing:0},abort:p("file.abort"),remove:p("file.remove"),rotate:p("file.rotate")},dnd:{el:p("dnd"),hover:"dnd_hover",fallback:p("dnd.fallback")}},onDrop:f,onDropHover:f,onSelect:f,onBeforeUpload:f,onUpload:f,onProgress:f,onComplete:f,onFilePrepare:f,onFileUpload:f,onFileProgress:f,onFileComplete:f,onFileRemove:null,onFileRemoveCompleted:null},a.extend(!0,this.options,c),c=this.options,this.option("elements.file.preview.rotate",c.imageAutoOrientation),!c.url){var d=this.$el.attr("action")||this.$el.find("form").attr("action");d?c.url=d:this._throw("url — is not defined")}this.$files=this.$elem("list"),this.$fileTpl=this.$elem("file.tpl"),this.itemTplFn=a.fn.fileapi.tpl(a("
                    ").append(this.$elem("file.tpl")).html()),m(c,function(a,b){this._setOption(b,a)},this),this.$el.on("reset.fileapi",o(this,this._onReset)).on("submit.fileapi",o(this,this._onSubmit)).on("upload.fileapi progress.fileapi complete.fileapi",o(this,this._onUploadEvent)).on("fileupload.fileapi fileprogress.fileapi filecomplete.fileapi",o(this,this._onFileUploadEvent)).on("click","["+j+"]",o(this,this._onActionClick));var e=c.elements.ctrl;e&&(this._listen("click",e.reset,o(this,this._onReset)),this._listen("click",e.upload,o(this,this._onSubmit)),this._listen("click",e.abort,o(this,this._onAbort)));var g=FileAPI.support.dnd;this.$elem("dnd.el",!0).toggle(g),this.$elem("dnd.fallback").toggle(!g),g&&this.$elem("dnd.el",!0).dnd(o(this,this._onDropHover),o(this,this._onDrop)),this.$progress=this.$elem("progress"),void 0===c.clearOnSelect&&(c.clearOnSelect=!c.multiple),this.clear(),a.isArray(c.files)&&(this.files=a.map(c.files,function(b){return"string"===a.type(b)&&(b={src:b,size:0}),b.name=b.name||b.src.split("/").pop(),b.type=b.type||/\.(jpe?g|png|bmp|gif|tiff?)/i.test(b.src)&&"image/"+b.src.split(".").pop(),b.complete=!0,b}),this._redraw())};r.prototype={constructor:r,_throw:function(a){throw"jquery.fileapi: "+a},_getFiles:function(a,c){var f=this.options,g=f.maxSize,h=f.maxFiles,i=f.filterFn,j=this.files.length,k=b.getFiles(a),l={all:k,files:[],other:[],duplicate:f.duplicate?[]:this._extractDuplicateFiles(k)},n=f.imageSize,o=this;n||i?b.filterFiles(k,function(a,b){return b&&n&&(d(a,"minWidth",n,b),d(a,"minHeight",n,b),d(a,"maxWidth",n,b),d(a,"maxHeight",n,b)),d(a,"maxSize",g,a.size),!a.errors&&(!i||i(a,b))},function(a,b){e(h,j,a,b),l.other=b,l.files=a,c.call(o,l)}):(m(k,function(a){d(a,"maxSize",g,a.size),l[a.errors?"other":"files"].push(a)}),e(h,j,l.files,l.other),c.call(o,l))},_extractDuplicateFiles:function(a){for(var b,c=[],d=a.length,e=this.files;d--;)for(b=e.length;b--;)if(this._fileCompare(a[d],e[b])){c.push(a.splice(d,1));break}return c},_fileCompare:function(a,b){return a.size==b.size&&a.name==b.name},_getFormatedSize:function(a){var c=this.options,d="B";return a>=b.TB?a/=b[d="TB"]:a>=b.GB?a/=b[d="GB"]:a>=b.MB?a/=b[d="MB"]:a>=b.KB&&(a/=b[d="KB"]),c.sizeFormat.replace(/^\d+([^\d]+)(\d*)/,function(b,e,f){return a=(parseFloat(a)||0).toFixed(f.length),(a+"").replace(".",e)+" "+c.lang[d]})},_onSelect:function(a){this.options.clearOnSelect&&(this.queue=[],this.files=[]),this._getFiles(a,o(this,function(b){b.all.length&&this.emit("select",b)!==!1&&this.add(b.files),FileAPI.reset(a.target)}))},_onActionClick:function(b){var c=b.currentTarget,d=a.attr(c,j),e=a(c).closest("["+k+"]",this.$el).attr(k),f=this._getFile(e),g=!0;this.$file(e).attr("disabled")||("file.remove"==d?f&&this.emit("fileRemove"+(f.complete?"Completed":""),f)&&this.remove(e):/^file\.rotate/.test(d)?this.rotate(e,/ccw/.test(d)?"-=90":"+=90"):g=!1),g&&b.preventDefault()},_listen:function(b,c,d){c&&m(a.trim(c).split(","),function(c){c=a.trim(c),q(c)?a(c).on(b+".fileapi",d):this.$el.on(b+".fileapi",c,d)},this)},_onSubmit:function(a){a.preventDefault(),this.upload()},_onReset:function(a){a.preventDefault(),this.clear(!0)},_onAbort:function(a){a.preventDefault(),this.abort()},_onDrop:function(a){this._getFiles(a,function(a){this.emit("drop",a)!==!1&&this.add(a.files)})},_onDropHover:function(b,c){if(this.emit("dropHover",{state:b,event:c})!==!1){var d=this.option("elements.dnd.hover");d&&a(c.currentTarget).toggleClass(d,b)}},_getFile:function(a){return b.filter(this.files,function(c){return b.uid(c)==a})[0]},_getUploadEvent:function(a,b){a=this.xhr||a;var c={xhr:a,file:this.xhr.currentFile,files:this.xhr.files,widget:this};return n(c,b)},_emitUploadEvent:function(a,b,c){var d=this._getUploadEvent(c);this.emit(a+"Upload",d)},_emitProgressEvent:function(a,b,c,d){var e=this._getUploadEvent(d,b);this.emit(a+"Progress",e)},_emitCompleteEvent:function(b,c,d,e){var f=this._getUploadEvent(d,{error:c,status:d.status,statusText:d.statusText,result:d.responseText});if("file"==b&&(e.complete=!0),"json"==this.options.dataType)try{f.result=a.parseJSON(f.result)}catch(c){f.error=c}this.emit(b+"Complete",f)},_onUploadEvent:function(a,b){var c=this,d=c.$progress,e=a.type;if("progress"==e)d.stop().animate({width:b.loaded/b.total*100+"%"},300);else if("upload"==e)d.width(0);else{var f=function(){d.dequeue(),c[c.options.clearOnComplete?"clear":"dequeue"]()};this.xhr=null,this.active=!1,d.length?d.queue(f):f()}},_onFileUploadPrepare:function(d,e){var f=b.uid(d),g=this._rotate[f],h=this._crop[f],i=this._resize[f],j=this._getUploadEvent(this.xhr);if(g||h||i){var k=a.extend(!0,{},e.imageTransform||{});g=null!=g?g:this.options.imageAutoOrientation?"auto":void 0,a.isEmptyObject(k)||c(k)?(n(k,i),k.crop=h,k.rotate=g):m(k,function(a){n(a,i),a.crop=h,a.rotate=g}),e.imageTransform=k}j.file=d,j.options=e,this.emit("filePrepare",j)},_onFileUploadEvent:function(a,c){var d=this,e=a.type.substr(4),f=b.uid(c.file),g=this.$file(f),h=this._$fileprogress,i=this.options;if(this.__fileId!==f&&(this.__fileId=f,this._$fileprogress=h=this.$elem("file.progress",g)),"progress"==e)h.stop().animate({width:c.loaded/c.total*100+"%"},300);else if("upload"==e||"complete"==e){var j=function(){var a="file."+e,b=d.$elem("file.remove",g);"upload"==e?(b.hide(),h.width(0)):i.onFileRemoveCompleted&&b.show(),h.dequeue(),d.$elem(a+".show",g).show(),d.$elem(a+".hide",g).hide()};h.length?h.queue(j):j(),"complete"==e&&(this.uploaded.push(c.file),delete this._rotate[f])}},_redraw:function(c,d){var e=this.files,f=!!this.active,g=!e.length&&!f,i=!this.queue.length&&!f,j=[],l=0,n=this.$files,o=n.children().length,p=this.option("elements.preview"),q=this.option("elements.file.preview");c&&this.$files.empty(),d&&p&&p.el&&!this.queue.length&&this.$(p.el).empty(),m(e,function(c,d){var e=b.uid(c);if(j.push(c.name),l+=c.complete?0:c.size,p&&p.el)this._makeFilePreview(e,c,p,!0);else if(n.length&&!this.$file(e).length){var f=this.itemTplFn({$idx:o+d,uid:e,name:c.name,type:c.type,size:c.size,complete:!!c.complete,sizeText:this._getFormatedSize(c.size)}),g=a(f).attr(k,e);c.$el=g,n.append(g),c.complete&&(this.$elem("file.upload.hide",g).hide(),this.$elem("file.complete.hide",g).hide()),q.el&&this._makeFilePreview(e,c,q)}},this),this.$elem("name").text(j.join(", ")),this.$elem("size").text(i?"":this._getFormatedSize(l)),this.$elem("empty.show").toggle(g),this.$elem("empty.hide").toggle(!g),this.$elem("emptyQueue.show").toggle(i),this.$elem("emptyQueue.hide").toggle(!i),this.$elem("active.show").toggle(f),this.$elem("active.hide").toggle(!f),this.$(".js-fileapi-wrapper,:file")[f?"attr":"removeAttr"]("aria-disabled",f)[h]("disabled",f),this._disableElem("ctrl.upload",i||f),this._disableElem("ctrl.reset",i||f),this._disableElem("ctrl.abort",!f)},_disableElem:function(a,b){this.$elem(a)[b?"attr":"removeAttr"]("aria-disabled","disabled")[h]("disabled",b)},_makeFilePreview:function(a,c,d,e){var f=this,g=e?f.$(d.el):f.$file(a).find(d.el);if(!f._crop[a])if(/^image/.test(c.type)){var h=b.Image(c.src||c),i=function(){h.get(function(b,e){f._crop[a]||(b?(d.get&&d.get(g,c),f.emit("previewError",[b,c])):g.html(e))})};d.width&&h.preview(d.width,d.height),d.rotate&&h.rotate("auto"),d.processing?d.processing(c,h,i):i()}else d.get&&d.get(g,c)},emit:function(b,c){var d,e=this.options,f=a.Event(b.toLowerCase());return f.widget=this,b=a.camelCase("on-"+b),a.isFunction(e[b])&&(d=e[b].call(this.el,f,c)),this.$el.triggerHandler(f,c),d!==!1&&!f.isDefaultPrevented()},add:function(a,b){if(a=[].concat(a),a.length){var c=this.options,d=c.sortFn;d&&a.sort(d),this.xhr&&this.xhr.append(a),this.queue=b?a:this.queue.concat(a),this.files=b?a:this.files.concat(a),this.active?(this.xhr.append(a),this._redraw(b)):(this._redraw(b),this.options.autoUpload&&this.upload())}},$:function(b,c){return"string"==typeof b&&(b=/^#/.test(b)?b:(c?a(c):this.$el).find(b)),a(b)},$elem:function(b,c,d){c&&c.jquery&&(d=c,c=!1);var e=this.option("elements."+b);return void 0===e&&c&&(e=this.option("elements."+b.substr(0,b.lastIndexOf(".")))),this.$("string"!=a.type(e)&&a.isEmptyObject(e)?[]:e,d)},$file:function(a){return this.$("["+k+'="'+a+'"]')},option:function(b,c){if(void 0!==c&&a.isPlainObject(c))return m(c,function(a,c){this.option(b+"."+c,a)},this),this;var d,e,f=this.options,g=f[b],h=0;if(-1!=b.indexOf("."))for(g=f,b=b.split("."),d=b.length;d>h;h++){if(e=b[h],void 0!==c&&d-h===1){g[e]=c;break}g[e]||(g[e]={}),g=g[e]}else void 0!==c&&(f[b]=c);return void 0!==c&&(this._setOption(b,c,this._options[b]),this._options[b]=c),void 0!==c?c:g},_setOption:function(a,b){switch(a){case"accept":case"multiple":this.$(":file")[b?h:i](a,b);break;case"paramName":b&&this.$(":file")[h]("name",b)}},serialize:function(){var b,c={};return this.$el.find(":input").each(function(d,e){(d=e.name)&&!e.disabled&&(e.checked||/select|textarea|input/i.test(e.nodeName)&&!/checkbox|radio|file/i.test(e.type))&&(b=a(e).val(),void 0!==c[d]?(c[d].push||(c[d]=[c[d]]),c[d].push(b)):c[d]=b)}),c},upload:function(){if(!this.active&&this.emit("beforeUpload",{widget:this,files:this.queue})){this.active=!0;var a=this.$el,c=this.options,d={},e={url:c.url,data:n({},this.serialize(),c.data),headers:c.headers,files:d,uploadRetry:c.uploadRetry,networkDownRetryTimeout:c.networkDownRetryTimeout,chunkSize:c.chunkSize,chunkUploadRetry:c.chunkUploadRetry,chunkNetworkDownRetryTimeout:c.chunkNetworkDownRetryTimeout,prepare:o(this,this._onFileUploadPrepare),imageOriginal:c.imageOriginal,imageTransform:c.imageTransform,imageAutoOrientation:c.imageAutoOrientation};d[a.find(":file").attr("name")||"files[]"]=this.queue,m(["Upload","Progress","Complete"],function(a){var b=a.toLowerCase();e[b]=o(this,this["_emit"+a+"Event"],""),e["file"+b]=o(this,this["_emit"+a+"Event"],"file")},this),this.xhr=b.upload(e),this._redraw()}},abort:function(a){this.active&&this.xhr&&this.xhr.abort(a)},crop:function(c,d){var e=b.uid(c),f=this.options,g=f.multiple?this.option("elements.file.preview"):f.elements.preview,h=(f.multiple?this.$file(e):this.$el).find(g&&g.el);h.length&&b.getInfo(c,o(this,function(e,i){if(e)this.emit("previewError",[e,c]);else{h.find("div>div").length||h.html(a("
                    ").css(g).css("overflow","hidden")),this.__cropFile!==c&&(this.__cropFile=c,b.Image(c).rotate(f.imageAutoOrientation?"auto":0).get(function(b,c){h.find(">div>div").html(a(c).width("100%").height("100%"))},"exactFit"));var j=g.width,k=g.height,l=j,m=k,n=j/d.rw,o=k/d.rh;g.keepAspectRatio&&(n>1&&o>1?(n=o=1,m=d.h,l=d.w):o>n?(o=n,m=j*d.rh/d.rw):(n=o,l=k*d.rw/d.rh)),h.find(">div>div").css({width:Math.round(n*i[d.flip?"height":"width"]),height:Math.round(o*i[d.flip?"width":"height"]),marginLeft:-Math.round(n*d.rx),marginTop:-Math.round(o*d.ry)}),g.keepAspectRatio&&h.find(">div").css({width:Math.round(l),height:Math.round(m),marginLeft:j>l?Math.round((j-l)/2):0,marginTop:k>m?Math.round((k-m)/2):0})}})),this._crop[e]=d},resize:function(a,c,d,e){this._resize[b.uid(a)]={type:e,width:c,height:d}},rotate:function(c,d){var e="string"==a.type(c)?c:b.uid(c),f=this.options,g=f.multiple?this.option("elements.file.preview"):f.elements.preview,h=(f.multiple?this.$file(e):this.$el).find(g&&g.el),i=this._rotate;c=this._getFile(e),b.getInfo(c,function(a,g){var j=g&&g.exif&&g.exif.Orientation,k=f.imageAutoOrientation&&b.Image.exifOrientation[j]||0;null==i[e]&&(i[e]=k||0),i[e]=/([+-])=/.test(d)?d=i[e]+("+"==RegExp.$1?1:-1)*d.substr(2):d,c.rotate=d,d-=k,h.css({"-webkit-transform":"rotate("+d+"deg)","-moz-transform":"rotate("+d+"deg)",transform:"rotate("+d+"deg)"})})},remove:function(a){var c="object"==typeof a?b.uid(a):a;this.$file(c).remove(),this.queue=b.filter(this.queue,function(a){return b.uid(a)!=c}),this.files=b.filter(this.files,function(a){return b.uid(a)!=c}),this._redraw()},clear:function(a){this._crop={},this._resize={},this._rotate={},this.queue=[],this.files=[],this.uploaded=[],a=void 0===a?!0:a,this._redraw(a,a)},dequeue:function(){this.queue=[],this._redraw()},widget:function(){return this},toString:function(){return"[jQuery.FileAPI object]"},destroy:function(){this.$files.empty().append(this.$fileTpl),this.$el.off(".fileapi").removeData("fileapi"),m(this.options.elements.ctrl,function(b){q(b)&&a(b).off("click.fileapi")})}},a.fn.fileapi=function(b,c){var d=this.data("fileapi");if(d){if("widget"===b)return d;if("string"==typeof b){var e,f=d[b];return a.isFunction(f)?e=f.apply(d,l.call(arguments,1)):void 0===f?e=d.option(b,c):"files"===b&&(e=f),void 0===e?this:e}}else(null==b||"object"==typeof b)&&this.data("fileapi",new r(this,b));return this},a.fn.fileapi.version="0.4.9",a.fn.fileapi.tpl=function(a){var b=0,c="__b+='";return a.replace(/(?:<|<)%([-=])?([\s\S]+?)%(?:>|>)|$/g,function(d,e,f,g){return c+=a.slice(b,g).replace(/[\r\n"']/g,function(a){return"\\"+a}),f&&(c+=e?"'+\n((__x=("+f+"))==null?'':"+("-"==e?"__esc(__x)":"__x")+")\n+'":"';\n"+f+"\n__b+='"),b=g+d.length,d}),new Function("ctx","var __x,__b='',__esc=function(val){return typeof val=='string'?val.replace(/0&&(c.aspectRatio=g),b.getInfo(e,function(h,i){var j=b.Image(e),k=c.maxSize,l=e.rotate;k&&j.resize(Math.max(k[0],f[0]),Math.max(k[1],f[1]),"max"),j.rotate(void 0===l?"auto":l).get(function(b,e){var f=c.selection,h=Math.min(e.width,e.height),j=h,k=h/g,l=FileAPI.Image.exifOrientation[i.exif&&i.exif.Orientation]||0;if(f){(/%/.test(f)||f>0&&1>f)&&(f=parseFloat(f,10)/(f>0?1:100),j*=f,k*=f);var n=(e.width-j)/2,o=(e.height-k)/2;c.setSelect=[0|n,0|o,n+j|0,o+k|0]}m(["onSelect","onChange"],function(a,b){(b=c[a])&&(c[a]=function(a){var c=l%180,d=i.width,f=i.height,g=a.x/e.width,h=a.y/e.height,j=a.w/e.width,k=a.h/e.height,m=d*(c?h:g),n=f*(c?1-(a.x+a.w)/e.width:h),o=d*(c?k:j),p=f*(c?j:k);b({x:m,y:n,w:o,h:p,rx:g*(c?f:d),ry:h*(c?d:f),rw:j*(c?f:d),rh:k*(c?d:f),lx:a.x,ly:a.y,lw:a.w,lh:a.h,lx2:a.x2,ly2:a.y2,deg:l,flip:c})})});var p=a("
                    ").css("lineHeight",0).append(a(e).css("margin",0));d.html(p),p.Jcrop(c).trigger("resize")})})}return d}}(jQuery,FileAPI); \ No newline at end of file diff --git a/assets/js/fileapi/package.json b/assets/js/fileapi/package.json new file mode 100755 index 0000000000..0c847e2387 --- /dev/null +++ b/assets/js/fileapi/package.json @@ -0,0 +1,36 @@ +{ + "name": "jquery.fileapi", + "version": "0.4.9", + "devDependencies": { + "grunt": "~0.4.0", + "grunt-version": "*", + "grunt-contrib-jshint": "~0.2.0", + "grunt-contrib-uglify": "*", + + "eventemitter2": "~0.4.9", + "semver": "~1.0.14", + "temporary": "~0.0.4", + "phantomjs": "latest" + }, + "description": "jQuery plugin for FileAPI (multiupload, image upload, crop, resize and etc.)", + "main": "jquery.fileapi.js", + "scripts": { + "test": "grunt test" + }, + "repository": { + "type": "git", + "url": "git://github.com/rubaxa/jquery.fileapi.git" + }, + "keywords": [ + "FileAPI", + "upload", + "multiupload", + "file", + "html5", + "chunked", + "jquery", + "plugin" + ], + "author": "Konstantin Lebedev ", + "license": "MIT" +} diff --git a/assets/js/fileapi/statics/body.png b/assets/js/fileapi/statics/body.png new file mode 100755 index 0000000000..5118e8ddf6 Binary files /dev/null and b/assets/js/fileapi/statics/body.png differ diff --git a/assets/js/fileapi/statics/body__top.png b/assets/js/fileapi/statics/body__top.png new file mode 100755 index 0000000000..74983d676a Binary files /dev/null and b/assets/js/fileapi/statics/body__top.png differ diff --git a/assets/js/fileapi/statics/click-here.png b/assets/js/fileapi/statics/click-here.png new file mode 100755 index 0000000000..a9fb8fa7e1 Binary files /dev/null and b/assets/js/fileapi/statics/click-here.png differ diff --git a/assets/js/fileapi/statics/content.png b/assets/js/fileapi/statics/content.png new file mode 100755 index 0000000000..f0d034db56 Binary files /dev/null and b/assets/js/fileapi/statics/content.png differ diff --git a/assets/js/fileapi/statics/content__head.png b/assets/js/fileapi/statics/content__head.png new file mode 100755 index 0000000000..e65a320acd Binary files /dev/null and b/assets/js/fileapi/statics/content__head.png differ diff --git a/assets/js/fileapi/statics/jquery.modal.js b/assets/js/fileapi/statics/jquery.modal.js new file mode 100755 index 0000000000..facfd6f5a3 --- /dev/null +++ b/assets/js/fileapi/statics/jquery.modal.js @@ -0,0 +1,133 @@ +/** + * The Modal jQuery plugin + * + * @author Alexander Makarov + * @link https://github.com/samdark/the-modal + * @version 1.0 + */ + +/*global jQuery, window, document*/ +;(function($, window, document, undefined) { + "use strict"; + /*jshint smarttabs:true*/ + + var pluginNamespace = 'the-modal', + // global defaults + defaults = { + overlayClass: 'themodal-overlay', + + closeOnEsc: true, + closeOnOverlayClick: true, + + onClose: null, + onOpen: null + }; + + function lockContainer() { + $('html,body').addClass('lock'); + } + + function unlockContainer() { + $('html,body').removeClass('lock'); + } + + function init(els, options) { + var modalOptions = options, _this; + + if(els.length) { + els.each(function(){ + $(this).data(pluginNamespace+'.options', modalOptions); + }); + } + else { + $.extend(defaults, modalOptions); + } + + return _this = { + open: function(options) { + var el = els.get(0); + var localOptions = $.extend({}, defaults, $(el).data(pluginNamespace+'.options'), options); + + // close modal if opened + if($('.'+localOptions.overlayClass).length) { + $.modal().close(); + } + + lockContainer(); + + var overlay = $('
                    ').addClass(localOptions.overlayClass).prependTo('body'); + overlay.data(pluginNamespace+'.options', options); + + if(el) { + el = $(el).clone(true).appendTo(overlay).show(); + } + + if(localOptions.closeOnEsc) { + $(document).bind('keyup.'+pluginNamespace, function(e){ + if(e.keyCode === 27) { + _this.close(); + } + }); + } + + if(localOptions.closeOnOverlayClick) { + $('.' + localOptions.overlayClass).on('click.' + pluginNamespace, function(e){ + if (e.target === this) { + _this.close(); + } + }); + } + + $(document).bind('touchmove.'+pluginNamespace,function(e){ + if(!$(e).parents('.' + localOptions.overlayClass)) { + e.preventDefault(); + } + }); + + if(localOptions.onOpen) { + localOptions.onOpen(overlay, localOptions); + } + + el.on('resize', function (){ + el.css('marginLeft', ($(window).width() - el.outerWidth())/2); + }).triggerHandler('resize'); + }, + close: function() { + var el = els.get(0); + + var localOptions = $.extend({}, defaults, options); + var overlay = $('.' + localOptions.overlayClass); + $.extend(localOptions, overlay.data(pluginNamespace+'.options')); + + if(localOptions.onClose) { + localOptions.onClose(overlay, localOptions); + } + + overlay.remove(); + unlockContainer(); + + if(localOptions.closeOnEsc) { + $(document).unbind('keyup.'+pluginNamespace); + } + } + }; + } + + $.modal = function(options){ + return init($(), options); + }; + + $.fn.modal = function(options) { + return init(this, options); + }; + + + $.modal.getAvailableWidth = function (width){ + return Math.min($(window).width() - 100, width); + }; + + $.modal.getAvailableHeight = function (height){ + return Math.min($(window).height() - 100, height); + }; + +})(jQuery, window, document); diff --git a/assets/js/fileapi/statics/logo_small.png b/assets/js/fileapi/statics/logo_small.png new file mode 100755 index 0000000000..92193d3402 Binary files /dev/null and b/assets/js/fileapi/statics/logo_small.png differ diff --git a/assets/js/fileapi/statics/main.css b/assets/js/fileapi/statics/main.css new file mode 100755 index 0000000000..b51eef929e --- /dev/null +++ b/assets/js/fileapi/statics/main.css @@ -0,0 +1,756 @@ +html, body { + margin: 0; + padding: 0; +} + +img { + border: 0; + vertical-align: middle; +} + +body { + font-family: "Helvetica Neue"; + background-color: #202227; + background-image: url('body.png'); +} + .body__top { + top: 0; + left: 0; + width: 100%; + height: 321px; + z-index: -1; + position: absolute; + background-image: url('body__top.png'); + } + + + +h2 { + margin: 0 0 10px; + font-size: 40px; + font-family: 'Roboto', sans-serif; + font-weight: 300; + text-shadow: 0 1px 1px #fff; +} + + +.view-on-github { + top: 160px; + right: 5%; + width: 114px; + height: 80px; + display: block; + position: absolute; + background: url('view-on-github.png') no-repeat; +} + + +.logo { + display: inline-block; + background-position: no-repeat; +} + .logo_small { + width: 43px; + height: 15px; + background-image: url('logo_small.png'); + } + + +.splash { + width: 650px; + height: 370px; + margin: 30px auto 0; + box-shadow: 0 1px 1px rgba(255,255,255,.2); + border-radius: 4px; + background-color: #000; + position: relative; +} + .splash__inner { + top: 3px; + left: 3px; + right: 3px; + bottom: 3px; + overflow: hidden; + position: absolute; + } + + .splash__blind { + width: 100%; + height: 100%; + cursor: pointer; + position: absolute; + border-radius: 4px; + background-image: url('splash__blind.png'); + } + + .splash__logo { + top: 50%; + left: 50%; + width: 284px; + height: 201px; + margin: -120px 0 0 -142px; + position: absolute; + background: url('splash__logo.png') no-repeat; + } + + .splash__click-here { + right: 60px; + bottom: 40px; + width: 66px; + height: 25px; + position: absolute; + background: url('click-here.png') no-repeat; + cursor: pointer; + } + + +.content { + width: 80%; + max-width: 1200px; + margin: 60px auto; + border: 1px solid #fff; + position: relative; + min-height: 400px; + background-color: #F4F7F1; + background-image: url('content.png'); +} + .content__head { + top: -21px; + left: 36px; + right: 36px; + height: 20px; + position: absolute; + text-align: center; + background-image: url('content__head.png'); + } + + .content__head:before, .content__head:after { + top: 0; + left: 0; + width: 100%; + bottom: 0; + z-index: -1; + content: ''; + position: absolute; + background-image: url('content__head.png'); + } + .content__head:before { + left: 20px; + -webkit-transform: skew(60deg); + -moz-transform: skew(60deg); + transform: skew(60deg); + } + .content__head:after { + left: auto; + right: 20px; + -webkit-transform: skew(-60deg); + -moz-transform: skew(-60deg); + transform: skew(-60deg); + } + + + + + +.example { + margin: 25px; +} + .example__left { + float: left; + width: 290px; + text-align: center; + } + + .example__right { + margin-left: 320px; + } + + .example__code { + padding: 1px 20px 0 20px; + overflow: auto; + max-height: 400px; + border-right: 4px solid #DDE0DA; + border-bottom: 4px solid #DDE0DA; + background-color: #fff; + } + + .example h2 { + overflow: hidden; + } + .example h2 span { + float: left; + display: block; + } + + .example__tabs { + display: block; + font-size: 14px; + vertical-align: top; + } + .example__tabs a { + color: #36c; + cursor: pointer; + margin: 0 5px 2px; + border-bottom: 1px dotted #36c; + } + .example__tabs a.active { + color: #333; + cursor: default; + margin: 0; + padding: 0 5px 2px; + border-bottom: 0; + background-color: rgba(0,0,0,.1); + *background-color: #eee; + } + + + +.btn { + cursor: pointer; + display: inline-block; + *zoom: 1; + *display: inline; + position: relative; + overflow: hidden; + font-size: 20px; + font-family: Arial, Helvetica, sans-serif; + border-radius: 4px; + vertical-align: middle; +} + .btn-success { + border: 1px solid rgba(0,0,0,.2); + padding: 8px 20px; + background-color: #FFDC73; + background: -moz-linear-gradient(top,#FFE599 0%,#FFDC73); + background: -webkit-gradient(linear, left top, left bottom,from(#FFE599),to(#FFDC73)); + box-shadow: 0 1px 1px rgba(255,255,255,.5); + } + + .btn-success.btn-small[aria-disabled], + .btn-primary[disabled], + .btn-warning[disabled] { + opacity: .7; + } + + + .btn-primary { + color: #333; + border: 1px solid rgba(0,0,0,.2); + padding: 8px 20px; + background-color: #62c462; + background: -moz-linear-gradient(top,#62c462 0%,#51a351); + background: -webkit-gradient(linear, left top, left bottom,from(#62c462),to(#51a351)); + box-shadow: 0 1px 1px rgba(255,255,255,.5); + } + + .btn-warning { + color: #333; + border: 1px solid rgba(0,0,0,.2); + padding: 8px 20px; + background-color: #bd362f; + background: -moz-linear-gradient(top,#ee5f5b 0%,#bd362f); + background: -webkit-gradient(linear, left top, left bottom,from(#ee5f5b),to(#bd362f)); + box-shadow: 0 1px 1px rgba(255,255,255,.5); + } + + .btn-small { + padding: 5px 10px; + font-size: 16px; + } + + .btn input { + top: -10px; + right: -40px; + z-index: 2; + position: absolute; + cursor: pointer; + opacity: 0; + filter: alpha(opacity=0); + font-size: 50px; + cursor: pointer; + } + + .btn-txt { + position: relative; + } + + .btn .progress { + top: 0; + left: 0; + right: 0; + bottom: 0; + opacity: .5; + position: absolute; + } + .progress .bar { + width: 0; + top: 0; + left: 0; + bottom: 0; + position: absolute; + background-color: #f60; + } + + +.progress-small { + height: 5px; + padding: 1px; + box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.3); + border-radius: 10px; + background-color: rgba(0,0,0,.5); +} + .progress-small .bar { + width: 0; + height: 100%; + position: static; + border-radius: 10px; + background-color: orange; + } + + + + +.webcam, +.userpic { + width: 200px; + height: 200px; + border: 2px solid #aaa; + display: inline-block; + position: relative; + background: url('uploader/userpic.gif') no-repeat; + background-size: cover; +} + .webcam .btn, + .userpic .btn { + margin-top: 150px; + } + + .webcam__preview, + .userpic__preview { + position: absolute; + } + +.webcam { + background-size: auto; + background-image: url('uploader/webcam.png'); + background-position: center 10px; +} + + +.b-upload { + white-space: nowrap; +} + .b-upload__name, + .b-upload__size { + display: inline-block; + position: relative; + overflow: hidden; + max-width: 150px; + vertical-align: middle; + } + .b-upload__size { + color: #666; + font-size: 12px; + } + + .b-upload .js-files:after { + clear: both; + content: ''; + display: block; + } + + .b-upload__dnd { + padding: 30px; + border-radius: 5px; + margin-bottom: 10px; + background-color: rgba(0,0,0,.1); + } + .b-upload__dnd_hover { + color: #fff; + background-color: orange; + } + + .b-upload__hint { + padding: 5px 8px; + font-size: 12px; + white-space: normal; + border-radius: 3px; + background-color: rgba(0,0,0,.08); + } + + + + + +.b-thumb { + float: left; + margin: 3px; + padding: 5px; + overflow: hidden; + position: relative; + box-shadow: 0 0 2px rgba(0,0,0,.4); + background-color: #fff; +} + .b-thumb__del { + top: -6px; + right: -1px; + color: #FF0000; + cursor: pointer; + opacity: 0; + z-index: 999; + position: absolute; + font-size: 20px; + -webkit-transition: opacity .1s ease-in; + -moz-transition: opacity .1s ease-in; + transition: opacity .1s ease-in; + } + .b-thumb:hover .b-thumb__del { + opacity: 1; + } + + .b-thumb__rotate { + top: 40%; + left: 50%; + width: 32px; + height: 32px; + cursor: pointer; + margin: -16px 0 0 -16px; + position: absolute; + background: url('uploader/rotate.png'); + } + + .b-thumb__preview { + width: 80px; + height: 80px; + -webkit-transition: -webkit-transform .2s ease-in; + -moz-transition: -moz-transform .2s ease-in; + transition: transform .2s ease-in; + } + .b-thumb__preview__pic { + width: 100%; + height: 100%; + background: url('uploader/file-icon.png') 50% 50% no-repeat; + } + + .b-thumb__name { + width: 80px; + overflow: hidden; + font-size: 12px; + } + + .b-thumb__progress { + top: 75px; + left: 10px; + right: 10px; + position: absolute; + } + + + +.btn { + cursor: pointer; + *zoom: 1; + *display: inline; + display: inline-block; + position: relative; + overflow: hidden; + font-size: 20px; + font-family: Arial; + border-radius: 4px; + vertical-align: middle; +} + .btn_browse { + border: 1px solid rgba(0,0,0,.2); + padding: 8px 20px; + background-color: #FFDC73; + background: -moz-linear-gradient(top,#FFE599 0%,#FFDC73); + background: -webkit-gradient(linear, left top, left bottom,from(#FFE599),to(#FFDC73)); + box-shadow: 0 1px 1px rgba(255,255,255,.5); + } + .btn_browse_small { + padding: 5px 10px; + font-size: 16px; + } + + .btn_browse_small[aria-disabled] { + opacity: .5; + } + + .btn_choose { + color: #fff; + border: 2px solid rgba(255,255,255,.4); + padding: 5px 10px; + text-shadow: 0 1px 1px rgba(0,0,0,.3); + background-color: rgba(0,0,0,.4); + *background-color: #aaa; + } + + .btn__inp { + top: -10px; + right: -10px; + cursor: pointer; + filter: alpha(opacity=0); + opacity: 0; + font-size: 50px; + position: absolute; + } + + .btn__progress { + top: 0; + left: 0; + height: 100%; + opacity: .5; + position: absolute; + background-color: #f60; + } + + +.fileprogress { + padding: 1px; + height: 5px; + box-shadow: 0 0 1px 1px rgba(255, 255, 255, 0.3); + border-radius: 10px; + background-color: rgba(0,0,0,.5); +} + .fileprogress__bar { + width: 0; + height: 100%; + border-radius: 10px; + background-color: orange; + } + + + + +.userpic { + width: 200px; + height: 200px; + border: 2px solid rgba(0,0,0,.3); + display: inline-block; + position: relative; +} + .userpic .btn { + margin-top: 150px; + } + + .userpic__preview { + position: absolute; + } + + +.b-upload { + white-space: nowrap; +} + .b-upload__name, + .b-upload__size { + display: inline-block; + position: relative; + overflow: hidden; + max-width: 150px; + vertical-align: middle; + } + .b-upload__size { + color: #666; + font-size: 12px; + } + + .b-upload .js-files:after { + clear: both; + content: ''; + display: block; + } + + .b-upload__dnd { + padding: 30px; + border-radius: 5px; + margin-bottom: 10px; + background-color: rgba(0,0,0,.1); + } + .b-upload__dnd_hover { + color: #fff; + background-color: orange; + } + + + +.themodal-overlay { + position: fixed; + bottom: 0; + left: 0; + top: 0; + right: 0; + z-index: 100000; + overflow: auto; + background-color: rgba(0, 0, 0, 0.5); +} + +.lock { + overflow: hidden; +} + +.popup { + margin: 25px; + float: left; + display: inline-block; + box-shadow: 0 0 5px #000; + background-color: #fff; +} + .popup__body { + margin: 10px 10px 5px; + } + + + + +/** + * XCode style (c) Angel Garcia + */ + +pre code { + display: block; padding: 0.5em; + color: black; +} + +pre .comment, +pre .template_comment, +pre .javadoc, +pre .comment * { + color: rgb(0,106,0); +} + +pre .keyword, +pre .literal, +pre .nginx .title { + color: rgb(170,13,145); +} +pre .method, +pre .list .title, +pre .tag .title, +pre .setting .value, +pre .winutils, +pre .tex .command, +pre .http .title, +pre .request, +pre .status { + color: #008; +} + +pre .envvar, +pre .tex .special { + color: #660; +} + +pre .string { + color: rgb(196,26,22); +} +pre .tag .value, +pre .cdata, +pre .filter .argument, +pre .attr_selector, +pre .apache .cbracket, +pre .date, +pre .regexp { + color: #080; +} + +pre .sub .identifier, +pre .pi, +pre .tag, +pre .tag .keyword, +pre .decorator, +pre .ini .title, +pre .shebang, +pre .prompt, +pre .hexcolor, +pre .rules .value, +pre .css .value .number, +pre .symbol, +pre .symbol .string, +pre .number, +pre .css .function, +pre .clojure .title, +pre .clojure .built_in { + color: rgb(28,0,207); +} + +pre .class .title, +pre .haskell .type, +pre .smalltalk .class, +pre .javadoctag, +pre .yardoctag, +pre .phpdoc, +pre .typename, +pre .tag .attribute, +pre .doctype, +pre .class .id, +pre .built_in, +pre .setting, +pre .params, +pre .clojure .attribute { + color: rgb(92,38,153); +} + +pre .variable { + color: rgb(63,110,116); +} +pre .css .tag, +pre .rules .property, +pre .pseudo, +pre .subst { + color: #000; +} + +pre .css .class, pre .css .id { + color: #9B703F; +} + +pre .value .important { + color: #ff7700; + font-weight: bold; +} + +pre .rules .keyword { + color: #C5AF75; +} + +pre .annotation, +pre .apache .sqbracket, +pre .nginx .built_in { + color: #9B859D; +} + +pre .preprocessor, +pre .preprocessor * { + color: rgb(100,56,32); +} + +pre .tex .formula { + background-color: #EEE; + font-style: italic; +} + +pre .diff .header, +pre .chunk { + color: #808080; + font-weight: bold; +} + +pre .diff .change { + background-color: #BCCFF9; +} + +pre .addition { + background-color: #BAEEBA; +} + +pre .deletion { + background-color: #FFC8BD; +} + +pre .comment .yardoctag { + font-weight: bold; +} + +pre .method .id { + color: #000; +} diff --git a/assets/js/fileapi/statics/splash__blind.png b/assets/js/fileapi/statics/splash__blind.png new file mode 100755 index 0000000000..9a8cb577b5 Binary files /dev/null and b/assets/js/fileapi/statics/splash__blind.png differ diff --git a/assets/js/fileapi/statics/splash__logo.png b/assets/js/fileapi/statics/splash__logo.png new file mode 100755 index 0000000000..4b3f6712eb Binary files /dev/null and b/assets/js/fileapi/statics/splash__logo.png differ diff --git a/assets/js/fileapi/statics/uploader/file-icon.png b/assets/js/fileapi/statics/uploader/file-icon.png new file mode 100755 index 0000000000..7fe8e8b5f4 Binary files /dev/null and b/assets/js/fileapi/statics/uploader/file-icon.png differ diff --git a/assets/js/fileapi/statics/uploader/rotate.png b/assets/js/fileapi/statics/uploader/rotate.png new file mode 100755 index 0000000000..b8230110fc Binary files /dev/null and b/assets/js/fileapi/statics/uploader/rotate.png differ diff --git a/assets/js/fileapi/statics/uploader/userpic.gif b/assets/js/fileapi/statics/uploader/userpic.gif new file mode 100755 index 0000000000..48af80ce89 Binary files /dev/null and b/assets/js/fileapi/statics/uploader/userpic.gif differ diff --git a/assets/js/fileapi/statics/uploader/webcam.png b/assets/js/fileapi/statics/uploader/webcam.png new file mode 100755 index 0000000000..07a159828b Binary files /dev/null and b/assets/js/fileapi/statics/uploader/webcam.png differ diff --git a/assets/js/fileapi/statics/view-on-github.png b/assets/js/fileapi/statics/view-on-github.png new file mode 100755 index 0000000000..58bec914cb Binary files /dev/null and b/assets/js/fileapi/statics/view-on-github.png differ diff --git a/assets/js/handlebars/handlebars.min.js b/assets/js/handlebars/handlebars.min.js new file mode 100755 index 0000000000..53cf921d4f --- /dev/null +++ b/assets/js/handlebars/handlebars.min.js @@ -0,0 +1,28 @@ +/*! + + handlebars v2.0.0 + +Copyright (C) 2011-2014 by Yehuda Katz + +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. + +@license +*/ +!function(a,b){"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Handlebars=a.Handlebars||b()}(this,function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return i[a]}function c(a){for(var b=1;b":">",'"':""","'":"'","`":"`"},j=/[&<>"'`]/g,k=/[&<>"'`]/;g.extend=c;var l=Object.prototype.toString;g.toString=l;var m=function(a){return"function"==typeof a};m(/x/)&&(m=function(a){return"function"==typeof a&&"[object Function]"===l.call(a)});var m;g.isFunction=m;var n=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===l.call(a):!1};return g.isArray=n,g.escapeExpression=d,g.isEmpty=e,g.appendContextPath=f,g}(a),c=function(){"use strict";function a(a,b){var d;b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;f0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):d(this);if(c.data&&c.ids){var g=q(c.data);g.contextPath=f.appendContextPath(c.data.contextPath,c.name),c={data:g}}return e(b,c)}),a.registerHelper("each",function(a,b){if(!b)throw new g("Must pass iterator to #each");var c,d,e=b.fn,h=b.inverse,i=0,j="";if(b.data&&b.ids&&(d=f.appendContextPath(b.data.contextPath,b.ids[0])+"."),l(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(k(a))for(var m=a.length;m>i;i++)c&&(c.index=i,c.first=0===i,c.last=i===a.length-1,d&&(c.contextPath=d+i)),j+=e(a[i],{data:c});else for(var n in a)a.hasOwnProperty(n)&&(c&&(c.key=n,c.index=i,c.first=0===i,d&&(c.contextPath=d+n)),j+=e(a[n],{data:c}),i++);return 0===i&&(j=h(this)),j}),a.registerHelper("if",function(a,b){return l(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||f.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){l(a)&&(a=a.call(this));var c=b.fn;if(f.isEmpty(a))return b.inverse(this);if(b.data&&b.ids){var d=q(b.data);d.contextPath=f.appendContextPath(b.data.contextPath,b.ids[0]),b={data:d}}return c(a,b)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)}),a.registerHelper("lookup",function(a,b){return a&&a[b]})}var e={},f=a,g=b,h="2.0.0";e.VERSION=h;var i=6;e.COMPILER_REVISION=i;var j={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};e.REVISION_CHANGES=j;var k=f.isArray,l=f.isFunction,m=f.toString,n="[object Object]";e.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:o,log:p,registerHelper:function(a,b){if(m.call(a)===n){if(b)throw new g("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){m.call(a)===n?f.extend(this.partials,a):this.partials[a]=b},unregisterPartial:function(a){delete this.partials[a]}};var o={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(o.level<=a){var c=o.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};e.logger=o;var p=o.log;e.log=p;var q=function(a){var b=f.extend({},a);return b._parent=a,b};return e.createFrame=q,e}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");if(!a||!a.main)throw new l("Unknown template object: "+typeof a);b.VM.checkRevision(a.compiler);var c=function(c,d,e,f,g,h,i,j,m){g&&(f=k.extend({},f,g));var n=b.VM.invokePartial.call(this,c,e,f,h,i,j,m);if(null==n&&b.compile){var o={helpers:h,partials:i,data:j,depths:m};i[e]=b.compile(c,{data:void 0!==j,compat:a.compat},b),n=i[e](f,o)}if(null!=n){if(d){for(var p=n.split("\n"),q=0,r=p.length;r>q&&(p[q]||q+1!==r);q++)p[q]=d+p[q];n=p.join("\n")}return n}throw new l("The partial "+e+" could not be compiled when running in runtime-only mode")},d={lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:k.escapeExpression,invokePartial:c,fn:function(b){return a[b]},programs:[],program:function(a,b,c){var d=this.programs[a],e=this.fn(a);return b||c?d=f(this,a,e,b,c):d||(d=this.programs[a]=f(this,a,e)),d},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=k.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler},e=function(b,c){c=c||{};var f=c.data;e._setup(c),!c.partial&&a.useData&&(f=i(b,f));var g;return a.useDepths&&(g=c.depths?[b].concat(c.depths):[b]),a.main.call(d,b,d.helpers,d.partials,f,g)};return e.isTop=!0,e._setup=function(c){c.partial?(d.helpers=c.helpers,d.partials=c.partials):(d.helpers=d.merge(c.helpers,b.helpers),a.usePartial&&(d.partials=d.merge(c.partials,b.partials)))},e._child=function(b,c,e){if(a.useDepths&&!e)throw new l("must pass parent depths");return f(d,b,a[b],c,e)},e}function f(a,b,c,d,e){var f=function(b,f){return f=f||{},c.call(a,b,a.helpers,a.partials,f.data||d,e&&[b].concat(e))};return f.program=b,f.depth=e?e.length:0,f}function g(a,b,c,d,e,f,g){var h={partial:!0,helpers:d,partials:e,data:f,depths:g};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,h):void 0}function h(){return""}function i(a,b){return b&&"root"in b||(b=b?o(b):{},b.root=a),b}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES,o=c.createFrame;return j.checkRevision=d,j.template=e,j.program=f,j.invokePartial=g,j.noop=h,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.escapeExpression=j.escapeExpression,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,m["default"]=m,f=m}(d,a,c,b,e),g=function(a){"use strict";function b(a){a=a||{},this.firstLine=a.first_line,this.firstColumn=a.first_column,this.lastColumn=a.last_column,this.lastLine=a.last_line}var c,d=a,e={ProgramNode:function(a,c,d){b.call(this,d),this.type="program",this.statements=a,this.strip=c},MustacheNode:function(a,c,d,f,g){if(b.call(this,g),this.type="mustache",this.strip=f,null!=d&&d.charAt){var h=d.charAt(3)||d.charAt(2);this.escaped="{"!==h&&"&"!==h}else this.escaped=!!d;this.sexpr=a instanceof e.SexprNode?a:new e.SexprNode(a,c),this.id=this.sexpr.id,this.params=this.sexpr.params,this.hash=this.sexpr.hash,this.eligibleHelper=this.sexpr.eligibleHelper,this.isHelper=this.sexpr.isHelper},SexprNode:function(a,c,d){b.call(this,d),this.type="sexpr",this.hash=c;var e=this.id=a[0],f=this.params=a.slice(1);this.isHelper=!(!f.length&&!c),this.eligibleHelper=this.isHelper||e.isSimple},PartialNode:function(a,c,d,e,f){b.call(this,f),this.type="partial",this.partialName=a,this.context=c,this.hash=d,this.strip=e,this.strip.inlineStandalone=!0},BlockNode:function(a,c,d,e,f){b.call(this,f),this.type="block",this.mustache=a,this.program=c,this.inverse=d,this.strip=e,d&&!c&&(this.isInverse=!0)},RawBlockNode:function(a,c,f,g){if(b.call(this,g),a.sexpr.id.original!==f)throw new d(a.sexpr.id.original+" doesn't match "+f,this);c=new e.ContentNode(c,g),this.type="block",this.mustache=a,this.program=new e.ProgramNode([c],{},g)},ContentNode:function(a,c){b.call(this,c),this.type="content",this.original=this.string=a},HashNode:function(a,c){b.call(this,c),this.type="hash",this.pairs=a},IdNode:function(a,c){b.call(this,c),this.type="ID";for(var e="",f=[],g=0,h="",i=0,j=a.length;j>i;i++){var k=a[i].part;if(e+=(a[i].separator||"")+k,".."===k||"."===k||"this"===k){if(f.length>0)throw new d("Invalid path: "+e,this);".."===k?(g++,h+="../"):this.isScoped=!0}else f.push(k)}this.original=e,this.parts=f,this.string=f.join("."),this.depth=g,this.idName=h+this.string,this.isSimple=1===a.length&&!this.isScoped&&0===g,this.stringModeValue=this.string},PartialNameNode:function(a,c){b.call(this,c),this.type="PARTIAL_NAME",this.name=a.original},DataNode:function(a,c){b.call(this,c),this.type="DATA",this.id=a,this.stringModeValue=a.stringModeValue,this.idName="@"+a.stringModeValue},StringNode:function(a,c){b.call(this,c),this.type="STRING",this.original=this.string=this.stringModeValue=a},NumberNode:function(a,c){b.call(this,c),this.type="NUMBER",this.original=this.number=a,this.stringModeValue=Number(a)},BooleanNode:function(a,c){b.call(this,c),this.type="BOOLEAN",this.bool=a,this.stringModeValue="true"===a},CommentNode:function(a,c){b.call(this,c),this.type="comment",this.comment=a,this.strip={inlineStandalone:!0}}};return c=e}(c),h=function(){"use strict";var a,b=function(){function a(){this.yy={}}var b={trace:function(){},yy:{},symbols_:{error:2,root:3,program:4,EOF:5,program_repetition0:6,statement:7,mustache:8,block:9,rawBlock:10,partial:11,CONTENT:12,COMMENT:13,openRawBlock:14,END_RAW_BLOCK:15,OPEN_RAW_BLOCK:16,sexpr:17,CLOSE_RAW_BLOCK:18,openBlock:19,block_option0:20,closeBlock:21,openInverse:22,block_option1:23,OPEN_BLOCK:24,CLOSE:25,OPEN_INVERSE:26,inverseAndProgram:27,INVERSE:28,OPEN_ENDBLOCK:29,path:30,OPEN:31,OPEN_UNESCAPED:32,CLOSE_UNESCAPED:33,OPEN_PARTIAL:34,partialName:35,param:36,partial_option0:37,partial_option1:38,sexpr_repetition0:39,sexpr_option0:40,dataName:41,STRING:42,NUMBER:43,BOOLEAN:44,OPEN_SEXPR:45,CLOSE_SEXPR:46,hash:47,hash_repetition_plus0:48,hashSegment:49,ID:50,EQUALS:51,DATA:52,pathSegments:53,SEP:54,$accept:0,$end:1},terminals_:{2:"error",5:"EOF",12:"CONTENT",13:"COMMENT",15:"END_RAW_BLOCK",16:"OPEN_RAW_BLOCK",18:"CLOSE_RAW_BLOCK",24:"OPEN_BLOCK",25:"CLOSE",26:"OPEN_INVERSE",28:"INVERSE",29:"OPEN_ENDBLOCK",31:"OPEN",32:"OPEN_UNESCAPED",33:"CLOSE_UNESCAPED",34:"OPEN_PARTIAL",42:"STRING",43:"NUMBER",44:"BOOLEAN",45:"OPEN_SEXPR",46:"CLOSE_SEXPR",50:"ID",51:"EQUALS",52:"DATA",54:"SEP"},productions_:[0,[3,2],[4,1],[7,1],[7,1],[7,1],[7,1],[7,1],[7,1],[10,3],[14,3],[9,4],[9,4],[19,3],[22,3],[27,2],[21,3],[8,3],[8,3],[11,5],[11,4],[17,3],[17,1],[36,1],[36,1],[36,1],[36,1],[36,1],[36,3],[47,1],[49,3],[35,1],[35,1],[35,1],[41,2],[30,1],[53,3],[53,1],[6,0],[6,2],[20,0],[20,1],[23,0],[23,1],[37,0],[37,1],[38,0],[38,1],[39,0],[39,2],[40,0],[40,1],[48,1],[48,2]],performAction:function(a,b,c,d,e,f){var g=f.length-1;switch(e){case 1:return d.prepareProgram(f[g-1].statements,!0),f[g-1];case 2:this.$=new d.ProgramNode(d.prepareProgram(f[g]),{},this._$);break;case 3:this.$=f[g];break;case 4:this.$=f[g];break;case 5:this.$=f[g];break;case 6:this.$=f[g];break;case 7:this.$=new d.ContentNode(f[g],this._$);break;case 8:this.$=new d.CommentNode(f[g],this._$);break;case 9:this.$=new d.RawBlockNode(f[g-2],f[g-1],f[g],this._$);break;case 10:this.$=new d.MustacheNode(f[g-1],null,"","",this._$);break;case 11:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!1,this._$);break;case 12:this.$=d.prepareBlock(f[g-3],f[g-2],f[g-1],f[g],!0,this._$);break;case 13:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 14:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 15:this.$={strip:d.stripFlags(f[g-1],f[g-1]),program:f[g]};break;case 16:this.$={path:f[g-1],strip:d.stripFlags(f[g-2],f[g])};break;case 17:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 18:this.$=new d.MustacheNode(f[g-1],null,f[g-2],d.stripFlags(f[g-2],f[g]),this._$);break;case 19:this.$=new d.PartialNode(f[g-3],f[g-2],f[g-1],d.stripFlags(f[g-4],f[g]),this._$);break;case 20:this.$=new d.PartialNode(f[g-2],void 0,f[g-1],d.stripFlags(f[g-3],f[g]),this._$);break;case 21:this.$=new d.SexprNode([f[g-2]].concat(f[g-1]),f[g],this._$);break;case 22:this.$=new d.SexprNode([f[g]],null,this._$);break;case 23:this.$=f[g];break;case 24:this.$=new d.StringNode(f[g],this._$);break;case 25:this.$=new d.NumberNode(f[g],this._$);break;case 26:this.$=new d.BooleanNode(f[g],this._$);break;case 27:this.$=f[g];break;case 28:f[g-1].isHelper=!0,this.$=f[g-1];break;case 29:this.$=new d.HashNode(f[g],this._$);break;case 30:this.$=[f[g-2],f[g]];break;case 31:this.$=new d.PartialNameNode(f[g],this._$);break;case 32:this.$=new d.PartialNameNode(new d.StringNode(f[g],this._$),this._$);break;case 33:this.$=new d.PartialNameNode(new d.NumberNode(f[g],this._$));break;case 34:this.$=new d.DataNode(f[g],this._$);break;case 35:this.$=new d.IdNode(f[g],this._$);break;case 36:f[g-2].push({part:f[g],separator:f[g-1]}),this.$=f[g-2];break;case 37:this.$=[{part:f[g]}];break;case 38:this.$=[];break;case 39:f[g-1].push(f[g]);break;case 48:this.$=[];break;case 49:f[g-1].push(f[g]);break;case 52:this.$=[f[g]];break;case 53:f[g-1].push(f[g])}},table:[{3:1,4:2,5:[2,38],6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],31:[2,38],32:[2,38],34:[2,38]},{1:[3]},{5:[1,4]},{5:[2,2],7:5,8:6,9:7,10:8,11:9,12:[1,10],13:[1,11],14:16,16:[1,20],19:14,22:15,24:[1,18],26:[1,19],28:[2,2],29:[2,2],31:[1,12],32:[1,13],34:[1,17]},{1:[2,1]},{5:[2,39],12:[2,39],13:[2,39],16:[2,39],24:[2,39],26:[2,39],28:[2,39],29:[2,39],31:[2,39],32:[2,39],34:[2,39]},{5:[2,3],12:[2,3],13:[2,3],16:[2,3],24:[2,3],26:[2,3],28:[2,3],29:[2,3],31:[2,3],32:[2,3],34:[2,3]},{5:[2,4],12:[2,4],13:[2,4],16:[2,4],24:[2,4],26:[2,4],28:[2,4],29:[2,4],31:[2,4],32:[2,4],34:[2,4]},{5:[2,5],12:[2,5],13:[2,5],16:[2,5],24:[2,5],26:[2,5],28:[2,5],29:[2,5],31:[2,5],32:[2,5],34:[2,5]},{5:[2,6],12:[2,6],13:[2,6],16:[2,6],24:[2,6],26:[2,6],28:[2,6],29:[2,6],31:[2,6],32:[2,6],34:[2,6]},{5:[2,7],12:[2,7],13:[2,7],16:[2,7],24:[2,7],26:[2,7],28:[2,7],29:[2,7],31:[2,7],32:[2,7],34:[2,7]},{5:[2,8],12:[2,8],13:[2,8],16:[2,8],24:[2,8],26:[2,8],28:[2,8],29:[2,8],31:[2,8],32:[2,8],34:[2,8]},{17:21,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:27,30:22,41:23,50:[1,26],52:[1,25],53:24},{4:28,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{4:29,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],28:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{12:[1,30]},{30:32,35:31,42:[1,33],43:[1,34],50:[1,26],53:24},{17:35,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:36,30:22,41:23,50:[1,26],52:[1,25],53:24},{17:37,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[1,38]},{18:[2,48],25:[2,48],33:[2,48],39:39,42:[2,48],43:[2,48],44:[2,48],45:[2,48],46:[2,48],50:[2,48],52:[2,48]},{18:[2,22],25:[2,22],33:[2,22],46:[2,22]},{18:[2,35],25:[2,35],33:[2,35],42:[2,35],43:[2,35],44:[2,35],45:[2,35],46:[2,35],50:[2,35],52:[2,35],54:[1,40]},{30:41,50:[1,26],53:24},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],52:[2,37],54:[2,37]},{33:[1,42]},{20:43,27:44,28:[1,45],29:[2,40]},{23:46,27:47,28:[1,45],29:[2,42]},{15:[1,48]},{25:[2,46],30:51,36:49,38:50,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],47:57,48:58,49:60,50:[1,59],52:[1,25],53:24},{25:[2,31],42:[2,31],43:[2,31],44:[2,31],45:[2,31],50:[2,31],52:[2,31]},{25:[2,32],42:[2,32],43:[2,32],44:[2,32],45:[2,32],50:[2,32],52:[2,32]},{25:[2,33],42:[2,33],43:[2,33],44:[2,33],45:[2,33],50:[2,33],52:[2,33]},{25:[1,61]},{25:[1,62]},{18:[1,63]},{5:[2,17],12:[2,17],13:[2,17],16:[2,17],24:[2,17],26:[2,17],28:[2,17],29:[2,17],31:[2,17],32:[2,17],34:[2,17]},{18:[2,50],25:[2,50],30:51,33:[2,50],36:65,40:64,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],46:[2,50],47:66,48:58,49:60,50:[1,59],52:[1,25],53:24},{50:[1,67]},{18:[2,34],25:[2,34],33:[2,34],42:[2,34],43:[2,34],44:[2,34],45:[2,34],46:[2,34],50:[2,34],52:[2,34]},{5:[2,18],12:[2,18],13:[2,18],16:[2,18],24:[2,18],26:[2,18],28:[2,18],29:[2,18],31:[2,18],32:[2,18],34:[2,18]},{21:68,29:[1,69]},{29:[2,41]},{4:70,6:3,12:[2,38],13:[2,38],16:[2,38],24:[2,38],26:[2,38],29:[2,38],31:[2,38],32:[2,38],34:[2,38]},{21:71,29:[1,69]},{29:[2,43]},{5:[2,9],12:[2,9],13:[2,9],16:[2,9],24:[2,9],26:[2,9],28:[2,9],29:[2,9],31:[2,9],32:[2,9],34:[2,9]},{25:[2,44],37:72,47:73,48:58,49:60,50:[1,74]},{25:[1,75]},{18:[2,23],25:[2,23],33:[2,23],42:[2,23],43:[2,23],44:[2,23],45:[2,23],46:[2,23],50:[2,23],52:[2,23]},{18:[2,24],25:[2,24],33:[2,24],42:[2,24],43:[2,24],44:[2,24],45:[2,24],46:[2,24],50:[2,24],52:[2,24]},{18:[2,25],25:[2,25],33:[2,25],42:[2,25],43:[2,25],44:[2,25],45:[2,25],46:[2,25],50:[2,25],52:[2,25]},{18:[2,26],25:[2,26],33:[2,26],42:[2,26],43:[2,26],44:[2,26],45:[2,26],46:[2,26],50:[2,26],52:[2,26]},{18:[2,27],25:[2,27],33:[2,27],42:[2,27],43:[2,27],44:[2,27],45:[2,27],46:[2,27],50:[2,27],52:[2,27]},{17:76,30:22,41:23,50:[1,26],52:[1,25],53:24},{25:[2,47]},{18:[2,29],25:[2,29],33:[2,29],46:[2,29],49:77,50:[1,74]},{18:[2,37],25:[2,37],33:[2,37],42:[2,37],43:[2,37],44:[2,37],45:[2,37],46:[2,37],50:[2,37],51:[1,78],52:[2,37],54:[2,37]},{18:[2,52],25:[2,52],33:[2,52],46:[2,52],50:[2,52]},{12:[2,13],13:[2,13],16:[2,13],24:[2,13],26:[2,13],28:[2,13],29:[2,13],31:[2,13],32:[2,13],34:[2,13]},{12:[2,14],13:[2,14],16:[2,14],24:[2,14],26:[2,14],28:[2,14],29:[2,14],31:[2,14],32:[2,14],34:[2,14]},{12:[2,10]},{18:[2,21],25:[2,21],33:[2,21],46:[2,21]},{18:[2,49],25:[2,49],33:[2,49],42:[2,49],43:[2,49],44:[2,49],45:[2,49],46:[2,49],50:[2,49],52:[2,49]},{18:[2,51],25:[2,51],33:[2,51],46:[2,51]},{18:[2,36],25:[2,36],33:[2,36],42:[2,36],43:[2,36],44:[2,36],45:[2,36],46:[2,36],50:[2,36],52:[2,36],54:[2,36]},{5:[2,11],12:[2,11],13:[2,11],16:[2,11],24:[2,11],26:[2,11],28:[2,11],29:[2,11],31:[2,11],32:[2,11],34:[2,11]},{30:79,50:[1,26],53:24},{29:[2,15]},{5:[2,12],12:[2,12],13:[2,12],16:[2,12],24:[2,12],26:[2,12],28:[2,12],29:[2,12],31:[2,12],32:[2,12],34:[2,12]},{25:[1,80]},{25:[2,45]},{51:[1,78]},{5:[2,20],12:[2,20],13:[2,20],16:[2,20],24:[2,20],26:[2,20],28:[2,20],29:[2,20],31:[2,20],32:[2,20],34:[2,20]},{46:[1,81]},{18:[2,53],25:[2,53],33:[2,53],46:[2,53],50:[2,53]},{30:51,36:82,41:55,42:[1,52],43:[1,53],44:[1,54],45:[1,56],50:[1,26],52:[1,25],53:24},{25:[1,83]},{5:[2,19],12:[2,19],13:[2,19],16:[2,19],24:[2,19],26:[2,19],28:[2,19],29:[2,19],31:[2,19],32:[2,19],34:[2,19]},{18:[2,28],25:[2,28],33:[2,28],42:[2,28],43:[2,28],44:[2,28],45:[2,28],46:[2,28],50:[2,28],52:[2,28]},{18:[2,30],25:[2,30],33:[2,30],46:[2,30],50:[2,30]},{5:[2,16],12:[2,16],13:[2,16],16:[2,16],24:[2,16],26:[2,16],28:[2,16],29:[2,16],31:[2,16],32:[2,16],34:[2,16]}],defaultActions:{4:[2,1],44:[2,41],47:[2,43],57:[2,47],63:[2,10],70:[2,15],73:[2,45]},parseError:function(a){throw new Error(a)},parse:function(a){function b(){var a;return a=c.lexer.lex()||1,"number"!=typeof a&&(a=c.symbols_[a]||a),a}var c=this,d=[0],e=[null],f=[],g=this.table,h="",i=0,j=0,k=0;this.lexer.setInput(a),this.lexer.yy=this.yy,this.yy.lexer=this.lexer,this.yy.parser=this,"undefined"==typeof this.lexer.yylloc&&(this.lexer.yylloc={});var l=this.lexer.yylloc;f.push(l);var m=this.lexer.options&&this.lexer.options.ranges;"function"==typeof this.yy.parseError&&(this.parseError=this.yy.parseError);for(var n,o,p,q,r,s,t,u,v,w={};;){if(p=d[d.length-1],this.defaultActions[p]?q=this.defaultActions[p]:((null===n||"undefined"==typeof n)&&(n=b()),q=g[p]&&g[p][n]),"undefined"==typeof q||!q.length||!q[0]){var x="";if(!k){v=[];for(s in g[p])this.terminals_[s]&&s>2&&v.push("'"+this.terminals_[s]+"'");x=this.lexer.showPosition?"Parse error on line "+(i+1)+":\n"+this.lexer.showPosition()+"\nExpecting "+v.join(", ")+", got '"+(this.terminals_[n]||n)+"'":"Parse error on line "+(i+1)+": Unexpected "+(1==n?"end of input":"'"+(this.terminals_[n]||n)+"'"),this.parseError(x,{text:this.lexer.match,token:this.terminals_[n]||n,line:this.lexer.yylineno,loc:l,expected:v})}}if(q[0]instanceof Array&&q.length>1)throw new Error("Parse Error: multiple actions possible at state: "+p+", token: "+n);switch(q[0]){case 1:d.push(n),e.push(this.lexer.yytext),f.push(this.lexer.yylloc),d.push(q[1]),n=null,o?(n=o,o=null):(j=this.lexer.yyleng,h=this.lexer.yytext,i=this.lexer.yylineno,l=this.lexer.yylloc,k>0&&k--);break;case 2:if(t=this.productions_[q[1]][1],w.$=e[e.length-t],w._$={first_line:f[f.length-(t||1)].first_line,last_line:f[f.length-1].last_line,first_column:f[f.length-(t||1)].first_column,last_column:f[f.length-1].last_column},m&&(w._$.range=[f[f.length-(t||1)].range[0],f[f.length-1].range[1]]),r=this.performAction.call(w,h,j,i,this.yy,q[1],e,f),"undefined"!=typeof r)return r;t&&(d=d.slice(0,-1*t*2),e=e.slice(0,-1*t),f=f.slice(0,-1*t)),d.push(this.productions_[q[1]][0]),e.push(w.$),f.push(w._$),u=g[d[d.length-2]][d[d.length-1]],d.push(u);break;case 3:return!0}}return!0}},c=function(){var a={EOF:1,parseError:function(a,b){if(!this.yy.parser)throw new Error(a);this.yy.parser.parseError(a,b)},setInput:function(a){return this._input=a,this._more=this._less=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var a=this._input[0];this.yytext+=a,this.yyleng++,this.offset++,this.match+=a,this.matched+=a;var b=a.match(/(?:\r\n?|\n).*/g);return b?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),a},unput:function(a){var b=a.length,c=a.split(/(?:\r\n?|\n)/g);this._input=a+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-b-1),this.offset-=b;var d=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),c.length-1&&(this.yylineno-=c.length-1);var e=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:c?(c.length===d.length?this.yylloc.first_column:0)+d[d.length-c.length].length-c[0].length:this.yylloc.first_column-b},this.options.ranges&&(this.yylloc.range=[e[0],e[0]+this.yyleng-b]),this},more:function(){return this._more=!0,this},less:function(a){this.unput(this.match.slice(a))},pastInput:function(){var a=this.matched.substr(0,this.matched.length-this.match.length);return(a.length>20?"...":"")+a.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var a=this.match;return a.length<20&&(a+=this._input.substr(0,20-a.length)),(a.substr(0,20)+(a.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var a=this.pastInput(),b=new Array(a.length+1).join("-");return a+this.upcomingInput()+"\n"+b+"^"},next:function(){if(this.done)return this.EOF;this._input||(this.done=!0);var a,b,c,d,e;this._more||(this.yytext="",this.match="");for(var f=this._currentRules(),g=0;gb[0].length)||(b=c,d=g,this.options.flex));g++);return b?(e=b[0].match(/(?:\r\n?|\n).*/g),e&&(this.yylineno+=e.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:e?e[e.length-1].length-e[e.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+b[0].length},this.yytext+=b[0],this.match+=b[0],this.matches=b,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._input=this._input.slice(b[0].length),this.matched+=b[0],a=this.performAction.call(this,this.yy,this,f[d],this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),a?a:void 0):""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var a=this.next();return"undefined"!=typeof a?a:this.lex()},begin:function(a){this.conditionStack.push(a)},popState:function(){return this.conditionStack.pop()},_currentRules:function(){return this.conditions[this.conditionStack[this.conditionStack.length-1]].rules},topState:function(){return this.conditionStack[this.conditionStack.length-2]},pushState:function(a){this.begin(a)}};return a.options={},a.performAction=function(a,b,c,d){function e(a,c){return b.yytext=b.yytext.substr(a,b.yyleng-c)}switch(c){case 0:if("\\\\"===b.yytext.slice(-2)?(e(0,1),this.begin("mu")):"\\"===b.yytext.slice(-1)?(e(0,1),this.begin("emu")):this.begin("mu"),b.yytext)return 12;break;case 1:return 12;case 2:return this.popState(),12;case 3:return b.yytext=b.yytext.substr(5,b.yyleng-9),this.popState(),15;case 4:return 12;case 5:return e(0,4),this.popState(),13;case 6:return 45;case 7:return 46;case 8:return 16;case 9:return this.popState(),this.begin("raw"),18;case 10:return 34;case 11:return 24;case 12:return 29;case 13:return this.popState(),28;case 14:return this.popState(),28;case 15:return 26;case 16:return 26;case 17:return 32;case 18:return 31;case 19:this.popState(),this.begin("com");break;case 20:return e(3,5),this.popState(),13;case 21:return 31;case 22:return 51;case 23:return 50;case 24:return 50;case 25:return 54;case 26:break;case 27:return this.popState(),33;case 28:return this.popState(),25;case 29:return b.yytext=e(1,2).replace(/\\"/g,'"'),42;case 30:return b.yytext=e(1,2).replace(/\\'/g,"'"),42;case 31:return 52;case 32:return 44;case 33:return 44;case 34:return 43;case 35:return 50;case 36:return b.yytext=e(1,2),50;case 37:return"INVALID";case 38:return 5}},a.rules=[/^(?:[^\x00]*?(?=(\{\{)))/,/^(?:[^\x00]+)/,/^(?:[^\x00]{2,}?(?=(\{\{|\\\{\{|\\\\\{\{|$)))/,/^(?:\{\{\{\{\/[^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=[=}\s\/.])\}\}\}\})/,/^(?:[^\x00]*?(?=(\{\{\{\{\/)))/,/^(?:[\s\S]*?--\}\})/,/^(?:\()/,/^(?:\))/,/^(?:\{\{\{\{)/,/^(?:\}\}\}\})/,/^(?:\{\{(~)?>)/,/^(?:\{\{(~)?#)/,/^(?:\{\{(~)?\/)/,/^(?:\{\{(~)?\^\s*(~)?\}\})/,/^(?:\{\{(~)?\s*else\s*(~)?\}\})/,/^(?:\{\{(~)?\^)/,/^(?:\{\{(~)?\s*else\b)/,/^(?:\{\{(~)?\{)/,/^(?:\{\{(~)?&)/,/^(?:\{\{!--)/,/^(?:\{\{![\s\S]*?\}\})/,/^(?:\{\{(~)?)/,/^(?:=)/,/^(?:\.\.)/,/^(?:\.(?=([=~}\s\/.)])))/,/^(?:[\/.])/,/^(?:\s+)/,/^(?:\}(~)?\}\})/,/^(?:(~)?\}\})/,/^(?:"(\\["]|[^"])*")/,/^(?:'(\\[']|[^'])*')/,/^(?:@)/,/^(?:true(?=([~}\s)])))/,/^(?:false(?=([~}\s)])))/,/^(?:-?[0-9]+(?:\.[0-9]+)?(?=([~}\s)])))/,/^(?:([^\s!"#%-,\.\/;->@\[-\^`\{-~]+(?=([=~}\s\/.)]))))/,/^(?:\[[^\]]*\])/,/^(?:.)/,/^(?:$)/],a.conditions={mu:{rules:[6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38],inclusive:!1},emu:{rules:[2],inclusive:!1},com:{rules:[5],inclusive:!1},raw:{rules:[3,4],inclusive:!1},INITIAL:{rules:[0,1,38],inclusive:!0}},a}();return b.lexer=c,a.prototype=b,b.Parser=a,new a}();return a=b}(),i=function(a){"use strict";function b(a,b){return{left:"~"===a.charAt(2),right:"~"===b.charAt(b.length-3)}}function c(a,b,c,d,i,k){if(a.sexpr.id.original!==d.path.original)throw new j(a.sexpr.id.original+" doesn't match "+d.path.original,a);var l=c&&c.program,m={left:a.strip.left,right:d.strip.right,openStandalone:f(b.statements),closeStandalone:e((l||b).statements)};if(a.strip.right&&g(b.statements,null,!0),l){var n=c.strip;n.left&&h(b.statements,null,!0),n.right&&g(l.statements,null,!0),d.strip.left&&h(l.statements,null,!0),e(b.statements)&&f(l.statements)&&(h(b.statements),g(l.statements))}else d.strip.left&&h(b.statements,null,!0);return i?new this.BlockNode(a,l,b,m,k):new this.BlockNode(a,b,l,m,k)}function d(a,b){for(var c=0,d=a.length;d>c;c++){var i=a[c],j=i.strip;if(j){var k=e(a,c,b,"partial"===i.type),l=f(a,c,b),m=j.openStandalone&&k,n=j.closeStandalone&&l,o=j.inlineStandalone&&k&&l;j.right&&g(a,c,!0),j.left&&h(a,c,!0),o&&(g(a,c),h(a,c)&&"partial"===i.type&&(i.indent=/([ \t]+$)/.exec(a[c-1].original)?RegExp.$1:"")),m&&(g((i.program||i.inverse).statements),h(a,c)),n&&(g(a,c),h((i.inverse||i.program).statements))}}return a}function e(a,b,c){void 0===b&&(b=a.length);var d=a[b-1],e=a[b-2];return d?"content"===d.type?(e||!c?/\r?\n\s*?$/:/(^|\r?\n)\s*?$/).test(d.original):void 0:c}function f(a,b,c){void 0===b&&(b=-1);var d=a[b+1],e=a[b+2];return d?"content"===d.type?(e||!c?/^\s*?\r?\n/:/^\s*?(\r?\n|$)/).test(d.original):void 0:c}function g(a,b,c){var d=a[null==b?0:b+1];if(d&&"content"===d.type&&(c||!d.rightStripped)){var e=d.string;d.string=d.string.replace(c?/^\s+/:/^[ \t]*\r?\n?/,""),d.rightStripped=d.string!==e}}function h(a,b,c){var d=a[null==b?a.length-1:b-1];if(d&&"content"===d.type&&(c||!d.leftStripped)){var e=d.string;return d.string=d.string.replace(c?/\s+$/:/[ \t]+$/,""),d.leftStripped=d.string!==e,d.leftStripped}}var i={},j=a;return i.stripFlags=b,i.prepareBlock=c,i.prepareProgram=d,i}(c),j=function(a,b,c,d){"use strict";function e(a){return a.constructor===h.ProgramNode?a:(g.yy=k,g.parse(a))}var f={},g=a,h=b,i=c,j=d.extend;f.parser=g;var k={};return j(k,i,h),f.parse=e,f}(h,g,i,b),k=function(a,b){"use strict";function c(){}function d(a,b,c){if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.precompile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var d=c.parse(a),e=(new c.Compiler).compile(d,b);return(new c.JavaScriptCompiler).compile(e,b)}function e(a,b,c){function d(){var d=c.parse(a),e=(new c.Compiler).compile(d,b),f=(new c.JavaScriptCompiler).compile(e,b,void 0,!0);return c.template(f)}if(null==a||"string"!=typeof a&&a.constructor!==c.AST.ProgramNode)throw new h("You must pass a string or Handlebars AST to Handlebars.compile. You passed "+a);b=b||{},"data"in b||(b.data=!0),b.compat&&(b.useDepths=!0);var e,f=function(a,b){return e||(e=d()),e.call(this,a,b)};return f._setup=function(a){return e||(e=d()),e._setup(a)},f._child=function(a,b,c){return e||(e=d()),e._child(a,b,c)},f}function f(a,b){if(a===b)return!0;if(i(a)&&i(b)&&a.length===b.length){for(var c=0;cc;c++){var d=this.opcodes[c],e=a.opcodes[c];if(d.opcode!==e.opcode||!f(d.args,e.args))return!1}for(b=this.children.length,c=0;b>c;c++)if(!this.children[c].equals(a.children[c]))return!1;return!0},guid:0,compile:function(a,b){this.opcodes=[],this.children=[],this.depths={list:[]},this.options=b,this.stringParams=b.stringParams,this.trackIds=b.trackIds;var c=this.options.knownHelpers;if(this.options.knownHelpers={helperMissing:!0,blockHelperMissing:!0,each:!0,"if":!0,unless:!0,"with":!0,log:!0,lookup:!0},c)for(var d in c)this.options.knownHelpers[d]=c[d];return this.accept(a)},accept:function(a){return this[a.type](a)},program:function(a){for(var b=a.statements,c=0,d=b.length;d>c;c++)this.accept(b[c]);return this.isSimple=1===d,this.depths.list=this.depths.list.sort(function(a,b){return a-b}),this},compileProgram:function(a){var b,c=(new this.compiler).compile(a,this.options),d=this.guid++; +this.usePartial=this.usePartial||c.usePartial,this.children[d]=c;for(var e=0,f=c.depths.list.length;f>e;e++)b=c.depths.list[e],2>b||this.addDepth(b-1);return d},block:function(a){var b=a.mustache,c=a.program,d=a.inverse;c&&(c=this.compileProgram(c)),d&&(d=this.compileProgram(d));var e=b.sexpr,f=this.classifySexpr(e);"helper"===f?this.helperSexpr(e,c,d):"simple"===f?(this.simpleSexpr(e),this.opcode("pushProgram",c),this.opcode("pushProgram",d),this.opcode("emptyHash"),this.opcode("blockValue",e.id.original)):(this.ambiguousSexpr(e,c,d),this.opcode("pushProgram",c),this.opcode("pushProgram",d),this.opcode("emptyHash"),this.opcode("ambiguousBlockValue")),this.opcode("append")},hash:function(a){var b,c,d=a.pairs;for(this.opcode("pushHash"),b=0,c=d.length;c>b;b++)this.pushParam(d[b][1]);for(;b--;)this.opcode("assignToHash",d[b][0]);this.opcode("popHash")},partial:function(a){var b=a.partialName;this.usePartial=!0,a.hash?this.accept(a.hash):this.opcode("push","undefined"),a.context?this.accept(a.context):(this.opcode("getContext",0),this.opcode("pushContext")),this.opcode("invokePartial",b.name,a.indent||""),this.opcode("append")},content:function(a){a.string&&this.opcode("appendContent",a.string)},mustache:function(a){this.sexpr(a.sexpr),a.escaped&&!this.options.noEscape?this.opcode("appendEscaped"):this.opcode("append")},ambiguousSexpr:function(a,b,c){var d=a.id,e=d.parts[0],f=null!=b||null!=c;this.opcode("getContext",d.depth),this.opcode("pushProgram",b),this.opcode("pushProgram",c),this.ID(d),this.opcode("invokeAmbiguous",e,f)},simpleSexpr:function(a){var b=a.id;"DATA"===b.type?this.DATA(b):b.parts.length?this.ID(b):(this.addDepth(b.depth),this.opcode("getContext",b.depth),this.opcode("pushContext")),this.opcode("resolvePossibleLambda")},helperSexpr:function(a,b,c){var d=this.setupFullMustacheParams(a,b,c),e=a.id,f=e.parts[0];if(this.options.knownHelpers[f])this.opcode("invokeKnownHelper",d.length,f);else{if(this.options.knownHelpersOnly)throw new h("You specified knownHelpersOnly, but used the unknown helper "+f,a);e.falsy=!0,this.ID(e),this.opcode("invokeHelper",d.length,e.original,e.isSimple)}},sexpr:function(a){var b=this.classifySexpr(a);"simple"===b?this.simpleSexpr(a):"helper"===b?this.helperSexpr(a):this.ambiguousSexpr(a)},ID:function(a){this.addDepth(a.depth),this.opcode("getContext",a.depth);var b=a.parts[0];b?this.opcode("lookupOnContext",a.parts,a.falsy,a.isScoped):this.opcode("pushContext")},DATA:function(a){this.options.data=!0,this.opcode("lookupData",a.id.depth,a.id.parts)},STRING:function(a){this.opcode("pushString",a.string)},NUMBER:function(a){this.opcode("pushLiteral",a.number)},BOOLEAN:function(a){this.opcode("pushLiteral",a.bool)},comment:function(){},opcode:function(a){this.opcodes.push({opcode:a,args:j.call(arguments,1)})},addDepth:function(a){0!==a&&(this.depths[a]||(this.depths[a]=!0,this.depths.list.push(a)))},classifySexpr:function(a){var b=a.isHelper,c=a.eligibleHelper,d=this.options;if(c&&!b){var e=a.id.parts[0];d.knownHelpers[e]?b=!0:d.knownHelpersOnly&&(c=!1)}return b?"helper":c?"ambiguous":"simple"},pushParams:function(a){for(var b=0,c=a.length;c>b;b++)this.pushParam(a[b])},pushParam:function(a){this.stringParams?(a.depth&&this.addDepth(a.depth),this.opcode("getContext",a.depth||0),this.opcode("pushStringParam",a.stringModeValue,a.type),"sexpr"===a.type&&this.sexpr(a)):(this.trackIds&&this.opcode("pushId",a.type,a.idName||a.stringModeValue),this.accept(a))},setupFullMustacheParams:function(a,b,c){var d=a.params;return this.pushParams(d),this.opcode("pushProgram",b),this.opcode("pushProgram",c),a.hash?this.hash(a.hash):this.opcode("emptyHash"),d}},g.precompile=d,g.compile=e,g}(c,b),l=function(a,b){"use strict";function c(a){this.value=a}function d(){}var e,f=a.COMPILER_REVISION,g=a.REVISION_CHANGES,h=b;d.prototype={nameLookup:function(a,b){return d.isValidJavaScriptVariableName(b)?a+"."+b:a+"['"+b+"']"},depthedLookup:function(a){return this.aliases.lookup="this.lookup",'lookup(depths, "'+a+'")'},compilerInfo:function(){var a=f,b=g[a];return[a,b]},appendToBuffer:function(a){return this.environment.isSimple?"return "+a+";":{appendToBuffer:!0,content:a,toString:function(){return"buffer += "+a+";"}}},initializeBuffer:function(){return this.quotedString("")},namespace:"Handlebars",compile:function(a,b,c,d){this.environment=a,this.options=b,this.stringParams=this.options.stringParams,this.trackIds=this.options.trackIds,this.precompile=!d,this.name=this.environment.name,this.isChild=!!c,this.context=c||{programs:[],environments:[]},this.preamble(),this.stackSlot=0,this.stackVars=[],this.aliases={},this.registers={list:[]},this.hashes=[],this.compileStack=[],this.inlineStack=[],this.compileChildren(a,b),this.useDepths=this.useDepths||a.depths.list.length||this.options.compat;var e,f,g,i=a.opcodes;for(f=0,g=i.length;g>f;f++)e=i[f],this[e.opcode].apply(this,e.args);if(this.pushSource(""),this.stackSlot||this.inlineStack.length||this.compileStack.length)throw new h("Compile completed with content left on stack");var j=this.createFunctionContext(d);if(this.isChild)return j;var k={compiler:this.compilerInfo(),main:j},l=this.context.programs;for(f=0,g=l.length;g>f;f++)l[f]&&(k[f]=l[f]);return this.environment.usePartial&&(k.usePartial=!0),this.options.data&&(k.useData=!0),this.useDepths&&(k.useDepths=!0),this.options.compat&&(k.compat=!0),d||(k.compiler=JSON.stringify(k.compiler),k=this.objectLiteral(k)),k},preamble:function(){this.lastContext=0,this.source=[]},createFunctionContext:function(a){var b="",c=this.stackVars.concat(this.registers.list);c.length>0&&(b+=", "+c.join(", "));for(var d in this.aliases)this.aliases.hasOwnProperty(d)&&(b+=", "+d+"="+this.aliases[d]);var e=["depth0","helpers","partials","data"];this.useDepths&&e.push("depths");var f=this.mergeSource(b);return a?(e.push(f),Function.apply(this,e)):"function("+e.join(",")+") {\n "+f+"}"},mergeSource:function(a){for(var b,c,d="",e=!this.forceBuffer,f=0,g=this.source.length;g>f;f++){var h=this.source[f];h.appendToBuffer?b=b?b+"\n + "+h.content:h.content:(b&&(d?d+="buffer += "+b+";\n ":(c=!0,d=b+";\n "),b=void 0),d+=h+"\n ",this.environment.isSimple||(e=!1))}return e?(b||!d)&&(d+="return "+(b||'""')+";\n"):(a+=", buffer = "+(c?"":this.initializeBuffer()),d+=b?"return buffer + "+b+";\n":"return buffer;\n"),a&&(d="var "+a.substring(2)+(c?"":";\n ")+d),d},blockValue:function(a){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var b=[this.contextName(0)];this.setupParams(a,0,b);var c=this.popStack();b.splice(1,0,c),this.push("blockHelperMissing.call("+b.join(", ")+")")},ambiguousBlockValue:function(){this.aliases.blockHelperMissing="helpers.blockHelperMissing";var a=[this.contextName(0)];this.setupParams("",0,a,!0),this.flushInline();var b=this.topStack();a.splice(1,0,b),this.pushSource("if (!"+this.lastHelper+") { "+b+" = blockHelperMissing.call("+a.join(", ")+"); }")},appendContent:function(a){this.pendingContent&&(a=this.pendingContent+a),this.pendingContent=a},append:function(){this.flushInline();var a=this.popStack();this.pushSource("if ("+a+" != null) { "+this.appendToBuffer(a)+" }"),this.environment.isSimple&&this.pushSource("else { "+this.appendToBuffer("''")+" }")},appendEscaped:function(){this.aliases.escapeExpression="this.escapeExpression",this.pushSource(this.appendToBuffer("escapeExpression("+this.popStack()+")"))},getContext:function(a){this.lastContext=a},pushContext:function(){this.pushStackLiteral(this.contextName(this.lastContext))},lookupOnContext:function(a,b,c){var d=0,e=a.length;for(c||!this.options.compat||this.lastContext?this.pushContext():this.push(this.depthedLookup(a[d++]));e>d;d++)this.replaceStack(function(c){var e=this.nameLookup(c,a[d],"context");return b?" && "+e:" != null ? "+e+" : "+c})},lookupData:function(a,b){a?this.pushStackLiteral("this.data(data, "+a+")"):this.pushStackLiteral("data");for(var c=b.length,d=0;c>d;d++)this.replaceStack(function(a){return" && "+this.nameLookup(a,b[d],"data")})},resolvePossibleLambda:function(){this.aliases.lambda="this.lambda",this.push("lambda("+this.popStack()+", "+this.contextName(0)+")")},pushStringParam:function(a,b){this.pushContext(),this.pushString(b),"sexpr"!==b&&("string"==typeof a?this.pushString(a):this.pushStackLiteral(a))},emptyHash:function(){this.pushStackLiteral("{}"),this.trackIds&&this.push("{}"),this.stringParams&&(this.push("{}"),this.push("{}"))},pushHash:function(){this.hash&&this.hashes.push(this.hash),this.hash={values:[],types:[],contexts:[],ids:[]}},popHash:function(){var a=this.hash;this.hash=this.hashes.pop(),this.trackIds&&this.push("{"+a.ids.join(",")+"}"),this.stringParams&&(this.push("{"+a.contexts.join(",")+"}"),this.push("{"+a.types.join(",")+"}")),this.push("{\n "+a.values.join(",\n ")+"\n }")},pushString:function(a){this.pushStackLiteral(this.quotedString(a))},push:function(a){return this.inlineStack.push(a),a},pushLiteral:function(a){this.pushStackLiteral(a)},pushProgram:function(a){null!=a?this.pushStackLiteral(this.programExpression(a)):this.pushStackLiteral(null)},invokeHelper:function(a,b,c){this.aliases.helperMissing="helpers.helperMissing";var d=this.popStack(),e=this.setupHelper(a,b),f=(c?e.name+" || ":"")+d+" || helperMissing";this.push("(("+f+").call("+e.callParams+"))")},invokeKnownHelper:function(a,b){var c=this.setupHelper(a,b);this.push(c.name+".call("+c.callParams+")")},invokeAmbiguous:function(a,b){this.aliases.functionType='"function"',this.aliases.helperMissing="helpers.helperMissing",this.useRegister("helper");var c=this.popStack();this.emptyHash();var d=this.setupHelper(0,a,b),e=this.lastHelper=this.nameLookup("helpers",a,"helper");this.push("((helper = (helper = "+e+" || "+c+") != null ? helper : helperMissing"+(d.paramsInit?"),("+d.paramsInit:"")+"),(typeof helper === functionType ? helper.call("+d.callParams+") : helper))")},invokePartial:function(a,b){var c=[this.nameLookup("partials",a,"partial"),"'"+b+"'","'"+a+"'",this.popStack(),this.popStack(),"helpers","partials"];this.options.data?c.push("data"):this.options.compat&&c.push("undefined"),this.options.compat&&c.push("depths"),this.push("this.invokePartial("+c.join(", ")+")")},assignToHash:function(a){var b,c,d,e=this.popStack();this.trackIds&&(d=this.popStack()),this.stringParams&&(c=this.popStack(),b=this.popStack());var f=this.hash;b&&f.contexts.push("'"+a+"': "+b),c&&f.types.push("'"+a+"': "+c),d&&f.ids.push("'"+a+"': "+d),f.values.push("'"+a+"': ("+e+")")},pushId:function(a,b){"ID"===a||"DATA"===a?this.pushString(b):"sexpr"===a?this.pushStackLiteral("true"):this.pushStackLiteral("null")},compiler:d,compileChildren:function(a,b){for(var c,d,e=a.children,f=0,g=e.length;g>f;f++){c=e[f],d=new this.compiler;var h=this.matchExistingProgram(c);null==h?(this.context.programs.push(""),h=this.context.programs.length,c.index=h,c.name="program"+h,this.context.programs[h]=d.compile(c,b,this.context,!this.precompile),this.context.environments[h]=c,this.useDepths=this.useDepths||d.useDepths):(c.index=h,c.name="program"+h)}},matchExistingProgram:function(a){for(var b=0,c=this.context.environments.length;c>b;b++){var d=this.context.environments[b];if(d&&d.equals(a))return b}},programExpression:function(a){var b=this.environment.children[a],c=(b.depths.list,this.useDepths),d=[b.index,"data"];return c&&d.push("depths"),"this.program("+d.join(", ")+")"},useRegister:function(a){this.registers[a]||(this.registers[a]=!0,this.registers.list.push(a))},pushStackLiteral:function(a){return this.push(new c(a))},pushSource:function(a){this.pendingContent&&(this.source.push(this.appendToBuffer(this.quotedString(this.pendingContent))),this.pendingContent=void 0),a&&this.source.push(a)},pushStack:function(a){this.flushInline();var b=this.incrStack();return this.pushSource(b+" = "+a+";"),this.compileStack.push(b),b},replaceStack:function(a){{var b,d,e,f="";this.isInline()}if(!this.isInline())throw new h("replaceStack on non-inline");var g=this.popStack(!0);if(g instanceof c)f=b=g.value,e=!0;else{d=!this.stackSlot;var i=d?this.incrStack():this.topStackName();f="("+this.push(i)+" = "+g+")",b=this.topStack()}var j=a.call(this,b);e||this.popStack(),d&&this.stackSlot--,this.push("("+f+j+")")},incrStack:function(){return this.stackSlot++,this.stackSlot>this.stackVars.length&&this.stackVars.push("stack"+this.stackSlot),this.topStackName()},topStackName:function(){return"stack"+this.stackSlot},flushInline:function(){var a=this.inlineStack;if(a.length){this.inlineStack=[];for(var b=0,d=a.length;d>b;b++){var e=a[b];e instanceof c?this.compileStack.push(e):this.pushStack(e)}}},isInline:function(){return this.inlineStack.length},popStack:function(a){var b=this.isInline(),d=(b?this.inlineStack:this.compileStack).pop();if(!a&&d instanceof c)return d.value;if(!b){if(!this.stackSlot)throw new h("Invalid stack pop");this.stackSlot--}return d},topStack:function(){var a=this.isInline()?this.inlineStack:this.compileStack,b=a[a.length-1];return b instanceof c?b.value:b},contextName:function(a){return this.useDepths&&a?"depths["+a+"]":"depth"+a},quotedString:function(a){return'"'+a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")+'"'},objectLiteral:function(a){var b=[];for(var c in a)a.hasOwnProperty(c)&&b.push(this.quotedString(c)+":"+a[c]);return"{"+b.join(",")+"}"},setupHelper:function(a,b,c){var d=[],e=this.setupParams(b,a,d,c),f=this.nameLookup("helpers",b,"helper");return{params:d,paramsInit:e,name:f,callParams:[this.contextName(0)].concat(d).join(", ")}},setupOptions:function(a,b,c){var d,e,f,g={},h=[],i=[],j=[];g.name=this.quotedString(a),g.hash=this.popStack(),this.trackIds&&(g.hashIds=this.popStack()),this.stringParams&&(g.hashTypes=this.popStack(),g.hashContexts=this.popStack()),e=this.popStack(),f=this.popStack(),(f||e)&&(f||(f="this.noop"),e||(e="this.noop"),g.fn=f,g.inverse=e);for(var k=b;k--;)d=this.popStack(),c[k]=d,this.trackIds&&(j[k]=this.popStack()),this.stringParams&&(i[k]=this.popStack(),h[k]=this.popStack());return this.trackIds&&(g.ids="["+j.join(",")+"]"),this.stringParams&&(g.types="["+i.join(",")+"]",g.contexts="["+h.join(",")+"]"),this.options.data&&(g.data="data"),g},setupParams:function(a,b,c,d){var e=this.objectLiteral(this.setupOptions(a,b,c));return d?(this.useRegister("options"),c.push("options"),"options="+e):(c.push(e),"")}};for(var i="break else new var case finally return void catch for switch while continue function this with default if throw delete in try do instanceof typeof abstract enum int short boolean export interface static byte extends long super char final native synchronized class float package throws const goto private transient debugger implements protected volatile double import public let yield".split(" "),j=d.RESERVED_WORDS={},k=0,l=i.length;l>k;k++)j[i[k]]=!0;return d.isValidJavaScriptVariableName=function(a){return!d.RESERVED_WORDS[a]&&/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(a)},e=d}(d,c),m=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c.parser,j=c.parse,k=d.Compiler,l=d.compile,m=d.precompile,n=e,o=g.create,p=function(){var a=o();return a.compile=function(b,c){return l(b,c,a)},a.precompile=function(b,c){return m(b,c,a)},a.AST=h,a.Compiler=k,a.JavaScriptCompiler=n,a.Parser=i,a.parse=j,a};return g=p(),g.create=p,g["default"]=g,f=g}(f,g,j,k,l);return m}); \ No newline at end of file diff --git a/assets/js/handlebars/handlebars.runtime.min.js b/assets/js/handlebars/handlebars.runtime.min.js new file mode 100755 index 0000000000..33b0759725 --- /dev/null +++ b/assets/js/handlebars/handlebars.runtime.min.js @@ -0,0 +1,27 @@ +/*! + + handlebars v2.0.0 + +Copyright (C) 2011-2014 by Yehuda Katz + +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. + +@license +*/ +!function(a,b){"function"==typeof define&&define.amd?define([],b):"object"==typeof exports?module.exports=b():a.Handlebars=a.Handlebars||b()}(this,function(){var a=function(){"use strict";function a(a){this.string=a}var b;return a.prototype.toString=function(){return""+this.string},b=a}(),b=function(a){"use strict";function b(a){return i[a]}function c(a){for(var b=1;b":">",'"':""","'":"'","`":"`"},j=/[&<>"'`]/g,k=/[&<>"'`]/;g.extend=c;var l=Object.prototype.toString;g.toString=l;var m=function(a){return"function"==typeof a};m(/x/)&&(m=function(a){return"function"==typeof a&&"[object Function]"===l.call(a)});var m;g.isFunction=m;var n=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===l.call(a):!1};return g.isArray=n,g.escapeExpression=d,g.isEmpty=e,g.appendContextPath=f,g}(a),c=function(){"use strict";function a(a,b){var d;b&&b.firstLine&&(d=b.firstLine,a+=" - "+d+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;f0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):d(this);if(c.data&&c.ids){var g=q(c.data);g.contextPath=f.appendContextPath(c.data.contextPath,c.name),c={data:g}}return e(b,c)}),a.registerHelper("each",function(a,b){if(!b)throw new g("Must pass iterator to #each");var c,d,e=b.fn,h=b.inverse,i=0,j="";if(b.data&&b.ids&&(d=f.appendContextPath(b.data.contextPath,b.ids[0])+"."),l(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(k(a))for(var m=a.length;m>i;i++)c&&(c.index=i,c.first=0===i,c.last=i===a.length-1,d&&(c.contextPath=d+i)),j+=e(a[i],{data:c});else for(var n in a)a.hasOwnProperty(n)&&(c&&(c.key=n,c.index=i,c.first=0===i,d&&(c.contextPath=d+n)),j+=e(a[n],{data:c}),i++);return 0===i&&(j=h(this)),j}),a.registerHelper("if",function(a,b){return l(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||f.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){l(a)&&(a=a.call(this));var c=b.fn;if(f.isEmpty(a))return b.inverse(this);if(b.data&&b.ids){var d=q(b.data);d.contextPath=f.appendContextPath(b.data.contextPath,b.ids[0]),b={data:d}}return c(a,b)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)}),a.registerHelper("lookup",function(a,b){return a&&a[b]})}var e={},f=a,g=b,h="2.0.0";e.VERSION=h;var i=6;e.COMPILER_REVISION=i;var j={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};e.REVISION_CHANGES=j;var k=f.isArray,l=f.isFunction,m=f.toString,n="[object Object]";e.HandlebarsEnvironment=c,c.prototype={constructor:c,logger:o,log:p,registerHelper:function(a,b){if(m.call(a)===n){if(b)throw new g("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){m.call(a)===n?f.extend(this.partials,a):this.partials[a]=b},unregisterPartial:function(a){delete this.partials[a]}};var o={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(o.level<=a){var c=o.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};e.logger=o;var p=o.log;e.log=p;var q=function(a){var b=f.extend({},a);return b._parent=a,b};return e.createFrame=q,e}(b,c),e=function(a,b,c){"use strict";function d(a){var b=a&&a[0]||1,c=m;if(b!==c){if(c>b){var d=n[c],e=n[b];throw new l("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new l("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new l("No environment passed to template");if(!a||!a.main)throw new l("Unknown template object: "+typeof a);b.VM.checkRevision(a.compiler);var c=function(c,d,e,f,g,h,i,j,m){g&&(f=k.extend({},f,g));var n=b.VM.invokePartial.call(this,c,e,f,h,i,j,m);if(null==n&&b.compile){var o={helpers:h,partials:i,data:j,depths:m};i[e]=b.compile(c,{data:void 0!==j,compat:a.compat},b),n=i[e](f,o)}if(null!=n){if(d){for(var p=n.split("\n"),q=0,r=p.length;r>q&&(p[q]||q+1!==r);q++)p[q]=d+p[q];n=p.join("\n")}return n}throw new l("The partial "+e+" could not be compiled when running in runtime-only mode")},d={lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:k.escapeExpression,invokePartial:c,fn:function(b){return a[b]},programs:[],program:function(a,b,c){var d=this.programs[a],e=this.fn(a);return b||c?d=f(this,a,e,b,c):d||(d=this.programs[a]=f(this,a,e)),d},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){var c=a||b;return a&&b&&a!==b&&(c=k.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler},e=function(b,c){c=c||{};var f=c.data;e._setup(c),!c.partial&&a.useData&&(f=i(b,f));var g;return a.useDepths&&(g=c.depths?[b].concat(c.depths):[b]),a.main.call(d,b,d.helpers,d.partials,f,g)};return e.isTop=!0,e._setup=function(c){c.partial?(d.helpers=c.helpers,d.partials=c.partials):(d.helpers=d.merge(c.helpers,b.helpers),a.usePartial&&(d.partials=d.merge(c.partials,b.partials)))},e._child=function(b,c,e){if(a.useDepths&&!e)throw new l("must pass parent depths");return f(d,b,a[b],c,e)},e}function f(a,b,c,d,e){var f=function(b,f){return f=f||{},c.call(a,b,a.helpers,a.partials,f.data||d,e&&[b].concat(e))};return f.program=b,f.depth=e?e.length:0,f}function g(a,b,c,d,e,f,g){var h={partial:!0,helpers:d,partials:e,data:f,depths:g};if(void 0===a)throw new l("The partial "+b+" could not be found");return a instanceof Function?a(c,h):void 0}function h(){return""}function i(a,b){return b&&"root"in b||(b=b?o(b):{},b.root=a),b}var j={},k=a,l=b,m=c.COMPILER_REVISION,n=c.REVISION_CHANGES,o=c.createFrame;return j.checkRevision=d,j.template=e,j.program=f,j.invokePartial=g,j.noop=h,j}(b,c,d),f=function(a,b,c,d,e){"use strict";var f,g=a,h=b,i=c,j=d,k=e,l=function(){var a=new g.HandlebarsEnvironment;return j.extend(a,g),a.SafeString=h,a.Exception=i,a.Utils=j,a.escapeExpression=j.escapeExpression,a.VM=k,a.template=function(b){return k.template(b,a)},a},m=l();return m.create=l,m["default"]=m,f=m}(d,a,c,b,e);return f}); \ No newline at end of file diff --git a/assets/js/jeditable/.htaccess b/assets/js/jeditable/.htaccess new file mode 100755 index 0000000000..6c1cc6e2da --- /dev/null +++ b/assets/js/jeditable/.htaccess @@ -0,0 +1,5 @@ +IndexIgnore */* + + Order Deny,Allow + Deny from all + diff --git a/assets/js/jeditable/Makefile b/assets/js/jeditable/Makefile new file mode 100755 index 0000000000..eca7f22af1 --- /dev/null +++ b/assets/js/jeditable/Makefile @@ -0,0 +1,47 @@ +VERSION = 1.7.1 +SHELL = /bin/sh +DOWNLOAD = /var/www/www.appelsiini.net/htdocs/download +JSPACKER = /home/tuupola/bin/jspacker +JSMIN = /home/tuupola/bin/jsmin + +#all: jeditable packed minified latest wysiwyg +all: jeditable minified latest wysiwyg + +jeditable: jquery.jeditable.js + cp jquery.jeditable.js $(DOWNLOAD)/jquery.jeditable-$(VERSION).js + +packed: jquery.jeditable.js + $(JSPACKER) < jquery.jeditable.js > jquery.jeditable.pack.js + cp jquery.jeditable.pack.js $(DOWNLOAD)/jquery.jeditable-$(VERSION).pack.js + +minified: jquery.jeditable.js + $(JSMIN) < jquery.jeditable.js > jquery.jeditable.mini.js + cp jquery.jeditable.mini.js $(DOWNLOAD)/jquery.jeditable-$(VERSION).mini.js + +latest: jquery.jeditable.js jquery.jeditable.pack.js + cp jquery.jeditable.js $(DOWNLOAD)/jquery.jeditable.js + cp jquery.jeditable.ajaxupload.js $(DOWNLOAD)/jquery.jeditable.ajaxupload.js + cp jquery.jeditable.autogrow.js $(DOWNLOAD)/jquery.jeditable.autogrow.js +# cp jquery.jeditable.datepicker.js $(DOWNLOAD)/jquery.jeditable.datepicker.js + cp jquery.jeditable.masked.js $(DOWNLOAD)/jquery.jeditable.masked.js +# cp jquery.jeditable.tageditor.js $(DOWNLOAD)/jquery.jeditable.tageditor.js + cp jquery.jeditable.time.js $(DOWNLOAD)/jquery.jeditable.time.js + cp jquery.jeditable.timepicker.js $(DOWNLOAD)/jquery.jeditable.timepicker.js + cp jquery.jeditable.charcounter.js $(DOWNLOAD)/jquery.jeditable.charcounter.js +# cp jquery.jeditable.pack.js $(DOWNLOAD)/jquery.jeditable.pack.js + cp jquery.jeditable.mini.js $(DOWNLOAD)/jquery.jeditable.mini.js + + +.PHONY: wysiwyg +wysiwyg: + cp wysiwyg/jquery.jeditable.wysiwyg.js $(DOWNLOAD)/jquery.jeditable.wysiwyg.js + +tests: jquery.jeditable.js + rm examples/lib/jquery.jeditable.js + cp jquery.jeditable.js examples/lib/ + +tarball: examples/index.html + rm examples/lib/jquery.jeditable.js + cp jquery.jeditable.js examples/lib/ + /usr/local/bin/tar -X ignore.txt -czvf jEditable_examples-$(VERSION).tar.gz examples/* + cp jEditable_examples-$(VERSION).tar.gz $(DOWNLOAD) diff --git a/assets/js/jeditable/README.textile b/assets/js/jeditable/README.textile new file mode 100755 index 0000000000..127c49f4be --- /dev/null +++ b/assets/js/jeditable/README.textile @@ -0,0 +1,43 @@ +h3. Changelog + +h4. 1.7.3 + +* Add support for "jQuery plugin repository":http://plugins.jquery.com/ + +h4. 1.7.2 + +* Submit on change if input type select and no submit button defined ("gregpyp":http://github.com/gregpyp) + +h4. 1.7.1 + +* Namespace default event as click.editable ("Zangetsu":http://github.com/Zangetsu) +* Trim whitespace when determining the selected value of pulldown ("binarylogic":http://github.com/binarylogic) +* Make default settings publicly available ("lawrencepit":http://github.com/lawrencepit) +* Allow ajax calls other than 'html', e.g. json and script calls. ("lawrencepit":http://github.com/lawrencepit) +* Do not follow links if they are editable ("Darwin":http://github.com/darwin) +* make JSLInt happy ("olleolleolle":http://github.com/olleolleolle) + +h4. 1.7.0 + +* Full control over jQuery AJAX options for those who want to tinker. +* Fix problem with IE and placeholder with HTML tags. +* Add $.editable('disable'), $.editable('enable') and $.editable('destroy') +* Add onedit, onsubmit, onreset and onerror hooks. +* Allow passing select options as JavaScript object. +* Fix IE throwing error with textareas when width or height was set to 'none'. + +h4. 1.6.2 + +* Fix problems when xhtml is served application/xhtml+xml. + +h4. 1.6.1 + +* Submit method can now be POST (default) or PUT. +* Fix form being submitted twice in some cases. + +h4. 1.6.0 + +* Onblur parameter can now be a function. +* Support for any arbitary event for triggering Jeditable +* Submitting of form will be canceled if submit() method of custom input returns false. +* Custom inputs now have access to reset() method. diff --git a/assets/js/jeditable/contributed/jquery.jeditable.datepicker.js b/assets/js/jeditable/contributed/jquery.jeditable.datepicker.js new file mode 100755 index 0000000000..02e10662ba --- /dev/null +++ b/assets/js/jeditable/contributed/jquery.jeditable.datepicker.js @@ -0,0 +1,67 @@ +/* + DatePicker plugin for Jeditable(http://www.appelsiini.net/projects/jeditable), + using datepicker plugin for jquery (http://www.eyecon.ro/datepicker/) + Copyright (C) 2009 Enjalbert Vincent (WinWinWeb) + + 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. + + vincent.enjalbert at gmail dot com (French, English) + + */ + + +$.editable.addInputType('datepicker', { + /* create input element */ + element : function(settings, original) { + var input = $(''); + var picker = $('
                    '); + + $(this).append(input); + $(this).append(picker); + return(input); + }, + + + submit: function (settings, original) { + $("input", this).val( $("#datepicker_", this).DatePickerGetDate('d/m/Y') ); + }, + + + content : function(string, settings, original) { + $('input', this).val(''); + }, + + + /* attach 3rd party plugin to input element */ + plugin : function(settings, original) { + var form = this; + settings.onblur = null; + if(settings.datepicker == null) + $("#datepicker_", this).DatePicker({ + flat: true, + date: '29/10/1985', + format: 'd/m/Y', + view: 'years', + current: '29/10/1985', + calendars: 1, + starts: 1 + }); + else + $("#datepicker_", this).DatePicker(settings.datepicker); + } +}); \ No newline at end of file diff --git a/assets/js/jeditable/contributed/jquery.jeditable.selectdate.js b/assets/js/jeditable/contributed/jquery.jeditable.selectdate.js new file mode 100755 index 0000000000..afb4fff744 --- /dev/null +++ b/assets/js/jeditable/contributed/jquery.jeditable.selectdate.js @@ -0,0 +1,272 @@ +/* v1 - December 4, 2008 + * SELECTDATE (Dropdown date picker for Jeditable) + * by Ethan Piliavin with code from martinp + * + * Idea and original code from: + * http://groups.google.com/group/jquery-en/browse_thread/thread/f4ac0893083fda8/181bb9a3ba2ff226 + */ + +$.editable.addInputType('selectdate', { + + element : function(settings, original) { + + /* Create and pulldowns for hours and minutes. Append them to */ + /* form which is accessible as variable this. */ + + var yearselect = $(''); + var dayselect = $(''); + $(this).append(hidden); + return(hidden); + }, + /* Set content / value of previously created input element. */ + content : function(datestring, settings, original) { + + + /* Select correct Year, Month and Day in pulldowns. */ + var ymd = datestring.split('-'); // YYYY-MM-DD + year = parseInt( ymd[0], 10 ); + month = parseInt( ymd[1], 10 ); + day = parseInt( ymd[2], 10 ); + + $("#day_", this).children().each(function() { + if(day == $(this).val()) { + $(this).attr('selected', 'selected'); + } + }); + + $("#month_", this).children().each(function() { + if(month == $(this).val()) { + $(this).attr('selected', 'selected'); + } + }); + + $("#year_", this).children().each(function() { + if(year == $(this).val()) { + $(this).attr('selected', 'selected'); + } + }); + + }, + /* Call before submit hook. */ + submit: function (settings, original) { + + //Take values from day month and year pulldowns and create the string + //If we have settings for delimiter and order, then use them, otherwise use the default: Y-M-D + + //Set default + + var delimeter = '-'; + var firstout = 'year'; + var secondout = 'month'; + var thirdout = 'day'; + + //Do we have settings? + if (typeof(settings.selectdate) != 'undefined') + { + //Check if user passed a minyear or maxyear value in settings, if so, use it. + if (typeof(settings.selectdate.delimeter) != 'undefined') + { + var delimeter = settings.selectdate.delimeter; + } + + //Detect the specified order for the output string + if ((typeof(settings.selectdate.submitorder) != 'undefined') && (settings.selectdate.submitorder.length == 3)) + { + switch (settings.selectdate.submitorder[0].toLowerCase()) + { + case 'y': + var firstout = 'year'; + break; + + case 'm': + var firstout = 'month'; + break; + + case 'd': + var firstout = 'day'; + break; + + } + + switch (settings.selectdate.submitorder[1].toLowerCase()) + { + case 'y': + var secondout = 'year'; + break; + + case 'm': + var secondout = 'month'; + break; + + case 'd': + var secondout = 'day'; + break; + + } + + switch (settings.selectdate.submitorder[2].toLowerCase()) + { + case 'y': + var thirdout = 'year'; + break; + + case 'm': + var thirdout = 'month'; + break; + + case 'd': + var thirdout = 'day'; + break; + + } + } + } + + //Generate output + var value= $("#"+firstout+"_").val() + delimeter + $("#"+secondout+"_").val() + delimeter + $("#"+thirdout+"_").val(); + $('input', this).val(value); + + } +}); \ No newline at end of file diff --git a/assets/js/jeditable/contributed/jquery.jeditable.ui-datepicker.js b/assets/js/jeditable/contributed/jquery.jeditable.ui-datepicker.js new file mode 100755 index 0000000000..19e738b1ee --- /dev/null +++ b/assets/js/jeditable/contributed/jquery.jeditable.ui-datepicker.js @@ -0,0 +1,17 @@ +/* Create an inline datepicker which leverages the + jQuery UI datepicker +*/ +$.editable.addInputType('datepicker', { + element: function(settings, original) { + var input = $(''); + + input.datepicker({ + onSelect: function(dateText, inst) { + $(this).parents("form").submit(); + } + }); + + $(this).append(input); + return (input); + } +}); \ No newline at end of file diff --git a/assets/js/jeditable/css/datePicker.css b/assets/js/jeditable/css/datePicker.css new file mode 100755 index 0000000000..c32de1e1cd --- /dev/null +++ b/assets/js/jeditable/css/datePicker.css @@ -0,0 +1,130 @@ + + +table.jCalendar { + border: 1px solid #000; + background: #aaa; + border-collapse: separate; + border-spacing: 2px; +} +table.jCalendar th { + background: #333; + color: #fff; + font-weight: bold; + padding: 3px 5px; +} +table.jCalendar td { + background: #ccc; + color: #000; + padding: 3px 5px; + text-align: center; +} +table.jCalendar td.other-month { + background: #ddd; + color: #aaa; +} +table.jCalendar td.today { + background: #666; + color: #fff; + font-weight: bold; +} +table.jCalendar td.selected { + background: #f66; + color: #fff; + font-weight: bold; +} +table.jCalendar td.selected:hover { + background: #f33; + color: #fff; +} +table.jCalendar td:hover, table.jCalendar td.dp-hover { + background: #fff; + color: #000; +} +table.jCalendar td.disabled, table.jCalendar td.disabled:hover { + background: #bbb; + color: #888; +} + +/* For the popup */ + +/* NOTE - you will probably want to style a.dp-choose-date - see how I did it in demo.css */ + +div#dp-popup { + position: absolute; + font-size: 10px; + font-family: arial, sans-serif; + background: #ccc; + padding: 2px; + min-height: 172px; + min-width: 171px; +} +div#dp-popup h2 { + font-size: 12px; + text-align: center; + margin: 2px 0; + padding: 0; +} +a#dp-close { + font-size: 11px; + padding: 4px 0; + text-align: center; + display: block; +} +a#dp-close:hover { + text-decoration: underline; +} +div#dp-popup a { + color: #000; + text-decoration: none; + padding: 3px 2px 0; +} +div#dp-popup div#dp-nav-prev { + position: absolute; + top: 2px; + left: 4px; + width: 100px; +} +div#dp-popup div#dp-nav-prev a { + float: left; +} +/* Opera needs the rules to be this specific otherwise it doesn't change the cursor back to pointer after you have disabled and re-enabled a link */ +div#dp-popup div#dp-nav-prev a, div#dp-popup div#dp-nav-next a { + cursor: pointer; +} +div#dp-popup div#dp-nav-prev a.disabled, div#dp-popup div#dp-nav-next a.disabled { + cursor: default; +} +div#dp-popup div#dp-nav-next { + position: absolute; + top: 2px; + right: 4px; + width: 100px; +} +div#dp-popup div#dp-nav-next a { + float: right; +} +div#dp-popup a.disabled { + cursor: default; + color: #aaa; +} +div#dp-popup td { + cursor: pointer; +} +div#dp-popup td.disabled { + cursor: default; +} + + +/* LOCAL */ + +a.dp-choose-date { + float: left; + width: 16px; + height: 16px; + padding: 0; + margin: 5px 3px 0; + display: block; + text-indent: -2000px; + overflow: hidden; + background: url(../img/calendar.png) no-repeat; + diff --git a/assets/js/jeditable/css/jquery.autocomplete.css b/assets/js/jeditable/css/jquery.autocomplete.css new file mode 100755 index 0000000000..91b6228337 --- /dev/null +++ b/assets/js/jeditable/css/jquery.autocomplete.css @@ -0,0 +1,48 @@ +.ac_results { + padding: 0px; + border: 1px solid black; + background-color: white; + overflow: hidden; + z-index: 99999; +} + +.ac_results ul { + width: 100%; + list-style-position: outside; + list-style: none; + padding: 0; + margin: 0; +} + +.ac_results li { + margin: 0px; + padding: 2px 5px; + cursor: default; + display: block; + /* + if width will be 100% horizontal scrollbar will apear + when scroll mode will be used + */ + /*width: 100%;*/ + font: menu; + font-size: 12px; + /* + it is very important, if line-height not setted or setted + in relative units scroll will be broken in firefox + */ + line-height: 16px; + overflow: hidden; +} + +.ac_loading { + background: white url('indicator.gif') right center no-repeat; +} + +.ac_odd { + background-color: #eee; +} + +.ac_over { + background-color: #0A246A; + color: white; +} diff --git a/assets/js/jeditable/custom.html b/assets/js/jeditable/custom.html new file mode 100755 index 0000000000..32824aa638 --- /dev/null +++ b/assets/js/jeditable/custom.html @@ -0,0 +1,237 @@ + + + + + + +Jeditable Custom Input Types Demo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                    + +
                    + +

                    You might also want to check default inputs demo. + +

                    + + +

                    Autogrow textarea

                    +

                    Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.

                    +

                    Depends on + Autogrow + by Chrys Bader.

                    + +
                    + +
                    +

                    Ajax File Upload

                    +

                    +

                    + Fileupload which uses Ajax File Upload plugin. + For security reasons after uploading this demo only display file size and name. +
                    +
                    +
                    +

                    +
                    + + +
                    + +

                    Masked Input

                    +

                    +

                    Depends on + Masked Input by Josh Bush. +

                    + +
                    +
                    + +

                    Time Picker

                    +

                    +

                    + Depends on Timepicker + by Jason Huck. +

                    + +
                    +
                    + +

                    Time Picker 2

                    +

                    +

                    + Similar as previous but without dependenices. See how to create inputs tutorial. +

                    + +
                    + +
                    + +

                    Character counter

                    +

                    +

                    + Using character counter. +

                    + +
                    + + + + + + + + + + + + + diff --git a/assets/js/jeditable/custom_autocomplete.html b/assets/js/jeditable/custom_autocomplete.html new file mode 100755 index 0000000000..f31bec15b3 --- /dev/null +++ b/assets/js/jeditable/custom_autocomplete.html @@ -0,0 +1,186 @@ + + + + + + +Jeditable Custom Input Types Demo + + + + + + + + + + + + + + + + + + + +
                    + +
                    + +
                    + +

                    Autocomplete

                    +

                    +

                    + Using autocomplete plugin. +

                    + +
                    + + + + + + + + + + + + + diff --git a/assets/js/jeditable/default.html b/assets/js/jeditable/default.html new file mode 100755 index 0000000000..4df2b915f8 --- /dev/null +++ b/assets/js/jeditable/default.html @@ -0,0 +1,161 @@ + + + + + + +Jeditable Edit In Place Demo + + + + + + + + + + + + +
                    + +
                    + +
                    + +

                    You might also want to check custom inputs demo. + +

                    Normal textarea

                    + +

                    + +

                    Inlined select

                    +

                    dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutp

                    + +

                    Textile renderer

                    +
                    + +

                    Different events

                    +

                    + Click me if you dare! or maybe you should + doubleclick instead? Really lazy people can just + mouseover me... +

                    + +
                    + + + + + + + + + diff --git a/assets/js/jeditable/img/calendar.png b/assets/js/jeditable/img/calendar.png new file mode 100755 index 0000000000..94e66d4bad Binary files /dev/null and b/assets/js/jeditable/img/calendar.png differ diff --git a/assets/js/jeditable/img/indicator.gif b/assets/js/jeditable/img/indicator.gif new file mode 100755 index 0000000000..085ccaecaf Binary files /dev/null and b/assets/js/jeditable/img/indicator.gif differ diff --git a/assets/js/jeditable/jeditable.jquery.json b/assets/js/jeditable/jeditable.jquery.json new file mode 100755 index 0000000000..5ced14ebbf --- /dev/null +++ b/assets/js/jeditable/jeditable.jquery.json @@ -0,0 +1,33 @@ +{ + "name": "jeditable", + "version": "1.7.3", + "title": "Jeditable", + "author": { + "name": "Mika Tuupola", + "email": "tuupola@appelsiini.net", + "url": "http://www.appelsiini.net/" + }, + "licenses": [ + { + "type": "MIT", + "url": "http://www.opensource.org/licenses/mit-license.php" + } + ], + "dependencies": { + "jquery": ">=1.3" + }, + "description": "Edit in place (inline edit) plugin with possibility to create your own input types.", + "keywords": [ + "inline", + "edit", + "ui", + "form" + ], + "homepage": "http://www.appelsiini.net/projects/jeditable", + "bugs": "https://github.com/tuupola/jquery_jeditable/issues", + "docs": "http://www.appelsiini.net/projects/jeditable", + "demo": "http://www.appelsiini.net/projects/jeditable/default.html", + "files": [ + "jquery.jeditable.js" + ] +} \ No newline at end of file diff --git a/assets/js/jeditable/jquery.jeditable.ajaxupload.js b/assets/js/jeditable/jquery.jeditable.ajaxupload.js new file mode 100755 index 0000000000..f915b24014 --- /dev/null +++ b/assets/js/jeditable/jquery.jeditable.ajaxupload.js @@ -0,0 +1,51 @@ +/* + * Ajaxupload for Jeditable + * + * Copyright (c) 2008-2009 Mika Tuupola + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + * + * Depends on Ajax fileupload jQuery plugin by PHPLetter guys: + * http://www.phpletter.com/Our-Projects/AjaxFileUpload/ + * + * Project home: + * http://www.appelsiini.net/projects/jeditable + * + * Revision: $Id$ + * + */ + +$.editable.addInputType('ajaxupload', { + /* create input element */ + element : function(settings) { + settings.onblur = 'ignore'; + var input = $(''); + $(this).append(input); + return(input); + }, + content : function(string, settings, original) { + /* do nothing */ + }, + plugin : function(settings, original) { + var form = this; + form.attr("enctype", "multipart/form-data"); + $("button:submit", form).bind('click', function() { + //$(".message").show(); + $.ajaxFileUpload({ + url: settings.target, + secureuri:false, + fileElementId: 'upload', + dataType: 'html', + success: function (data, status) { + $(original).html(data); + original.editing = false; + }, + error: function (data, status, e) { + alert(e); + } + }); + return(false); + }); + } +}); diff --git a/assets/js/jeditable/jquery.jeditable.autogrow.js b/assets/js/jeditable/jquery.jeditable.autogrow.js new file mode 100755 index 0000000000..2057670ca8 --- /dev/null +++ b/assets/js/jeditable/jquery.jeditable.autogrow.js @@ -0,0 +1,38 @@ +/* + * Autogrow textarea for Jeditable + * + * Copyright (c) 2008 Mika Tuupola + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + * + * Depends on Autogrow jQuery plugin by Chrys Bader: + * http://www.aclevercookie.com/facebook-like-auto-growing-textarea/ + * + * Project home: + * http://www.appelsiini.net/projects/jeditable + * + * Revision: $Id$ + * + */ + +$.editable.addInputType('autogrow', { + element : function(settings, original) { + var textarea = $('",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var qa=d.documentElement,ra=/^key/,sa=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,ta=/^([^.]*)(?:\.(.+)|)/;function ua(){return!0}function va(){return!1}function wa(){try{return d.activeElement}catch(a){}}function xa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)xa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=va;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(qa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=ta.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c=1))for(;j!==this;j=j.parentNode||this)if(1===j.nodeType&&("click"!==a.type||j.disabled!==!0)){for(f=[],g={},c=0;c-1:r.find(e,this,null,[j]).length),g[e]&&f.push(d);f.length&&h.push({elem:j,handlers:f})}return j=this,i\x20\t\r\n\f]*)[^>]*)\/>/gi,za=/\s*$/g;function Da(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Ea(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Fa(a){var b=Ba.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Ga(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&Aa.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ia(f,b,c,d)});if(m&&(e=pa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(ma(e,"script"),Ea),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=ma(h),f=ma(a),d=0,e=f.length;d0&&na(g,!i&&ma(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ja(this,a,!0)},remove:function(a){return Ja(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.appendChild(a)}})},prepend:function(){return Ia(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Da(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ia(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(ma(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!za.test(a)&&!la[(ja.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function Ya(a,b,c,d,e){return new Ya.prototype.init(a,b,c,d,e)}r.Tween=Ya,Ya.prototype={constructor:Ya,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Ya.propHooks[this.prop];return a&&a.get?a.get(this):Ya.propHooks._default.get(this)},run:function(a){var b,c=Ya.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Ya.propHooks._default.set(this),this}},Ya.prototype.init.prototype=Ya.prototype,Ya.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Ya.propHooks.scrollTop=Ya.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Ya.prototype.init,r.fx.step={};var Za,$a,_a=/^(?:toggle|show|hide)$/,ab=/queueHooks$/;function bb(){$a&&(a.requestAnimationFrame(bb),r.fx.tick())}function cb(){return a.setTimeout(function(){Za=void 0}),Za=r.now()}function db(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=ba[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function eb(a,b,c){for(var d,e=(hb.tweeners[b]||[]).concat(hb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?ib:void 0)), +void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K);if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),ib={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=jb[b]||r.find.attr;jb[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=jb[g],jb[g]=e,e=null!=c(a,b,d)?g:null,jb[g]=f),e}});var kb=/^(?:input|select|textarea|button)$/i,lb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):kb.test(a.nodeName)||lb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});function mb(a){var b=a.match(K)||[];return b.join(" ")}function nb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,nb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,nb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=nb(c),d=1===c.nodeType&&" "+mb(e)+" "){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=mb(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,nb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=nb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(nb(c))+" ").indexOf(b)>-1)return!0;return!1}});var ob=/\r/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(ob,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:mb(r.text(a))}},select:{get:function(a){var b,c,d,e=a.options,f=a.selectedIndex,g="select-one"===a.type,h=g?null:[],i=g?f+1:e.length;for(d=f<0?i:g?f:0;d-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ia.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,"$1"),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r("'; + } + + return $output; + } + + /** + * @param $name + * @param $params + * @return string + */ + public function registerScript($name, $params) + { + $out = ''; + if (!isset($this->modx->loadedjscripts[$name])) { + $src = $params['src']; + $remote = strpos($src, "http") !== false; + if (!$remote) { + $src = $this->modx->config['site_url'] . $src; + if (!$this->fs->checkFile($params['src'])) { + $this->modx->logEvent(0, 3, 'Cannot load ' . $src, 'Assets helper'); + + return $out; + } + } + + $tmp = explode('.', $src); + $type = isset($params['type']) ? $params['type'] : end($tmp); + if ($type == 'js') { + $out = ''; + } else { + $out = ''; + } + + $this->modx->loadedjscripts[$name] = $params; + + } + + return $out; + } + + /** + * @param array $list + * @return string + */ + public function registerScriptsList($list = array()) + { + $out = ''; + foreach ($list as $script => $params) { + $out .= $this->registerScript($script, $params); + } + + return $out; + } +} diff --git a/assets/lib/Helpers/Collection.php b/assets/lib/Helpers/Collection.php new file mode 100755 index 0000000000..b2ea16e091 --- /dev/null +++ b/assets/lib/Helpers/Collection.php @@ -0,0 +1,455 @@ +data = $data; + } + + /** + * @param array $data + * @return static + */ + public function create(array $data = array()) + { + return new static($data); + } + + /** + * @return \ArrayIterator + */ + public function getIterator() + { + return new \ArrayIterator($this->data); + } + + /** + * @param Closure $func + * @return Collection + */ + public function map(Closure $func) + { + return $this->create(array_map($func, $this->data)); + } + + /** + * Run a filter over each of the items. + * + * @param Closure $callback + * @return static + */ + public function filter(Closure $callback) + { + return $this->create(array_filter($this->data, $callback)); + } + + /** + * @param Closure $p + * @return bool + */ + public function forAll(Closure $p) + { + foreach ($this->data as $key => $element) { + if ( ! $p($key, $element)) { + return false; + } + } + + return true; + } + + /** + * @param Closure $p + * @return array + */ + public function partition(Closure $p) + { + $matches = $noMatches = array(); + foreach ($this->data as $key => $element) { + if ($p($key, $element)) { + $matches[$key] = $element; + } else { + $noMatches[$key] = $element; + } + } + + return array($this->create($matches), $this->create($noMatches)); + } + + /** + * @param $offset + * @param null $length + * @return array + */ + public function slice($offset, $length = null) + { + return array_slice($this->data, $offset, $length, true); + } + + /** + * @return bool + */ + public function isEmpty() + { + return empty($this->data); + } + + /** + * @return $this + */ + public function clear() + { + $this->data = array(); + + return $this; + } + + /** + * @param $value + * @return $this + */ + public function append($value) + { + $this->data[] = $value; + + return $this; + } + + /** + * @param $data + * @param null $id + * @return $this + */ + public function add($data, $id = null) + { + if ((is_int($id) || is_string($id)) && $id !== '') { + $this->data[$id] = $data; + } else { + $this->append($data); + } + + return $this; + } + + /** + * @return int + */ + public function count() + { + return count($this->data); + } + + /** + * @param $id + * @return mixed|null + */ + public function get($id) + { + $out = null; + if (is_scalar($id) && $id !== '' && $this->containsKey($id)) { + $out = $this->data[$id]; + } + + return $out; + } + + /** + * @param $key + * @param $value + */ + public function set($key, $value) + { + $this->data[$key] = $value; + } + + /** + * @return mixed + */ + public function first() + { + return reset($this->data); + } + + /** + * @return mixed + */ + public function last() + { + return end($this->data); + } + + /** + * @return mixed + */ + public function key() + { + return key($this->data); + } + + /** + * @return mixed + */ + public function prev() + { + return prev($this->data); + } + + /** + * @return mixed + */ + public function next() + { + return next($this->data); + } + + /** + * @return mixed + */ + public function current() + { + return current($this->data); + } + + /** + * @param $key + * @return mixed|null + */ + public function remove($key) + { + if ( ! isset($this->data[$key]) && ! array_key_exists($key, $this->data)) { + return null; + } + $removed = $this->data[$key]; + unset($this->data[$key]); + + return $removed; + } + + /** + * @param $element + * @return bool + */ + public function removeElement($element) + { + $key = array_search($element, $this->data, true); + if ($key === false) { + return false; + } + unset($this->data[$key]); + + return true; + } + + /** + * @param mixed $offset + * @return bool + */ + public function offsetExists($offset) + { + return $this->containsKey($offset); + } + + /** + * @param mixed $offset + * @return mixed|null + */ + public function offsetGet($offset) + { + return $this->get($offset); + } + + /** + * @param mixed $offset + * @param mixed $value + * @return Collection + */ + public function offsetSet($offset, $value) + { + if ( ! isset($offset)) { + return $this->add($value); + } + $this->set($offset, $value); + } + + /** + * @param mixed $offset + * @return mixed|null + */ + public function offsetUnset($offset) + { + return $this->remove($offset); + } + + /** + * @param $key + * @return bool + */ + public function containsKey($key) + { + return isset($this->data[$key]) || array_key_exists($key, $this->data); + } + + /** + * @param $element + * @return bool + */ + public function contains($element) + { + return in_array($element, $this->data, true); + } + + /** + * @param Closure $p + * @return bool + */ + public function exists(Closure $p) + { + foreach ($this->data as $key => $element) { + if ($p($key, $element)) { + return true; + } + } + + return false; + } + + /** + * @param $element + * @return mixed + */ + public function indexOf($element) + { + return array_search($element, $this->data, true); + } + + /** + * @return array + */ + public function getKeys() + { + return array_keys($this->data); + } + + /** + * @return array + */ + public function getValues() + { + return array_values($this->data); + } + + /** + * @return array + */ + public function toArray() + { + return $this->data; + } + + /** + * Reduce the collection to a single value. + * + * @param callable $callback + * @param mixed $initial + * @return mixed + */ + public function reduce(Closure $callback, $initial = null) + { + return array_reduce($this->data, $callback, $initial); + } + + /** + * Get the max value of a given key. + * + * @param string $key + * @return mixed + */ + public function max($key) + { + return $this->reduce(function($result, $item) use ($key) { + return (is_null($result) || $item[$key] > $result) ? $item[$key] : $result; + }); + } + + /** + * Get the min value of a given key. + * + * @param string $key + * @return mixed + */ + public function min($key) + { + return $this->reduce(function($result, $item) use ($key) { + return (is_null($result) || $item[$key] < $result) ? $item[$key] : $result; + }); + } + + /** + * Sort through each item with a callback. + * + * @param Closure $callback + * @return $this + */ + public function sort(Closure $callback) + { + uasort($this->data, $callback); + + return $this; + } + + /** + * @param Closure $callback + * @return $this + */ + public function ksort(Closure $callback) + { + uksort($this->data, $callback); + + return $this; + } + + /** + * @return $this + */ + public function reindex() + { + $this->data = array_values($this->data); + + return $this; + } + + /** + * Return only unique items from the collection array. + * + * @return static + */ + public function unique() + { + return $this->create(array_unique($this->data)); + } + + /** + * Reverse items order. + * + * @return static + */ + public function reverse() + { + return $this->create(array_reverse($this->data)); + } +} diff --git a/assets/lib/Helpers/Config.php b/assets/lib/Helpers/Config.php new file mode 100755 index 0000000000..b0c9667590 --- /dev/null +++ b/assets/lib/Helpers/Config.php @@ -0,0 +1,129 @@ +setConfig($cfg); + } + $this->fs = \Helpers\FS::getInstance(); + } + + /** + * @param $path + * @return $this + */ + public function setPath($path) { + $this->path = $path; + + return $this; + } + + /** + * Загрузка конфигов из файла + * + * @param $name string имя конфига + * @return array массив с настройками + */ + public function loadConfig($name) + { + //$this->debug->debug('Load json config: ' . $this->debug->dumpData($name), 'loadconfig', 2); + if (!is_scalar($name)) { + $name = ''; + } + $config = array(); + $name = explode(";", $name); + foreach ($name as $cfgName) { + $cfgName = explode(":", $cfgName, 2); + if (empty($cfgName[1])) { + $cfgName[1] = 'custom'; + } + $cfgName[1] = rtrim($cfgName[1], '/'); + switch ($cfgName[1]) { + case 'custom': + case 'core': + $configFile = $this->fs->relativePath($this->path) . "/config/{$cfgName[1]}/{$cfgName[0]}.json"; + break; + default: + $configFile = $this->fs->relativePath($cfgName[1] . '/' . $cfgName[0] . ".json"); + break; + } + + if ($this->fs->checkFile($configFile)) { + $json = file_get_contents(MODX_BASE_PATH . $configFile); + $config = array_merge($config, \jsonHelper::jsonDecode($json, array('assoc' => true), true)); + } + } + + $this->setConfig($config); + + return $config; + } + + /** + * Получение всего списка настроек + * @return array + */ + public function getConfig() + { + return $this->_cfg; + } + + /** + * Сохранение массива настроек + * @param array $cfg массив настроек + * @return int результат сохранения настроек + */ + public function setConfig($cfg) + { + if (is_array($cfg)) { + $this->_cfg = array_merge($this->_cfg, $cfg); + $ret = count($this->_cfg); + } else { + $ret = false; + } + + return $ret; + } + + public function getCFGDef($name, $def = null) + { + return \APIhelpers::getkey($this->_cfg, $name, $def); + } + + /** + * Преобразует json или строку с разделителем в массив. + * + * @param $arr + * @param string $sep + * @return array|mixed|\xNop + */ + public function loadArray($arr, $sep = ',') + { + + if (is_scalar($arr)) { + $out = \jsonHelper::jsonDecode($arr, array('assoc' => true)); + if (is_null($out) && $sep) { + $out = array_filter(explode($sep, $arr)); + } + + return $out; + } elseif (is_array($arr)) { + return $arr; + } else { + return array(); + } + } +} diff --git a/assets/lib/Helpers/FS.php b/assets/lib/Helpers/FS.php new file mode 100755 index 0000000000..cf3bf638b1 --- /dev/null +++ b/assets/lib/Helpers/FS.php @@ -0,0 +1,388 @@ +relativePath($file); + if ($flag && !isset($this->_fileInfo[$f], $this->_fileInfo[$f][$mode])) { + $this->_fileInfo[$f] = pathinfo($f); + } + $out = $flag && isset($this->_fileInfo[$f][$mode]) ? $this->_fileInfo[$f][$mode] : ''; + + return $out; + } + + /** + * @param $file + * @return string + */ + public function takeFileDir($file) + { + return $this->_pathinfo($file, 'dirname'); + } + + /** + * @param $file + * @return string + */ + public function takeFileBasename($file) + { //file name with extension + return $this->_pathinfo($file, 'basename'); + } + + /** + * @param $file + * @return string + */ + public function takeFileName($file) + { + return $this->_pathinfo($file, 'filename'); + } + + /** + * @param $file + * @return string + */ + public function takeFileExt($file) + { + return strtolower($this->_pathinfo($file, 'extension')); + } + + /** + * @param $file + * @return bool + */ + public function checkFile($file) + { + $f = is_scalar($file) ? MODX_BASE_PATH . $this->relativePath($file) : ''; + + return (!empty($f) && is_file($f) && is_readable($f)); + } + + /** + * @param $path + * @return bool + */ + public function checkDir($path) + { + $f = is_scalar($path) ? $this->relativePath($path) : ''; + + return (!empty($f) && is_dir(MODX_BASE_PATH . $f) && is_readable(MODX_BASE_PATH . $f)); + } + + /** + * @param $file + * @param bool $format + * @return int|string + */ + public function fileSize($file, $format = false) + { + $out = 0; + if ($this->checkFile($file)) { + $out = filesize(MODX_BASE_PATH . $this->relativePath($file)); + } + if ($format) { + $types = array('B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'); + $size = $out > 0 ? floor(log($out, 1024)) : 0; + $out = number_format($out / pow(1024, $size), 2, '.', ',') . ' ' . $types[$size]; + } + + return $out; + } + + /** + * Если класс finfo и функция mime_content_type не доступны, то происходит сверка типов: + * - image/jpeg + * - image/png + * - image/gif + * Для всех остальных файлов будет присвоен тип application/octet-stream + * + * @param string $file Имя файла + * @return null|string MIME тип файла + */ + public function takeFileMIME($file) + { + $out = null; + $path = $this->relativePath($file); + if ($this->checkFile($path)) { + $fname = MODX_BASE_PATH . $path; + switch (true) { + /** need fileinfo extension */ + case (extension_loaded('fileinfo') && class_exists('\finfo')): + $fi = new \finfo(FILEINFO_MIME_TYPE); + if ($fi) { + $out = $fi->file($fname); + } + break; + case function_exists('mime_content_type'): + list($out) = explode(';', @mime_content_type($fname)); + break; + default: + /** + * @see: http://www.php.net/manual/ru/function.finfo-open.php#112617 + */ + $fh = fopen($fname, 'rb'); + if ($fh) { + $bytes6 = fread($fh, 6); + fclose($fh); + switch (true) { + case ($bytes6 === false): + break; + case (substr($bytes6, 0, 3) == "\xff\xd8\xff"): + $out = 'image/jpeg'; + break; + case ($bytes6 == "\x89PNG\x0d\x0a"): + $out = 'image/png'; + break; + case ($bytes6 == "GIF87a" || $bytes6 == "GIF89a"): + $out = 'image/gif'; + break; + default: + $out = 'application/octet-stream'; + break; + } + } + } + } + + return $out; + } + + /** + * @param $path + * @param int $perm + * @return bool + */ + public function makeDir($path, $perm = 0755) + { + if (!$this->checkDir($path)) { + $path = MODX_BASE_PATH . $this->relativePath($path); + $flag = mkdir($path, $this->toOct($perm), true); + } else { + $flag = true; + } + + return $flag; + } + + /** + * Копирование файла с проверкой на существование оригинального файла и созданием папок + * + * @param string $from источник + * @param string $to получатель + * @return bool статус копирования + */ + public function copyFile($from, $to, $chmod = 0644) + { + $flag = false; + $from = MODX_BASE_PATH . $this->relativePath($from); + $to = MODX_BASE_PATH . $this->relativePath($to); + $dir = $this->takeFileDir($to); + if ($this->checkFile($from) && $this->makeDir($dir) && copy($from, $to)) { + chmod($to, $this->toOct($chmod)); + $flag = true; + } + + return $flag; + } + + /** + * Перемещение файла с проверкой на существование оригинального файла и созданием папок + * + * @param string $from источник + * @param string $to получатель + * @return bool статус перемещения + */ + public function moveFile($from, $to, $chmod = 0644) + { + $flag = false; + $from = MODX_BASE_PATH . $this->relativePath($from); + $to = MODX_BASE_PATH . $this->relativePath($to); + $dir = $this->takeFileDir($to); + if ($this->checkFile($from) && $this->makeDir($dir) && rename($from, $to)) { + chmod($to, $this->toOct($chmod)); + $flag = true; + } + + return $flag; + } + + /** + * Получение относительного пути к файлу или папки + * + * @param string $path путь из которого нужно получить относительный + * @param string $owner начальный путь который стоит вырезать + * @return string относительный путь + */ + public function relativePath($path, $owner = null) + { + if (is_null($owner)) { + $owner = MODX_BASE_PATH; + } + if (!(empty($path) || !is_scalar($path)) && !preg_match("/^http(s)?:\/\/\w+/", $path)) { + $path = trim(preg_replace("#^" . $owner . "#", '', $path), '/'); + } else { + $path = ''; + } + + return $path; + } + + /** + * Перевод строки/числа из восьмеричной/десятичной системы счисления в 8-ричную систему счисления + * Если параметр является числом, то он остается без изменений. Обработка применяется только к строкам. + * + * 755 => 755 + * 0755 => 493 + * '0755' => 493 + * '755' => 493 + * + * @param mixed $chmod строка или число в восьмеричной/десятичной системе счисления + * @return int число в восьмеричной системе счисления + */ + public function toOct($chmod) + { + return is_string($chmod) ? octdec($chmod) : $chmod; + } + + /** + * @param $dirPath + * @return bool + */ + public function rmDir($dirPath) + { + $flag = false; + $path = $_path = MODX_BASE_PATH . $this->relativePath($dirPath); + if ($this->checkDir($path)) { + $dirIterator = new \RecursiveDirectoryIterator($path, \FilesystemIterator::SKIP_DOTS); + $dirRecursiveIterator = new \RecursiveIteratorIterator($dirIterator, + \RecursiveIteratorIterator::CHILD_FIRST); + foreach ($dirRecursiveIterator as $path) { + $path->isDir() ? rmdir($path->getPathname()) : unlink($path->getPathname()); + } + $flag = rmdir($_path); + } + + return $flag; + } + + /** + * @param $file + * @return bool + */ + public function unlink($file) + { + $flag = false; + if ($this->checkFile($file)) { + $flag = unlink(MODX_BASE_PATH . $this->relativePath($file)); + } + + return $flag; + } + + /** + * @param $path + * @return bool + */ + public function delete($path) + { + $path = MODX_BASE_PATH . $this->relativePath($path); + switch (true) { + case $this->checkDir($path): + $flag = $this->rmDir($path); + break; + case $this->checkFile($path): + $flag = $this->unlink($path); + break; + default: + $flag = false; + } + + return $flag; + } + + /** + * @param $file + * @param bool $full + * @return string + */ + public function getInexistantFilename($file, $full = false) + { + $i = 1; + $file = $mainFile = MODX_BASE_PATH . $this->relativePath($file); + while ($this->checkFile($file)) { + $i++; + $out = $this->takeFileDir($file) . '/'; + $out .= $this->takeFileName($mainFile) . "({$i})." . $this->takeFileExt($file); + $file = $out; + } + + return $full ? $file : $this->takeFileBasename($file); + } +} diff --git a/assets/lib/Helpers/Mailer.php b/assets/lib/Helpers/Mailer.php new file mode 100755 index 0000000000..b60d77f9f4 --- /dev/null +++ b/assets/lib/Helpers/Mailer.php @@ -0,0 +1,119 @@ +modx = $modx; + $modx->loadExtension('MODxMailer'); + $this->mail = $modx->mail; + $this->config = $cfg; + $this->debug = $debug; + } + + /** + * @param string $type + * @param string $addr + * @return $this + */ + public function addAddressToMailer($type, $addr) + { + if (!empty($addr)) { + $a = array_filter(array_map('trim', explode(',', $addr))); + foreach ($a as $address) { + switch ($type) { + case 'to': + $this->mail->AddAddress($address); + break; + case 'cc': + $this->mail->AddCC($address); + break; + case 'bcc': + $this->mail->AddBCC($address); + break; + case 'replyTo': + $this->mail->AddReplyTo($address); + } + } + } + + return $this; + } + + /** + * @param array $filelist + * @return $this + */ + public function attachFiles($filelist = array()) + { + $contentType = "application/octetstream"; + foreach ($filelist as $file) { + $this->mail->AddAttachment($file['filepath'], $file['filename'], "base64", $contentType); + } + + return $this; + } + + /** + * @param $report + * @return bool + */ + public function send($report) + { + //если отправлять некуда или незачем, то делаем вид, что отправили + if (!$this->getCFGDef('to') || $this->getCFGDef('noemail')) { + return true; + } elseif (empty($report)) { + return false; + } + + $this->mail->IsHTML($this->getCFGDef('isHtml', 1)); + $this->mail->From = $this->getCFGDef('from', $this->modx->config['site_name']); + $this->mail->FromName = $this->getCFGDef('fromName', $this->modx->config['emailsender']); + $this->mail->Subject = $this->getCFGDef('subject'); + $this->mail->Body = $report; + $this->addAddressToMailer("replyTo", $this->getCFGDef('replyTo')); + $this->addAddressToMailer("to", $this->getCFGDef('to')); + $this->addAddressToMailer("cc", $this->getCFGDef('cc')); + $this->addAddressToMailer("bcc", $this->getCFGDef('bcc')); + + $result = $this->mail->send(); + if ($result) { + $this->mail->ClearAllRecipients(); + $this->mail->ClearAttachments(); + } + + return $result; + } + + /** + * @param string $param + * @param mixed $default + * @return mixed + */ + public function getCFGDef($param, $default = null) + { + return \APIhelpers::getkey($this->config, $param, $default); + } +} diff --git a/assets/lib/Helpers/PHPThumb.php b/assets/lib/Helpers/PHPThumb.php new file mode 100755 index 0000000000..cc08f7f809 --- /dev/null +++ b/assets/lib/Helpers/PHPThumb.php @@ -0,0 +1,83 @@ +thumb = new \phpthumb(); + $this->fs = FS::getInstance(); + } + + /** + * @param $inputFile + * @param $outputFile + * @param $options + * @return bool + */ + public function create($inputFile, $outputFile, $options) + { + $this->thumb->sourceFilename = $inputFile; + $ext = explode('.', $inputFile); + $ext = str_replace('jpeg', 'jpg', strtolower(array_pop($ext))); + $options = 'f=' . $ext . '&' . $options; + $this->setOptions($options); + if ($this->thumb->GenerateThumbnail() && $this->thumb->RenderToFile($outputFile)) { + return true; + } else { + $this->debugMessages = implode('
                    ', $this->thumb->debugmessages); + + return false; + } + } + + /** + * @param $file + * @param string $type + */ + public function optimize($file, $type = 'jpg') + { + switch ($type) { + case 'jpg': + $ext = $this->fs->takeFileExt($file); + if ($ext == 'jpeg' || $ext == 'jpg') { + $cmd = '/usr/bin/jpegtran -optimize -progressive -copy none -outfile ' . escapeshellarg($file . '_') . ' ' . escapeshellarg($file); + exec($cmd, $result, $return_var); + if ($this->fs->fileSize($file) > $this->fs->fileSize($file . '_')) { + $this->fs->moveFile($file . '_', $file); + } else { + $this->fs->unlink($file . '_'); + } + } + break; + default: + break; + } + } + + /** + * @param $options + */ + private function setOptions($options) + { + $options = strtr($options, Array("," => "&", "_" => "=", '{' => '[', '}' => ']')); + parse_str($options, $params); + foreach ($params as $key => $value) { + $this->thumb->setParameter($key, $value); + } + } +} diff --git a/assets/lib/Helpers/Video.php b/assets/lib/Helpers/Video.php new file mode 100755 index 0000000000..05c0fd616e --- /dev/null +++ b/assets/lib/Helpers/Video.php @@ -0,0 +1,422 @@ +getVideo(); //Ссылка на видео + * $v->getTitle(); //Название ролика + * $v->fetchImage($path) //Скачать самое большое превью ролика + * + * Прогнать тест: + * VideoThumb::RunTest() + * @See: https://gist.github.com/cmsx/5539570 + */ +class Video +{ + /** Ссылка на ролик */ + protected $link; + + /** Распарсенные части ссылки */ + protected $link_parts; + + /** Видеохостинг */ + protected $hosting; + + /** Идентификатор видео */ + protected $id; + + /** Картинка */ + protected $image; + + /** Название видео */ + protected $title; + + /** Видео */ + protected $video; + + protected $width = 420; + protected $height = 315; + protected $autoplay = false; + + public $scheme = 'https'; + + const YOUTUBE = 'youtube'; + const VIMEO = 'vimeo'; + const RUTUBE = 'rutube'; + + /** Регулярки для определения видеохостинга и идентификатора ролика */ + protected $regexp = array( + self::YOUTUBE => array( //Не используются + '/[http|https]+:\/\/(?:www\.|)youtube\.com\/watch\?(?:.*)?v=([a-zA-Z0-9_\-]+)/i', + '/[http|https]+:\/\/(?:www\.|)youtube\.com\/embed\/([a-zA-Z0-9_\-]+)/i', + '/[http|https]+:\/\/(?:www\.|)youtu\.be\/([a-zA-Z0-9_\-]+)/i' + ), + self::VIMEO => array( //Не используются + '/[http|https]+:\/\/(?:www\.|)vimeo\.com\/([a-zA-Z0-9_\-]+)(&.+)?/i', + '/[http|https]+:\/\/player\.vimeo\.com\/video\/([a-zA-Z0-9_\-]+)(&.+)?/i' + ), + self::RUTUBE => array( + '/[http|https]+:\/\/(?:www\.|)rutube\.ru\/video\/embed\/([a-zA-Z0-9_\-]+)/i', + '/[http|https]+:\/\/(?:www\.|)rutube\.ru\/tracks\/([a-zA-Z0-9_\-]+)(&.+)?/i' + ) + ); + + /** Ссылка на RUtube без идентификатора в адресе */ + protected $regexp_rutube_extra = '/[http|https]+:\/\/(?:www\.|)rutube\.ru\/video\/([a-zA-Z0-9_\-]+)\//i'; + + /** Варианты ссылок, которые поддерживаются */ + protected static $test = array( + 'http://youtube.com/watch?v=ShPq2Dmy6X8', + 'http://www.youtube.com/watch?v=6dwqZw0j_jY&feature=youtu.be', + 'http://www.youtube.com/watch?v=cKZDdG9FTKY&feature=channel', + 'www.youtube.com/watch?v=yZ-K7nCVnBI&playnext_from=TL&videos=osPknwzXEas&feature=sub', + 'http://www.youtube.com/embed/ShPq2Dmy6X8?rel=0', + 'http://youtu.be/ShPq2Dmy6X8', + 'youtu.be/6dwqZw0j_jY', + 'http://www.youtu.be/afa-5HQHiAs', + 'vimeo.com/55028438', + 'http://player.vimeo.com/video/55028438?title=0&byline=0&portrait=0&badge=0&color=e1a931', + 'http://rutube.ru/video/6fd81c1c212c002673280850a1c56415/#.UMQYln9yTWQ', + 'http://rutube.ru/video/dec0a58c8cb4d226abc7b1030bbb63b9/?ref=top', + 'rutube.ru/tracks/6032725.html', + 'http://www.rutube.ru/video/embed/6032725', + ); + + protected $info = false; + + /** + * @param string|null $link ссылка на видео + * @param bool $autostart сразу определить превью и клип + */ + public function __construct($link = null, $autostart = true, $info = false) + { + if (!empty($link)) { + $this->setLink($link); + $this->setInfo($info); + if ($autostart) { + $this->process(); + } + } + } + + /** + * @return string + */ + public function getScheme() + { + switch ($this->scheme) { + case 'http': + $out = 'http://'; + break; + case 'https': + $out = 'https://'; + break; + default: + $out = '//'; + break; + } + + return $out; + } + + /** + * @param $info + */ + public function setInfo($info) + { + $this->info = (bool)$info; + } + + /** + * @return bool + */ + public function getInfo() + { + return $this->info; + } + + /** Видеохостинг */ + public function getHosting() + { + return $this->hosting; + } + + /** Идентификатор видео */ + public function getId() + { + return $this->id; + } + + /** Ссылка на превью */ + public function getImage() + { + return $this->getScheme() . $this->image; + } + + /** Ссылка на видео */ + public function getVideo($autoplay = false) + { + $url = $this->video; + if ($autoplay) { + $url .= '&autoplay=1'; + } + + return $this->getScheme() . $url; + } + + /** Название видео */ + public function getTitle() + { + return $this->title; + } + + /** Задать ссылку на видео */ + public function setLink($link) + { + $this->link = $link; + + return $this; + } + + /** Обработка ссылки. Возвращает идентификатор видеохостинга или false */ + public function process($link = null, $info = null) + { + if (!empty($link)) { + $this->setLink($link); + } + if (!empty($info)) { + $this->setInfo($info); + } + + if ($this->cleanLink()) { + if ($this->maybeYoutube()) { + return self::YOUTUBE; + } + + if ($this->maybeVimeo()) { + return self::VIMEO; + } + + if ($this->maybeRutube()) { + return self::RUTUBE; + } + } + + return false; + } + + /** Скачать превью. Если не указать имя файла для записи - функция вернет содержимое файла */ + public function fetchImage($filename = null) + { + if (!$url = $this->getImage()) { + return false; + } + + if (!$res = $this->fetchPage($url)) { + return false; + } + + return $filename + ? file_put_contents($filename, $res) + : $res; + } + + /** Проверка и подготовка ссылки и частей */ + protected function cleanLink() + { + if (!preg_match('/^(http|https)\:\/\//i', $this->link)) { + $this->link = 'http://' . $this->link; + } + + if (!$this->link_parts = parse_url($this->link)) { + return false; + } + + return true; + } + + /** Проверка YOUTUBE */ + protected function maybeYoutube() + { + $h = str_replace('www.', '', $this->link_parts['host']); + $p = isset($this->link_parts['path']) ? $this->link_parts['path'] : false; + + if ('youtube.com' == $h) { + parse_str($this->link_parts['query'], $q); + + if ('/watch' == $p && !empty($q['v'])) { + return $this->foundYoutube($q['v']); + } + if (0 === strpos($p, '/embed/')) { + return $this->foundYoutube(str_replace('/embed/', '', $p)); + } + } elseif ('youtu.be' == $h) { + return $this->foundYoutube(trim($p, '/')); + } + + return false; + } + + /** Проверка VIMEO */ + protected function maybeVimeo() + { + $h = str_replace('www.', '', $this->link_parts['host']); + $p = isset($this->link_parts['path']) ? $this->link_parts['path'] : false; + + if ('vimeo.com' == $h) { + return $this->foundVimeo(trim($p, '/')); + } elseif ('player.vimeo.com' == $h && 0 === strpos($p, '/video/')) { + return $this->foundVimeo(str_replace('/video/', '', $p)); + } + + return false; + } + + /** Проверка RUTUBE */ + protected function maybeRutube($html = null) + { + $link = $html ?: $this->link; + + foreach ($this->regexp[self::RUTUBE] as $regexp) { + if (preg_match($regexp, $link, $matches)) { + return $this->foundRutube($matches[1]); + } + } + + // Проверка на особенную ссылку RUtube`a + if (is_null($html) && preg_match($this->regexp_rutube_extra, $this->link, $matches)) { + $html = $this->fetchPage($matches[0]); + if ($r = $this->maybeRutube($html)) { + return $r; + } + } + + return false; + } + + /** Обработка YOUTUBE */ + protected function foundYoutube($id) + { + if (empty($id) || strlen($id) != 11) { + return false; + } + + $this->hosting = self::YOUTUBE; + $this->id = $id; + $this->image = 'img.youtube.com/vi/' . $id . '/0.jpg'; + /** @see https://developers.google.com/youtube/player_parameters */ + $this->video = 'www.youtube.com/embed/' . $id . '?showinfo=0&modestbranding=1&rel=0'; + + if ($this->info) { + $this->getYoutubeInfo($id); + } + + return true; + } + + /** Обработка VIMEO */ + protected function foundVimeo($id) + { + if (empty($id) || !is_numeric($id)) { + return false; + } + + $this->hosting = self::VIMEO; + $this->id = $id; + $this->video = 'player.vimeo.com/video/' . $id . '?'; + + if ($this->info) { + $this->getVimeoInfo($id); + } + + return true; + } + + /** Обработка RUTUBE */ + protected function foundRutube($id) + { + $this->hosting = self::RUTUBE; + $this->id = $id; + $this->video = 'rutube.ru/video/embed/' . $id . '?'; + + if ($this->info) { + $this->getRutubeInfo($id); + } + + return true; + } + + /** Парсинг XML от RUTUBE и определение превьюхи */ + protected function getRutubeInfo($id) + { + if (@$xml = simplexml_load_file("http://rutube.ru/cgi-bin/xmlapi.cgi?rt_mode=movie&rt_movie_id=" . $id . "&utf=1")) { + $this->title = (string)$xml->title; + $this->image = (string)$xml->thumbnail_url; + } + } + + /** Парсинг XML от VIMEO и определение превьюхи */ + protected function getVimeoInfo($id) + { + if (@$xml = simplexml_load_file('http://vimeo.com/api/v2/video/' . $id . '.xml')) { + $this->title = (string)$xml->video->title; + $this->image = (string)$xml->video->thumbnail_large ?: $xml->video->thumbnail_medium; + } + } + + /** Получение названия ролика */ + protected function getYoutubeInfo($id) + { + if (@$xml = simplexml_load_file('http://gdata.youtube.com/feeds/api/videos/' . $id)) { + $this->title = (string)$xml->title; + } + } + + /** Скачивание страницы с помощью CURL */ + protected function fetchPage($url) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_FAILONERROR, true); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_TIMEOUT, 3); + + return curl_exec($ch); + } + + /** + * @param $options + * @return string + */ + public function getEmbed($options) + { + $autoplay = isset($options["autoplay"]) ? $options["autoplay"] : $this->autoplay; + $width = isset($options["width"]) ? (int)$options["width"] : $this->width; + $height = isset($options["height"]) ? (int)$options["height"] : $this->height; + $class = isset($options['class']) ? $options['class'] : ''; + + $url = $this->getVideo($autoplay); + if (!empty($class)) { + $class = ' class="' . $class . '"'; + } + + return ''; + } + + /** Прогоняем тест по видам URL */ + public static function RunTest($links = null) + { + if (!is_array($links)) { + $links = static::$test; + } + + foreach ($links as $link) { + $v = new static($link); + echo "

                    $link

                    \n" + . "

                    " . $v->getHosting() . "

                    " + . "Видео: " . $v->getVideo() . "
                    \n" + . "Название: " . $v->getTitle() . "
                    \n" + . "Картинка: " . $v->getImage() . "
                    \n"; + } + } +} diff --git a/assets/lib/MODxAPI/.htaccess b/assets/lib/MODxAPI/.htaccess new file mode 100755 index 0000000000..6c1cc6e2da --- /dev/null +++ b/assets/lib/MODxAPI/.htaccess @@ -0,0 +1,5 @@ +IndexIgnore */* + + Order Deny,Allow + Deny from all + diff --git a/assets/lib/MODxAPI/HISTORY.md b/assets/lib/MODxAPI/HISTORY.md new file mode 100755 index 0000000000..b524cbe7f5 --- /dev/null +++ b/assets/lib/MODxAPI/HISTORY.md @@ -0,0 +1,109 @@ +## 1.0.18 (01.08.2014) +* Исправлена SQL-injection при сохранении значений ТВ параметров документов + +## 1.0.17 (26.07.2014) +* При вызове метода edit для уже открытого ранее документа с таким же ID больше не происходит перезагрузки данных +* В метод toArray происходит автоматическое подмешивание ID документа +* Добавлен пример использования в README + +## 1.0.16 (02.03.2014) +* Исправлена ошибка с установкой значений 0 при создании новых записей + +## 1.0.15 (09.02.2014) +* Добавлено экранирование имен полей при подстановке в SQL зпрос +* Изменено значение по умолчанию на id у переменной pkName в абстрактном классе + +## 1.0.14 (04.02.2014) +* Исправлена валидация полей в классе modUsers при сохранении/изменении записи +* Добавлен класс modTV для работы с TV параметрами + +## 1.0.13 (31.01.2014) +* Добавлен метод isWebShow() для modResource проверяющий опубликован ли документ + +## 1.0.12 (28.01.2014) +* Исправлена устанновка ID для метода getID() +* Возможность получения массива только ТВ параметров или основных свойств документа + +## 1.0.11 (18.01.2014) +* Обновление таблицы user_settings +* Ошибка сброса кукисов при выходе + +## 1.0.10 (01.01.2014) +* Валидация имен устанавливаемых полей + +## 1.0.9 (30.12.2013) +* Сброс id несуществующией записи при загрузке данных методом edit + +## 1.0.8 (19.12.2013) +* Редактирование tv-параметра с пустым значением (Issue #15) + +## 1.0.7 (18.12.2013) +* Исправление проблемы с отчисткой кеша при установке MODX в подпапку (Issue #18) + +## 1.0.6 (20.11.2013) +* Исправлен баг с сохранением данных о веб-пользователе в таблицу web_user_settings +* Добавлен метод getLog() для получения данных из массива log + +## 1.0.5 (14.11.2013) +* Добавлен абстрактный класс autoTable и на его основе созданы классы modChunk, modSnippet, modTemplate, modCategories, modModule, modPlugin + +## 1.0.4 (06.11.2013) +* Исправлено дублирование значение ТВ параметров в таблице site_tmplvar_contentvalues (Issue #17) +* Исправлен метод отчистки кэша из-за которого все сыпалось в Fatal Error (Issue #18) +* Доработан метод checkVersion для совместимости со старыми версиями MODX (Issue #19) + +## 1.0.3 (16.09.2013) +* функция APIhelpers::getUserIP избавилась от анонимной функции +* Функции внутри APIhelpers стали публичными + +## 1.0.2 (30.08.2013) +* Недоступные символы в alias + +## 1.0.1 (27.08.2013) +* Добавлено экранирование данных перед вставкой в SQL запрос +* Сверка версий MODX Evolution при построении SQL запроса +* Значения по умолчанию для вновь создаваемых документов modResource берутся из системных настроек +* Опечатка в имени функции $modx->getManagerPath() (by Husband) +* pagetitle теперь не обязателен к установке (by Husband) + +## 1.0.0 (24.05.2013) +* Вынесена MODX логика в абстрактный вспомогательный класс +* Возможность создание классов с произвольной логикой и для любых таблиц +* Портирован код resource.php в modResource.php +* Вспомогитаельные методы вынесены в отдельный класс APIhelpers, который наследуется для абстрактного класса MODxAPI + +## 0.4.1 (23.05.2013) +* Перечислены все основные поля документа +* Исправлена проверка псевдонимов на дубликаты +* Изменен метод генерации псевдонимов у дубликатов +* Переименован метод clear_chache() в clearCache() + +## 0.4.0 (22.05.2013) +* Установка шаблона по имени +* Пропуск системных документов из удаляемых методом delete() +* Новые методы fromJson() и toJson() с поддержкой callback функций +* Корректные аргументы при вызове плагинов на событии OnDocFormSave +* Поддержка новых событий OnBeforeDocFormSave, OnEmptyTrash, OnBeforeEmptyTrash +* Массовое удаление документов через WHERE IN + +## 0.3.0 (22.05.2013) +* Поддержка короткого синтаксиса +* Метод dublicate переименован в edit() +* Новые параметры у метода save() +* Проверки в методах set() и get() +* Добавлен метод clearLog() +* $modx передается как аргумент, а не global +* Замена PREFIX на $modx->getFullTableName() +* Продвинутый генератор алиасов с проверкой на дубликаты +* Внутренний рефакторинг с заменой на методы set и get +* Корректировка публичных и приватных методов +* Добавлены методы fromArray() и toArray() +* Массовое удаление документов + +## 0.2.0 (21.05.2013) +* Добавлены метод dublicate(), get(), delete() +* Добавлена поддрежка плагинов OnSiteRefresh и OnDocFormSave +* Возможность отключить срабатывание плагинов при помощи параметров у метода save() + +## 0.1.0 (20.05.2013) +* Создание проекта diff --git a/assets/lib/MODxAPI/MODx.php b/assets/lib/MODxAPI/MODx.php new file mode 100755 index 0000000000..a3385fa0e8 --- /dev/null +++ b/assets/lib/MODxAPI/MODx.php @@ -0,0 +1,1035 @@ +modx = $modx; + if (function_exists("get_magic_quotes_gpc") && get_magic_quotes_gpc()) { + throw new Exception('Magic Quotes is a deprecated and mostly useless setting that should be disabled. Please ask your server administrator to disable it in php.ini or in your webserver config.'); + } + + $this->setDebug($debug); + $this->_decodedFields = new DLCollection($this->modx); + } + + /** + * @param boolean $flag + * @return $this + */ + public function setDebug($flag) + { + $this->_debug = (bool)$flag; + + return $this; + } + + /** + * @return bool + */ + public function getDebug() + { + return $this->_debug; + } + + /** + * @return array + */ + public function getDefaultFields() + { + return $this->default_field; + } + + /** + * @param string $name + * @param null $default + * @return mixed + */ + final public function modxConfig($name, $default = null) + { + return APIHelpers::getkey($this->modx->config, $name, $default); + } + + /** + * @param $q + * @return $this + */ + public function addQuery($q) + { + if (is_scalar($q) && !empty($q)) { + $this->_query[] = $q; + } + + return $this; + } + + /** + * @return array + */ + public function getQueryList() + { + return $this->_query; + } + + /** + * @param $SQL + * @return mixed + */ + final public function query($SQL) + { + if ($this->getDebug()) { + $this->addQuery($SQL); + } + + return empty($SQL) ? null : $this->modx->db->query($SQL); + } + + /** + * @param $value + * @return string|void + */ + final public function escape($value) + { + if (!is_scalar($value)) { + $value = ''; + } else { + $value = $this->modx->db->escape($value); + } + + return $value; + } + + /** + * @param string $name + * @param array $data + * @param bool $flag + * @return $this + */ + final public function invokeEvent($name, $data = array(), $flag = false) + { + $flag = (isset($flag) && $flag != '') ? (bool)$flag : false; + if ($flag) { + $this->modx->invokeEvent($name, $data); + } + + return $this; + } + + /** + * @param string $name + * @param array $data + * @param boolean $flag + * @return array|bool + */ + final public function getInvokeEventResult($name, $data = array(), $flag = null) + { + $flag = (isset($flag) && $flag != '') ? (bool)$flag : false; + + return $flag ? $this->modx->invokeEvent($name, $data) : false; + } + + /** + * @return $this + */ + final public function clearLog() + { + $this->log = array(); + + return $this; + } + + /** + * @return array + */ + final public function getLog() + { + return $this->log; + } + + /** + * @param bool $flush + * @return $this + */ + final public function list_log($flush = false) + { + echo '
                    ' . print_r(APIHelpers::sanitarTag($this->log), true) . '
                    '; + if ($flush) { + $this->clearLog(); + } + + return $this; + } + + /** + * @param bool $full + * @return string + */ + final public function getCachePath($full = true) + { + $path = $this->modx->getCachePath(); + if ($full) { + $path = MODX_BASE_PATH . substr($path, strlen(MODX_BASE_URL)); + } + + return $path; + } + + /** + * @param boolean $fire_events + * @param bool $custom + */ + final public function clearCache($fire_events = false, $custom = false) + { + $IDs = array(); + if ($custom === false) { + $this->modx->clearCache(); + include_once(MODX_MANAGER_PATH . 'processors/cache_sync.class.processor.php'); + $sync = new synccache(); + $path = $this->getCachePath(true); + $sync->setCachepath($path); + $sync->setReport(false); + $sync->emptyCache(); + } else { + if (is_scalar($custom)) { + $custom = array($custom); + } + switch ($this->modx->config['cache_type']) { + case 2: + $cacheFile = "_*.pageCache.php"; + break; + default: + $cacheFile = ".pageCache.php"; + } + if (is_array($custom)) { + foreach ($custom as $id) { + $tmp = glob(MODX_BASE_PATH . "assets/cache/docid_" . $id . $cacheFile); + foreach ($tmp as $file) { + if (is_readable($file)) { + unlink($file); + } + $IDs[] = $id; + } + } + } + clearstatcache(); + } + $this->invokeEvent('OnSiteRefresh', array('IDs' => $IDs), $fire_events); + } + + /** + * @param integer $id + * @return MODxAPI + */ + public function switchObject($id) + { + switch (true) { + //Если загружен другой объект - не тот, с которым мы хотим временно поработать + case ($this->getID() != $id && $id): + $obj = clone $this; + $obj->edit($id); + break; + //Если уже загружен объект, с которым мы хотим временно поработать + case ($this->getID() == $id && $id): + //Если $id не указан, но уже загружен какой-то объект + case (!$id && null !== $this->getID()): + default: + $obj = $this; + break; + } + + return $obj; + } + + /** + * @param bool $flag + * @return $this + */ + public function useIgnore($flag = true) + { + $this->ignoreError = $flag ? 'IGNORE' : ''; + + return $this; + } + + /** + * @return bool + */ + public function hasIgnore() + { + return (bool)$this->ignoreError; + } + + /** + * @param $key + * @param $value + * @return $this + */ + public function set($key, $value) + { + if ((is_scalar($value) || $this->isJsonField($key)) && is_scalar($key) && !empty($key)) { + $this->field[$key] = $value; + } + + return $this; + } + + /** + * @return null|int + */ + final public function getID() + { + return $this->id; + } + + /** + * @param $key + * @return mixed + */ + public function get($key) + { + return APIHelpers::getkey($this->field, $key, null); + } + + /** + * @param $data + * @return $this + */ + public function fromArray($data) + { + if (is_array($data)) { + foreach ($data as $key => $value) { + $this->set($key, $value); + } + } + + return $this; + } + + /** + * Формирует массив значений для подстановки в SQL запрос на обновление + * + * @param $key + * @param string $id + * @return $this + * @throws Exception + */ + final protected function Uset($key, $id = '') + { + if (!isset($this->field[$key])) { + $tmp = "`{$key}`=''"; + $this->log[] = "{$key} is empty"; + } else { + if ($this->issetField($key) && is_scalar($this->field[$key])) { + $tmp = "`{$key}`='{$this->escape($this->field[$key])}'"; + } else { + throw new Exception("{$key} is invalid
                    " . print_r($this->field[$key], true) . "
                    "); + } + } + if (!empty($tmp) && $this->isChanged($key)) { + if ($id == '') { + $this->set[] = $tmp; + } else { + $this->set[$id][] = $tmp; + } + } + + return $this; + } + + /** + * Сохраняет начальные значения полей + * + * @param array $data + * @return $this + */ + public function store($data = array()) { + if (is_array($data)) $this->store = $data; + + return $this; + } + + /** + * Откатывает изменения отдельного поля или всех полей сразу + * + * @param string $key + * @return MODxAPI + */ + public function rollback($key = '') { + if (!empty($key) && isset($this->store[$key])) { + $this->set($key,$this->store[$key]); + } else { + $this->fromArray($this->store); + } + + return $this; + } + + /** + * Проверяет изменилось ли поле + * + * @param $key + * @return bool + */ + public function isChanged($key) { + $flag = !isset($this->store[$key]) || (isset($this->store[$key]) && $this->store[$key] != $this->field[$key]); + + return $flag; + } + + /** + * @param $IDs + * @param string $sep + * @param integer[] $ignore + * @return array + * @throws Exception + */ + final public function cleanIDs($IDs, $sep = ',', $ignore = array()) + { + $out = array(); + if (!is_array($IDs)) { + if (is_scalar($IDs)) { + $IDs = explode($sep, $IDs); + } else { + $IDs = array(); + throw new Exception('Invalid IDs list
                    ' . print_r($IDs, 1) . '
                    '); + } + } + foreach ($IDs as $item) { + $item = trim($item); + if (is_scalar($item) && (int)$item >= 0) { //Fix 0xfffffffff + if (!empty($ignore) && in_array((int)$item, $ignore, true)) { + $this->log[] = 'Ignore id ' . (int)$item; + } else { + $out[] = (int)$item; + } + } + } + $out = array_unique($out); + + return $out; + } + + /** + * @param $data + * @param null $callback + * @return $this + * @throws Exception + */ + final public function fromJson($data, $callback = null) + { + if (is_scalar($data) && !empty($data)) { + $json = json_decode($data); + } else { + throw new Exception("json is not string with json data"); + } + + if ($this->jsonError($json)) { + if (isset($callback) && is_callable($callback)) { + call_user_func_array($callback, array($json)); + } else { + if (isset($callback)) { + throw new Exception("Can't call callback JSON unpack
                    " . print_r($callback, 1) . "
                    "); + } + foreach ($json as $key => $val) { + $this->set($key, $val); + } + } + } else { + throw new Exception('Error from JSON decode:
                    ' . print_r($data, 1) . '
                    '); + } + + return $this; + } + + /** + * @param null $callback + * @return string + * @throws Exception + */ + final public function toJson($callback = null) + { + $data = $this->toArray(); + if (isset($callback) && is_callable($callback)) { + $data = call_user_func_array($callback, array($data)); + } else { + if (isset($callback)) { + throw new Exception("Can't call callback JSON pre pack
                    " . print_r($callback, 1) . "
                    "); + } + } + $json = json_encode($data); + + if ($this->jsonError($data)) { + throw new Exception('Error from JSON decode:
                    ' . print_r($data, 1) . '
                    '); + } + + return $json; + } + + /** + * @param $data + * @return bool + */ + final protected function jsonError($data) + { + $flag = false; + if (json_last_error() === JSON_ERROR_NONE && is_object($data) && $data instanceof stdClass) { + $flag = true; + } + + return $flag; + } + + /** + * @param string $prefix + * @param string $suffix + * @param string $sep + * @return array + */ + public function toArray($prefix = '', $suffix = '', $sep = '_') + { + $tpl = ''; + $plh = '[+key+]'; + if ($prefix !== '') { + $tpl = $prefix . $sep; + } + $tpl .= $plh; + if ($suffix !== '') { + $tpl .= $sep . $suffix; + } + $out = array(); + $fields = $this->field; + $fields[$this->fieldPKName()] = $this->getID(); + if ($tpl != $plh) { + foreach ($fields as $key => $value) { + $out[str_replace($plh, $key, $tpl)] = $value; + } + } else { + $out = $fields; + } + + return $out; + } + + /** + * @return string + */ + final public function fieldPKName() + { + return $this->pkName; + } + + /** + * @param $table + * @return mixed|string + */ + final public function makeTable($table) + { + //Без использования APIHelpers::getkey(). Иначе getFullTableName будет всегда выполняться + return (isset($this->_table[$table])) ? $this->_table[$table] : $this->modx->getFullTableName($table); + } + + /** + * @param $data + * @param string $sep + * @return array|string + */ + final public function sanitarIn($data, $sep = ',') + { + if (!is_array($data)) { + $data = explode($sep, $data); + } + $out = array(); + foreach ($data as $item) { + if ($item !== '') { + $out[] = $this->escape($item); + } + } + $out = empty($out) ? '' : "'" . implode("','", $out) . "'"; + + return $out; + } + + /** + * @param string $table + * @param string $field + * @param string $PK + * @return bool + */ + public function checkUnique($table, $field, $PK = 'id') + { + if (is_array($field)) { + $where = array(); + foreach ($field as $_field) { + $val = $this->get($_field); + if ($val != '') { + $where[] = "`" . $this->escape($_field) . "` = '" . $this->escape($val) . "'"; + } + } + $where = implode(' AND ', $where); + } else { + $where = ''; + $val = $this->get($field); + if ($val != '') { + $where = "`" . $this->escape($field) . "` = '" . $this->escape($val) . "'"; + } + } + + if ($where != '') { + $sql = $this->query("SELECT `" . $this->escape($PK) . "` FROM " . $this->makeTable($table) . " WHERE " . $where); + $id = $this->modx->db->getValue($sql); + if (is_null($id) || (!$this->newDoc && $id == $this->getID())) { + $flag = true; + } else { + $flag = false; + } + } else { + $flag = false; + } + + return $flag; + } + + /** + * @param array $data + * @return $this + */ + public function create($data = array()) + { + $this->close(); + $this->fromArray($data); + + return $this; + } + + /** + * @param $id + * @return $this + */ + public function copy($id) + { + $this->edit($id)->id = 0; + $this->newDoc = true; + + return $this; + } + + /** + * + */ + public function close() + { + $this->newDoc = true; + $this->id = null; + $this->field = array(); + $this->set = array(); + $this->store = array(); + $this->markAllDecode(); + } + + /** + * @param $key + * @return bool + */ + public function issetField($key) + { + return (is_scalar($key) && array_key_exists($key, $this->default_field)); + } + + /** + * @param $id + * @return mixed + */ + abstract public function edit($id); + + /** + * @param null $fire_events + * @param bool $clearCache + * @return mixed + */ + abstract public function save($fire_events = null, $clearCache = false); + + /** + * @param $ids + * @param null $fire_events + * @return mixed + */ + abstract public function delete($ids, $fire_events = null); + + /** + * @param $data + * @return array|mixed|string + */ + final public function sanitarTag($data) + { + return parent::sanitarTag($this->modx->stripTags($data)); + } + + /** + * @param string $version + * @param bool $dmi3yy + * @return bool + */ + final protected function checkVersion($version, $dmi3yy = true) + { + $flag = false; + $currentVer = $this->modx->getVersionData('version'); + if (is_array($currentVer)) { + $currentVer = APIHelpers::getkey($currentVer, 'version', ''); + } + $tmp = substr($currentVer, 0, strlen($version)); + if (version_compare($tmp, $version, '>=')) { + $flag = true; + if ($dmi3yy) { + $flag = (boolean)preg_match('/^' . $tmp . '(.*)\-d/', $currentVer); + } + } + + return $flag; + } + + /** + * @param string $name + * @return bool|mixed + */ + protected function eraseField($name) + { + $flag = false; + if (array_key_exists($name, $this->field)) { + $flag = $this->field[$name]; + unset($this->field[$name]); + } + + return $flag; + } + + /** + * Может ли содержать данное поле json массив + * @param string $field имя поля + * @return boolean + */ + public function isJsonField($field) + { + return (is_scalar($field) && in_array($field, $this->jsonFields)); + } + + /** + * Пометить поле как распакованное + * @param string $field имя поля + * @return $this + */ + public function markAsDecode($field) + { + if (is_scalar($field)) { + $this->_decodedFields->set($field, false); + } + + return $this; + } + + /** + * Пометить поле как запакованное + * @param string $field имя поля + * @return $this + */ + public function markAsEncode($field) + { + if (is_scalar($field)) { + $this->_decodedFields->set($field, true); + } + + return $this; + } + + /** + * Пометить все поля как запакованные + * @return $this + */ + public function markAllEncode() + { + $this->_decodedFields->clear(); + foreach ($this->jsonFields as $field) { + $this->markAsEncode($field); + } + + return $this; + } + + /** + * Пометить все поля как распакованные + * @return $this + */ + public function markAllDecode() + { + $this->_decodedFields->clear(); + foreach ($this->jsonFields as $field) { + $this->markAsDecode($field); + } + + return $this; + } + + /** + * Получить список не запакованных полей + * @return DLCollection + */ + public function getNoEncodeFields() + { + return $this->_decodedFields->filter(function ($value) { + return ($value === false); + }); + } + + /** + * Получить список не распакованных полей + * @return DLCollection + */ + public function getNoDecodeFields() + { + return $this->_decodedFields->filter(function ($value) { + return ($value === true); + }); + } + + /** + * Можно ли данное декодировать с помощью json_decode + * @param string $field имя поля + * @return boolean + */ + public function isDecodableField($field) + { + $data = $this->get($field); + + /** + * Если поле скалярного типа и оно не распаковывалось раньше + */ + + return (is_scalar($data) && is_scalar($field) && $this->_decodedFields->get($field) === true); + } + + /** + * Можно ли закодировать данные с помощью json_encode + * @param string $field имя поля + * @return boolean + */ + public function isEncodableField($field) + { + /** + * Если поле было распаковано ранее и еще не упаковано + */ + return (is_scalar($field) && $this->_decodedFields->get($field) === false); + } + + /** + * Декодирует конкретное поле + * @param string $field Имя поля + * @param bool $store обновить распакованное поле + * @return array ассоциативный массив с данными из json строки + */ + public function decodeField($field, $store = false) + { + $out = array(); + if ($this->isDecodableField($field)) { + $data = $this->get($field); + $out = jsonHelper::jsonDecode($data, array('assoc' => true), true); + } + if ($store) { + $this->field[$field] = $out; + $this->markAsDecode($field); + } + + return $out; + } + + /** + * Декодирование всех json полей + * @return $this + */ + protected function decodeFields() + { + foreach ($this->getNoDecodeFields() as $field => $flag) { + $this->decodeField($field, true); + } + + return $this; + } + + /** + * Запаковывает конкретное поле в JSON + * @param string $field Имя поля + * @param bool $store обновить запакованное поле + * @return string|null json строка + */ + public function encodeField($field, $store = false) + { + $out = null; + if ($this->isEncodableField($field)) { + $data = $this->get($field); + $out = json_encode($data); + } + if ($store) { + $this->field[$field] = $out; + $this->markAsEncode($field); + } + + return $out; + } + + /** + * Запаковка всех json полей + * @return $this + */ + protected function encodeFields() + { + foreach ($this->getNoEncodeFields() as $field => $flag) { + $this->encodeField($field, true); + } + + return $this; + } +} diff --git a/assets/lib/MODxAPI/README.md b/assets/lib/MODxAPI/README.md new file mode 100755 index 0000000000..c45b50f4a2 --- /dev/null +++ b/assets/lib/MODxAPI/README.md @@ -0,0 +1,53 @@ +MODxAPI +========= +Легковесное подобие ORM прослойки для MODX Evolution. +Изначально проектировалось как замена библиотеки DocManager, но в итоге оптимизирован код и заложен потенциал для создания обертки с произвольной логикой для любых таблиц. + +Обсуждение версии resource.php +--------- +http://blog.agel-nash.ru/resourse-lib.html + + +Пример использования +--------- +http://blog.agel-nash.ru/2013/6/eform-docbilder.html + +Пример интеграции в MODX Evolution +--------- +* Содержимое репозитория размещается в папке **/assets/lib/MODxAPI/** +* Создается плагин на событиях **OnWebPageInit**, **OnManagerPageInit** и **OnPageNotFound** с кодом: +```php +include_once(MODX_BASE_PATH."assets/lib/MODxAPI/modResource.php"); +if(!isset($modx->doc)){ + $modx->doc = new modResource($modx); +} +``` +* После чего создается сниппет допустим DocInfo +```php +$id = isset($id) ? (int)$id : $modx->documentObject['id']; +$field = isset($field) ? (string)$field : 'id'; +if($field == 'id'){ + $out = $id; +}else{ + if($modx->documentObject['id'] == $id){ + $out = isset($modx->documentObject[$field]) ? $modx->documentObject[$field] : ''; + if(is_array($out)){ + $out = isset($out[1]) ? $out[1] : ''; + } + }else{ + $out = $modx->doc->edit($id)->get($field); + } +} +return (string)$out; +``` +* **Profit!** Теперь сниппет DocInfo не будет нагружать страницу повторными SQL запросами при многократном получении значений из одного и того же документа +``` +
                    [[DocInfo? &id=`6` &field=`pagetitle`]]
                    + +``` + +Спасибо +--------- +* bumkaka за старт этого проекта +* Dmi3yy за финансовую помощь и тестирование версии 1.0.0 +* Extremum за финансовую помощь и тестирование версии 1.0.0 diff --git a/assets/lib/MODxAPI/autoTable.abstract.php b/assets/lib/MODxAPI/autoTable.abstract.php new file mode 100755 index 0000000000..23deca4d8b --- /dev/null +++ b/assets/lib/MODxAPI/autoTable.abstract.php @@ -0,0 +1,132 @@ +table; + } + + /** + * autoTable constructor. + * @param DocumentParser $modx + * @param bool $debug + */ + public function __construct($modx, $debug = false) + { + parent::__construct($modx, $debug); + if (empty($this->default_field)) { + $data = $this->modx->db->getTableMetaData($this->makeTable($this->table)); + foreach ($data as $item) { + if (empty($this->pkName) && $item['Key'] == 'PRI') { + $this->pkName = $item['Field']; + } + if ($this->pkName != $item['Field']) { + $this->default_field[$item['Field']] = $item['Default']; + } + } + $this->generateField = true; + } + } + + /** + * @param $id + * @return $this + */ + public function edit($id) + { + $id = is_scalar($id) ? trim($id) : ''; + if ($this->getID() != $id) { + $this->close(); + $this->markAllEncode(); + $this->newDoc = false; + $result = $this->query("SELECT * from {$this->makeTable($this->table)} where `" . $this->pkName . "`='" . $this->escape($id) . "'"); + $this->fromArray($this->modx->db->getRow($result)); + $this->store($this->toArray()); + $this->id = $this->eraseField($this->pkName); + if (is_bool($this->id) && $this->id === false) { + $this->id = null; + } else { + $this->decodeFields(); + } + } + + return $this; + } + + /** + * @param null $fire_events + * @param bool $clearCache + * @return bool|null|void + */ + public function save($fire_events = null, $clearCache = false) + { + $fld = $this->encodeFields()->toArray(); + foreach ($this->default_field as $key => $value) { + if ($this->newDoc && $this->get($key) === null && $this->get($key) !== $value) { + $this->set($key, $value); + } + if ((!$this->generateField || isset($fld[$key])) && $this->get($key) !== null) { + $this->Uset($key); + } + unset($fld[$key]); + } + if (!empty($this->set)) { + if ($this->newDoc) { + $SQL = "INSERT {$this->ignoreError} INTO {$this->makeTable($this->table)} SET " . implode(', ', + $this->set); + } else { + $SQL = ($this->getID() === null) ? null : "UPDATE {$this->ignoreError} {$this->makeTable($this->table)} SET " . implode(', ', + $this->set) . " WHERE `" . $this->pkName . "` = " . $this->getID(); + } + $this->query($SQL); + if ($this->newDoc) { + $this->id = $this->modx->db->getInsertId(); + } + } + if ($clearCache) { + $this->clearCache($fire_events); + } + $this->decodeFields(); + + return $this->id; + } + + /** + * @param $ids + * @param null $fire_events + * @return $this + * @throws Exception + */ + public function delete($ids, $fire_events = null) + { + $_ids = $this->cleanIDs($ids, ','); + if (is_array($_ids) && $_ids != array()) { + $id = $this->sanitarIn($_ids); + if (!empty($id)) { + $this->query("DELETE from {$this->makeTable($this->table)} where `" . $this->pkName . "` IN ({$id})"); + } + $this->clearCache($fire_events); + } else { + throw new Exception('Invalid IDs list for delete:
                    ' . print_r($ids, 1) . '
                    '); + } + + return $this; + } +} diff --git a/assets/lib/MODxAPI/modCategories.php b/assets/lib/MODxAPI/modCategories.php new file mode 100755 index 0000000000..b53380b332 --- /dev/null +++ b/assets/lib/MODxAPI/modCategories.php @@ -0,0 +1,13 @@ + 'document', + 'contentType' => 'text/html', + 'pagetitle' => 'New document', + 'longtitle' => '', + 'description' => '', + 'alias' => '', + 'link_attributes' => '', + 'published' => 1, + 'pub_date' => 0, + 'unpub_date' => 0, + 'parent' => 0, + 'isfolder' => 0, + 'introtext' => '', + 'content' => '', + 'richtext' => 1, + 'template' => 0, + 'menuindex' => 0, + 'searchable' => 1, + 'cacheable' => 1, + 'createdon' => 0, + 'createdby' => 0, + 'editedon' => 0, + 'editedby' => 0, + 'deleted' => 0, + 'deletedon' => 0, + 'deletedby' => 0, + 'publishedon' => 0, + 'publishedby' => 0, + 'menutitle' => '', + 'donthit' => 0, + 'haskeywords' => 0, + 'hasmetatags' => 0, + 'privateweb' => 0, + 'privatemgr' => 0, + 'content_dispo' => 0, + 'hidemenu' => 0, + 'alias_visible' => 1 + ); + /** + * @var array + */ + private $table = array( + '"' => '_', + "'" => '_', + ' ' => '_', + '.' => '_', + ',' => '_', + 'а' => 'a', + 'б' => 'b', + 'в' => 'v', + 'г' => 'g', + 'д' => 'd', + 'е' => 'e', + 'ё' => 'e', + 'ж' => 'zh', + 'з' => 'z', + 'и' => 'i', + 'й' => 'y', + 'к' => 'k', + 'л' => 'l', + 'м' => 'm', + 'н' => 'n', + 'о' => 'o', + 'п' => 'p', + 'р' => 'r', + 'с' => 's', + 'т' => 't', + 'у' => 'u', + 'ф' => 'f', + 'х' => 'h', + 'ц' => 'c', + 'ч' => 'ch', + 'ш' => 'sh', + 'щ' => 'sch', + 'ь' => '', + 'ы' => 'y', + 'ъ' => '', + 'э' => 'e', + 'ю' => 'yu', + 'я' => 'ya', + 'А' => 'A', + 'Б' => 'B', + 'В' => 'V', + 'Г' => 'G', + 'Д' => 'D', + 'Е' => 'E', + 'Ё' => 'E', + 'Ж' => 'Zh', + 'З' => 'Z', + 'И' => 'I', + 'Й' => 'Y', + 'К' => 'K', + 'Л' => 'L', + 'М' => 'M', + 'Н' => 'N', + 'О' => 'O', + 'П' => 'P', + 'Р' => 'R', + 'С' => 'S', + 'Т' => 'T', + 'У' => 'U', + 'Ф' => 'F', + 'Х' => 'H', + 'Ц' => 'C', + 'Ч' => 'Ch', + 'Ш' => 'Sh', + 'Щ' => 'Sch', + 'Ь' => '', + 'Ы' => 'Y', + 'Ъ' => '', + 'Э' => 'E', + 'Ю' => 'Yu', + 'Я' => 'Ya', + ); + /** + * @var array массив ТВшек где name это ключ массива, а ID это значение + */ + private $tv = array(); + /** + * @var array массив ТВшек где ID это ключ массива, а name это значение + */ + private $tvid = array(); + /** + * @var array значения по умолчанию для ТВ параметров + */ + private $tvd = array(); + + /** @var array связи ТВ и шаблонов */ + private $tvTpl = array(); + + /** + * Массив администраторов + * @var DLCollection + */ + private $managerUsers = null; + + /** + * modResource constructor. + * @param DocumentParser $modx + * @param bool $debug + */ + public function __construct($modx, $debug = false) + { + parent::__construct($modx, $debug); + $this->get_TV(); + $uTable = $this->makeTable("manager_users"); + $aTable = $this->makeTable("user_attributes"); + $query = "SELECT `u`.`id`, `a`.`email`, `u`.`username` FROM " . $aTable . " as `a` LEFT JOIN " . $uTable . " as `u` ON `u`.`id`=`a`.`internalKey`"; + $query = $this->query($query); + $this->managerUsers = new DLCollection($modx, empty($query) ? array() : $query); + } + + /** + * @return array + */ + public function toArrayMain() + { + $out = array_intersect_key(parent::toArray(), $this->default_field); + + return $out; + } + + /** + * @param bool $render + * @return array + */ + public function toArrayTV($render = false) + { + $out = array_diff_key(parent::toArray(), $this->default_field); + $tpl = $this->get('template'); + $tvTPL = APIHelpers::getkey($this->tvTpl, $tpl, array()); + foreach ($tvTPL as $item) { + if (isset($this->tvid[$item]) && !array_key_exists($this->tvid[$item], $out)) { + $out[$this->tvid[$item]] = $this->get($this->tvid[$item]); + } + } + if ($render) { + foreach ($out as $key => $val) { + $out[$key] = $this->renderTV($key); + } + } + + return $out; + } + + /** + * @param string $prefix + * @param string $suffix + * @param string $sep + * @param bool $render + * @return array + */ + public function toArray($prefix = '', $suffix = '', $sep = '_', $render = true) + { + $out = array_merge( + $this->toArrayMain(), + $this->toArrayTV($render), + array($this->fieldPKName() => $this->getID()) + ); + + return \APIhelpers::renameKeyArr($out, $prefix, $suffix, $sep); + } + + /** + * @return null|string + */ + public function getUrl() + { + $out = null; + $id = (int)$this->getID(); + if (!empty($id)) { + $out = $this->modx->makeUrl($id); + } + + return $out; + } + + /** + * @param string $main + * @param string $second + * @return mixed + */ + public function getTitle($main = 'menutitle', $second = 'pagetitle') + { + $title = $this->get($main); + if (empty($title) && $title !== '0') { + $title = $this->get($second); + } + + return $title; + } + + /** + * @return bool + */ + public function isWebShow() + { + $pub = ($this->get('publishedon') < time() && $this->get('published')); + $unpub = ($this->get('unpub_date') == 0 || $this->get('unpub_date') > time()); + $del = ($this->get('deleted') == 0 && ($this->get('deletedon') == 0 || $this->get('deletedon') > time())); + + return ($pub && $unpub && $del); + } + + /** + * @return $this + */ + public function touch() + { + $this->set('editedon', time()); + + return $this; + } + + /** + * @param $tvname + * @return null|string + */ + public function renderTV($tvname) + { + $out = null; + if ($this->getID() > 0) { + include_once MODX_MANAGER_PATH . "includes/tmplvars.format.inc.php"; + include_once MODX_MANAGER_PATH . "includes/tmplvars.commands.inc.php"; + $tvval = $this->get($tvname); + $param = APIHelpers::getkey($this->tvd, $tvname, array()); + $display = APIHelpers::getkey($param, 'display', ''); + $display_params = APIHelpers::getkey($param, 'display_params', ''); + $type = APIHelpers::getkey($param, 'type', ''); + $out = getTVDisplayFormat($tvname, $tvval, $display, $display_params, $type, $this->getID(), ''); + } + + return $out; + } + + /** + * @param $key + * @return mixed + */ + public function get($key) + { + $out = parent::get($key); + if (isset($this->tv[$key])) { + $tpl = $this->get('template'); + $tvTPL = APIHelpers::getkey($this->tvTpl, $tpl, array()); + $tvID = APIHelpers::getkey($this->tv, $key, 0); + if (in_array($tvID, $tvTPL) && is_null($out)) { + $out = APIHelpers::getkey($this->tvd[$key], 'value', null); + } + } + + return $out; + } + + /** + * @param $key + * @param $value + * @return $this + */ + public function set($key, $value) + { + if (is_scalar($value) && is_scalar($key) && !empty($key)) { + switch ($key) { + case 'parent': + $value = (int)$value; + break; + case 'template': + $value = trim($value); + $value = $this->setTemplate($value); + break; + case 'published': + $value = (int)((bool)$value); + if ($value) { + $this->field['publishedon'] = time() + $this->modxConfig('server_offset_time'); + } + break; + case 'pub_date': + $value = $this->getTime($value); + if ($value > 0 && time() + $this->modxConfig('server_offset_time') > $value) { + $this->field['published'] = 1; + $this->field['publishedon'] = $value; + } + break; + case 'unpub_date': + $value = $this->getTime($value); + if ($value > 0 && time() + $this->modxConfig('server_offset_time') > $value) { + $this->field['published'] = 0; + $this->field['publishedon'] = 0; + } + break; + case 'deleted': + $value = (int)((bool)$value); + if ($value) { + $this->field['deletedon'] = time() + $this->modxConfig('server_offset_time'); + } else { + $this->field['deletedon'] = 0; + } + break; + case 'deletedon': + $value = $this->getTime($value); + if ($value > 0 && time() + $this->modxConfig('server_offset_time') < $value) { + $value = 0; + } + if ($value) { + $this->field['deleted'] = 1; + } + break; + case 'editedon': + case 'createdon': + case 'publishedon': + $value = $this->getTime($value); + break; + case 'publishedby': + case 'editedby': + case 'createdby': + case 'deletedby': + $value = $this->getUser($value, $this->default_field[$key]); + break; + } + $this->field[$key] = $value; + } + + return $this; + } + + /** + * @param $value + * @param int $default + * @return int|mixed + */ + protected function getUser($value, $default = 0) + { + $currentAdmin = APIHelpers::getkey($_SESSION, 'mgrInternalKey', 0); + $value = (int)$value; + if (!empty($value)) { + $by = $this->findUserBy($value); + $exists = $this->managerUsers->exists(function ($key, Helpers\Collection $val) use ($by, $value) { + return ($val->containsKey($by) && $val->get($by) === (string)$value); + }); + if (!$exists) { + $value = 0; + } + } + if (empty($value)) { + $value = empty($currentAdmin) ? $default : $currentAdmin; + } + + return $value; + } + + /** + * @param $data + * @return bool|string + */ + protected function findUserBy($data) + { + switch (true) { + case (is_int($data) || ((int)$data > 0 && (string)intval($data) === $data)): + $find = 'id'; + break; + case filter_var($data, FILTER_VALIDATE_EMAIL): + $find = 'email'; + break; + case is_scalar($data): + $find = 'username'; + break; + default: + $find = false; + } + + return $find; + } + + /** + * @param $value + * @return int|mixed|string + */ + protected function getTime($value) + { + $value = trim($value); + if (!empty($value)) { + if (!is_numeric($value)) { + $value = (int)strtotime($value); + } + if (!empty($value)) { + $value += $this->modxConfig('server_offset_time'); + } + } + + return $value; + } + + /** + * @param array $data + * @return $this + */ + public function create($data = array()) + { + parent::create($data); + $this->set('createdby', null) + ->set('editedby', null) + ->set('createdon', time()) + ->touch(); + + return $this; + } + + /** + * @param $id + * @return $this + */ + public function edit($id) + { + $id = is_scalar($id) ? trim($id) : ''; + if ($this->getID() != $id) { + $this->close(); + $this->newDoc = false; + + $result = $this->query("SELECT * from {$this->makeTable('site_content')} where `id`=" . (int)$id); + $this->fromArray($this->modx->db->getRow($result)); + $result = $this->query("SELECT * from {$this->makeTable('site_tmplvar_contentvalues')} where `contentid`=" . (int)$id); + while ($row = $this->modx->db->getRow($result)) { + $this->field[$this->tvid[$row['tmplvarid']]] = $row['value']; + } + if (empty($this->field['id'])) { + $this->id = null; + } else { + $this->id = $this->field['id']; + $this->set('editedby', null)->touch(); + } + $this->store($this->toArray(null, null, null, false)); + unset($this->field['id']); + } + + return $this; + } + + /** + * @param bool $fire_events + * @param bool $clearCache + * @return bool|null|void + */ + public function save($fire_events = false, $clearCache = false) + { + $parent = null; + if ($this->field['pagetitle'] == '') { + $this->log['emptyPagetitle'] = 'Pagetitle is empty in
                    ' . print_r($this->field, true) . '
                    '; + + return false; + } + + $uid = $this->modx->getLoginUserID('mgr'); + + if ( + $this->field['parent'] == 0 && + !$this->modxConfig('udperms_allowroot') && + !($uid && isset($_SESSION['mgrRole']) && $_SESSION['mgrRole'] == 1) + ) { + $this->log['rootForbidden'] = 'Only Administrators can create documents in the root folder because udperms_allowroot setting is off'; + + return false; + } + + $this->set('alias', $this->getAlias()); + + $this->invokeEvent('OnBeforeDocFormSave', array( + 'mode' => $this->newDoc ? "new" : "upd", + 'id' => $this->id ? $this->id : '', + 'doc' => $this->toArray(), + 'docObj' => $this + ), $fire_events); + + $fld = $this->toArray(null, null, null, false); + foreach ($this->default_field as $key => $value) { + $tmp = $this->get($key); + if ($this->newDoc && (!is_int($tmp) && $tmp == '')) { + if ($tmp == $value) { + switch ($key) { + case 'cacheable': + $value = $this->modxConfig('cache_default'); + break; + case 'template': + $value = $value = $this->modxConfig('default_template'); + break; + case 'published': + $value = $this->modxConfig('publish_default'); + break; + case 'searchable': + $value = $this->modxConfig('search_default'); + break; + case 'donthit': + $value = $this->modxConfig('track_visitors'); + break; + } + } + $this->field[$key] = $value; + } + switch (true) { + case $key == 'parent': + $parent = (int)$this->get($key); + $q = $this->query("SELECT count(`id`) FROM {$this->makeTable('site_content')} WHERE `id`='{$parent}'"); + if ($this->modx->db->getValue($q) != 1) { + $parent = 0; + } + $this->field[$key] = $parent; + $this->Uset($key); + break; + case ($key == 'alias_visible' && !$this->checkVersion('1.0.10', true)): + $this->eraseField('alias_visible'); + break; + default: + $this->Uset($key); + } + unset($fld[$key]); + } + + if (!empty($this->set)) { + if ($this->newDoc) { + $SQL = "INSERT into {$this->makeTable('site_content')} SET " . implode(', ', $this->set); + } else { + $SQL = "UPDATE {$this->makeTable('site_content')} SET " . implode(', ', + $this->set) . " WHERE `id` = " . $this->id; + } + $this->query($SQL); + + if ($this->newDoc) { + $this->id = $this->modx->db->getInsertId(); + } + + if ($parent > 0) { + $this->query("UPDATE {$this->makeTable('site_content')} SET `isfolder`='1' WHERE `id`='{$parent}'"); + } + } + + $_deleteTVs = $_updateTVs = $_insertTVs = array(); + foreach ($fld as $key => $value) { + if (empty($this->tv[$key]) || !$this->isChanged($key)) { + continue; + } elseif ($value === '') { + $_deleteTVs[] = $this->tv[$key]; + } else { + $_insertTVs[$this->tv[$key]] = $this->escape($value); + } + } + + if (!$this->newDoc && !empty($_insertTVs)) { + $ids = implode(',',array_keys($_insertTVs)); + $result = $this->query("SELECT `tmplvarid` FROM {$this->makeTable('site_tmplvar_contentvalues')} WHERE `contentid`={$this->id} AND `tmplvarid` IN ({$ids})"); + $existedTVs = $this->modx->db->getColumn('tmplvarid',$result); + foreach ($existedTVs as $id) { + $_updateTVs[$id] = $_insertTVs[$id]; + unset($_insertTVs[$id]); + } + } + + if (!empty($_updateTVs)) { + foreach($_updateTVs as $id => $value) { + $this->query("UPDATE {$this->makeTable('site_tmplvar_contentvalues')} SET `value` = '{$value}' WHERE `contentid` = {$this->id} AND `tmplvarid` = {$id}"); + } + } + + if (!empty($_insertTVs)) { + $values = array(); + foreach ($_insertTVs as $id => $value) { + $values[] = "({$this->id}, {$id}, '{$value}')"; + } + $values = implode(',',$values); + $this->query("INSERT into {$this->makeTable('site_tmplvar_contentvalues')} (`contentid`,`tmplvarid`,`value`) VALUES {$values}"); + } + + if (!empty($_deleteTVs)) { + $ids = implode(',',$_deleteTVs); + $this->query("DELETE FROM {$this->makeTable('site_tmplvar_contentvalues')} WHERE `contentid` = '{$this->id}' AND `tmplvarid` IN ({$ids})"); + } + + if (!isset($this->mode)) { + $this->mode = $this->newDoc ? "new" : "upd"; + $this->newDoc = false; + } + $this->invokeEvent('OnDocFormSave', array( + 'mode' => $this->mode, + 'id' => $this->id, + 'doc' => $this->toArray(), + 'docObj' => $this + ), $fire_events); + + if ($clearCache) { + $this->clearCache($fire_events); + } + + return $this->id; + } + + /** + * @param $ids + * @return $this + * @throws Exception + */ + public function toTrash($ids) + { + $ignore = $this->systemID(); + $_ids = $this->cleanIDs($ids, ',', $ignore); + if (is_array($_ids) && $_ids != array()) { + $id = $this->sanitarIn($_ids); + $uid = (int)$this->modx->getLoginUserId(); + $deletedon = time() + $this->modxConfig('server_offset_time'); + $this->query("UPDATE {$this->makeTable('site_content')} SET `deleted`=1, `deletedby`={$uid}, `deletedon`={$deletedon} WHERE `id` IN ({$id})"); + } else { + throw new Exception('Invalid IDs list for mark trash:
                    ' . print_r($ids,
                    +                    1) . '
                    please, check ignore list:
                    ' . print_r($ignore, 1) . '
                    '); + } + + return $this; + } + + /** + * @param bool $fire_events + * @return $this + */ + public function clearTrash($fire_events = false) + { + $q = $this->query("SELECT `id` FROM {$this->makeTable('site_content')} WHERE `deleted`='1'"); + $_ids = $this->modx->db->getColumn('id', $q); + if (is_array($_ids) && $_ids != array()) { + $this->invokeEvent('OnBeforeEmptyTrash', array( + "ids" => $_ids + ), $fire_events); + + $id = $this->sanitarIn($_ids); + $this->query("DELETE from {$this->makeTable('site_content')} where `id` IN ({$id})"); + $this->query("DELETE from {$this->makeTable('site_tmplvar_contentvalues')} where `contentid` IN ({$id})"); + + $this->invokeEvent('OnEmptyTrash', array( + "ids" => $_ids + ), $fire_events); + } + + return $this; + } + + /** + * @param $ids + * @param int|bool $depth + * @return array + */ + public function children($ids, $depth) + { + $_ids = $this->cleanIDs($ids, ','); + if (is_array($_ids) && $_ids != array()) { + $id = $this->sanitarIn($_ids); + if (!empty($id)) { + $q = $this->query("SELECT `id` FROM {$this->makeTable('site_content')} where `parent` IN ({$id})"); + $id = $this->modx->db->getColumn('id', $q); + if ($depth > 0 || $depth === true) { + $id = $this->children($id, is_bool($depth) ? $depth : ($depth - 1)); + } + $_ids = array_merge($_ids, $id); + } + } + + return $_ids; + } + + /** + * @param string|array $ids + * @param bool $fire_events + * @return $this + * @throws Exception + */ + public function delete($ids, $fire_events = false) + { + $ids = $this->children($ids, true); + $_ids = $this->cleanIDs($ids, ',', $this->systemID()); + $this->invokeEvent('OnBeforeDocFormDelete', array( + 'ids' => $_ids + ), $fire_events); + $this->toTrash($_ids); + $this->invokeEvent('OnDocFormDelete', array( + 'ids' => $_ids + ), $fire_events); + + return $this; + } + + /** + * @return array + */ + private function systemID() + { + $ignore = array( + 0, //empty document + (int)$this->modxConfig('site_start'), + (int)$this->modxConfig('error_page'), + (int)$this->modxConfig('unauthorized_page'), + (int)$this->modxConfig('site_unavailable_page') + ); + $data = $this->query("SELECT DISTINCT setting_value FROM {$this->makeTable('web_user_settings')} WHERE `setting_name`='login_home' AND `setting_value`!=''"); + $data = $this->modx->db->makeArray($data); + foreach ($data as $item) { + $ignore[] = (int)$item['setting_value']; + } + + return array_unique($ignore); + + } + + /** + * @param $alias + * @return string + */ + private function checkAlias($alias) + { + $alias = strtolower($alias); + if ($this->modxConfig('friendly_urls')) { + $_alias = $this->escape($alias); + if ((!$this->modxConfig('allow_duplicate_alias') && !$this->modxConfig('use_alias_path')) || ($this->modxConfig('allow_duplicate_alias') && $this->modxConfig('use_alias_path'))) { + $flag = $this->modx->db->getValue($this->query("SELECT `id` FROM {$this->makeTable('site_content')} WHERE `alias`='{$_alias}' AND `parent`={$this->get('parent')} LIMIT 1")); + } else { + $flag = $this->modx->db->getValue($this->query("SELECT `id` FROM {$this->makeTable('site_content')} WHERE `alias`='{$_alias}' LIMIT 1")); + } + if (($flag && $this->newDoc) || (!$this->newDoc && $flag && $this->id != $flag)) { + $suffix = substr($alias, -2); + if (preg_match('/-(\d+)/', $suffix, $tmp) && isset($tmp[1]) && (int)$tmp[1] > 1) { + $suffix = (int)$tmp[1] + 1; + $alias = substr($alias, 0, -2) . '-' . $suffix; + } else { + $alias .= '-2'; + } + $alias = $this->checkAlias($alias); + } + } + + return $alias; + } + + /** + * @param $key + * @return bool + */ + public function issetField($key) + { + return (array_key_exists($key, $this->default_field) || array_key_exists($key, $this->tv)); + } + + /** + * @param bool $reload + * @return $this + */ + protected function get_TV($reload = false) + { + if (empty($this->modx->_TVnames) || $reload) { + $result = $this->query('SELECT `id`,`name` FROM ' . $this->makeTable('site_tmplvars')); + while ($row = $this->modx->db->GetRow($result)) { + $this->modx->_TVnames[$row['name']] = $row['id']; + } + } + foreach ($this->modx->_TVnames as $name => $id) { + $this->tvid[$id] = $name; + $this->tv[$name] = $id; + } + $this->loadTVTemplate()->loadTVDefault(array_values($this->tv)); + + return $this; + } + + /** + * @return $this + */ + protected function loadTVTemplate() + { + $q = $this->query("SELECT `tmplvarid`, `templateid` FROM " . $this->makeTable('site_tmplvar_templates')); + $q = $this->modx->db->makeArray($q); + $this->tvTpl = array(); + foreach ($q as $item) { + $this->tvTpl[$item['templateid']][] = $item['tmplvarid']; + } + + return $this; + } + + /** + * @param array $tvId + * @return $this + */ + protected function loadTVDefault(array $tvId = array()) + { + if (is_array($tvId) && !empty($tvId)) { + $tbl_site_tmplvars = $this->makeTable('site_tmplvars'); + $fields = 'id,name,default_text as value,display,display_params,type'; + $implodeTvId = implode(',', $tvId); + $rs = $this->query("SELECT {$fields} FROM {$tbl_site_tmplvars} WHERE id IN({$implodeTvId})"); + $rows = $this->modx->db->makeArray($rs); + $this->tvd = array(); + foreach ($rows as $item) { + $this->tvd[$item['name']] = $item; + } + } + + return $this; + } + + /** + * @param $tpl + * @return int + * @throws Exception + */ + public function setTemplate($tpl) + { + if (!is_numeric($tpl) || $tpl != (int)$tpl) { + if (is_scalar($tpl)) { + $sql = "SELECT `id` FROM {$this->makeTable('site_templates')} WHERE `templatename` = '" . $this->escape($tpl) . "'"; + $rs = $this->query($sql); + if (!$rs || $this->modx->db->getRecordCount($rs) <= 0) { + throw new Exception("Template {$tpl} is not exists"); + } + $tpl = $this->modx->db->getValue($rs); + } else { + throw new Exception("Invalid template name: " . print_r($tpl, 1)); + } + } + + return (int)$tpl; + } + + /** + * @return string + */ + private function getAlias() + { + if ($this->modxConfig('friendly_urls') && $this->modxConfig('automatic_alias') && $this->get('alias') == '') { + $alias = strtr($this->get('pagetitle'), $this->table); + } else { + if ($this->get('alias') != '') { + $alias = $this->get('alias'); + } else { + $alias = ''; + } + } + $alias = $this->modx->stripAlias($alias); + + return $this->checkAlias($alias); + } + + /** + * @param int $parent + * @param string $criteria + * @param string $dir + * @return $this + * + * Пересчет menuindex по полю таблицы site_content + */ + public function updateMenuindex($parent, $criteria = 'id', $dir = 'asc') + { + $dir = strtolower($dir) == 'desc' ? 'desc' : 'asc'; + if (is_integer($parent) && $criteria !== '') { + $this->query("SET @index := 0"); + $this->query("UPDATE {$this->makeTable('site_content')} SET `menuindex` = (@index := @index + 1) WHERE `parent`={$parent} ORDER BY {$criteria} {$dir}"); + } + + return $this; + } + + /** + * Устанавливает значение шаблона согласно системной настройке + * + * @return $this + */ + public function setDefaultTemplate() + { + $parent = $this->get('parent'); + $template = $this->modxConfig('default_template'); + switch ($this->modxConfig('auto_template_logic')) { + case 'sibling': + if (!$parent) { + $site_start = $this->modxConfig('site_start'); + $where = "sc.isfolder=0 AND sc.id!={$site_start}"; + $sibl = $this->modx->getDocumentChildren($parent, 1, 0, 'template', $where, 'menuindex', 'ASC', 1); + if (isset($sibl[0]['template']) && $sibl[0]['template'] !== '') { + $template = $sibl[0]['template']; + } + } else { + $sibl = $this->modx->getDocumentChildren($parent, 1, 0, 'template', 'isfolder=0', 'menuindex', + 'ASC', 1); + if (isset($sibl[0]['template']) && $sibl[0]['template'] !== '') { + $template = $sibl[0]['template']; + } else { + $sibl = $this->modx->getDocumentChildren($parent, 0, 0, 'template', 'isfolder=0', 'menuindex', + 'ASC', 1); + if (isset($sibl[0]['template']) && $sibl[0]['template'] !== '') { + $template = $sibl[0]['template']; + } + } + } + break; + case 'parent': + if ($parent) { + $_parent = $this->modx->getPageInfo($parent, 0, 'template'); + if (isset($_parent['template'])) { + $template = $_parent['template']; + } + } + break; + } + $this->set('template', $template); + + return $this; + } +} diff --git a/assets/lib/MODxAPI/modSnippet.php b/assets/lib/MODxAPI/modSnippet.php new file mode 100755 index 0000000000..c646a5f5ae --- /dev/null +++ b/assets/lib/MODxAPI/modSnippet.php @@ -0,0 +1,13 @@ + array( + 'username' => null, + 'password' => null, + 'cachepwd' => null + ), + 'attribute' => array( + 'fullname' => null, + 'role' => null, + 'email' => null, + 'phone' => null, + 'mobilephone' => null, + 'blocked' => null, + 'blockeduntil' => null, + 'blockedafter' => null, + 'logincount' => null, + 'lastlogin' => null, + 'thislogin' => null, + 'failedlogincount' => null, + 'sessionid' => null, + 'dob' => null, + 'gender' => null, + 'country' => null, + 'state' => null, + 'city' => null, + 'street' => null, + 'zip' => null, + 'fax' => null, + 'photo' => null, + 'comment' => null + ), + 'hidden' => array( + 'internalKey' + ) + ); + + /** + * @var string + */ + protected $givenPassword = ''; + + /** + * @param $key + * @return bool + */ + public function issetField($key) + { + return (array_key_exists($key, $this->default_field['user']) || array_key_exists($key, + $this->default_field['attribute']) || in_array($key, $this->default_field['hidden'])); + } + + /** + * @param string $data + * @return string|false + */ + protected function findUser($data) + { + switch (true) { + case (is_int($data) || ((int)$data > 0 && (string)intval($data) === $data)): + $find = 'attribute.internalKey'; + break; + case filter_var($data, FILTER_VALIDATE_EMAIL): + $find = 'attribute.email'; + break; + case is_scalar($data): + $find = 'user.username'; + break; + default: + $find = false; + } + + return $find; + } + + /** + * @param $id + * @return $this + */ + public function edit($id) + { + $id = is_scalar($id) ? trim($id) : ''; + if ($this->getID() != $id) { + $this->close(); + $this->newDoc = false; + + if (!$find = $this->findUser($id)) { + $this->id = null; + } else { + $result = $this->query(" + SELECT * from {$this->makeTable('web_user_attributes')} as attribute + LEFT JOIN {$this->makeTable('web_users')} as user ON user.id=attribute.internalKey + WHERE BINARY {$find}='{$this->escape($id)}' + "); + $this->field = $this->modx->db->getRow($result); + + $this->id = empty($this->field['internalKey']) ? null : $this->get('internalKey'); + $this->store($this->toArray()); + unset($this->field['id']); + unset($this->field['internalKey']); + } + } + + return $this; + } + + /** + * @param string $key + * @param $value + * @return $this + */ + public function set($key, $value) + { + if (is_scalar($value) && is_scalar($key) && !empty($key)) { + switch ($key) { + case 'password': + $this->givenPassword = $value; + $value = $this->getPassword($value); + break; + case 'sessionid': + session_regenerate_id(false); + $value = session_id(); + break; + } + $this->field[$key] = $value; + } + + return $this; + } + + /** + * @param $pass + * @return string + */ + public function getPassword($pass) + { + return md5($pass); + } + + /** + * @param bool $fire_events + * @param bool $clearCache + * @return bool|int|null|void + */ + public function save($fire_events = false, $clearCache = false) + { + if ($this->get('email') == '' || $this->get('username') == '' || $this->get('password') == '') { + $this->log['EmptyPKField'] = 'Email, username or password is empty
                    ' . print_r($this->toArray(),
                    +                    true) . '
                    '; + + return false; + } + + if (!$this->checkUnique('web_users', 'username')) { + $this->log['UniqueUsername'] = 'username not unique
                    ' . print_r($this->get('username'),
                    +                    true) . '
                    '; + + return false; + } + + if (!$this->checkUnique('web_user_attributes', 'email', 'internalKey')) { + $this->log['UniqueEmail'] = 'Email not unique
                    ' . print_r($this->get('email'), true) . '
                    '; + + return false; + } + $this->set('sessionid', ''); + $fld = $this->toArray(); + foreach ($this->default_field['user'] as $key => $value) { + $tmp = $this->get($key); + if ($this->newDoc && (!is_int($tmp) && $tmp == '')) { + $this->field[$key] = $value; + } + $this->Uset($key, 'user'); + unset($fld[$key]); + } + if (!empty($this->set['user'])) { + if ($this->newDoc) { + $SQL = "INSERT into {$this->makeTable('web_users')} SET " . implode(', ', $this->set['user']); + } else { + $SQL = "UPDATE {$this->makeTable('web_users')} SET " . implode(', ', + $this->set['user']) . " WHERE id = " . $this->id; + } + $this->query($SQL); + } + + if ($this->newDoc) { + $this->id = $this->modx->db->getInsertId(); + } + + foreach ($this->default_field['attribute'] as $key => $value) { + $tmp = $this->get($key); + if ($this->newDoc && (!is_int($tmp) && $tmp == '')) { + $this->field[$key] = $value; + } + $this->Uset($key, 'attribute'); + unset($fld[$key]); + } + if (!empty($this->set['attribute'])) { + if ($this->newDoc) { + $this->set('internalKey', $this->id)->Uset('internalKey', 'attribute'); + $SQL = "INSERT into {$this->makeTable('web_user_attributes')} SET " . implode(', ', + $this->set['attribute']); + } else { + $SQL = "UPDATE {$this->makeTable('web_user_attributes')} SET " . implode(', ', + $this->set['attribute']) . " WHERE internalKey = " . $this->getID(); + } + $this->query($SQL); + } + unset($fld['id']); + foreach ($fld as $key => $value) { + if ($value == '' || !$this->isChanged($key)) { + continue; + } + $result = $this->query("SELECT `setting_value` FROM {$this->makeTable('web_user_settings')} WHERE `webuser` = '{$this->id}' AND `setting_name` = '{$key}'"); + if ($this->modx->db->getRecordCount($result) > 0) { + $this->query("UPDATE {$this->makeTable('web_user_settings')} SET `setting_value` = '{$value}' WHERE `webuser` = '{$this->id}' AND `setting_name` = '{$key}';"); + } else { + $this->query("INSERT into {$this->makeTable('web_user_settings')} SET `webuser` = {$this->id},`setting_name` = '{$key}',`setting_value` = '{$value}';"); + } + } + if (!$this->newDoc && $this->givenPassword) { + $this->invokeEvent('OnWebChangePassword', array( + 'userObj' => $this, + 'userid' => $this->id, + 'user' => $this->toArray(), + 'userpassword' => $this->givenPassword, + 'internalKey' => $this->id, + 'username' => $this->get('username') + ), $fire_events); + } + $this->invokeEvent('OnWebSaveUser', array( + 'userObj' => $this, + 'mode' => $this->newDoc ? "new" : "upd", + 'id' => $this->id, + 'user' => $this->toArray() + ), $fire_events); + + if ($clearCache) { + $this->clearCache($fire_events); + } + + return $this->id; + } + + /** + * @param $ids + * @param bool $fire_events + * @return bool|null|void + */ + public function delete($ids, $fire_events = false) + { + if ($this->edit($ids)) { + $flag = $this->query(" + DELETE user,attribute FROM {$this->makeTable('web_user_attributes')} as attribute + LEFT JOIN {$this->makeTable('web_users')} as user ON user.id=attribute.internalKey + WHERE attribute.internalKey='{$this->escape($this->getID())}'"); + $this->query("DELETE FROM {$this->makeTable('web_user_settings')} WHERE webuser='{$this->getID()}'"); + $this->query("DELETE FROM {$this->makeTable('web_groups')} WHERE webuser='{$this->getID()}'"); + $this->invokeEvent('OnWebDeleteUser', array( + 'userObj' => $this, + 'userid' => $this->getID(), + 'internalKey' => $this->getID(), + 'username' => $this->get('username'), + 'timestamp' => time() + ), $fire_events); + } else { + $flag = false; + } + $this->close(); + + return $flag; + } + + /** + * @param int $id + * @param bool $fulltime + * @param string $cookieName + * @param bool $fire_events + * @return bool + */ + public function authUser($id = 0, $fulltime = true, $cookieName = 'WebLoginPE', $fire_events = false) + { + $flag = false; + if (null === $this->getID() && $id) { + $this->edit($id); + } + if (null !== $this->getID()) { + $flag = true; + $this->save(false); + $this->SessionHandler('start', $cookieName, $fulltime); + $this->invokeEvent("OnWebLogin", array( + 'userObj' => $this, + 'userid' => $this->getID(), + 'username' => $this->get('username'), + 'userpassword' => $this->givenPassword, + 'rememberme' => $fulltime + ), $fire_events); + } + + return $flag; + } + + /** + * @param int $id + * @return bool + */ + public function checkBlock($id = 0) + { + $tmp = clone $this; + if ($id && $tmp->getID() != $id) { + $tmp->edit($id); + } + $now = time(); + + $b = $tmp->get('blocked'); + $bu = $tmp->get('blockeduntil'); + $ba = $tmp->get('blockedafter'); + $flag = (($b && !$bu && !$ba) || ($bu && $now < $bu) || ($ba && $now > $ba)); + unset($tmp); + + return $flag; + } + + /** + * @param $id + * @param $password + * @param $blocker + * @param bool $fire_events + * @return bool + */ + public function testAuth($id, $password, $blocker, $fire_events = false) + { + $tmp = clone $this; + if ($id && $tmp->getID() != $id) { + $tmp->edit($id); + } + + $flag = $pluginFlag = false; + if ( + (null !== $tmp->getID()) && (!$blocker || ($blocker && !$tmp->checkBlock($id))) + ) { + $eventResult = $this->getInvokeEventResult('OnWebAuthentication', array( + 'userObj' => $this, + 'userid' => $tmp->getID(), + 'username' => $tmp->get('username'), + 'userpassword' => $password, + 'savedpassword' => $tmp->get('password') + ), $fire_events); + if (is_array($eventResult)) { + foreach ($eventResult as $result) { + $pluginFlag = (bool)$result; + } + } else { + $pluginFlag = (bool)$eventResult; + } + if (!$pluginFlag) { + $flag = ($tmp->get('password') == $tmp->getPassword($password)); + } + } + unset($tmp); + + return $flag || $pluginFlag; + } + + /** + * @param bool $fulltime + * @param string $cookieName + * @return bool + */ + public function AutoLogin($fulltime = true, $cookieName = 'WebLoginPE', $fire_events = null) + { + $flag = false; + if (isset($_COOKIE[$cookieName])) { + $cookie = explode('|', $_COOKIE[$cookieName], 3); + if (isset($cookie[0], $cookie[1], $cookie[2]) && strlen($cookie[0]) == 32 && strlen($cookie[1]) == 32) { + $this->close(); + $q = $this->modx->db->query("SELECT id FROM " . $this->makeTable('web_users') . " WHERE md5(username)='{$this->escape($cookie[0])}'"); + $id = $this->modx->db->getValue($q); + if ($this->edit($id) && null !== $this->getID() && $this->get('password') == $cookie[1] && $this->get('sessionid') == $cookie[2] && $this->testAuth($this->getID(), + $cookie[1], true) + ) { + $flag = $this->authUser($this->getID(), $fulltime, $cookieName, $fire_events); + + } + } + } + + return $flag; + } + + /** + * @param string $cookieName + * @param null $fire_events + */ + public function logOut($cookieName = 'WebLoginPE', $fire_events = null) + { + if (!$uid = $this->modx->getLoginUserID('web')) { + return; + } + $params = array( + 'username' => $_SESSION['webShortname'], + 'internalKey' => $uid, + 'userid' => $uid // Bugfix by TS + ); + $this->invokeEvent('OnBeforeWebLogout', $params, $fire_events); + $this->SessionHandler('destroy', $cookieName ? $cookieName : 'WebLoginPE'); + $this->invokeEvent('OnWebLogout', $params, $fire_events); + } + + /** + * SessionHandler + * Starts the user session on login success. Destroys session on error or logout. + * + * @param string $directive ('start' or 'destroy') + * @param string $cookieName + * @return modUsers + * @author Raymond Irving + * @author Scotty Delicious + * + * remeber может быть числом в секундах + */ + protected function SessionHandler($directive, $cookieName, $remember = true) + { + switch ($directive) { + case 'start': + if ($this->getID()) { + $_SESSION['webShortname'] = $this->get('username'); + $_SESSION['webFullname'] = $this->get('fullname'); + $_SESSION['webEmail'] = $this->get('email'); + $_SESSION['webValidated'] = 1; + $_SESSION['webInternalKey'] = $this->getID(); + $_SESSION['webValid'] = base64_encode($this->get('password')); + $_SESSION['webUser'] = base64_encode($this->get('username')); + $_SESSION['webFailedlogins'] = $this->get('failedlogincount'); + $_SESSION['webLastlogin'] = $this->get('lastlogin'); + $_SESSION['webnrlogins'] = $this->get('logincount'); + $_SESSION['webUsrConfigSet'] = array(); + $_SESSION['webUserGroupNames'] = $this->getUserGroups(); + $_SESSION['webDocgroups'] = $this->getDocumentGroups(); + if ($remember) { + $this->setAutoLoginCookie($cookieName, $remember); + } + } + break; + case 'destroy': + if (isset($_SESSION['mgrValidated'])) { + unset($_SESSION['webShortname']); + unset($_SESSION['webFullname']); + unset($_SESSION['webEmail']); + unset($_SESSION['webValidated']); + unset($_SESSION['webInternalKey']); + unset($_SESSION['webValid']); + unset($_SESSION['webUser']); + unset($_SESSION['webFailedlogins']); + unset($_SESSION['webLastlogin']); + unset($_SESSION['webnrlogins']); + unset($_SESSION['webUsrConfigSet']); + unset($_SESSION['webUserGroupNames']); + unset($_SESSION['webDocgroups']); + + setcookie($cookieName, '', time() - 60, '/'); + } else { + if (isset($_COOKIE[session_name()])) { + setcookie(session_name(), '', time() - 60, '/'); + } + setcookie($cookieName, '', time() - 60, '/'); + session_destroy(); + } + break; + } + + return $this; + } + + /** + * @return bool + */ + public function isSecure() + { + $out = $this->modxConfig('server_protocol') == 'http' ? false : true; + + return $out; + } + + /** + * @param $cookieName + * @param bool $remember + * @return $this + */ + protected function setAutoLoginCookie($cookieName, $remember = true) + { + if (!empty($cookieName)) { + $secure = $this->isSecure(); + $cookieValue = array(md5($this->get('username')), $this->get('password'), $this->get('sessionid')); + $cookieValue = implode('|', $cookieValue); + $cookieExpires = time() + (is_bool($remember) ? (60 * 60 * 24 * 365 * 5) : (int)$remember); + setcookie($cookieName, $cookieValue, $cookieExpires, '/', '', $secure, true); + } + + return $this; + } + + /** + * @param int $userID + * @return array + */ + public function getDocumentGroups($userID = 0) + { + $out = array(); + $user = $this->switchObject($userID); + if (null !== $user->getID()) { + $web_groups = $this->modx->getFullTableName('web_groups'); + $webgroup_access = $this->modx->getFullTableName('webgroup_access'); + + $sql = "SELECT `uga`.`documentgroup` FROM {$web_groups} as `ug` + INNER JOIN {$webgroup_access} as `uga` ON `uga`.`webgroup`=`ug`.`webgroup` + WHERE `ug`.`webuser` = " . $user->getID(); + $out = $this->modx->db->getColumn('documentgroup', $this->query($sql)); + + } + unset($user); + + return $out; + } + + /** + * @param int $userID + * @return array + */ + public function getUserGroups($userID = 0) + { + $out = array(); + $user = $this->switchObject($userID); + if (null !== $user->getID()) { + $web_groups = $this->makeTable('web_groups'); + $webgroup_names = $this->makeTable('webgroup_names'); + + $sql = "SELECT `ugn`.`name` FROM {$web_groups} as `ug` + INNER JOIN {$webgroup_names} as `ugn` ON `ugn`.`id`=`ug`.`webgroup` + WHERE `ug`.`webuser` = " . $user->getID(); + $out = $this->modx->db->getColumn('name', $this->query($sql)); + } + unset($user); + + return $out; + } + + /** + * @param int $userID + * @param array $groupIds + * @return $this + */ + public function setUserGroups($userID = 0, $groupIds = array()) + { + $user = $this->switchObject($userID); + if (($uid = $user->getID()) && is_array($groupIds)) { + foreach ($groupIds as $gid) { + $this->query("REPLACE INTO {$this->makeTable('web_groups')} (`webgroup`, `webuser`) VALUES ('{$gid}', '{$uid}')"); + } + } + + return $this; + } +} diff --git a/assets/lib/Module/Action.php b/assets/lib/Module/Action.php new file mode 100755 index 0000000000..eea27058be --- /dev/null +++ b/assets/lib/Module/Action.php @@ -0,0 +1,182 @@ +db->select('id', self::$modx->getFullTableName(self::TABLE()), "id = " . $id); + + return (self::$modx->db->getRecordCount($q) == 1); + } + + /** + * @param $field + * @param $id + * @return mixed + */ + protected static function _getValue($field, $id) + { + $q = self::$modx->db->select($field, self::$modx->getFullTableName(self::TABLE()), "id = " . $id); + + return self::$modx->db->getValue($q); + } + + /** + * @return array|mixed + */ + public static function listValue() + { + $out = self::_workValue(function ($data, $modObj) { + $listFunction = $data['key'] . 'Lists'; + $out = method_exists($modObj, $listFunction) ? $modObj->$listFunction() : array(); + $out['selected'] = $modObj->get($data['key']); + + return $out; + }); + self::$TPL = null; + + return $out; + } + + /** + * @param $callback + * @return array|mixed + */ + protected static function _workValue($callback) + { + self::$TPL = 'ajax/getValue'; + $data = Helper::jeditable('data'); + $out = array(); + if (!empty($data)) { + $modObj = self::$classTable; + $modObj->edit($data['id']); + if ($modObj->getID() !== null && ((is_object($callback) && ($callback instanceof \Closure)) || is_callable($callback))) { + $out = call_user_func($callback, $data, $modObj); + } + } + + return $out; + } + + /** + * @return array|mixed + */ + public static function saveValue() + { + return self::_workValue(function ($data, $modObj) { + $out = array(); + if (isset($_POST['value']) && is_scalar($_POST['value'])) { + if ($modObj->set($data['key'], $_POST['value'])->save()) { + $textMethod = $data['key'] . 'Text'; + if (method_exists($modObj, $textMethod)) { + $out['value'] = $modObj->$textMethod(); + } else { + $out['value'] = $modObj->get($data['key']); + } + } + } + + return $out; + }); + } + + /** + * @return array|mixed + */ + public static function getValue() + { + return self::_workValue(function ($data, $modObj) { + return array( + 'value' => $modObj->get($data['key']) + ); + }); + } + + /** + * @return array + */ + public static function deleted() + { + $data = array(); + $dataID = (int)Template::getParam('docId', $_GET); + if ($dataID > 0 && self::_checkObj($dataID)) { + $oldValue = self::_getValue('deleted_at', $dataID); + $q = self::$modx->db->update(array( + 'deleted_at' => empty($oldValue) ? date('Y-m-d H:i:s') : null + ), self::$modx->getFullTableName(self::TABLE()), "id = " . $dataID); + if ($q) { + $data['log'] = $oldValue ? 'Запись с ID ' . $dataID . ' восстановлена' : 'Запись с ID ' . $dataID . ' удалена'; + } else { + $data['log'] = $oldValue ? 'Не удалось восстановить запись с ID ' . $dataID : 'Не удалось удалить запись с ID ' . $dataID; + } + } else { + $data['log'] = 'Ошибка. Не удалось определить обновляему запись'; + } + + return $data; + } + + /** + * + */ + public static function lists() + { + self::$TPL = 'ajax/lists'; + } + + /** + * @return null + */ + public static function getClassTable() + { + return self::$classTable; + } +} diff --git a/assets/lib/Module/Helper.php b/assets/lib/Module/Helper.php new file mode 100755 index 0000000000..04b4931407 --- /dev/null +++ b/assets/lib/Module/Helper.php @@ -0,0 +1,155 @@ +db->select('count(id)', self::$modx->getFullTableName($from), $where); + + return self::$modx->db->getValue($q); + } + + /** + * @param string $key + * @param bool $post + * @return array + */ + public static function jeditable($key = 'id', $post = true) + { + $data = array(); + $request = $post ? $_POST : $_GET; + $match = ( + isset($request[$key]) && is_scalar($request[$key]) && + preg_match("/^(.*)_(\d+)$/i", $request[$key], $match) + ) ? $match : array(); + if (!empty($match)) { + $data = array( + 'key' => $match[1], + 'id' => $match[2] + ); + } + + return $data; + } + + /** + * @param $url + * @param string $data + * @param bool $post + * @param array $header + * @return mixed + */ + public static function curl($url, $data = '', $post = false, array $header = array()) + { + $ch = curl_init(); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + $post = (bool)$post; + curl_setopt($ch, CURLOPT_POST, $post); + if ($post) { + curl_setopt($ch, CURLOPT_POSTFIELDS, $data); + } + if (!empty($header)) { + curl_setopt($ch, CURLOPT_HTTPHEADER, $header); + } + curl_setopt($ch, CURLOPT_TIMEOUT, 10); + curl_setopt($ch, CURLOPT_URL, $url); + + return curl_exec($ch); + } + + /** + * Были ли ошибки во время работы с JSON + * + * @param $json string строка с JSON для записи в лог при отладке + * @return bool|string + */ + public function isErrorJSON($json) + { + require_once(MODX_BASE_PATH . "assets/snippets/DocLister/lib/jsonHelper.class.php"); + $error = \jsonHelper::json_last_error_msg(); + if (!in_array($error, array('error_none', 'other'))) { + $error = true; + } + + return $error; + } + + /** + * @param $path + * @param $callback + * @param array $callbackParams + * @param int $lines + * @param int $size + * @return array + */ + public static function readFileLine($path, $callback, array $callbackParams = array(), $lines = 0, $size = 4096) + { + $handle = fopen($path, "r"); + $i = $total = 0; + while (!feof($handle)) { + $i++; + $buffer = fgets($handle, $size); + if (is_callable($callback)) { + $callbackParams['line'] = $buffer; + $callbackParams['numLine'] = $i; + if (call_user_func($callback, $callbackParams)) { + $total++; + } + } + if ($lines > 0 && $i >= $lines) { + break; + } + } + fclose($handle); + + return array('line' => $i, 'add' => $total); + } +} diff --git a/assets/lib/Module/Template.php b/assets/lib/Module/Template.php new file mode 100755 index 0000000000..08ddcd1309 --- /dev/null +++ b/assets/lib/Module/Template.php @@ -0,0 +1,219 @@ +_modx = $modx; + self::$_ajax = (boolean)$ajax; + $this->loadVars(); + if (is_null($tplFolder)) { + $tplFolder = dirname(dirname(__FILE__)); + } + $FS = \Helpers\FS::getInstance(); + $tplFolder = $FS->relativePath($tplFolder); + + $this->_publicFolder = "/" . $tplFolder . "/public/"; + $this->_tplFolder = MODX_BASE_PATH . $tplFolder . "/template/"; + + if (!defined('MODX_MAIN_URL')) { + define('MODX_MAIN_URL', MODX_SITE_URL); + } + } + + /** + * @return bool + */ + public static function isAjax() + { + return self::$_ajax; + } + + /** + * @return string + */ + public function publicFolder() + { + return $this->_publicFolder; + } + + /** + * @param $path + * @return string + */ + public function src($path) + { + return rtrim(MODX_MAIN_URL, '/') . $this->publicFolder() . ltrim($path, '/'); + } + + /** + * @return string + */ + public function showHeader() + { + return $this->_getMainTpl('header.inc.php'); + } + + /** + * @param $name + * @return string + */ + protected function _getMainTpl($name) + { + $content = ''; + if (!self::isAjax()) { + + ob_start(); + extract($this->vars); + if (file_exists($incPath . $name)) { + include($incPath . $name); + $content = ob_get_contents(); + } + ob_end_clean(); + } + + return $content; + } + + /** + * + */ + public function loadVars() + { + $vars = array(); + foreach ($this->vars as $item) { + global $$item; + $vars[$item] = $$item; + } + $this->vars = $vars; + $this->vars['tplClass'] = $this; + $this->vars['modx'] = $this->_modx; + } + + /** + * @return string + */ + public function showFooter() + { + return $this->_getMainTpl('footer.inc.php'); + } + + /** + * @param $TplName + * @param array $tplParams + * @return string + */ + public function showBody($TplName, array $tplParams = array()) + { + ob_start(); + if (file_exists($this->_tplFolder . $TplName . "." . self::TPL_EXT)) { + extract($this->vars); + include($this->_tplFolder . $TplName . "." . self::TPL_EXT); + } + $content = ob_get_contents(); + ob_end_clean(); + + return $content; + } + + /** + * @param $key + * @param array $param + * @param null $default + * @return mixed|null + */ + public static function getParam($key, array $param = array(), $default = null) + { + return isset($param[$key]) ? $param[$key] : $default; + } + + /** + * @param $action + * @param array $data + * @param null $module + * @param bool $full + * @return string + */ + public function makeUrl($action, array $data = array(), $module = null, $full = false) + { + $action = is_scalar($action) ? $action : ''; + $content = self::getParam('content', $this->vars, array()); + $data = array_merge( + array( + 'mode' => Helper::getMode() + ), + $data, + array( + 'a' => 112, + 'action' => $action, + 'id' => empty($module) ? self::getParam('id', $content, 0) : (int)$module + ) + ); + $out = implode("?", array($this->_modx->getManagerPath(), http_build_query($data))); + if ($full) { + $out = $this->_modx->getConfig('site_url') . ltrim($out, '/'); + } + + return $out; + } + + /** + * @return string + */ + public static function showLog() + { + return self::isAjax() ? 'log' : 'main'; + } + + /** + * @return mixed + */ + abstract public function Lists(); +} diff --git a/assets/lib/SimpleTab/README.md b/assets/lib/SimpleTab/README.md new file mode 100755 index 0000000000..1c0f202626 --- /dev/null +++ b/assets/lib/SimpleTab/README.md @@ -0,0 +1,5 @@ +# SimpleTab +Extend document tabs with OnDocFormRender plugins using EasyUI: +https://github.com/Pathologic/SimpleGallery - fast and flexible image gallery +https://github.com/Pathologic/SimpleTube - to manage YouTube, RuTube, Vimeo etc. videos with automatic thumbnails download +https://github.com/Pathologic/SimpleFiles - file archive diff --git a/assets/lib/SimpleTab/controller.abstract.php b/assets/lib/SimpleTab/controller.abstract.php new file mode 100755 index 0000000000..fdff015317 --- /dev/null +++ b/assets/lib/SimpleTab/controller.abstract.php @@ -0,0 +1,174 @@ + "onetable", + "table" => "", + 'idField' => "", + "api" => 1, + "idType" => "documents", + 'ignoreEmpty' => 1, + 'JSONformat' => "new", + 'display' => 10, + 'offset' => 0, + 'sortBy' => "", + 'sortDir' => "desc", + + + ); + + /** + * Объект DocumentParser - основной класс MODX + * @var \DocumentParser + * @access protected + */ + protected $modx = null; + + /** + * AbstractController constructor. + * @param \DocumentParser $modx + */ + public function __construct(\DocumentParser $modx) + { + $this->FS = \Helpers\FS::getInstance(); + $this->modx = $modx; + $this->params = $modx->event->params; + $this->rid = isset($_REQUEST[$this->rfName]) ? (int)$_REQUEST[$this->rfName] : 0; + } + + public function callExit() + { + if ($this->isExit) { + echo $this->output; + exit; + } + } + + /** + * @return array + */ + public function remove() + { + $out = array(); + $ids = isset($_POST['ids']) ? (string)$_POST['ids'] : ''; + $ids = isset($_POST['id']) ? (string)$_POST['id'] : $ids; + $out['success'] = false; + if (!empty($ids)) { + if ($this->data->deleteAll($ids, $this->rid)) { + $out['success'] = true; + } + } + + return $out; + } + + /** + * @return array + */ + public function place() + { + $out = array(); + $ids = isset($_POST['ids']) ? (string)$_POST['ids'] : ''; + $dir = isset($_POST['dir']) ? $_POST['dir'] : 'top'; + $out['success'] = false; + if (!empty($ids)) { + if ($this->data->place($ids, $dir, $this->rid)) { + $out['success'] = true; + } + } + + return $out; + } + + /** + * @return array + */ + public function reorder() + { + $out = array(); + $source = $_POST['source']; + $target = $_POST['target']; + $point = $_POST['point']; + $orderDir = $_POST['orderDir']; + $rows = $this->data->reorder($source, $target, $point, $this->rid, $orderDir); + + if ($rows) { + $out['success'] = true; + } else { + $out['success'] = false; + } + + return $out; + } + + /** + * @return string|void + */ + public function listing() + { + if (!$this->rid) { + $this->isExit = true; + + return; + } + + return $this->modx->runSnippet("DocLister", $this->dlParams); + } + + public function dlInit() + { + $this->dlParams['table'] = $this->data->tableName(); + $this->dlParams['idField'] = $this->data->fieldPKName(); + $this->dlParams['addWhereList'] = "`{$this->rfName}`={$this->rid}"; + if (isset($_POST['rows'])) { + $this->dlParams['display'] = (int)$_POST['rows']; + } + $offset = isset($_POST['page']) ? (int)$_POST['page'] : 1; + $offset = $offset ? $offset : 1; + $offset = $this->dlParams['display'] * abs($offset - 1); + $this->dlParams['offset'] = $offset; + if (isset($_POST['sort'])) { + $this->dlParams['sortBy'] = preg_replace('/[^A-Za-z0-9_\-]/', '', $_POST['sort']); + } + if (isset($_POST['order']) && in_array(strtoupper($_POST['order']), array("ASC", "DESC"))) { + $this->dlParams['sortDir'] = $_POST['order']; + } + foreach ($this->dlParams as &$param) { + if (empty($param)) { + unset($param); + } + } + } + + /** + * @return null + */ + public function getLanguageCode() + { + $manager_language = $this->modx->config['manager_language']; + if (file_exists(MODX_MANAGER_PATH . "includes/lang/" . $manager_language . ".inc.php")) { + include_once MODX_MANAGER_PATH . "includes/lang/" . $manager_language . ".inc.php"; + } + + return isset($modx_lang_attribute) ? $modx_lang_attribute : null; + } +} diff --git a/assets/lib/SimpleTab/plugin.class.php b/assets/lib/SimpleTab/plugin.class.php new file mode 100755 index 0000000000..b8e60d47a9 --- /dev/null +++ b/assets/lib/SimpleTab/plugin.class.php @@ -0,0 +1,271 @@ +modx = $modx; + $this->_table = $modx->getFullTableName($this->table); + $this->lang_attribute = $lang_attribute; + $this->params = $modx->event->params; + if ($this->checkTemplate && !isset($this->params['template']) && $modx->event->name != 'OnEmptyTrash') { + $doc = $modx->getDocument($this->params['id'], 'template', 'all', 'all'); + $this->params['template'] = is_array($doc) ? end($doc) : null; + } + //overload plugin and class properties + $_params = $modx->parseProperties('&template=;;' . $this->params['template'] . ' &id=;;' . $this->params['id'], + $modx->event->activePlugin, 'plugin'); + foreach ($_params as $key => $value) { + if (property_exists($this, $key)) { + $this->$key = $value; + } + } + + $this->params = array_merge($this->params, $_params); + $modx->event->_output = ""; + $this->DLTemplate = \DLTemplate::getInstance($this->modx); + $this->fs = \Helpers\FS::getInstance(); + $this->assets = \AssetsHelper::getInstance($modx); + } + + /** + * @param array $ids + * @param $folder + */ + public function clearFolders($ids = array(), $folder) + { + foreach ($ids as $id) { + $this->fs->rmDir($folder . $id . '/'); + } + } + + /** + * @return bool + */ + public function checkPermissions() + { + $templates = isset($this->params['templates']) ? explode(',', $this->params['templates']) : false; + $roles = isset($this->params['roles']) ? explode(',', $this->params['roles']) : false; + + $tplFlag = ($this->checkTemplate && !$templates || ($templates && !in_array($this->params['template'], + $templates))); + + $documents = isset($this->params['documents']) ? explode(',', $this->params['documents']) : false; + $docFlag = ($this->checkId && $tplFlag) ? !($documents && in_array($this->params['id'], $documents)) : $tplFlag; + + $ignoreDocs = isset($this->params['ignoreDoc']) ? explode(',', $this->params['ignoreDoc']) : false; + $ignoreFlag = ($this->checkId && $ignoreDocs && in_array($this->params['id'], $ignoreDocs)); + + return ($docFlag || $ignoreFlag || ($roles && !in_array($_SESSION['mgrRole'], $roles))); + } + + /** + * @return string + */ + public function prerender() + { + if (!$this->checkTable()) { + $result = $this->createTable(); + if (!$result) { + $this->modx->logEvent(0, 3, "Cannot create {$this->table} table.", $this->pluginName); + + return; + } + $this->registerEvents($this->pluginEvents); + } + $output = ''; + $plugins = $this->modx->pluginEvent; + if (($this->renderEvent !== 'OnDocFormRender' || (array_search('ManagerManager', + $plugins['OnDocFormRender']) === false)) + ) { + $jquery = $this->assets->registerScript('jQuery', array( + 'version' => '1.9.1', + 'src' => 'assets/js/jquery/jquery-1.9.1.min.js' + )); + if ($jquery !== false) { + $output .= $jquery; + $output .= ''; + } + } + $tpl = MODX_BASE_PATH . $this->tpl; + if ($this->fs->checkFile($tpl)) { + $output .= '[+js+][+styles+]' . file_get_contents($tpl); + } else { + $this->modx->logEvent(0, 3, "Cannot load {$this->tpl} .", $this->pluginName); + + return false; + } + + return $output; + } + + /** + * @param $list + * @param array $ph + * @return string + */ + public function renderJS($list, $ph = array()) + { + $js = ''; + $scripts = MODX_BASE_PATH . $list; + if ($this->fs->checkFile($scripts)) { + $scripts = @file_get_contents($scripts); + $scripts = $this->DLTemplate->parseChunk('@CODE:' . $scripts, $ph); + $scripts = json_decode($scripts, true); + $scripts = isset($scripts['scripts']) ? $scripts['scripts'] : $scripts['styles']; + foreach ($scripts as $name => $params) { + $script = $this->assets->registerScript($name, $params); + if ($script !== false) { + $js .= $script; + } + } + } else { + if ($list == $this->jsListDefault) { + $this->modx->logEvent(0, 3, "Cannot load {$this->jsListDefault} .", $this->pluginName); + } elseif ($list == $this->cssListDefault) { + $this->modx->logEvent(0, 3, "Cannot load {$this->cssListDefault} .", $this->pluginName); + } + } + + return $js; + } + + /** + * @return array + */ + public function getTplPlaceholders() + { + $ph = array(); + + return $ph; + } + + /** + * @return string + */ + public function render() + { + if (!$this->checkPermissions()) { + $output = $this->prerender(); + if ($output !== false) { + $ph = $this->getTplPlaceholders(); + $ph['js'] = $this->renderJS($this->jsListDefault, $ph) . $this->renderJS($this->jsListCustom, $ph); + $ph['styles'] = $this->renderJS($this->cssListDefault, $ph) . $this->renderJS($this->cssListCustom, + $ph); + $output = $this->DLTemplate->parseChunk('@CODE:' . $output, $ph); + } + + return $output; + } + } + + /** + * @return string + */ + public function renderEmpty() + { + if (!$this->checkPermissions()) { + $tpl = MODX_BASE_PATH . $this->emptyTpl; + if ($this->fs->checkFile($tpl)) { + $output = '[+js+]' . file_get_contents($tpl); + $ph = $this->getTplPlaceholders(); + $ph['js'] = $this->renderJS($this->jsListEmpty, $ph); + $output = $this->DLTemplate->parseChunk('@CODE:' . $output, $ph); + + return $output; + } else { + $this->modx->logEvent(0, 3, "Cannot load {$this->emptyTpl} .", $this->pluginName); + } + } + } + + /** + * @return bool + */ + public function checkTable() + { + $sql = "SHOW TABLES LIKE '{$this->_table}'"; + + return $this->modx->db->getRecordCount($this->modx->db->query($sql)); + } + + /** + * @return mixed + */ + public function createTable() + { + $sql = ''; + + return $this->modx->db->query($sql); + } + + /** + * @param array $events + * @param string $eventsType + */ + public function registerEvents($events = array(), $eventsType = '6') + { + $eventsTable = $this->modx->getFullTableName('system_eventnames'); + foreach ($events as $event) { + $result = $this->modx->db->select('`id`', $eventsTable, "`name` = '{$event}'"); + if (!$this->modx->db->getRecordCount($result)) { + $sql = "INSERT INTO {$eventsTable} VALUES (NULL, '{$event}', '{$eventsType}', '{$this->pluginName} Events')"; + if (!$this->modx->db->query($sql)) { + $this->modx->logEvent(0, 3, "Cannot register {$event} event.", $this->pluginName); + } + } + } + } +} diff --git a/assets/lib/SimpleTab/table.abstract.php b/assets/lib/SimpleTab/table.abstract.php new file mode 100755 index 0000000000..63ae1b726f --- /dev/null +++ b/assets/lib/SimpleTab/table.abstract.php @@ -0,0 +1,261 @@ +modx = $modx; + $this->params = (isset($modx->event->params) && is_array($modx->event->params)) ? $modx->event->params : array(); + $this->fs = \Helpers\FS::getInstance(); + } + + /** + * @param $ids + * @param $rid + */ + protected function clearIndexes($ids, $rid) + { + $ids = $this->cleanIDs($ids, ',', array(0)); + $ids = $this->sanitarIn($ids); + $table = $this->makeTable($this->table); + $rows = $this->query("SELECT MIN(`{$this->indexName}`) FROM {$table} WHERE `{$this->pkName}` IN ({$ids})"); + $index = $this->modx->db->getValue($rows); + $index = $index - 1; + $this->query("SET @index := " . $index); + $this->query("UPDATE {$table} SET `{$this->indexName}` = (@index := @index + 1) WHERE (`{$this->indexName}`>{$index} AND `{$this->rfName}`={$rid} AND `{$this->pkName}` NOT IN ({$ids})) ORDER BY `{$this->indexName}` ASC"); + $out = $this->modx->db->getAffectedRows(); + + return $out; + } + + /** + * @param $field + * @return $this + */ + public function touch($field) + { + $this->set($field, date('Y-m-d H:i:s', time() + $this->modx->config['server_offset_time'])); + + return $this; + } + + /** + * @param $ids + * @param $dir + * @param $rid + */ + public function place($ids, $dir, $rid) + { + $table = $this->makeTable($this->table); + $ids = $this->cleanIDs($ids, ',', array(0)); + if (empty($ids) || is_scalar($ids)) { + return false; + } + $rows = $this->query("SELECT count(`{$this->pkName}`) FROM {$table} WHERE `{$this->rfName}`={$rid}"); + $index = $this->modx->db->getValue($rows); + $cnt = count($ids); + $ids = implode(',', $ids); + if ($dir == 'top') { + $this->query("SET @index := " . ($index - $cnt - 1)); + $this->query("UPDATE {$table} SET `{$this->indexName}` = (@index := @index + 1) WHERE (`{$this->pkName}` IN ({$ids})) ORDER BY `{$this->indexName}` ASC"); + $this->query("SET @index := -1"); + } else { + $this->query("SET @index := -1"); + $this->query("UPDATE {$table} SET `{$this->indexName}` = (@index := @index + 1) WHERE (`{$this->pkName}` IN ({$ids})) ORDER BY `{$this->indexName}` ASC"); + $this->query("SET @index := " . ($cnt - 1)); + } + $this->query("UPDATE {$table} SET `{$this->indexName}` = (@index := @index + 1) WHERE (`{$this->pkName}` NOT IN ({$ids})) AND `{$this->rfName}` = {$rid} ORDER BY `{$this->indexName}` ASC"); + $out = $this->modx->db->getAffectedRows(); + + return $out; + } + + /** + * @param $url + * @param bool $cache + */ + public function deleteThumb($url, $cache = false) + { + $url = $this->fs->relativePath($url); + if (empty($url)) { + return; + } + if ($this->fs->checkFile($url)) { + unlink(MODX_BASE_PATH . $url); + } + $dir = $this->fs->takeFileDir($url); + $iterator = new \FilesystemIterator($dir); + if (!$iterator->valid()) { + rmdir($dir); + } + if ($cache) { + return; + } + $thumbsCache = isset($this->params['thumbsCache']) ? $this->params['thumbsCache'] : $this->thumbsCache; + $thumb = $thumbsCache . $url; + if ($this->fs->checkFile($thumb)) { + $this->deleteThumb($thumb, true); + } + } + + /** + * @param $ids + * @param null $fire_events + * @return $this + */ + public function delete($ids, $fire_events = null) + { + $out = parent::delete($ids, $fire_events); + $this->query("ALTER TABLE {$this->makeTable($this->table)} AUTO_INCREMENT = 1"); + + return $out; + } + + /** + * @param $ids + * @param $rid + * @param null $fire_events + * @return $this + */ + public function deleteAll($ids, $rid, $fire_events = null) + { + $this->clearIndexes($ids, $rid); + + return $this->delete($ids, $fire_events); + } + + /** + * @return array + */ + public function fieldNames() + { + $fields = array_keys($this->getDefaultFields()); + $fields[] = $this->fieldPKName(); + + return $fields; + } + + /** + * @param string $name + * @return string + */ + public function stripName($name) + { + $filename = $this->fs->takeFileName($name); + $ext = $this->fs->takeFileExt($name); + + return $this->modx->stripAlias($filename) . '.' . $ext; + } + + /** + * @param $source + * @param $target + * @param $point + * @param $rid + * @param $orderDir + * @return int|void + */ + public function reorder($source, $target, $point, $rid, $orderDir) + { + $rid = (int)$rid; + $point = strtolower($point); + $orderDir = strtolower($orderDir); + $sourceIndex = (int)$source[$this->indexName]; + $targetIndex = (int)$target[$this->indexName]; + $sourceId = (int)$source[$this->pkName]; + $table = $this->makeTable($this->table); + $rows = 0; + /* more refactoring needed */ + if ($targetIndex < $sourceIndex) { + if (($point == 'top' && $orderDir == 'asc') || ($point == 'bottom' && $orderDir == 'desc')) { + $this->modx->db->update("`{$this->indexName}`=`{$this->indexName}`+1", $table, + "`{$this->indexName}`>={$targetIndex} AND `{$this->indexName}`<{$sourceIndex} AND `{$this->rfName}`={$rid}"); + $rows = $this->modx->db->update("`{$this->indexName}`={$targetIndex}", $table, + "`{$this->pkName}`={$sourceId}"); + } elseif (($point == 'bottom' && $orderDir == 'asc') || ($point == 'top' && $orderDir == 'desc')) { + $this->modx->db->update("`{$this->indexName}`=`{$this->indexName}`+1", $table, + "`{$this->indexName}`>{$targetIndex} AND `{$this->indexName}`<{$sourceIndex} AND `{$this->rfName}`={$rid}"); + $rows = $this->modx->db->update("`{$this->indexName}`=1+{$targetIndex}", $table, + "`{$this->pkName}`={$sourceId}"); + } + } else { + if (($point == 'bottom' && $orderDir == 'asc') || ($point == 'top' && $orderDir == 'desc')) { + $this->modx->db->update("`{$this->indexName}`=`{$this->indexName}`-1", $table, + "`{$this->indexName}`<={$targetIndex} AND `{$this->indexName}`>={$sourceIndex} AND `{$this->rfName}`={$rid}"); + $rows = $this->modx->db->update("`{$this->indexName}`={$targetIndex}", $table, + "`{$this->pkName}`={$sourceId}"); + } elseif (($point == 'top' && $orderDir == 'asc') || ($point == 'bottom' && $orderDir == 'desc')) { + $this->modx->db->update("`{$this->indexName}`=`{$this->indexName}`-1", $table, + "`{$this->indexName}`<{$targetIndex} AND `{$this->indexName}`>={$sourceIndex} AND `{$this->rfName}`={$rid}"); + $rows = $this->modx->db->update("`{$this->indexName}`=-1+{$targetIndex}", $table, + "`{$this->pkName}`={$sourceId}"); + } + } + + return $rows; + } + + /** + * @param $folder + * @param $url + * @param $options + * @return bool + */ + public function makeThumb($folder, $url, $options) + { + if (empty($url)) { + return false; + } + $thumb = new \Helpers\PHPThumb(); + $inputFile = MODX_BASE_PATH . $this->fs->relativePath($url); + $outputFile = MODX_BASE_PATH . $this->fs->relativePath($folder) . '/' . $this->fs->relativePath($url); + $dir = $this->fs->takeFileDir($outputFile); + $this->fs->makeDir($dir, $this->modx->config['new_folder_permissions']); + if ($thumb->create($inputFile, $outputFile, $options)) { + return true; + } else { + $this->modx->logEvent(0, 3, $thumb->debugMessages, __NAMESPACE__); + + return false; + } + } +} diff --git a/assets/lib/class.modxRTEbridge.php b/assets/lib/class.modxRTEbridge.php new file mode 100644 index 0000000000..f61393c304 --- /dev/null +++ b/assets/lib/class.modxRTEbridge.php @@ -0,0 +1,980 @@ +debugMessages[] = 'Message'; + public $ajaxSecHash = array(); // Holds security-hashes + + public function __construct($editorKey = NULL, $bridgeConfig=array(), $tvOptions=array(), $basePath='') + { + global $modx, $settings, $usersettings; + + if ($editorKey == NULL) { + exit('modxRTEbridge: No editorKey set in plugin-initialization.'); + }; + + // Check right path + $file = !empty($basePath) ? $basePath : __FILE__; + $current_path = str_replace('\\', '/', dirname($file)) . '/'; + if (strpos($current_path, MODX_BASE_PATH) !== false) { + $path = substr($current_path, strlen(MODX_BASE_PATH)); + $basePath = MODX_BASE_PATH . $path; + $baseUrl = MODX_BASE_URL . $path; + } else exit('modxRTEbridge: Path-Error'); + + // Object to pass vars between multiple plugin-events + if(!isset($modx->modxRTEbridge)) $modx->modxRTEbridge = array(); + + // Init language before bridge so bridge can alter translations via $this->setLang() + $this->initLang($basePath); + + // Get modxRTEbridge-config from child-class + $this->bridgeParams = isset($bridgeConfig['bridgeParams']) ? $bridgeConfig['bridgeParams'] : array(); + $this->gSettingsCustom = isset($bridgeConfig['gSettingsCustom']) ? $bridgeConfig['gSettingsCustom'] : array(); + $this->gSettingsDefaultValues = isset($bridgeConfig['gSettingsDefaultValues']) ? $bridgeConfig['gSettingsDefaultValues'] : array(); + + // Determine settings from Modx + $mgrAction = isset($modx->manager->action) ? $modx->manager->action : 11; + switch ($mgrAction) { + // Create empty array() + case 11: // Create new user + $editorConfig = array(); + break; + // Get user-config + case 12: // Edit user + case 119: // Purge plugin processor + $editorConfig = $usersettings; + if (!empty($usersettings[$this->editorKey . '_theme'])) { + $usersettings[$this->editorKey . '_theme'] = $settings[$this->editorKey . '_theme']; + } + break; + // Get Modx-config + case 17: // Modx-configuration + default: + $editorConfig = $settings; + break; + }; + + // Modx default WYSIWYG-params + $modxParamsArr = array( + 'theme', 'skin', 'entermode', 'element_format', 'schema', 'css_selectors', + 'custom_plugins', 'custom_buttons1', 'custom_buttons2', 'custom_buttons3', 'custom_buttons4', + 'template_docs', 'template_chunks' + ); + + // Add custom settings from bridge + foreach ($this->gSettingsCustom as $name => $x) { + if (!in_array($name, $modxParamsArr)) $modxParamsArr[] = $name; + }; + + // Take over editor-configuration from Modx + foreach ($modxParamsArr as $p) { + $value = isset($editorConfig[$editorKey . '_' . $p]) ? $editorConfig[$editorKey . '_' . $p] : NULL; + $value = $value === NULL && isset($this->gSettingsDefaultValues[$p]) ? $this->gSettingsDefaultValues[$p] : $value; + + $this->modxParams[$p] = $value; + }; + + // Set TV-options + $this->tvOptions = $tvOptions; + + // Set pluginParams + $this->editorKey = $editorKey; + $this->theme = isset($this->modxParams['theme']) ? $this->modxParams['theme'] : 'base'; + $this->pluginParams = isset($modx->event->params) ? $modx->event->params : array(); + $this->pluginParams['pluginName'] = $modx->event->activePlugin; + $this->pluginParams['editorLabel'] = isset($bridgeConfig['editorLabel']) ? $bridgeConfig['editorLabel'] : 'No editorLabel set for "' . $editorKey . '"'; + $this->pluginParams['editorVersion'] = isset($bridgeConfig['editorVersion']) ? $bridgeConfig['editorVersion'] : 'No editorVersion set'; + $this->pluginParams['editorLogo'] = isset($bridgeConfig['editorLogo']) ? $bridgeConfig['editorLogo'] : ''; + $this->pluginParams['skinsDirectory'] = isset($bridgeConfig['skinsDirectory']) && !empty($bridgeConfig['skinsDirectory']) ? trim($bridgeConfig['skinsDirectory'], "/") . "/" : ''; + $this->pluginParams['base_path'] = $basePath; + $this->pluginParams['base_url'] = $baseUrl; + } + + // Function to set editor-parameters + // $value = NULL deletes key completely from editor-config + public function set($key, $value, $type=false, $emptyAllowed=false) + { + if ($value === NULL) { + $this->themeConfig[$key] = NULL; // Delete Parameter completely from JS-initialization + } else { + if(!isset($this->themeConfig[$key])) $this->themeConfig[$key] = array(); + $this->themeConfig[$key]['value'] = $value; + $this->themeConfig[$key]['default'] = !isset($this->themeConfig[$key]['default']) ? $value : $this->themeConfig[$key]['default']; + $this->themeConfig[$key]['type'] = $type == false ? 'string' : $type; + $this->themeConfig[$key]['empty'] = $emptyAllowed; + } + } + + // Function to append string to existing parameters + public function appendSet($key, $value, $separator = ',') + { + if ($value === '') { return; }; + + if (isset($this->themeConfig[$key])) { + $this->themeConfig[$key]['value'] .= $this->themeConfig[$key]['value'] != '' ? $separator.$value : $value; + }; + } + + // Function to force editor-setting via plugin-code + // $value = NULL deletes key completely from editor-config + public function force($key, $value) + { + if ($value === NULL) { + $this->themeConfig[$key] = NULL; // Delete Parameter completely from JS-initialization + } else { + if(!isset($this->themeConfig[$key])) $this->themeConfig[$key] = array(); + $this->themeConfig[$key]['force'] = $value; + } + } + + // Function to append custom HTML-Code to tpl.editor.init_once.html + public function appendInitOnce($str) + { + if (!in_array($str, $this->initOnceArr)) { // Avoid doubling.. + $this->initOnceArr[] = $str; + }; + } + + // Function to force pluginParams like "elements" via plugin-code + // $value = NULL deletes key completely from editor-config + public function setPluginParam($param, $value) + { + if ($value === NULL) { + unset($this->pluginParams[$param]); // Delete Parameter completely + } else { + $this->pluginParams[$param] = $value; + } + } + + // Function to set custom-placeholders like renders javascript-objects, arrays etc + // $value = NULL deletes key completely from custom-placeholders + public function setPlaceholder($ph, $value) + { + if ($value === NULL) { + unset($this->customPlaceholders[$ph]); // Delete placeholder completely + } else { + $this->customPlaceholders[$ph] = $value; + } + } + + // Function to get custom-placeholders + public function getPlaceholder($ph) + { + return isset($this->customPlaceholders[$ph]) ? $this->customPlaceholders[$ph] : NULL; + } + + // Set new/overwrite translations manually (via bridge) + public function setLang($key, $string, $overwriteExisting = false) + { + if (is_array($string)) { + $this->langArr = $overwriteExisting == false ? array_merge($this->langArr, $string) : array_merge($string, $this->langArr); + } else { + $this->langArr[$key] = isset($this->langArr[$key]) && $overwriteExisting == false ? $this->langArr[$key] : $string; + }; + } + + // Get translation + public function lang($key = '', $returnNull = false) + { + if (!$key) return; + if (isset($this->langArr[$key])) return $this->langArr[$key]; + return $returnNull ? NULL : 'lang_' . $key; // Show missing key as fallback + } + + // Renders complete JS-Script + public function getEditorScript() + { + global $modx; + $ph = array(); + $output = "\n"; + + // Init via elements + if (isset($this->pluginParams['elements'])) { + + $this->pluginParams['elements'] = !is_array($this->pluginParams['elements']) ? explode(',', $this->pluginParams['elements']) : $this->pluginParams['elements']; // Allow setting via plugin-configuration + + // Allows bridging elements+TV-options etc before looping + $this->renderBridgeParams('initBridge'); + + // Now loop through tvs + foreach ($this->pluginParams['elements'] as $selector) { + + $this->initTheme($selector); + $this->renderBridgeParams($selector); + + // Prepare config output + $ph = $this->prepareDefaultPlaceholders($selector); + $ph = array_merge($ph, $this->customPlaceholders, $this->mergeParamArrays()); // Big list.. + + // Init only once at all - Load Editors-Library, CSS etc + if (!defined($this->editorKey . '_INIT_ONCE')) { + define($this->editorKey . '_INIT_ONCE', 1); + $output .= file_get_contents("{$this->pluginParams['base_path']}tpl/tpl.{$this->editorKey}.init_once.html") ."\n"; + if (!empty($this->initOnceArr)) { + $output .= implode("\n", $this->initOnceArr); + } + // Provide JS-object with parameters for external scripts like MultiTV + $jsParams = array( + 'default'=>'config_'.$this->editorKey.'_'.$this->modxParams['theme'] + ); + $output .= ""; + } + + // Init only once per config (enables multiple config-objects i.e. for richtext / richtextmini via [+configJs+]) + if (!defined($this->editorKey . '_INIT_CONFIG_' . $this->theme)) { + define($this->editorKey . '_INIT_CONFIG_' . $this->theme, 1); + $output .= file_get_contents("{$this->pluginParams['base_path']}tpl/tpl.{$this->editorKey}.config.html") ."\n"; + } + + // Loop through tvs + $output .= file_get_contents("{$this->pluginParams['base_path']}tpl/tpl.{$this->editorKey}.init.html") ."\n"; + $output = $modx->parseText($output, $ph); + } + + } else { + // No elements given - create Config-Object only + $this->theme = $this->tvOptions['theme']; + $this->initTheme('noselector'); + $this->renderBridgeParams('noselector'); + + // Prepare config output + $ph = $this->prepareDefaultPlaceholders(); + $ph = array_merge($ph, $this->customPlaceholders, $this->mergeParamArrays()); // Big list.. + + if (!defined($this->editorKey . '_INIT_CONFIG_' . $this->theme)) { + define($this->editorKey . '_INIT_CONFIG_' . $this->theme, 1); + $output .= file_get_contents("{$this->pluginParams['base_path']}tpl/tpl.{$this->editorKey}.config.html") ."\n"; + $output = $modx->parseText($output, $ph); + } + } + + // Remove empty placeholders ! + $placeholderArr = $modx->getTagsFromContent($output, '[+', '+]'); + if (!empty($placeholderArr)) { + foreach ($placeholderArr[1] as $key => $val) { + $output = str_replace($placeholderArr[0][$key], '', $output); + $this->debugMessages[] = 'Removed empty placeholder: '.$placeholderArr[1]; + } + } + + $output .= $this->renderDebugMessages($ph); + $output .= "\n"; + + return $output; + } + + /** + * @return array + */ + public function prepareDefaultPlaceholders($selector='') + { + global $modx; + + $ph['configString'] = $this->renderConfigString(); + $ph['configRawString'] = $this->renderConfigRawString(); + $ph['editorKey'] = $this->editorKey; + $ph['themeKey'] = $this->theme; + $ph['selector'] = $selector; + $ph['documentIdentifier'] = $modx->documentIdentifier; + $ph['manager_path'] = MGR_DIR; + $ph['site_manager_url'] = MODX_MANAGER_URL; + $ph['which_browser'] = !empty($modx->config['which_browser']) ? $modx->config['which_browser'] : 'mcpuk'; + + return $ph; + } + + // Init/load theme + public function initTheme($selector) + { + global $modx; + + $this->theme = isset($this->tvOptions[$selector]['theme']) ? $this->tvOptions[$selector]['theme'] : $this->theme; + + // Load theme for user or webuser + if ($modx->isBackend() || (intval($_GET['quickmanagertv']) == 1 || isset($_SESSION['mgrValidated']))) { + // User is logged into Manager + // Load base first to assure Modx settings like entermode, editor_css_path are given set, can be overwritten in custom theme + include("{$this->pluginParams['base_path']}theme/theme.{$this->editorKey}.base.inc.php"); + include("{$this->pluginParams['base_path']}theme/theme.{$this->editorKey}.{$this->theme}.inc.php"); + $this->pluginParams['language'] = !isset($this->pluginParams['language']) ? $this->lang('lang_code') : $this->pluginParams['language']; + } else { + // User is a webuser + $webuserTheme = !empty($this->pluginParams['webTheme']) ? $this->pluginParams['webTheme'] : 'webuser'; + // Load base first or set EVERYTHING for webuser only in webuser-theme? + // include("{$this->pluginParams['base_path']}theme/theme.{$this->editorKey}.base.inc.php"); + include("{$this->pluginParams['base_path']}theme/theme.{$this->editorKey}.{$webuserTheme}.inc.php"); + // @todo: determine user-language? + $this->pluginParams['language'] = !isset($this->pluginParams['language']) ? $this->lang('lang_code') : $this->pluginParams['language']; + } + } + + // Call bridge-functions and receive optional bridged-values + // $selector = "initBridge" allows executing bridging function without modifying $this->themeConfig + public function renderBridgeParams($selector) + { + // Call functions - for optional translation of params/values via bridge.xxxxxxxxxx.inc.php + foreach ($this->bridgeParams as $editorParam) { + $bridgeFunction = 'bridge_'.$editorParam; + if (method_exists($this, $bridgeFunction)) { // Call function, get return + $return = $this->$bridgeFunction($selector); + if ($return !== NULL && isset($this->themeConfig[$editorParam]) && $selector !== 'initBridge') { + $this->themeConfig[$editorParam]['bridged'] = $return; + } + } + } + // Load Tv-Options as bridged-params + if($selector !== 'initBridge') { + foreach ($this->themeConfig as $key => $conf) { + if (isset($this->tvOptions[$selector][$key])) { + $this->themeConfig[$key]['bridged'] = $this->tvOptions[$selector][$key]; + } + } + } + } + + // Renders String for initialization via JS + public function renderConfigString() + { + $config = array(); + + // Build config-string as per themeConfig + $raw = ''; + foreach ($this->themeConfig as $key => $conf) { + + if ($conf === NULL) { continue; }; // Skip nulled parameters + $value = $this->determineValue($key, $conf); + if ($value === NULL) { continue; }; // Skip none-allowed empty settings + + // Escape quotes + if (!is_array($value) && strpos($value, "'") !== false && !in_array($conf['type'], array('raw','object','obj')) ) + $value = str_replace("'", "\\'", $value); + + // Determine output-type + switch (strtolower($conf['type'])) { + case 'string': case 'str': + $config[$key] = " {$key}:'{$value}'"; + break; + case 'array': case 'arr': + if (is_array($value)) { $value = "['" . implode("','", $value) . "']"; }; + $config[$key] = " {$key}:{$value}"; + break; + case 'boolean': case 'bool': + $value = $value == true ? 'true' : 'false'; + $config[$key] = " {$key}:{$value}"; + break; + case 'json': + if (is_array($value)) $value = json_encode($value); + $config[$key] = " {$key}:{$value}"; + break; + case 'int': + case 'constant': case 'const': + case 'number': case 'num': + case 'object': case 'obj': + $config[$key] = " {$key}:{$value}"; + break; + case 'raw': + $raw .= "{$value}\n"; + break; + }; + } + + return implode(",\n", $config) . $raw; + } + + // Renders String for initialization via JS + public function renderConfigRawString() + { + // Build config-string as per themeConfig + $raw = ''; + foreach ($this->themeConfig as $key => $conf) { + + if ($conf === NULL) { continue; }; // Skip nulled parameters + $value = $this->determineValue($key, $conf); + if ($value === NULL) { continue; }; // Skip none-allowed empty settings + + if ($conf['type'] == 'raw') { + $raw .= "{$value}\n"; + break; + }; + }; + + return $raw; + } + + // Get final value of editor-config + public function determineValue($key, $conf=NULL) + { + if($conf == NULL) { $conf = $this->themeConfig[$key]; }; + + $value = isset($this->themeConfig[$key]['bridged']) ? $this->themeConfig[$key]['bridged'] : NULL; + $value = $value === NULL && isset($this->themeConfig[$key]['force']) ? $this->themeConfig[$key]['force'] : $value; + $value = $value === NULL ? $this->themeConfig[$key]['value'] : $value; + + if(!in_array($conf['type'], array('boolean','bool'))) { + if ($value === '' && $conf['empty'] === false) { // Empty values not allowed + if ($conf['default'] === '') return NULL; // Skip none-allowed empty setting + $value = $conf['default']; + }; + }; + + return $value; + } + + // Adds initilization before for frontend-editors + public function addEditorScriptToBody() + { + global $modx; + + if (isset($_SESSION['usertype']) && $_SESSION['usertype'] == 'manager') { // Show only when logged in manager + // Add only once + if (!defined($this->editorKey . '_ADDED_TO_BODY')) { + define($this->editorKey . '_ADDED_TO_BODY', 1); + $initJs = $this->getEditorScript(); + + // @todo: How to avoid caching of plugins on event "OnParseDocument"? + if (strpos($modx->documentOutput, "") === false) { // Avoid double init if already cached.. + if (strpos($modx->documentOutput, '') !== false) { + // Append to + $modx->documentOutput = str_replace('', $initJs . "", $modx->documentOutput); + } else { + // No - append to source + $modx->documentOutput .= $initJs; + } + }; + + }; + }; + } + + /*************************************************************** + * SETTINGS PARTS + * @todo: make options dynamic to add for example additional options to setting "schema" like html5-strict, html5-bla, or just to "html4 and html5".. + ***************************************************************/ + + // Outputs Modx- / user-configuration settings + public function getModxSettings() + { + global $modx, $usersettings, $settings; + $params = &$this->pluginParams; + + if (defined('INTERFACE_RENDERED_' . $this->editorKey)) { + return ''; + } + define('INTERFACE_RENDERED_' . $this->editorKey, 1); + + // Avoid conflicts with older TinyMCE base configs, prepend editorKey to configKey like [+ckeditor4_custom_plugins+] + $prependModxParams = array(); + foreach ($this->modxParams as $key => $val) { + $prependModxParams[$this->editorKey . '_' . $key] = $val; + } + + $ph = array_merge($prependModxParams, $params); + + // Prepare [+display+] + $ph['display'] = ($_SESSION['browser'] === 'modern') ? 'table-row' : 'block'; + $ph['display'] = $modx->config['use_editor'] == 1 ? $ph['display'] : 'none'; + + // Prepare setting "editor_theme" + $theme_options = ''; + switch ($modx->manager->action) { + case '11'; + case '12'; + case '119'; + $selected = empty($ph[$this->editorKey . '_theme']) ? '"selected"' : ''; + $theme_options .= '\n"; + } + + // Prepare setting "theme" + $ph['theme_options'] = $this->getThemeNames(); + + // Prepare setting "skin" + $ph['skin_options'] = $this->getSkinNames(); + + // Prepare setting "entermode_options" + $entermode = !empty($ph[$this->editorKey . '_entermode']) ? $ph[$this->editorKey . '_entermode'] : 'p'; + $ph['entermode_options'] = '
                    '; + $ph['entermode_options'] .= ''; + switch ($modx->manager->action) { + case '11': + case '12': + case '119': + $ph['entermode_options'] .= '
                    '; + $ph['entermode_options'] .= '
                    '; + break; + } + + // Prepare setting "element_format_options" + $element_format = !empty($ph[$this->editorKey . '_element_format']) ? $ph[$this->editorKey . '_element_format'] : 'xhtml'; + $ph['element_format_options'] = '
                    '; + $ph['element_format_options'] .= ''; + switch ($modx->manager->action) { + case '11': + case '12': + case '119': + $ph['element_format_options'] .= '
                    '; + $ph['element_format_options'] .= '
                    '; + break; + } + + // Prepare setting "schema_options" + $schema = !empty($ph[$this->editorKey . '_schema']) ? $ph[$this->editorKey . '_schema'] : 'html5'; + $ph['schema_options'] = '
                    '; + $ph['schema_options'] .= '
                    '; + $ph['schema_options'] .= ''; + switch ($modx->manager->action) { + case '11': + case '12': + case '119': + $ph['schema_options'] .= '
                    '; + $ph['schema_options'] .= '
                    '; + break; + }; + + // Prepare settings rows output + include($params['base_path'] . 'gsettings/gsettings.rows.inc.php'); + $settingsRowTpl = file_get_contents("{$params['base_path']}gsettings/gsettings.row.inc.html"); + $settingsRows = isset($settingsRows) ? array_merge($settingsRows, $this->gSettingsCustom) : $this->gSettingsCustom; + + $ph['rows'] = ''; + foreach ($settingsRows as $name => $row) { + + if ($row == NULL) { + continue; + }; // Skip disabled config-settings + + $row = array_merge($this->langArr, $row); + + $row['name'] = $this->editorKey . '_' . $name; + $row['editorKey'] = $this->editorKey; + $row['title'] = $this->lang($row['title']); + $row['message'] = $this->lang($row['message']); + $row['messageVal'] = !empty($row['messageVal']) ? $row['messageVal'] : ''; + + // Prepare displaying of default values + $row['default'] = isset($this->gSettingsDefaultValues[$name]) ? '' . $this->lang('default') . '' . $this->gSettingsDefaultValues[$name] . '' : ''; + + // Simple nested parsing + $output = $this->parsePlaceholders($settingsRowTpl, $row); // Replace general translations + $output = $this->parsePlaceholders($output, $ph); // Replace values / settings + $output = $this->parsePlaceholders($output, $row); // Replace new PHs from values / settings + $output = $this->parsePlaceholders($output, $ph); // Replace last values / settings + + $ph['rows'] .= $output . "\n"; + }; + + $settingsBody = file_get_contents("{$params['base_path']}gsettings/gsettings.body.inc.html"); + + $ph['editorLogo'] = !empty($this->pluginParams['editorLogo']) ? '' : ''; + + $settingsBody = $this->parsePlaceholders($settingsBody, $ph); + $settingsBody = $this->replaceTranslations($settingsBody); + + return $settingsBody; + } + + public function parsePlaceholders($content, $ph) { + foreach($ph as $key=>$value) $content = str_replace('[+'.$key.'+]', $value, $content); + return $content; + } + + // Replace all translation-placeholders + public function replaceTranslations($output) + { + global $modx; + + $placeholderArr = $modx->getTagsFromContent($output, '[+', '+]'); + if (!empty($placeholderArr)) { + foreach ($placeholderArr[1] as $key => $val) { + $trans = $this->lang($val, true); + + if ($trans !== NULL) + $output = str_replace($placeholderArr[0][$key], $trans, $output); + }; + }; + return $output; + } + + // helpers for getModxSettings() + public function getThemeNames() + { + global $modx; + $params = $this->pluginParams; + + $themeDir = "{$params['base_path']}theme/"; + + switch ($modx->manager->action) { + case '11': + case '12': + case '119': + $selected = $this->selected(empty($params[$this->editorKey . '_skin'])); + $option[] = ''; + break; + } + + foreach (glob("{$themeDir}*") as $file) { + $file = str_replace('\\', '/', $file); + $file = str_replace($themeDir, '', $file); + $file = str_replace('theme.' . $this->editorKey . '.', '', $file); + + $theme = trim(str_replace('.inc.php', '', $file)); + if ($theme == 'base') continue; // Why should user select base-theme? + $label = $this->lang("theme_{$theme}", true) ? $this->lang("theme_{$theme}") : $theme; // Get optional translation or show raw themeKey + $selected = $this->selected($theme == $this->modxParams['theme']); + + $label = $modx->parseText($label, $this->pluginParams); // Enable [+editorLabel+] in options-label + + $option[] = '"; + } + + return isset($option) && is_array($option) ? implode("\n", $option) : ''; + } + + public function getSkinNames() + { + global $modx, $usersettings, $settings; + $params = $this->pluginParams; + + if (empty($params['skinsDirectory'])) { + return ''; + }; + + $skinDir = "{$params['base_path']}{$params['skinsDirectory']}"; + + switch ($modx->manager->action) { + case '11': + case '12': + case '119': + $selected = $this->selected(empty($params[$this->editorKey . '_skin'])); + $option[] = ''; + break; + } + foreach (glob("{$skinDir}*", GLOB_ONLYDIR) as $dir) { + $dir = str_replace('\\', '/', $dir); + $skin_name = substr($dir, strrpos($dir, '/') + 1); + $skins[$skin_name][] = 'default'; + $styles = glob("{$dir}/ui_*.css"); + if (is_array($styles) && 0 < count($styles)) { + foreach ($styles as $css) { + $skin_variant = substr($css, strrpos($css, '_') + 1); + $skin_variant = substr($skin_variant, 0, strrpos($skin_variant, '.')); + $skins[$skin_name][] = $skin_variant; + } + } + foreach ($skins as $k => $o) ; + { + foreach ($o as $v) { + if ($v === 'default') $value = $k; + else $value = "{$k}:{$v}"; + $selected = $this->selected($value == $this->modxParams['skin']); + $option[] = '"; + } + } + } + + return is_array($option) ? implode("\n", $option) : ''; + } + + public function selected($cond = false) + { + if ($cond !== false) return ' selected="selected"'; + else return ''; + } + public function checked($cond = false) + { + if ($cond !== false) return ' checked="checked"'; + else return ''; + } + + + + // Init translations + public function initLang($basePath) + { + global $modx; + + // Init langArray once + if (empty($this->langArr)) { + $lang_name = $modx->config['manager_language']; + $gsettings_path = $basePath . "lang/gsettings/"; // Holds general translations + $custom_path = $basePath . "lang/custom/"; // Holds custom translations + $lang_file = $lang_name . '.inc.php'; + $fallback_file = 'english.inc.php'; + $lang_code = ''; + + // Load gsettings fallback language (show at least english translations instead of empty) + if (is_file($gsettings_path . $fallback_file)) include($gsettings_path . $fallback_file); + if (isset($_lang['lang_code'])) $lang_code = $_lang['lang_code']; // Set langcode for RTE + + // Load gsettings user language + if (is_file($custom_path . $fallback_file)) include($custom_path . $fallback_file); + if (isset($_lang['lang_code'])) $lang_code = $_lang['lang_code']; // Set langcode for RTE + + // Load custom settings fallback language + if (is_file($gsettings_path . $lang_file)) include($gsettings_path . $lang_file); + if (isset($_lang['lang_code'])) $lang_code = $_lang['lang_code']; // Set langcode for RTE + + // Load custom settings user language + if (is_file($custom_path . $lang_file)) include($custom_path . $lang_file); + if (isset($_lang['lang_code'])) $lang_code = $_lang['lang_code']; // Set langcode for RTE + + $this->langArr = $_lang; + $this->langArr['lang_code'] = $lang_code; + }; + } + + // Merges all available config-params with prefixes into single array + public function mergeParamArrays() + { + $p = array(); + foreach($this->pluginParams as $param=>$value) { $p['pp.'.$param] = is_array($value) ? join(',',$value) : $value; }; + foreach($this->modxParams as $param=>$value) { $p['mp.'.$param] = is_array($value) ? join(',',$value) : $value; }; + foreach($this->themeConfig as $param=>$arr) { + if (isset($arr['force'])) $p['tc.' . $param] = $arr['force']; + elseif (isset($arr['bridged'])) $p['tc.' . $param] = $arr['bridged']; + else $p['tc.' . $param] = $arr['value']; + }; + foreach($this->gSettingsDefaultValues as $param=>$value) { $p['gd.'.$param] = is_array($value) ? join(',',$value) : $value; }; + foreach($this->langArr as $param=>$value) { $p['l.'.$param] = $value; }; + return $p; + } + + // Get PluginConfiguration by Connectors + public function getModxPluginConfiguration($pluginName) + { + global $modx; + + if( $pluginName != NULL ) { + if (empty ($modx->config)) { $modx->getSettings(); }; + $modx->db->connect(); + + $plugin = $modx->getPluginCode($pluginName); + $parameter = $modx->parseProperties($plugin['props'], $pluginName, 'plugin'); + + if (is_array($parameter)) { + $this->pluginParams = array_merge($parameter, $this->pluginParams); + }; + }; + return $this->pluginParams; + } + + // Remove all but numbers + public function onlyNumbers($string) + { + return preg_replace("/[^0-9]/", "", $string); // Remove px, % etc + } + + // Helper to translate "bold,strike,underline,italic" to "bold","strike","underline","italic" + // Translates Modx Plugin-configuration strings to JSON-compatible string + public function addQuotesToCommaList($str, $quote = '"') + { + if (empty($str)) { return ''; } + + $elements = explode(',', $str); + foreach ($elements as $key => $val) { + $elements[$key] = $quote . trim($val) . $quote; + }; + return implode(',', $elements); + } + + public function parseEditableIds($source, $attrContentEditable=false) + { + if(!isset($_SESSION['mgrValidated'])) return $source; + $attrContentEditable = $attrContentEditable == true ? ' contenteditable="true"' : ''; + + $matchPhs = '~\[\*#(.*?)\*\]~'; // match [*#content*] / content + preg_match_all($matchPhs, $source, $editableIds); + + $this->setEditableIds($editableIds); + + $source = preg_replace($matchPhs, '
                    [*$1*]
                    ', $source); + + return $source; + } + + public function setEditableIds($editableIds) + { + global $modx; + + if(!empty($editableIds) && isset($editableIds[1])) { + foreach ($editableIds[1] as $i=>$id) + $modx->modxRTEbridge['editableIds'][$id] = ''; + } + } + + // Helper to avoid Placeholder-/Snippet-Execution for Frontend-Editors + public function protectModxPhs() + { + global $modx; + + if(isset($modx->modxRTEbridge['editableIds']) && isset($_SESSION['mgrValidated'])) { + foreach ($modx->modxRTEbridge['editableIds'] as $modxPh=>$x) { + if (isset($modx->documentObject[$modxPh])) + $modx->documentObject[$modxPh] = $this->protectModxPlaceholders($modx->documentObject[$modxPh]); + } + } + } + + public function protectModxPlaceholders($output) + { + return str_replace( + array('[*', '*]', '[(', ')]', '{{', '}}', '[[', ']]', '[!', '!]', '[+', '+]', '[~', '~]'), + array('[*', '*]', '[(', ')]', '{{', '}}', '[[', ']]', '[!', '!]', '[+', '+]', '[~', '~]'), + $output + ); + } + public function unprotectModxPlaceholders($output) + { + return str_replace( + array('[*', '*]', '[(', ')]', '{{', '}}', '[[', ']]', '[!', '!]', '[+', '+]', '[~', '~]'), + array('[*', '*]', '[(', ')]', '{{', '}}', '[[', ']]', '[!', '!]', '[+', '+]', '[~', '~]'), + $output + ); + } + + public function prepareAjaxSecHash($docId) + { + if(isset($this->ajaxSecHash[$docId])) return $this->ajaxSecHash[$docId]; + + $secHash = md5(rand(0, 999999999) + rand(0, 999999999)); + $_SESSION['modxRTEbridge']['secHash'][$docId] = $secHash; + $this->ajaxSecHash[$docId] = $secHash; + + return $secHash; + } + + // Handle debug-modes + public function setDebug($state) + { + if($state == 'full') $this->debug = 'full'; + else if($state != false) $this->debug = true; + else $this->debug = false; + } + + public function renderDebugMessages($placeholderArr) { + $output = ''; + if($this->debug) + { + $output .= "\n"; + } + return $output; + } + + /*************************************************************** + * Connectors + **************************************************************/ + public function getTemplateChunkList() + { + global $modx; + + $templatesArr = array(); + + if ($modx->getLoginUserType() === 'manager') { + + $modx->getSettings(); + $ids = $modx->config[$this->editorKey.'_template_docs']; + $chunks = $modx->config[$this->editorKey.'_template_chunks']; + $templatesArr = array(); + + if (!empty($ids)) { + $docs = $modx->getDocuments($modx->db->escape($ids), 1, 0, $fields = 'id,pagetitle,menutitle,description,content'); + foreach ($docs as $i => $a) { + $newTemplate = array( + 'title'=>($docs[$i]['menutitle'] !== '') ? $docs[$i]['menutitle'] : $docs[$i]['pagetitle'], + 'description'=>$docs[$i]['description'], + 'content'=>$docs[$i]['content'] + ); + $templatesArr[] = $newTemplate; + } + } + + if (!empty($chunks)) { + $tbl_site_htmlsnippets = $modx->getFullTableName('site_htmlsnippets'); + if (strpos($chunks, ',') !== false) { + $chunks = array_filter(array_map('trim', explode(',', $chunks))); + $chunks = $modx->db->escape($chunks); + $chunks = implode("','", $chunks); + $where = "`name` IN ('{$chunks}')"; + $orderby = "FIELD(name, '{$chunks}')"; + } else { + $where = "`name`='{$chunks}'"; + $orderby = ''; + } + + $rs = $modx->db->select('id,name,description,snippet', $tbl_site_htmlsnippets, $where, $orderby); + + while ($row = $modx->db->getRow($rs)) { + $newTemplate = array( + 'title'=>$row['name'], + 'description'=>$row['description'], + 'content'=>$row['snippet'] + ); + $templatesArr[] = $newTemplate; + } + } + } + return $templatesArr; + } + + public function saveContentProcessor($rid, $ppPluginName, $ppEditableIds='editableIds') + { + global $modx; + + if ($rid > 0 && $modx->getLoginUserType() === 'manager') + { + if(!isset($_POST['secHash']) || + !isset($_SESSION['modxRTEbridge']['secHash'][$rid]) || + $_POST['secHash'] != $_SESSION['modxRTEbridge']['secHash'][$rid]) return 'secHash invalid'; + + $editableIds = explode(',', $_POST['phs']); + + if($editableIds) { + include_once(MODX_BASE_PATH . "assets/lib/MODxAPI/modResource.php"); + + $modx->doc = new modResource($modx); + $modx->doc->edit($rid); + + foreach ($editableIds as $modxPh) { + if (isset($_POST[$modxPh]) && $_POST[$modxPh] != 'undefined') // Prevent if Javascript returned "undefined" + $modx->doc->set($modxPh, $this->unprotectModxPlaceholders($_POST[$modxPh])); + }; + return $modx->doc->save(true, true); // Returns ressource-ID + } + + return 'editableIds not given in plugin-configuration with config-key "'. $ppEditableIds .'"'; + + } else { + return 'Not logged into manager!'; + } + } +} \ No newline at end of file diff --git a/assets/lib/class.summary.php b/assets/lib/class.summary.php new file mode 100755 index 0000000000..f1d65783b8 --- /dev/null +++ b/assets/lib/class.summary.php @@ -0,0 +1,359 @@ + + * + * @category extender + * @license GNU General Public License (GPL), http://www.gnu.org/copyleft/gpl.html + * @author Agel_Nash + * @see http://blog.agel-nash.ru/addon/summary.html + * @date 31.07.2013 + * @version 1.0.3 + */ +include_once(MODX_BASE_PATH . 'assets/lib/APIHelpers.class.php'); + +/** + * Class SummaryText + */ +class SummaryText +{ + /** + * @var array + */ + private $_cfg = array('content' => '', 'summary' => '', 'original' => '', 'break' => ''); + + /** + * @var bool|null + */ + private $_useCut = null; + + /** + * @var bool + */ + private $_useSubstr = false; + + /** + * @var int + */ + private $_dotted = 0; + + /** + * SummaryText constructor. + * @param $text + * @param $action + * @param null $break + */ + public function __construct($text, $action, $break = null) + { + $this->_cfg['content'] = is_scalar($text) ? $text : ''; + $this->_cfg['original'] = $this->_cfg['content']; + $this->_cfg['summary'] = is_scalar($action) ? $action : ''; + $this->_cfg['break'] = is_scalar($break) ? $break : '. '; + } + + /** + * @param $cut + * @return bool + */ + public function setCut($cut) + { + if (is_scalar($cut) && $cut != '') { + $this->_cfg['cut'] = $cut; + $flag = true; + } else { + $flag = false; + } + + return $flag; + } + + /** + * @return mixed + */ + public function getCut() + { + return \APIHelpers::getkey($this->_cfg, 'cut', ''); + } + + /** + * @param int $scheme + * @return mixed + */ + protected function dotted($scheme = 0) + { + if (($scheme == 1 && ($this->_useCut || $this->_useSubstr)) || ($scheme == 2 && $this->_useSubstr && !$this->_useCut)) { + $this->_cfg['content'] .= '…'; //... + } else { + if ($scheme && (!$this->_useCut || $scheme != 2)) { + $this->_cfg['content'] .= '.'; + } + } + + return $this->_cfg['content']; + } + + /** + * @param int $dotted + * @return mixed + */ + public function run($dotted = 0) + { + $this->_dotted = $dotted; + if (isset($this->_cfg['content'], $this->_cfg['summary']) && $this->_cfg['summary'] != '' && $this->_cfg['content'] != '') { + $param = explode(",", $this->_cfg['summary']); + $this->_cfg['content'] = $this->beforeCut($this->_cfg['content'], $this->getCut()); + foreach ($param as $doing) { + + $process = explode(":", $doing); + switch ($process[0]) { + case 'notags': + $this->_cfg['content'] = strip_tags($this->_cfg['content']); + break; + case 'noparser': + $this->_cfg['content'] = APIhelpers::sanitarTag($this->_cfg['content']); + break; + case 'chars': + if (!(isset($process[1]) && $process[1] > 0)) { + $process[1] = 200; + } + $this->_cfg['content'] = APIhelpers::mb_trim_word($this->_cfg['content'], $process[1]); + break; + case 'len': + if (!(isset($process[1]) && $process[1] > 0)) { + $process[1] = 200; + } + $this->_cfg['content'] = $this->summary($this->_cfg['content'], $process[1], 50, true, + $this->getCut()); + break; + } + } + } + + return $this->dotted($dotted); + } + + /** + * @param $resource + * @param string $splitter + * @return array|mixed + */ + protected function beforeCut($resource, $splitter = '') + { + if ($splitter !== '') { + $summary = str_replace('

                    ' . $splitter . '

                    ', $splitter, + $resource); // For TinyMCE or if it isn't wrapped inside paragraph tags + $summary = explode($splitter, $summary, 2); + $this->_useCut = isset($summary[1]); + $summary = $summary['0']; + } else { + $summary = $resource; + } + + return $summary; + } + + /** + * @param $resource + * @param $truncLen + * @param $truncOffset + * @param $truncChars + * @param string $splitter + * @return array|mixed|string + */ + protected function summary($resource, $truncLen, $truncOffset, $truncChars, $splitter = '') + { + if (isset($this->_useCut) && $splitter != '' && mb_strstr($resource, $splitter, 'UTF-8')) { + $summary = $this->beforeCut($resource, $splitter); + } else { + if ($this->_useCut !== true && (mb_strlen($resource, 'UTF-8') > $truncLen)) { + + $summary = $this->html_substr($resource, $truncLen, $truncOffset, $truncChars); + if ($resource != $summary) { + $this->_useSubstr = true; + } + } else { + $summary = $resource; + } + } + + $summary = $this->closeTags($summary); + $summary = $this->rTriming($summary); + + return $summary; + } + + /** + * @see summary extender for Ditto (truncate::html_substr) + * @link https://github.com/modxcms/evolution/blob/develop/assets/snippets/ditto/extenders/summary.extender.inc.php#L142 + * + * @param $posttext + * @param int $minimum_length + * @param int $length_offset + * @param bool $truncChars + * @return string + */ + protected function html_substr($posttext, $minimum_length = 200, $length_offset = 100, $truncChars = false) + { + $tag_counter = 0; + $quotes_on = false; + if (mb_strlen($posttext) > $minimum_length && $truncChars !== true) { + $c = 0; + $len = mb_strlen($posttext, 'UTF-8'); + for ($i = 0; $i < $len; $i++) { + $current_char = mb_substr($posttext, $i, 1, 'UTF-8'); + if ($i < mb_strlen($posttext, 'UTF-8') - 1) { + $next_char = mb_substr($posttext, $i + 1, 1, 'UTF-8'); + } else { + $next_char = ""; + } + if (!$quotes_on) { + // Check if it's a tag + // On a "<" add 3 if it's an opening tag (like ) + if ($current_char == '<') { + if ($next_char == '/') { + $tag_counter += 1; + } else { + $tag_counter += 3; + } + } + // Slash signifies an ending (like or ... />) + // substract 2 + if ($current_char == '/' && $tag_counter <> 0) { + $tag_counter -= 2; + } + // On a ">" substract 1 + if ($current_char == '>') { + $tag_counter -= 1; + } + // If quotes are encountered, start ignoring the tags + // (for directory slashes) + if ($current_char == '"') { + $quotes_on = true; + } + } else { + // IF quotes are encountered again, turn it back off + if ($current_char == '"') { + $quotes_on = false; + } + } + + // Count only the chars outside html tags + if ($tag_counter == 2 || $tag_counter == 0) { + $c++; + } + + // Check if the counter has reached the minimum length yet, + // then wait for the tag_counter to become 0, and chop the string there + if ($c > $minimum_length - $length_offset && $tag_counter == 0) { + $posttext = mb_substr($posttext, 0, $i + 1, 'UTF-8'); + + return $posttext; + } + } + } + + return $this->textTrunc($posttext, $minimum_length + $length_offset, $this->_cfg['break']); + } + + /** + * @see summary extender for Ditto (truncate::textTrunc) + * @link https://github.com/modxcms/evolution/blob/develop/assets/snippets/ditto/extenders/summary.extender.inc.php#L213 + * + * @param $string + * @param $limit + * @param string $break + * @return string + */ + protected function textTrunc($string, $limit, $break = ". ") + { + // Original PHP code from The Art of Web: www.the-art-of-web.com + + // return with no change if string is shorter than $limit + if (mb_strlen($string, 'UTF-8') < $limit) { + return $string; + } + + $string = mb_substr($string, 0, $limit, 'UTF-8'); + if (false !== ($breakpoint = mb_strrpos($string, $break, 'UTF-8'))) { + $string = mb_substr($string, 0, $breakpoint + 1, 'UTF-8'); + } else { + if ($break != ' ') { + $string = $this->textTrunc($string, $limit, " "); + } + } + + return $string; + } + + /** + * @param $str + * @return mixed + */ + protected function rTriming($str) + { + $str = preg_replace('/[\r\n]++/', ' ', $str); + if (!$this->_useCut || $this->_dotted != 2) { + $str = preg_replace("/(([\.,\-:!?;\s])|(&\w+;))+$/ui", "", $str); + } + + return $str; + } + + /** + * @see summary extender for Ditto (truncate::closeTags) + * @link https://github.com/modxcms/evolution/blob/develop/assets/snippets/ditto/extenders/summary.extender.inc.php#L227 + * @param $text + * @return string + */ + private function closeTags($text) + { + $openPattern = "/<([^\/].*?)>/"; + $closePattern = "/<\/(.*?)>/"; + $endTags = ''; + + preg_match_all($openPattern, $text, $openTags); + preg_match_all($closePattern, $text, $closeTags); + + $c = 0; + $loopCounter = count($closeTags[1]); //used to prevent an infinite loop if the html is malformed + while ($c < count($closeTags[1]) && $loopCounter) { + $i = 0; + while ($i < count($openTags[1])) { + $tag = trim($openTags[1][$i]); + + if (mb_strstr($tag, ' ', 'UTF-8')) { + $tag = mb_substr($tag, 0, strpos($tag, ' '), 'UTF-8'); + } + if ($tag == $closeTags[1][$c]) { + $openTags[1][$i] = ''; + $c++; + break; + } + $i++; + } + $loopCounter--; + } + + $results = $openTags[1]; + + if (is_array($results)) { + $results = array_reverse($results); + + foreach ($results as $tag) { + $tag = trim($tag); + + if (mb_strstr($tag, ' ', 'UTF-8')) { + $tag = mb_substr($tag, 0, strpos($tag, ' '), 'UTF-8'); + } + if (!mb_stristr($tag, 'br', 'UTF-8') && !mb_stristr($tag, 'img', 'UTF-8') && !empty ($tag)) { + $endTags .= ''; + } + } + } + + return $text . $endTags; + } +} diff --git a/assets/libs/document.class.inc.php b/assets/lib/document.class.inc.php similarity index 96% rename from assets/libs/document.class.inc.php rename to assets/lib/document.class.inc.php index 43fe0aba09..888c41b596 100644 --- a/assets/libs/document.class.inc.php +++ b/assets/lib/document.class.inc.php @@ -40,7 +40,7 @@ class Document{ $id - existing doc id or 0 for new doc $fields - comma delimited field list ************************************************/ - function Document($id=0,$fields="*"){ + function __construct($id=0,$fields="*"){ global $modx; $this->isNew = $id==0; if(!$this->isNew){ diff --git a/assets/libs/resourse.php b/assets/lib/resourse.php similarity index 97% rename from assets/libs/resourse.php rename to assets/lib/resourse.php index 991804f187..985118f328 100644 --- a/assets/libs/resourse.php +++ b/assets/lib/resourse.php @@ -1,5 +1,10 @@ field; } - private function checkAlias($alias){ + private function checkAlias($alias, $i=1){ if($this->modx->config['friendly_urls']){ $flag = false; $_alias = $this->modx->db->escape($alias); @@ -402,14 +408,14 @@ private function checkAlias($alias){ $flag = $this->modx->db->getValue($this->modx->db->select('id', $this->_table['site_content'], "alias='{$_alias}'", '', 1)); } if(($flag && $this->newDoc) || (!$this->newDoc && $flag && $this->id != $flag)){ - $suffix = substr($alias, -2); + /*$suffix = substr($alias, -2); if(preg_match('/-(\d+)/',$suffix,$tmp) && isset($tmp[1]) && (int)$tmp[1]>1){ $suffix = (int)$tmp[1] + 1; $alias = substr($alias, 0, -2) . '-'. $suffix; }else{ $alias .= '-2'; - } - $alias = $this->checkAlias($alias); + }*/ + $alias = $this->checkAlias($alias.'-'.$i,$i+1); } } return $alias; @@ -452,21 +458,25 @@ public function save($fire_events = null,$clearCache = false){ if($this->newDoc) $this->id = $this->modx->db->getInsertId(); foreach($fld as $key=>$value){ - if ($value=='') continue; + #if ($value=='') continue; if ($this->tv[$key]!=''){ $fields = array( 'tmplvarid' => $this->tv[$key], 'contentid' => $this->id, 'value' => $this->modx->db->escape($value), ); - $rc = $this->modx->db->select('value', $this->_table['site_tmplvar_contentvalues'], "contentid = '{$fields['contentid']}' AND tmplvarid = '{$fields['tmplvarid']}'"); - if ($row = $this->modx->db->getRow($rs)) { + + $rs = $this->modx->db->select('value', $this->_table['site_tmplvar_contentvalues'], "contentid = '{$fields['contentid']}' AND tmplvarid = '{$fields['tmplvarid']}'"); + + if ( $this->modx->db->getRecordCount($rs) > 0 ) { + $row = $this->modx->db->getRow($rs); if ($row['value'] != $value) { $this->modx->db->update($fields, $this->_table['site_tmplvar_contentvalues'], "contentid = '{$fields['contentid']}' AND tmplvarid = '{$fields['tmplvarid']}'"); } }else{ $this->modx->db->insert($fields, $this->_table['site_tmplvar_contentvalues']); } + } } $this->invokeEvent('OnDocFormSave',array ( diff --git a/assets/modules/docmanager/classes/dm_backend.class.php b/assets/modules/docmanager/classes/dm_backend.class.php index 872cbee7e4..8dd26b8fa4 100644 --- a/assets/modules/docmanager/classes/dm_backend.class.php +++ b/assets/modules/docmanager/classes/dm_backend.class.php @@ -4,7 +4,7 @@ class DocManagerBackend { var $dm = null; var $modx = null; - function DocManagerBackend(&$dm, &$modx) { + function __construct(&$dm, &$modx) { $this->dm = &$dm; $this->modx = &$modx; } @@ -24,69 +24,7 @@ function handlePostback() { case 'changeOther': echo $this->changeOther($_POST['pids']); break; - case 'sortMenu': - echo $this->showSortList($_POST['new_parent']); - break; - case 'sortList': - echo $this->changeSort($_POST['list']); - break; - } - } - - function showSortList($id) { - $this->dm->ph['sort.disable_tree_select'] = 'false'; - $this->dm->ph['sort.options'] = ''; - $this->dm->ph['sort.save'] = ''; - $resource = array(); - - if (is_numeric($id)) { - $rs = $this->modx->db->select('id, pagetitle, parent, menuindex, published, hidemenu, deleted', $this->modx->getFullTableName('site_content'), "parent='{$id}'", 'menuindex ASC'); - $resource = $this->modx->db->makeArray($rs); - } elseif ($id == '') { - $noId = true; - $this->dm->ph['sort.disable_tree_select'] = 'true'; - $this->dm->ph['sort.save'] = 'none'; - $this->dm->ph['sort.message'] = $this->dm->lang['DM_sort_noid']; - } - - if (!$noId) { - $cnt = count($resource); - if ($cnt < 1) { - $this->dm->ph['sort.disable_tree_select'] = 'true'; - $this->dm->ph['sort.save'] = 'none'; - $this->dm->ph['sort.message'] = $this->dm->lang['DM_sort_nochildren']; - } else { - foreach ($resource as $item) { - // Add classes to determine whether it's published, deleted, not in the menu - // or has children. - // Use class names which match the classes in the document tree - $classes = ''; - $classes .= ($item['hidemenu']) ? ' notInMenuNode ' : ' inMenuNode' ; - $classes .= ($item['published']) ? ' publishedNode ' : ' unpublishedNode ' ; - $classes = ($item['deleted']) ? ' deletedNode ' : $classes ; - $classes .= (count($this->modx->getChildIds($item['id'], 1)) > 0) ? ' hasChildren ' : ' noChildren '; - $this->dm->ph['sort.options'] .= '
                  • ' . $item['pagetitle'] . '
                  • '; - } - } - } - return $this->dm->parseTemplate('sort_list.tpl', $this->dm->ph); - } - - function changeSort($items) { - if (strlen($items) > 0) { - $items = explode(';', $items); - foreach ($items as $key => $value) { - $id = ltrim($value, 'item_'); - if (is_numeric($id)) { - $this->modx->db->update(array('menuindex'=>$key), $this->modx->getFullTableName('site_content'), "id='{$id}'"); - } - } - $this->logDocumentChange('sortmenu'); } - $this->dm->ph['sort.message'] = $this->dm->lang['DM_sort_updated']; - $this->dm->ph['sort.save'] = 'none'; - $this->dm->ph['sort.disable_tree_select'] = 'true'; - return $this->dm->parseTemplate('sort_list.tpl', $this->dm->ph); } function changeTemplate($pids, $template) { @@ -191,7 +129,31 @@ function changeTemplateVariables($pids) { $noUpdate = true; } } + //+++++++ + $newTvVal = $tmplVars["$tvIndex"]; + if (substr($newTvVal, 0, 5) == '@EVAL') { + $sign = trim(substr($newTvVal, 6, 1)); + $op = trim(substr($newTvVal, 7)); + switch ($sign) { + case '+': + $newTvVal = $checkRow['value'] + $op; + break; + case '-': + $newTvVal = $checkRow['value'] - $op; + break; + case '*': + $newTvVal = $checkRow['value'] * $op; + break; + case '/': + $newTvVal = $checkRow['value'] / $op; + break; + default: + $newTvVal = $checkRow['value'].'~'.$op; + break; + } + } + //++++++ if ($checkCount > 0 && !isset ($noUpdate)) { $fields = array ( 'value' => $this->modx->db->escape($tmplVars["$tvIndex"]) diff --git a/assets/modules/docmanager/classes/dm_frontend.class.php b/assets/modules/docmanager/classes/dm_frontend.class.php index 7b804bd3d4..f676917b01 100644 --- a/assets/modules/docmanager/classes/dm_frontend.class.php +++ b/assets/modules/docmanager/classes/dm_frontend.class.php @@ -4,7 +4,7 @@ class DocManagerFrontend { var $dm = null; var $modx = null; - function DocManagerFrontend(&$dm, &$modx) { + function __construct(&$dm, &$modx) { $this->dm = &$dm; $this->modx = &$modx; include (MODX_MANAGER_PATH.'includes/controls/datagrid.class.php'); @@ -14,7 +14,6 @@ function getViews() { $this->renderTemplates(); $this->renderTemplateVars(); $this->renderDocGroups(); - $this->renderSort(); $this->renderMisc(); $this->renderChangeAuthors(); $this->renderDocumentSelect(); @@ -78,9 +77,6 @@ function renderDocumentSelect() { $this->dm->ph['view.documents'] = $this->dm->parseTemplate('documents.tpl', $this->dm->ph); } - function renderSort() { - $this->dm->ph['view.sort'] = $this->dm->parseTemplate('sort.tpl', $this->dm->ph); - } function renderMisc() { $this->dm->ph['view.misc'] = $this->dm->parseTemplate('misc.tpl', $this->dm->ph); diff --git a/assets/modules/docmanager/classes/docmanager.class.php b/assets/modules/docmanager/classes/docmanager.class.php index 07b92b6d5e..6a9c32c440 100644 --- a/assets/modules/docmanager/classes/docmanager.class.php +++ b/assets/modules/docmanager/classes/docmanager.class.php @@ -7,7 +7,7 @@ class DocManager { var $theme = ''; var $fileRegister = array(); - function DocManager(&$modx) { + function __construct(&$modx) { $this->modx = $modx; } @@ -72,10 +72,21 @@ function getFileContents($file) { function loadTemplates() { $this->fileGetContents('main.tpl'); } - + function parseTemplate($tpl, $values = array()) { $tpl = array_key_exists($tpl, $this->fileRegister) ? $this->fileRegister[$tpl] : $this->getFileContents($tpl); if($tpl) { + if(strpos($tpl,'')!==false) { + if(!isset($this->modx->config['mgr_date_picker_path'])) $this->modx->config['mgr_date_picker_path'] = 'media/script/air-datepicker/datepicker.inc.php'; + $dp = $this->modx->manager->loadDatePicker($this->modx->config['mgr_date_picker_path']); + $tpl = str_replace('',$dp.'',$tpl); + global $modx; + $evtOut = $modx->invokeEvent('OnManagerMainFrameHeaderHTMLBlock'); + $onManagerMainFrameHeaderHTMLBlock = is_array($evtOut) ? implode("\n", $evtOut) : ''; + $tpl = str_replace('[+onManagerMainFrameHeaderHTMLBlock+]',$onManagerMainFrameHeaderHTMLBlock,$tpl); + } + if(!isset($this->modx->config['mgr_jquery_path'])) $this->modx->config['mgr_jquery_path'] = 'media/script/jquery/jquery.min.js'; + $tpl = $this->modx->mergeSettingsContent($tpl); foreach ($values as $key => $value) { $tpl = str_replace('[+'.$key.'+]', $value, $tpl); } diff --git a/assets/modules/docmanager/js/docmanager.js b/assets/modules/docmanager/js/docmanager.js index f0253d8a7e..fb866c3c46 100644 --- a/assets/modules/docmanager/js/docmanager.js +++ b/assets/modules/docmanager/js/docmanager.js @@ -90,8 +90,6 @@ function postForm() { document.range.submit(); } else if (tabActiveID == '3') { - /* handled separately using save() function */ - } else if (tabActiveID == '4') { $('tabaction').value = 'changeOther'; $('setoption').value = document.other.misc.value; @@ -114,6 +112,7 @@ function hideInteraction() { if (tabActiveID == '1') { $('tvloading').style.display = 'none'; } + /* if (tabActiveID == '3') { if ($('interaction')) { $('interaction').style.display = 'none'; @@ -123,7 +122,7 @@ function hideInteraction() { $('interaction').style.display = ''; parent.tree.ca = ''; } - + */ return true; } diff --git a/assets/modules/docmanager/lang/chinese.inc.php b/assets/modules/docmanager/lang/chinese.inc.php old mode 100755 new mode 100644 diff --git a/assets/modules/docmanager/lang/english.inc.php b/assets/modules/docmanager/lang/english.inc.php index ab4a037da3..d3132d4105 100644 --- a/assets/modules/docmanager/lang/english.inc.php +++ b/assets/modules/docmanager/lang/english.inc.php @@ -61,13 +61,6 @@ $_lang['DM_doc_skip_message1'] = 'Document with ID'; $_lang['DM_doc_skip_message2'] = 'is already part of the selected document group (skipping)'; -// sort menu tab -$_lang['DM_sort_pick_item'] = 'Please click the site root or parent document from the MAIN DOCUMENT TREE that you\'d like to sort.'; -$_lang['DM_sort_updating'] = 'Updating ...'; -$_lang['DM_sort_updated'] = 'Updated'; -$_lang['DM_sort_nochildren'] = 'Parent does not have any children'; -$_lang['DM_sort_noid'] = 'No Document has been selected. Please go back and select a document.'; - // other tab $_lang['DM_other_header'] = 'Miscellaneous Document Settings'; $_lang['DM_misc_label'] = 'Available Settings:'; diff --git a/assets/modules/docmanager/lang/german.inc.php b/assets/modules/docmanager/lang/german.inc.php old mode 100755 new mode 100644 diff --git a/assets/modules/docmanager/lang/persian.inc.php b/assets/modules/docmanager/lang/persian.inc.php old mode 100755 new mode 100644 diff --git a/assets/modules/docmanager/lang/svenska-utf8.inc.php b/assets/modules/docmanager/lang/svenska-utf8.inc.php old mode 100755 new mode 100644 diff --git a/assets/modules/docmanager/templates/changeauthors.tpl b/assets/modules/docmanager/templates/changeauthors.tpl index 0476c9ed12..01fa83be37 100644 --- a/assets/modules/docmanager/templates/changeauthors.tpl +++ b/assets/modules/docmanager/templates/changeauthors.tpl @@ -1,7 +1,7 @@ -

                    [+lang.DM_adjust_authors_header+]


                    +

                    [+lang.DM_adjust_authors_header+]


                    [+lang.DM_adjust_authors_desc+]


                    -
                    + @@ -14,7 +14,7 @@ - +

                    [+lang.DM_select_range_text+] diff --git a/assets/modules/docmanager/templates/main.tpl b/assets/modules/docmanager/templates/main.tpl index 81dbf5cb8b..13c72d12fc 100644 --- a/assets/modules/docmanager/templates/main.tpl +++ b/assets/modules/docmanager/templates/main.tpl @@ -3,11 +3,10 @@ [+lang.DM_module_title+] + - + - - + [+onManagerMainFrameHeaderHTMLBlock+] -

                    [+lang.DM_module_title+]

                    +

                    + + + + + [+lang.DM_module_title+] + +

                    • [+lang.DM_close+]
                    • @@ -76,31 +74,25 @@
                      -

                      [+lang.DM_change_template+]

                      +

                      [+lang.DM_change_template+]

                      [+view.templates+]
                      -

                      [+lang.DM_template_variables+]

                      +

                      [+lang.DM_template_variables+]

                      [+view.templatevars+]
                      -

                      [+lang.DM_doc_permissions+]

                      +

                      [+lang.DM_doc_permissions+]

                      [+view.documentgroups+]
                      - -
                      -

                      [+lang.DM_sort_menu+]

                      - - [+view.sort+] -
                      - +
                      -

                      [+lang.DM_other+]

                      +

                      [+lang.DM_other+]

                      [+view.misc+] [+view.changeauthors+] diff --git a/assets/modules/docmanager/templates/misc.tpl b/assets/modules/docmanager/templates/misc.tpl index e75fcf8594..2756908e0a 100644 --- a/assets/modules/docmanager/templates/misc.tpl +++ b/assets/modules/docmanager/templates/misc.tpl @@ -1,33 +1,33 @@ -

                      [+lang.DM_adjust_dates_header+]


                      +

                      [+lang.DM_adjust_dates_header+]


                      [+lang.DM_adjust_dates_desc+]


                      - +
                      - [+lang.DM_clear_date+] +
                      - [+lang.DM_clear_date+] +
                      - [+lang.DM_clear_date+] +
                      - [+lang.DM_clear_date+] +
                      @@ -35,10 +35,10 @@
                      -

                      [+lang.DM_other_header+]

                      +

                      [+lang.DM_other_header+]


                      [+lang.DM_misc_desc+]


                      - + diff --git a/assets/modules/docmanager/templates/sort.tpl b/assets/modules/docmanager/templates/sort.tpl deleted file mode 100644 index aea35cfa55..0000000000 --- a/assets/modules/docmanager/templates/sort.tpl +++ /dev/null @@ -1,12 +0,0 @@ - - [+lang.DM_sort_pick_item+]
                      - - - -
                      - -
                      - - \ No newline at end of file diff --git a/assets/modules/docmanager/templates/sort_list.tpl b/assets/modules/docmanager/templates/sort_list.tpl deleted file mode 100644 index cce4a825af..0000000000 --- a/assets/modules/docmanager/templates/sort_list.tpl +++ /dev/null @@ -1,82 +0,0 @@ - - - - [+lang.DM_module_title+] - - - - - - - - -

                      [+lang.DM_module_title+]

                      -
                      - -
                      - - -
                      -
                      [+lang.DM_sort_title+]
                      -
                      - [+sort.message+] -
                        - [+sort.options+] -
                      -
                      - - -
                      -
                      -
                      - - \ No newline at end of file diff --git a/assets/modules/docmanager/templates/update.tpl b/assets/modules/docmanager/templates/update.tpl index 8b7ca4da71..457d913007 100644 --- a/assets/modules/docmanager/templates/update.tpl +++ b/assets/modules/docmanager/templates/update.tpl @@ -4,7 +4,6 @@ [+lang.DM_update_title+] - '; - break; case "dropdown": // handler for select boxes $field_html .= ' +
                      + +hasPermission('exec_module')) die('INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + +# load setup information file +$setupPath = $modulePath; +include "{$setupPath}/setup.info.php"; + +echo "

                      " . $_lang['optional_items'] . "

                      " . $_lang['optional_items_note'] . "

                      "; + +if (is_file( MODX_BASE_PATH . 'assets/cache/store/install/install/setup.data.sql')) { +$chk = isset ($_POST['installdata']) && $_POST['installdata'] == "1" ? 'checked="checked"' : ""; +echo 'Sample Data'; +echo "

                      " . $_lang['sample_web_site'] . "

                      "; +echo "

                       

                       " . $_lang['sample_web_site_note'] . "


                      "; +} + +// toggle options +echo "

                      " . $_lang['checkbox_select_options'] . "

                      +

                      " . $_lang['all'] . " " . $_lang['none'] . " " . $_lang['toggle'] . "

                      +
                      +
                      "; + +$options_selected = isset ($_POST['options_selected']); + +// display templates +$templates = isset ($_POST['template']) ? $_POST['template'] : array (); +$limit = count($moduleTemplates); +if ($limit > 0) { + $tplOutput = ''; + for ($i = 0; $i < $limit; $i++) { + $class = !in_array('sample', $moduleTemplates[$i][6]) ? 'toggle' : 'toggle demo'; + $chk = in_array($i, $templates) || (!$options_selected) ? 'checked="checked"' : ""; + $tplOutput .= "" . $_lang['install_update'] . " " . $moduleTemplates[$i][0] . " - " . $moduleTemplates[$i][1] . "
                      \n"; + } + if($tplOutput !== '') { + echo "

                      " . $_lang['templates'] . "


                      "; + echo $tplOutput; + } +} + +// display template variables +$tvs = isset ($_POST['tv']) ? $_POST['tv'] : array (); +$limit = count($moduleTVs); +if ($limit > 0) { + $tvOutput = ''; + for ($i = 0; $i < $limit; $i++) { + $class = !in_array('sample', $moduleTVs[$i][12]) ? "toggle" : "toggle demo"; + $chk = in_array($i, $tvs) || (!$options_selected) ? 'checked="checked"' : ""; + $tvOutput .= "" . $_lang['install_update'] . " " . $moduleTVs[$i][0] . " - " . $moduleTVs[$i][2] . "
                      \n"; + } + if($tvOutput != '') { + echo "

                      " . $_lang['tvs'] . "


                      \n"; + echo $tvOutput; + } +} + +// display chunks +$chunks = isset ($_POST['chunk']) ? $_POST['chunk'] : array (); +$limit = count($moduleChunks); +if ($limit > 0) { + $chunkOutput = ''; + for ($i = 0; $i < $limit; $i++) { + $class = !in_array('sample', $moduleChunks[$i][5]) ? "toggle" : "toggle demo"; + $chk = in_array($i, $chunks) || (!$options_selected) ? 'checked="checked"' : ""; + $chunkOutput .= "" . $_lang['install_update'] . " " . $moduleChunks[$i][0] . " - " . $moduleChunks[$i][1] . "
                      "; + } + if($chunkOutput != '') { + echo "

                      " . $_lang['chunks'] . "

                      "; + echo $chunkOutput; + } +} + +// display modules +$modules = isset ($_POST['module']) ? $_POST['module'] : array (); +$limit = count($moduleModules); +if ($limit > 0) { + $moduleOutput = ''; + for ($i = 0; $i < $limit; $i++) { + $class = !in_array('sample', $moduleModules[$i][7]) ? "toggle" : "toggle demo"; + $chk = in_array($i, $modules) || (!$options_selected) ? 'checked="checked"' : ""; + $moduleOutput .= "" . $_lang['install_update'] . " " . $moduleModules[$i][0] . " - " . $moduleModules[$i][1] . "
                      "; + } + if($moduleOutput != '') { + echo "

                      " . $_lang['modules'] . "

                      "; + echo $moduleOutput; + } +} + +// display plugins +$plugins = isset ($_POST['plugin']) ? $_POST['plugin'] : array (); +$limit = count($modulePlugins); +if ($limit > 0) { + $pluginOutput = ''; + for ($i = 0; $i < $limit; $i++) { + $class = !in_array('sample', (array) $modulePlugins[$i][8]) ? "toggle" : "toggle demo"; + $chk = in_array($i, $plugins) || (!$options_selected) ? 'checked="checked"' : ""; + $pluginOutput .= "" . $_lang['install_update'] . " " . $modulePlugins[$i][0] . " - " . $modulePlugins[$i][1] . "
                      "; + } + if($pluginOutput != '') { + echo "

                      " . $_lang['plugins'] . "

                      "; + echo $pluginOutput; + } +} + +// display snippets +$snippets = isset ($_POST['snippet']) ? $_POST['snippet'] : array (); +$limit = count($moduleSnippets); +if ($limit > 0) { + $snippetOutput = ''; + for ($i = 0; $i < $limit; $i++) { + $class = !in_array('sample', (array) $moduleSnippets[$i][5]) ? "toggle" : "toggle demo"; + $chk = in_array($i, $snippets) || (!$options_selected) ? 'checked="checked"' : ""; + $snippetOutput .= "" . $_lang['install_update'] . " " . $moduleSnippets[$i][0] . " - " . $moduleSnippets[$i][1] . "
                      "; + } + if($snippetOutput != '') { + echo "

                      " . $_lang['snippets'] . "

                      "; + echo $snippetOutput; + } +} +?> +
                      + + + + + \ No newline at end of file diff --git a/assets/modules/store/installer/functions.php b/assets/modules/store/installer/functions.php new file mode 100755 index 0000000000..204383f713 --- /dev/null +++ b/assets/modules/store/installer/functions.php @@ -0,0 +1,33 @@ + + + Install Problem + + + +
                      +

                      ' . $_lang["session_problem"] . '

                      +

                      ' .$_lang["session_problem_try_again"] . '

                      +
                      + +'; + exit; + } + } +} diff --git a/assets/modules/store/installer/img/elements.gif b/assets/modules/store/installer/img/elements.gif new file mode 100755 index 0000000000..82339d60be Binary files /dev/null and b/assets/modules/store/installer/img/elements.gif differ diff --git a/assets/modules/store/installer/img/ico_faq.png b/assets/modules/store/installer/img/ico_faq.png new file mode 100755 index 0000000000..6b535c1822 Binary files /dev/null and b/assets/modules/store/installer/img/ico_faq.png differ diff --git a/assets/modules/store/installer/img/ico_info.png b/assets/modules/store/installer/img/ico_info.png new file mode 100755 index 0000000000..8f9acc81ee Binary files /dev/null and b/assets/modules/store/installer/img/ico_info.png differ diff --git a/assets/modules/store/installer/img/ico_okay.png b/assets/modules/store/installer/img/ico_okay.png new file mode 100755 index 0000000000..6d6ade3a4b Binary files /dev/null and b/assets/modules/store/installer/img/ico_okay.png differ diff --git a/assets/modules/store/installer/img/install_adv.png b/assets/modules/store/installer/img/install_adv.png new file mode 100755 index 0000000000..81cdc48f98 Binary files /dev/null and b/assets/modules/store/installer/img/install_adv.png differ diff --git a/assets/modules/store/installer/img/install_new.png b/assets/modules/store/installer/img/install_new.png new file mode 100755 index 0000000000..a16d2b443c Binary files /dev/null and b/assets/modules/store/installer/img/install_new.png differ diff --git a/assets/modules/store/installer/img/install_upg.png b/assets/modules/store/installer/img/install_upg.png new file mode 100755 index 0000000000..8a3a8af6d8 Binary files /dev/null and b/assets/modules/store/installer/img/install_upg.png differ diff --git a/assets/modules/store/installer/img/link_button_prev.jpg b/assets/modules/store/installer/img/link_button_prev.jpg new file mode 100755 index 0000000000..76f84581fd Binary files /dev/null and b/assets/modules/store/installer/img/link_button_prev.jpg differ diff --git a/assets/modules/store/installer/img/sample_site.png b/assets/modules/store/installer/img/sample_site.png new file mode 100755 index 0000000000..6b2ab07b03 Binary files /dev/null and b/assets/modules/store/installer/img/sample_site.png differ diff --git a/assets/modules/store/installer/img/site-ui-gfx.png b/assets/modules/store/installer/img/site-ui-gfx.png new file mode 100755 index 0000000000..e94e644983 Binary files /dev/null and b/assets/modules/store/installer/img/site-ui-gfx.png differ diff --git a/assets/modules/store/installer/index.php b/assets/modules/store/installer/index.php new file mode 100755 index 0000000000..f3c59924e0 --- /dev/null +++ b/assets/modules/store/installer/index.php @@ -0,0 +1,83 @@ +db->connect(); +$modx->getSettings(); +startCMSSession(); +$modx->minParserPasses=2; + +if(IN_MANAGER_MODE!='true' && !$modx->hasPermission('exec_module')) die('INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + + + + +if (version_compare(phpversion(), "5.3") < 0) { + @ ini_set('magic_quotes_runtime', 0); + @ ini_set('magic_quotes_sybase', 0); +} +$moduleurl = $modx->config['site_url'].'assets/modules/store/installer/index.php'; +$modulePath = MODX_BASE_PATH.'assets/modules/store/installer/'; +$self = $modulePath.'/index.php'; +require_once($modulePath."/functions.php"); + +$_lang = array(); +$_params = array(); +$lang = $modx->config['manager_language']; +if (file_exists($modulePath.'/lang/'.$lang.'.inc.php')){ + include_once($modulePath.'/lang/'.$lang.'.inc.php'); + +} else { + include_once($modulePath.'/lang/english.inc.php'); +} +include_once(MODX_BASE_PATH."assets/cache/siteManager.php"); +require_once(MGR.'/includes/version.inc.php'); + +$_SESSION['test'] = 1; +install_sessionCheck(); + +$moduleName = "MODX"; +$moduleVersion = $modx_branch.' '.$modx_version; +$moduleRelease = $modx_release_date; +$moduleSQLBaseFile = "setup.sql"; +$moduleSQLDataFile = "setup.data.sql"; + +$moduleChunks = array (); // chunks - array : name, description, type - 0:file or 1:content, file or content +$moduleTemplates = array (); // templates - array : name, description, type - 0:file or 1:content, file or content +$moduleSnippets = array (); // snippets - array : name, description, type - 0:file or 1:content, file or content,properties +$modulePlugins = array (); // plugins - array : name, description, type - 0:file or 1:content, file or content,properties, events,guid +$moduleModules = array (); // modules - array : name, description, type - 0:file or 1:content, file or content,properties, guid +$moduleTemplates = array (); // templates - array : name, description, type - 0:file or 1:content, file or content,properties +$moduleTVs = array (); // template variables - array : name, description, type - 0:file or 1:content, file or content,properties + +$errors= 0; + +// get post back status +$isPostBack = (count($_POST)); +$action= isset ($_GET['action']) ? trim(strip_tags($_GET['action'])) : 'load'; + +ob_start(); +echo ' +Install + + +

                      '; + + +if (!@include ($modulePath.'/action.' . $action . '.php')) { + die ('Invalid install action attempted. [action=' . $action . ']'); +} + +echo "

                      "; +ob_end_flush(); + +?> diff --git a/assets/modules/store/installer/instprocessor-fast.php b/assets/modules/store/installer/instprocessor-fast.php new file mode 100755 index 0000000000..a1598e671b --- /dev/null +++ b/assets/modules/store/installer/instprocessor-fast.php @@ -0,0 +1,582 @@ +hasPermission('exec_module')) die('INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + +error_reporting(E_ALL & ~E_NOTICE); +define('MODX_BASE_PATH',realpath('../../../../').'/'); +include_once(MODX_BASE_PATH."assets/cache/siteManager.php"); +define('MGR',MODX_BASE_PATH.MGR_DIR); + +if (version_compare(phpversion(), "5.3") < 0) { + @ ini_set('magic_quotes_runtime', 0); + @ ini_set('magic_quotes_sybase', 0); +} +$moduleurl = 'assets/modules/store/installer/index.php'; +$modulePath = dirname(__FILE__); +$self = $modulePath.'/index.php'; +require_once($modulePath."/functions.php"); + +$_lang = array(); +$_params = array(); +require_once($modulePath."/lang/russian-UTF8.inc.php"); +include_once(MODX_BASE_PATH."assets/cache/siteManager.php"); +require_once(MGR.'/includes/version.inc.php'); + +// start session +//session_start(); +$_SESSION['test'] = 1; +install_sessionCheck(); + +$moduleName = "MODX"; +$moduleVersion = $modx_branch.' '.$modx_version; +$moduleRelease = $modx_release_date; +$moduleSQLBaseFile = "setup.sql"; +$moduleSQLDataFile = "setup.data.sql"; + +if (is_file($installPath.'/'.$moduleSQLBaseFile)){ $moduleSQLDataFile = $moduleSQLBaseFile; } + + +$moduleChunks = array (); // chunks - array : name, description, type - 0:file or 1:content, file or content +$moduleTemplates = array (); // templates - array : name, description, type - 0:file or 1:content, file or content +$moduleSnippets = array (); // snippets - array : name, description, type - 0:file or 1:content, file or content,properties +$modulePlugins = array (); // plugins - array : name, description, type - 0:file or 1:content, file or content,properties, events,guid +$moduleModules = array (); // modules - array : name, description, type - 0:file or 1:content, file or content,properties, guid +$moduleTemplates = array (); // templates - array : name, description, type - 0:file or 1:content, file or content,properties +$moduleTVs = array (); // template variables - array : name, description, type - 0:file or 1:content, file or content,properties + +$errors= 0; + +// get post back status +$isPostBack = (count($_POST)); + +$_POST['installmode'] = 1; +//$_POST['installdata'] = 0; +$sqlParser = ''; + + +define('MODX_API_MODE', true); +include_once MGR.'/includes/config.inc.php'; +include_once MGR.'/includes/document.parser.class.inc.php'; +$modx = new DocumentParser; +$modx->db->connect(); +$modx->getSettings(); +startCMSSession(); +$modx->minParserPasses=2; + +global $moduleName; +global $moduleVersion; +global $moduleSQLBaseFile; +global $moduleSQLDataFile; + +global $moduleChunks; +global $moduleTemplates; +global $moduleSnippets; +global $modulePlugins; +global $moduleModules; +global $moduleTVs; + +global $errors; + +$create = false; + +// set timout limit +@ set_time_limit(120); // used @ to prevent warning when using safe mode? + + +$installMode= intval($_POST['installmode']); +$installData = 1; + +// set session name variable +if (!isset ($site_sessionname)) { + $site_sessionname = 'SN' . uniqid(''); +} + +// get base path and url +$a = explode("install", str_replace("\\", "/", dirname($_SERVER["PHP_SELF"]))); +if (count($a) > 1) + array_pop($a); +$url = implode("install", $a); +reset($a); +$a = explode("install", str_replace("\\", "/", realpath(dirname(__FILE__)))); +if (count($a) > 1) + array_pop($a); +$pth = implode("install", $a); +unset ($a); +$base_url = $url . (substr($url, -1) != "/" ? "/" : ""); +$base_path = $pth . (substr($pth, -1) != "/" ? "/" : ""); + + +if(!function_exists('parseProperties')) { + // parses a resource property string and returns the result as an array + // duplicate of method in documentParser class + function parseProperties($propertyString) { + $parameter= array (); + if (!empty ($propertyString)) { + $tmpParams= explode("&", $propertyString); + for ($x= 0; $x < count($tmpParams); $x++) { + if (strpos($tmpParams[$x], '=', 0)) { + $pTmp= explode("=", $tmpParams[$x]); + $pvTmp= explode(";", trim($pTmp[1])); + if ($pvTmp[1] == 'list' && $pvTmp[3] != "") + $parameter[trim($pTmp[0])]= $pvTmp[3]; //list default + else + if ($pvTmp[1] != 'list' && $pvTmp[2] != "") + $parameter[trim($pTmp[0])]= $pvTmp[2]; + } + } + } + return $parameter; + } +} +$table_prefix = $modx->db->config['table_prefix']; +$setupPath = $modulePath; +include "{$setupPath}/setup.info.php"; +include "sqlParser.class.php"; +$sqlParser = new SqlParser($adminname, $adminemail, $adminpass, $database_connection_charset, $managerlanguage, $database_connection_method, $auto_template_logic); +$sqlParser->mode = "upd"; +$sqlParser->ignoreDuplicateErrors = true; + +// Install Templates +if ( count($moduleTemplates )>0) { + echo "

                      " . $_lang['templates'] . ":

                      "; + $selTemplates = $_POST['template']; + foreach ($moduleTemplates as $k=>$moduleTemplate) { + $installSample = in_array('sample', $moduleTemplate[6]) && $installData == 1; + // if(in_array($k, $selTemplates) || $installSample) { + $name = $modx->db->escape($moduleTemplate[0]); + $desc = $modx->db->escape($moduleTemplate[1]); + $category = $modx->db->escape($moduleTemplate[4]); + $locked = $modx->db->escape($moduleTemplate[5]); + $filecontent = $moduleTemplate[3]; + if (!file_exists($filecontent)) { + echo "

                        $name: " . $_lang['unable_install_template'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + } else { + // Create the category if it does not already exist + $category_id = getCreateDbCategory($category, $sqlParser); + + // Strip the first comment up top + $template = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', file_get_contents($filecontent), 1); + $template = $modx->db->escape($template); + + // See if the template already exists + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_templates` WHERE templatename='$name'"); + + if ($modx->db->getRecordCount($rs)) { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_templates` SET content='$template', description='$desc', category=$category_id, locked='$locked' WHERE templatename='$name';")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_templates` (templatename,description,content,category,locked) VALUES('$name','$desc','$template',$category_id,'$locked');")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + //} + } +} + +// Install Template Variables +if (count($moduleTVs )>0) { + echo "

                      " . $_lang['tvs'] . ":

                      "; + $selTVs = $_POST['tv']; + foreach ($moduleTVs as $k=>$moduleTV) { + $installSample = in_array('sample', $moduleTV[12]) && $installData == 1; + //if(in_array($k, $selTVs) || $installSample) { + $name = $modx->db->escape($moduleTV[0]); + $caption = $modx->db->escape($moduleTV[1]); + $desc = $modx->db->escape($moduleTV[2]); + $input_type = $modx->db->escape($moduleTV[3]); + $input_options = $modx->db->escape($moduleTV[4]); + $input_default = $modx->db->escape($moduleTV[5]); + $output_widget = $modx->db->escape($moduleTV[6]); + $output_widget_params = $modx->db->escape($moduleTV[7]); + $filecontent = $moduleTV[8]; + $assignments = $moduleTV[9]; + $category = $modx->db->escape($moduleTV[10]); + $locked = $modx->db->escape($moduleTV[11]); + + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_tmplvars` WHERE name='$name'"); + if ($modx->db->getRecordCount($rs)) { + $insert = true; + while($row = $modx->db->getRow($rs,'assoc')) { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_tmplvars` SET type='$input_type', caption='$caption', description='$desc', category=$category, locked=$locked, elements='$input_options', display='$output_widget', display_params='$output_widget_params', default_text='$input_default' WHERE id={$row['id']};")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + $insert = false; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + //$q = "INSERT INTO `" . $table_prefix . "site_tmplvars` (type,name,caption,description,category,locked,elements,display,display_params,default_text) VALUES('$input_type','$name','$caption','$desc',(SELECT (CASE COUNT(*) WHEN 0 THEN 0 ELSE `id` END) `id` FROM `" . $table_prefix . "categories` WHERE `category` = '$category'),$locked,'$input_options','$output_widget','$output_widget_params','$input_default');"; + $q = "INSERT INTO `" . $table_prefix . "site_tmplvars` (type,name,caption,description,category,locked,elements,display,display_params,default_text) VALUES('$input_type','$name','$caption','$desc',$category,$locked,'$input_options','$output_widget','$output_widget_params','$input_default');"; + if (!@ $modx->db->query($q)) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + + // add template assignments + if (trim($assignments) != ''){ + $assignments = explode(',', $assignments); + if (count($assignments) > 0) { + + // remove existing tv -> template assignments + $ds=$modx->db->query("SELECT id FROM `".$table_prefix."site_tmplvars` WHERE name='$name' AND description='$desc';",$sqlParser->conn); + $row = $modx->db->getRow($ds,'assoc'); + $id = $row["id"]; + $modx->db->query('DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_tmplvar_templates` WHERE tmplvarid = \'' . $id . '\''); + + // add tv -> template assignments + foreach ($assignments as $assignment) { + $template = $modx->db->escape($assignment); + $where = "WHERE templatename='$template'"; + if ($template=='*') $where =''; + $ts = $modx->db->query("SELECT id FROM `".$table_prefix."site_templates` ".$where.";" ); + if ($ds && $ts) { + $tRow = $modx->db->getRow($ts,'assoc'); + $templateId = $tRow['id']; + $modx->db->query("INSERT INTO `" . $table_prefix . "site_tmplvar_templates` (tmplvarid, templateid) VALUES($id, $templateId)"); + } + } + } + } + //} + } +} + +// Install Chunks +if (count($moduleChunks )>0) { + echo "

                      " . $_lang['chunks'] . ":

                      "; + $selChunks = $_POST['chunk']; + foreach ($moduleChunks as $k=>$moduleChunk) { + $installSample = in_array('sample', $moduleChunk[5]) && $installData == 1; + //if(in_array($k, $selChunks) || $installSample) { + + $name = $modx->db->escape($moduleChunk[0]); + $desc = $modx->db->escape($moduleChunk[1]); + $category = $modx->db->escape($moduleChunk[3]); + $overwrite = $modx->db->escape($moduleChunk[4]); + $filecontent = $moduleChunk[2]; + + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_chunk'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // Create the category if it does not already exist + $category_id = getCreateDbCategory($category, $sqlParser); + + $chunk = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', file_get_contents($filecontent), 1); + $chunk = $modx->db->escape($chunk); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_htmlsnippets` WHERE name='$name'"); + $count_original_name = $modx->db->getRecordCount($rs); + if($overwrite == 'false') { + $newname = $name . '-' . str_replace('.', '_', $modx_version); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_htmlsnippets` WHERE name='$newname'"); + $count_new_name = $modx->db->getRecordCount($rs); + } + $update = $count_original_name > 0 && $overwrite == 'true'; + if ($update) { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_htmlsnippets` SET snippet='$chunk', description='$desc', category=$category_id WHERE name='$name';")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } elseif($count_new_name == 0) { + if($count_original_name > 0 && $overwrite == 'false') { + $name = $newname; + } + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_htmlsnippets` (name,description,snippet,category) VALUES('$name','$desc','$chunk',$category_id);")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + //} + } +} + +// Install Modules +if (count($moduleModules )>0) { + echo "

                      " . $_lang['modules'] . ":

                      "; + $selModules = $_POST['module']; + foreach ($moduleModules as $k=>$moduleModule) { + $installSample = in_array('sample', $moduleModule[7]) && $installData == 1; + //if(in_array($k, $selModules) || $installSample) { + $name = $modx->db->escape($moduleModule[0]); + $desc = $modx->db->escape($moduleModule[1]); + $filecontent = $moduleModule[2]; + $properties = $modx->db->escape($moduleModule[3]); + $guid = $modx->db->escape($moduleModule[4]); + $shared = $modx->db->escape($moduleModule[5]); + $category = $modx->db->escape($moduleModule[6]); + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_module'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $module = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent), 2)); + // remove installer docblock + $module = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $module, 1); + $module = $modx->db->escape($module); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_modules` WHERE name='$name'"); + if ($modx->db->getRecordCount($rs)) { + $row = $modx->db->getRow($rs,'assoc'); + $props = propUpdate($properties,$modx->db->escape($row['properties'])); + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_modules` SET modulecode='$module', description='$desc', properties='$props', enable_sharedparams='$shared' WHERE name='$name';")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_modules` (name,description,modulecode,properties,guid,enable_sharedparams,category) VALUES('$name','$desc','$module','$properties','$guid','$shared', $category);")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + //} + } +} + +// Install Plugins + +if (count($modulePlugins )>0) { + echo "

                      " . $_lang['plugins'] . ":

                      "; + $selPlugs = $_POST['plugin']; + foreach ($modulePlugins as $k=>$modulePlugin) { + $installSample = in_array('sample', $modulePlugin[8]) && $installData == 1; + // if(in_array($k, $selPlugs) || $installSample) { + $name = $modx->db->escape($modulePlugin[0]); + $desc = $modx->db->escape($modulePlugin[1]); + $filecontent = $modulePlugin[2]; + $properties = $modx->db->escape($modulePlugin[3]); + $events = explode(",", $modulePlugin[4]); + $guid = $modx->db->escape($modulePlugin[5]); + $category = $modx->db->escape($modulePlugin[6]); + $leg_names = ''; + $disabled = $modulePlugin[9]; + if(array_key_exists(7, $modulePlugin)) { + // parse comma-separated legacy names and prepare them for sql IN clause + $leg_names = "'" . implode("','", preg_split('/\s*,\s*/', $modx->db->escape($modulePlugin[7]))) . "'"; + } + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_plugin'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // disable legacy versions based on legacy_names provided + if(!empty($leg_names)) { + $update_query = "UPDATE `" . $table_prefix . "site_plugins` SET disabled='1' WHERE name IN ($leg_names);"; + $rs = $modx->db->query($update_query); + } + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $plugin = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent), 2)); + // remove installer docblock + $plugin = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $plugin, 1); + $plugin = $modx->db->escape($plugin); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_plugins` WHERE name='$name'"); + + if ($modx->db->getRecordCount($rs)) { + $insert = true; + while($row = $modx->db->getRow($rs,'assoc')) { + $props = propUpdate($properties,$modx->db->escape($row['properties'])); + if($row['description'] == $desc){ + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_plugins` SET plugincode='$plugin', description='$desc', properties='$props' WHERE id={$row['id']};")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + $insert = false; + } else { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_plugins` SET disabled='1' WHERE id={$row['id']};")) { + echo "

                      ".mysql_error()."

                      "; + return; + } + } + } + if($insert === true) { + if(!@$modx->db->query("INSERT INTO `".$table_prefix."site_plugins` (name,description,plugincode,properties,moduleguid,disabled,category) VALUES('$name','$desc','$plugin','$properties','$guid','0',$category);",$sqlParser->conn)) { + echo "

                      ".mysql_error()."

                      "; + return; + } + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_plugins` (name,description,plugincode,properties,moduleguid,disabled,category) VALUES('$name','$desc','$plugin','$properties','$guid',$disabled,$category);")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + // add system events + if (count($events) > 0) { + $ds=$modx->db->query("SELECT id FROM `".$table_prefix."site_plugins` WHERE name='$name' AND description='$desc';",$sqlParser->conn); + if ($ds) { + $row = $modx->db->getRow($ds,'assoc'); + $id = $row["id"]; + // remove existing events + $modx->db->query('DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_plugin_events` WHERE pluginid = \'' . $id . '\''); + // add new events + $modx->db->query("INSERT INTO `" . $table_prefix . "site_plugin_events` (pluginid, evtid) SELECT '$id' as 'pluginid',se.id as 'evtid' FROM `" . $table_prefix . "system_eventnames` se WHERE name IN ('" . implode("','", $events) . "')"); + } + } + } + //} + } +} + +// Install Snippets +if (count($moduleSnippets ) > 0) { + echo "

                      " . $_lang['snippets'] . ":

                      "; + $selSnips = $_POST['snippet']; + foreach ($moduleSnippets as $k=>$moduleSnippet) { + + $installSample = in_array('sample', $moduleSnippet[5]) && $installData == 1; + //if(in_array($k, $selSnips) || $installSample) { + $name = $modx->db->escape($moduleSnippet[0]); + $desc = $modx->db->escape($moduleSnippet[1]); + $filecontent = $moduleSnippet[2]; + $properties = $modx->db->escape($moduleSnippet[3]); + $category = $modx->db->escape($moduleSnippet[4]); + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_snippet'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $snippet = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent))); + // remove installer docblock + $snippet = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $snippet, 1); + $snippet = $modx->db->escape($snippet); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_snippets` WHERE name='$name'"); + + if ($modx->db->getRecordCount($rs)) { + + $row = $modx->db->getRow($rs,'assoc'); + $props = propUpdate($properties,$modx->db->escape($row['properties'])); + if (!$modx->db->query("UPDATE `" . $table_prefix . "site_snippets` SET snippet='$snippet', description='$desc', properties='$props' WHERE name='$name';")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + if (!$modx->db->query("INSERT INTO `" . $table_prefix . "site_snippets` (name,description,snippet,properties,category) VALUES('$name','$desc','$snippet','$properties',$category);")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + //} + } +} + +// install data + +if (is_file($installPath.'/'.$moduleSQLDataFile)) { + echo "

                      " . $_lang['installing_demo_site']; + $sqlParser->process($installPath.'/'.$moduleSQLDataFile); + // display database results + if ($sqlParser->installFailed == true) { + $errors += 1; + echo "" . $_lang['database_alerts'] . "

                      "; + echo "

                      " . $_lang['setup_couldnt_install'] . "

                      "; + echo "

                      " . $_lang['installation_error_occured'] . "

                      "; + for ($i = 0; $i < count($sqlParser->mysqlErrors); $i++) { + echo "" . $sqlParser->mysqlErrors[$i]["error"] . "" . $_lang['during_execution_of_sql'] . "" . strip_tags($sqlParser->mysqlErrors[$i]["sql"]) . ".


                      "; + } + echo "

                      "; + echo "

                      " . $_lang['some_tables_not_updated'] . "

                      "; + return; + } else { + echo "".$_lang['ok']."

                      "; + } +} + +// always empty cache after install + +include_once MGR."/processors/cache_sync.class.processor.php"; +$sync = new synccache(); +$sync->setCachepath(MODX_BASE_PATH."assets/cache/"); +$sync->setReport(false); +$sync->emptyCache(); // first empty the cache + + + +// setup completed! +echo "

                      " . $_lang['installation_successful'] . "

                      "; + + + +// Property Update function +function propUpdate($new,$old){ + // Split properties up into arrays + $returnArr = array(); + $newArr = explode("&",$new); + $oldArr = explode("&",$old); + + foreach ($newArr as $k => $v) { + if(!empty($v)){ + $tempArr = explode("=",trim($v)); + $returnArr[$tempArr[0]] = $tempArr[1]; + } + } + foreach ($oldArr as $k => $v) { + if(!empty($v)){ + $tempArr = explode("=",trim($v)); + $returnArr[$tempArr[0]] = $tempArr[1]; + } + } + + // Make unique array + $returnArr = array_unique($returnArr); + + // Build new string for new properties value + foreach ($returnArr as $k => $v) { + $return .= "&$k=$v "; + } + + return $return; +} + +function getCreateDbCategory($category) { + + global $modx; + $dbase = $modx->db->config['dbase']; + $table_prefix = $modx->db->config['table_prefix']; + $category_id = 0; + if(!empty($category)) { + $category = $modx->db->escape($category); + $rs = $modx->db->query("SELECT id FROM `".$table_prefix."categories` WHERE category = '".$category."'"); + if($modx->db->getRecordCount($rs) && ($row = $modx->db->getRow($rs,'assoc'))) { + $category_id = $row['id']; + } else { + $q = "INSERT INTO `".$table_prefix."categories` (`category`) VALUES ('{$category}');"; + $rs = $modx->db->query($q); + if($rs) { + $category_id = $modx->db->getInsertId(); + } + } + } + return $category_id; +} diff --git a/assets/modules/store/installer/instprocessor.php b/assets/modules/store/installer/instprocessor.php new file mode 100755 index 0000000000..720d1f53ae --- /dev/null +++ b/assets/modules/store/installer/instprocessor.php @@ -0,0 +1,533 @@ +hasPermission('exec_module')) die('INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + +$_POST['installmode'] = 1; +//$_POST['installdata'] = 0; +$sqlParser = ''; + +define('MODX_API_MODE', true); +include_once MGR.'/includes/protect.inc.php'; +include_once MGR.'/includes/config.inc.php'; +include_once MGR.'/includes/document.parser.class.inc.php'; +$modx = new DocumentParser; +$modx->db->connect(); +$modx->getSettings(); +startCMSSession(); +$modx->minParserPasses=2; + +global $moduleName; +global $moduleVersion; +global $moduleSQLBaseFile; +global $moduleSQLDataFile; + +global $moduleChunks; +global $moduleTemplates; +global $moduleSnippets; +global $modulePlugins; +global $moduleModules; +global $moduleTVs; + +global $errors; + +$create = false; + +// set timout limit +@ set_time_limit(120); // used @ to prevent warning when using safe mode? + + +$installMode= intval($_POST['installmode']); +$installData = $_POST['installdata'] == "1" ? 1 : 0; + +// set session name variable +if (!isset ($site_sessionname)) { + $site_sessionname = 'SN' . uniqid(''); +} + +// get base path and url +$a = explode("install", str_replace("\\", "/", dirname($_SERVER["PHP_SELF"]))); +if (count($a) > 1) + array_pop($a); +$url = implode("install", $a); +reset($a); +$a = explode("install", str_replace("\\", "/", realpath(dirname(__FILE__)))); +if (count($a) > 1) + array_pop($a); +$pth = implode("install", $a); +unset ($a); +$base_url = $url . (substr($url, -1) != "/" ? "/" : ""); +$base_path = $pth . (substr($pth, -1) != "/" ? "/" : ""); + + +if(!function_exists('parseProperties')) { + // parses a resource property string and returns the result as an array + // duplicate of method in documentParser class + function parseProperties($propertyString) { + $parameter= array (); + if (!empty ($propertyString)) { + $tmpParams= explode("&", $propertyString); + for ($x= 0; $x < count($tmpParams); $x++) { + if (strpos($tmpParams[$x], '=', 0)) { + $pTmp= explode("=", $tmpParams[$x]); + $pvTmp= explode(";", trim($pTmp[1])); + if ($pvTmp[1] == 'list' && $pvTmp[3] != "") + $parameter[trim($pTmp[0])]= $pvTmp[3]; //list default + else + if ($pvTmp[1] != 'list' && $pvTmp[2] != "") + $parameter[trim($pTmp[0])]= $pvTmp[2]; + } + } + } + return $parameter; + } +} +$table_prefix = $modx->db->config['table_prefix']; +$setupPath = $modulePath; +include "{$setupPath}/setup.info.php"; +include "{$setupPath}/sqlParser.class.php"; +$sqlParser = new SqlParser(); + +// Install Templates +if (isset ($_POST['template']) || $installData) { + echo "

                      " . $_lang['templates'] . ":

                      "; + $selTemplates = $_POST['template']; + foreach ($moduleTemplates as $k=>$moduleTemplate) { + $installSample = in_array('sample', $moduleTemplate[6]) && $installData == 1; + if($installSample || in_array($k, $selTemplates)) { + $name = $modx->db->escape($moduleTemplate[0]); + $desc = $modx->db->escape($moduleTemplate[1]); + $category = $modx->db->escape($moduleTemplate[4]); + $locked = $modx->db->escape($moduleTemplate[5]); + $filecontent = $moduleTemplate[3]; + if (!file_exists($filecontent)) { + echo "

                        $name: " . $_lang['unable_install_template'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + } else { + // Create the category if it does not already exist + $category_id = getCreateDbCategory($category, $sqlParser); + + // Strip the first comment up top + $template = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', file_get_contents($filecontent), 1); + $template = $modx->db->escape($template); + + // See if the template already exists + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_templates` WHERE templatename='$name'"); + + if ($modx->db->getRecordCount($rs)) { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_templates` SET content='$template', description='$desc', category=$category_id, locked='$locked' WHERE templatename='$name';")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_templates` (templatename,description,content,category,locked) VALUES('$name','$desc','$template',$category_id,'$locked');")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + } + } +} + +// Install Template Variables +if (isset ($_POST['tv']) || $installData) { + echo "

                      " . $_lang['tvs'] . ":

                      "; + $selTVs = $_POST['tv']; + foreach ($moduleTVs as $k=>$moduleTV) { + $installSample = in_array('sample', $moduleTV[12]) && $installData == 1; + if($installSample || in_array($k, $selTVs)) { + $name = $modx->db->escape($moduleTV[0]); + $caption = $modx->db->escape($moduleTV[1]); + $desc = $modx->db->escape($moduleTV[2]); + $input_type = $modx->db->escape($moduleTV[3]); + $input_options = $modx->db->escape($moduleTV[4]); + $input_default = $modx->db->escape($moduleTV[5]); + $output_widget = $modx->db->escape($moduleTV[6]); + $output_widget_params = $modx->db->escape($moduleTV[7]); + $filecontent = $moduleTV[8]; + $assignments = $moduleTV[9]; + $category = $modx->db->escape($moduleTV[10]); + $locked = $modx->db->escape($moduleTV[11]); + + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_tmplvars` WHERE name='$name'"); + if ($modx->db->getRecordCount($rs)) { + $insert = true; + while($row = $modx->db->getRow($rs,'assoc')) { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_tmplvars` SET type='$input_type', caption='$caption', description='$desc', category=$category, locked=$locked, elements='$input_options', display='$output_widget', display_params='$output_widget_params', default_text='$input_default' WHERE id={$row['id']};")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + $insert = false; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + //$q = "INSERT INTO `" . $table_prefix . "site_tmplvars` (type,name,caption,description,category,locked,elements,display,display_params,default_text) VALUES('$input_type','$name','$caption','$desc',(SELECT (CASE COUNT(*) WHEN 0 THEN 0 ELSE `id` END) `id` FROM `" . $table_prefix . "categories` WHERE `category` = '$category'),$locked,'$input_options','$output_widget','$output_widget_params','$input_default');"; + $q = "INSERT INTO `" . $table_prefix . "site_tmplvars` (type,name,caption,description,category,locked,elements,display,display_params,default_text) VALUES('$input_type','$name','$caption','$desc',$category,$locked,'$input_options','$output_widget','$output_widget_params','$input_default');"; + if (!@ $modx->db->query($q)) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + + // add template assignments + if (trim($assignments) != ''){ + $assignments = explode(',', $assignments); + + if (count($assignments) > 0) { + + // remove existing tv -> template assignments + $ds=$modx->db->query("SELECT id FROM `".$table_prefix."site_tmplvars` WHERE name='$name' AND description='$desc';" ); + $row = $modx->db->getRow($ds,'assoc'); + $id = $row["id"]; + $modx->db->query('DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_tmplvar_templates` WHERE tmplvarid = \'' . $id . '\''); + + // add tv -> template assignments + foreach ($assignments as $assignment) { + $template = $modx->db->escape($assignment); + $where = "WHERE templatename='$template'"; + if ($template=='*') $where =''; + $ts = $modx->db->query("SELECT id FROM `".$table_prefix."site_templates` $where;" ); + if ($ds && $ts) { + $tRow = $modx->db->getRow($ts,'assoc'); + $templateId = $tRow['id']; + $modx->db->query("INSERT INTO `" . $table_prefix . "site_tmplvar_templates` (tmplvarid, templateid) VALUES($id, $templateId)"); + } + } + } + } + } + } +} + +// Install Chunks +if (isset ($_POST['chunk']) || $installData) { + echo "

                      " . $_lang['chunks'] . ":

                      "; + $selChunks = $_POST['chunk']; + foreach ($moduleChunks as $k=>$moduleChunk) { + $installSample = in_array('sample', $moduleChunk[5]) && $installData == 1; + if($installSample || in_array($k, $selChunks)) { + + $name = $modx->db->escape($moduleChunk[0]); + $desc = $modx->db->escape($moduleChunk[1]); + $category = $modx->db->escape($moduleChunk[3]); + $overwrite = $modx->db->escape($moduleChunk[4]); + $filecontent = $moduleChunk[2]; + + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_chunk'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // Create the category if it does not already exist + $category_id = getCreateDbCategory($category, $sqlParser); + + $chunk = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', file_get_contents($filecontent), 1); + $chunk = $modx->db->escape($chunk); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_htmlsnippets` WHERE name='$name'"); + $count_original_name = $modx->db->getRecordCount($rs); + if($overwrite == 'false') { + $newname = $name . '-' . str_replace('.', '_', $modx_version); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_htmlsnippets` WHERE name='$newname'"); + $count_new_name = $modx->db->getRecordCount($rs); + } + $update = $count_original_name > 0 && $overwrite == 'true'; + if ($update) { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_htmlsnippets` SET snippet='$chunk', description='$desc', category=$category_id WHERE name='$name';")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } elseif($count_new_name == 0) { + if($count_original_name > 0 && $overwrite == 'false') { + $name = $newname; + } + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_htmlsnippets` (name,description,snippet,category) VALUES('$name','$desc','$chunk',$category_id);")) { + $errors += 1; + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + } + } +} + +// Install Modules +if (isset ($_POST['module']) || $installData) { + echo "

                      " . $_lang['modules'] . ":

                      "; + $selModules = $_POST['module']; + foreach ($moduleModules as $k=>$moduleModule) { + $installSample = in_array('sample', $moduleModule[7]) && $installData == 1; + if($installSample || in_array($k, $selModules)) { + $name = $modx->db->escape($moduleModule[0]); + $desc = $modx->db->escape($moduleModule[1]); + $filecontent = $moduleModule[2]; + $properties = $modx->db->escape($moduleModule[3]); + $guid = $modx->db->escape($moduleModule[4]); + $shared = $modx->db->escape($moduleModule[5]); + $category = $modx->db->escape($moduleModule[6]); + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_module'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $module = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent), 2)); + // remove installer docblock + $module = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $module, 1); + $module = $modx->db->escape($module); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_modules` WHERE name='$name'"); + if ($modx->db->getRecordCount($rs)) { + $row = $modx->db->getRow($rs,'assoc'); + $props = propUpdate($properties,$modx->db->escape($row['properties'])); + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_modules` SET modulecode='$module', description='$desc', properties='$props', enable_sharedparams='$shared' WHERE name='$name';")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_modules` (name,description,modulecode,properties,guid,enable_sharedparams,category) VALUES('$name','$desc','$module','$properties','$guid','$shared', $category);")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + } + } +} + +// Install Plugins +if (isset ($_POST['plugin']) || $installData) { + echo "

                      " . $_lang['plugins'] . ":

                      "; + $selPlugs = $_POST['plugin']; + foreach ($modulePlugins as $k=>$modulePlugin) { + $installSample = in_array('sample', $modulePlugin[8]) && $installData == 1; + if($installSample || in_array($k, $selPlugs)) { + $name = $modx->db->escape($modulePlugin[0]); + $desc = $modx->db->escape($modulePlugin[1]); + $filecontent = $modulePlugin[2]; + $properties = $modx->db->escape($modulePlugin[3]); + $events = explode(",", $modulePlugin[4]); + $guid = $modx->db->escape($modulePlugin[5]); + $category = $modx->db->escape($modulePlugin[6]); + $leg_names = ''; + $disabled = $modulePlugin[9]; + if(array_key_exists(7, $modulePlugin)) { + // parse comma-separated legacy names and prepare them for sql IN clause + $leg_names = "'" . implode("','", preg_split('/\s*,\s*/', $modx->db->escape($modulePlugin[7]))) . "'"; + } + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_plugin'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // disable legacy versions based on legacy_names provided + if(!empty($leg_names)) { + $update_query = "UPDATE `" . $table_prefix . "site_plugins` SET disabled='1' WHERE name IN ($leg_names);"; + $rs = $modx->db->query($update_query); + } + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $plugin = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent), 2)); + // remove installer docblock + $plugin = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $plugin, 1); + $plugin = $modx->db->escape($plugin); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_plugins` WHERE name='$name'"); + if ($modx->db->getRecordCount($rs)) { + $insert = true; + while($row = $modx->db->getRow($rs,'assoc')) { + $props = propUpdate($properties,$modx->db->escape($row['properties'])); + if($row['description'] == $desc){ + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_plugins` SET plugincode='$plugin', description='$desc', properties='$props' WHERE id={$row['id']};")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + $insert = false; + } else { + if (!@ $modx->db->query("UPDATE `" . $table_prefix . "site_plugins` SET disabled='1' WHERE id={$row['id']};")) { + echo "

                      ".mysql_error()."

                      "; + return; + } + } + } + if($insert === true) { + if(!@$modx->db->query("INSERT INTO `".$table_prefix."site_plugins` (name,description,plugincode,properties,moduleguid,disabled,category) VALUES('$name','$desc','$plugin','$properties','$guid','0',$category);" )) { + echo "

                      ".mysql_error()."

                      "; + return; + } + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + + if (!@ $modx->db->query("INSERT INTO `" . $table_prefix . "site_plugins` (name,description,plugincode,properties,moduleguid,disabled,category) VALUES('$name','$desc','$plugin','$properties','$guid',$disabled,$category);")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + // add system events + if (count($events) > 0) { + $ds=$modx->db->query("SELECT id FROM `".$table_prefix."site_plugins` WHERE name='$name' AND description='$desc';" ); + if ($ds) { + $row = $modx->db->getRow($ds,'assoc'); + $id = $row["id"]; + // remove existing events + $modx->db->query('DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_plugin_events` WHERE pluginid = \'' . $id . '\''); + // add new events + $modx->db->query("INSERT INTO `" . $table_prefix . "site_plugin_events` (pluginid, evtid) SELECT '$id' as 'pluginid',se.id as 'evtid' FROM `" . $table_prefix . "system_eventnames` se WHERE name IN ('" . implode("','", $events) . "')"); + } + } + } + } + } +} + +// Install Snippets +if (isset ($_POST['snippet']) || $installData) { + echo "

                      " . $_lang['snippets'] . ":

                      "; + $selSnips = $_POST['snippet']; + foreach ($moduleSnippets as $k=>$moduleSnippet) { + + $installSample = in_array('sample', $moduleSnippet[5]) && $installData == 1; + if($installSample || in_array($k, $selSnips)) { + $name = $modx->db->escape($moduleSnippet[0]); + $desc = $modx->db->escape($moduleSnippet[1]); + $filecontent = $moduleSnippet[2]; + $properties = $modx->db->escape($moduleSnippet[3]); + $category = $modx->db->escape($moduleSnippet[4]); + if (!file_exists($filecontent)) + echo "

                        $name: " . $_lang['unable_install_snippet'] . " '$filecontent' " . $_lang['not_found'] . ".

                      "; + else { + + // Create the category if it does not already exist + $category = getCreateDbCategory($category, $sqlParser); + + $snippet = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent))); + // remove installer docblock + $snippet = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $snippet, 1); + $snippet = $modx->db->escape($snippet); + $rs = $modx->db->query("SELECT * FROM `" . $table_prefix . "site_snippets` WHERE name='$name'"); + + if ($modx->db->getRecordCount($rs)) { + + $row = $modx->db->getRow($rs,'assoc'); + $props = propUpdate($properties,$modx->db->escape($row['properties'])); + if (!$modx->db->query("UPDATE `" . $table_prefix . "site_snippets` SET snippet='$snippet', description='$desc', properties='$props' WHERE name='$name';")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['upgraded'] . "

                      "; + } else { + if (!$modx->db->query("INSERT INTO `" . $table_prefix . "site_snippets` (name,description,snippet,properties,category) VALUES('$name','$desc','$snippet','$properties',$category);")) { + echo "

                      " . mysql_error() . "

                      "; + return; + } + echo "

                        $name: " . $_lang['installed'] . "

                      "; + } + } + } + } +} + + +// install data +if ($installData && $moduleSQLDataFile) { + echo "

                      " . $_lang['installing_demo_site']; + $sqlParser->process($installPath.'/'.$moduleSQLDataFile); + // display database results + if ($sqlParser->installFailed == true) { + $errors += 1; + echo "" . $_lang['database_alerts'] . "

                      "; + echo "

                      " . $_lang['setup_couldnt_install'] . "

                      "; + echo "

                      " . $_lang['installation_error_occured'] . "

                      "; + for ($i = 0; $i < count($sqlParser->mysqlErrors); $i++) { + echo "" . $sqlParser->mysqlErrors[$i]["error"] . "" . $_lang['during_execution_of_sql'] . "" . strip_tags($sqlParser->mysqlErrors[$i]["sql"]) . ".


                      "; + } + echo "

                      "; + echo "

                      " . $_lang['some_tables_not_updated'] . "

                      "; + return; + } else { + echo "".$_lang['ok']."

                      "; + } +} + + +// always empty cache after install + +include_once MGR."/processors/cache_sync.class.processor.php"; +$sync = new synccache(); +$sync->setCachepath(MODX_BASE_PATH."assets/cache/"); +$sync->setReport(false); +$sync->emptyCache(); // first empty the cache + + + +// setup completed! +echo "

                      " . $_lang['installation_successful'] . "

                      "; + + + +// Property Update function +function propUpdate($new,$old){ + // Split properties up into arrays + $returnArr = array(); + $newArr = explode("&",$new); + $oldArr = explode("&",$old); + + foreach ($newArr as $k => $v) { + if(!empty($v)){ + $tempArr = explode("=",trim($v)); + $returnArr[$tempArr[0]] = $tempArr[1]; + } + } + foreach ($oldArr as $k => $v) { + if(!empty($v)){ + $tempArr = explode("=",trim($v)); + $returnArr[$tempArr[0]] = $tempArr[1]; + } + } + + // Make unique array + $returnArr = array_unique($returnArr); + + // Build new string for new properties value + foreach ($returnArr as $k => $v) { + $return .= "&$k=$v "; + } + + return $return; +} + +function getCreateDbCategory($category, $sqlParser) { + + global $modx; + $dbase = $modx->db->config['dbase']; + $table_prefix = $modx->db->config['table_prefix']; + $category_id = 0; + if(!empty($category)) { + $category = $modx->db->escape($category); + $rs = $modx->db->query("SELECT id FROM `".$table_prefix."categories` WHERE category = '".$category."'"); + if($modx->db->getRecordCount($rs) && ($row = $modx->db->getRow($rs,'assoc'))) { + $category_id = $row['id']; + } else { + $q = "INSERT INTO `".$table_prefix."categories` (`category`) VALUES ('{$category}');"; + $rs = $modx->db->query($q); + if($rs) { + $category_id = $modx->db->getInsertId($sqlParser->conn); + } + } + } + return $category_id; +} diff --git a/assets/modules/store/installer/jquery-1.4.4.min.js b/assets/modules/store/installer/jquery-1.4.4.min.js new file mode 100755 index 0000000000..c2dcfe7bfa --- /dev/null +++ b/assets/modules/store/installer/jquery-1.4.4.min.js @@ -0,0 +1,167 @@ +/*! + * jQuery JavaScript Library v1.4.4 + * http://jquery.com/ + * + * Copyright 2010, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2010, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Thu Nov 11 19:04:53 2010 -0500 + */ +(function(E,B){function ka(a,b,d){if(d===B&&a.nodeType===1){d=a.getAttribute("data-"+b);if(typeof d==="string"){try{d=d==="true"?true:d==="false"?false:d==="null"?null:!c.isNaN(d)?parseFloat(d):Ja.test(d)?c.parseJSON(d):d}catch(e){}c.data(a,b,d)}else d=B}return d}function U(){return false}function ca(){return true}function la(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ka(a){var b,d,e,f,h,l,k,o,x,r,A,C=[];f=[];h=c.data(this,this.nodeType?"events":"__events__");if(typeof h==="function")h= +h.events;if(!(a.liveFired===this||!h||!h.live||a.button&&a.type==="click")){if(a.namespace)A=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var J=h.live.slice(0);for(k=0;kd)break;a.currentTarget=f.elem;a.data=f.handleObj.data;a.handleObj=f.handleObj;A=f.handleObj.origHandler.apply(f.elem,arguments);if(A===false||a.isPropagationStopped()){d=f.level;if(A===false)b=false;if(a.isImmediatePropagationStopped())break}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(La, +"`").replace(Ma,"&")}function ma(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Na.test(b))return c.filter(b,e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function na(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this, +e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var l in e[h])c.event.add(this,h,e[h][l],e[h][l].data)}}})}function Oa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function oa(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?Pa:Qa,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a, +"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function da(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Ra.test(a)?e(a,h):da(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?e(a,""):c.each(b,function(f,h){da(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(pa.concat.apply([],pa.slice(0,b)),function(){d[this]=a});return d}function qa(a){if(!ea[a]){var b=c("<"+ +a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";ea[a]=d}return ea[a]}function fa(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var t=E.document,c=function(){function a(){if(!b.isReady){try{t.documentElement.doScroll("left")}catch(j){setTimeout(a,1);return}b.ready()}}var b=function(j,s){return new b.fn.init(j,s)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,l=/\S/,k=/^\s+/,o=/\s+$/,x=/\W/,r=/\d/,A=/^<(\w+)\s*\/?>(?:<\/\1>)?$/, +C=/^[\],:{}\s]*$/,J=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,I=/(?:^|:|,)(?:\s*\[)+/g,L=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,i=/(msie) ([\w.]+)/,n=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,q=[],u,y=Object.prototype.toString,F=Object.prototype.hasOwnProperty,M=Array.prototype.push,N=Array.prototype.slice,O=String.prototype.trim,D=Array.prototype.indexOf,R={};b.fn=b.prototype={init:function(j, +s){var v,z,H;if(!j)return this;if(j.nodeType){this.context=this[0]=j;this.length=1;return this}if(j==="body"&&!s&&t.body){this.context=t;this[0]=t.body;this.selector="body";this.length=1;return this}if(typeof j==="string")if((v=h.exec(j))&&(v[1]||!s))if(v[1]){H=s?s.ownerDocument||s:t;if(z=A.exec(j))if(b.isPlainObject(s)){j=[t.createElement(z[1])];b.fn.attr.call(j,s,true)}else j=[H.createElement(z[1])];else{z=b.buildFragment([v[1]],[H]);j=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this, +j)}else{if((z=t.getElementById(v[2]))&&z.parentNode){if(z.id!==v[2])return f.find(j);this.length=1;this[0]=z}this.context=t;this.selector=j;return this}else if(!s&&!x.test(j)){this.selector=j;this.context=t;j=t.getElementsByTagName(j);return b.merge(this,j)}else return!s||s.jquery?(s||f).find(j):b(s).find(j);else if(b.isFunction(j))return f.ready(j);if(j.selector!==B){this.selector=j.selector;this.context=j.context}return b.makeArray(j,this)},selector:"",jquery:"1.4.4",length:0,size:function(){return this.length}, +toArray:function(){return N.call(this,0)},get:function(j){return j==null?this.toArray():j<0?this.slice(j)[0]:this[j]},pushStack:function(j,s,v){var z=b();b.isArray(j)?M.apply(z,j):b.merge(z,j);z.prevObject=this;z.context=this.context;if(s==="find")z.selector=this.selector+(this.selector?" ":"")+v;else if(s)z.selector=this.selector+"."+s+"("+v+")";return z},each:function(j,s){return b.each(this,j,s)},ready:function(j){b.bindReady();if(b.isReady)j.call(t,b);else q&&q.push(j);return this},eq:function(j){return j=== +-1?this.slice(j):this.slice(j,+j+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(j){return this.pushStack(b.map(this,function(s,v){return j.call(s,v,s)}))},end:function(){return this.prevObject||b(null)},push:M,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var j,s,v,z,H,G=arguments[0]||{},K=1,Q=arguments.length,ga=false; +if(typeof G==="boolean"){ga=G;G=arguments[1]||{};K=2}if(typeof G!=="object"&&!b.isFunction(G))G={};if(Q===K){G=this;--K}for(;K0))if(q){var s=0,v=q;for(q=null;j=v[s++];)j.call(t,b);b.fn.trigger&&b(t).trigger("ready").unbind("ready")}}},bindReady:function(){if(!p){p=true;if(t.readyState==="complete")return setTimeout(b.ready,1);if(t.addEventListener){t.addEventListener("DOMContentLoaded",u,false);E.addEventListener("load",b.ready,false)}else if(t.attachEvent){t.attachEvent("onreadystatechange",u);E.attachEvent("onload", +b.ready);var j=false;try{j=E.frameElement==null}catch(s){}t.documentElement.doScroll&&j&&a()}}},isFunction:function(j){return b.type(j)==="function"},isArray:Array.isArray||function(j){return b.type(j)==="array"},isWindow:function(j){return j&&typeof j==="object"&&"setInterval"in j},isNaN:function(j){return j==null||!r.test(j)||isNaN(j)},type:function(j){return j==null?String(j):R[y.call(j)]||"object"},isPlainObject:function(j){if(!j||b.type(j)!=="object"||j.nodeType||b.isWindow(j))return false;if(j.constructor&& +!F.call(j,"constructor")&&!F.call(j.constructor.prototype,"isPrototypeOf"))return false;for(var s in j);return s===B||F.call(j,s)},isEmptyObject:function(j){for(var s in j)return false;return true},error:function(j){throw j;},parseJSON:function(j){if(typeof j!=="string"||!j)return null;j=b.trim(j);if(C.test(j.replace(J,"@").replace(w,"]").replace(I,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(j):(new Function("return "+j))();else b.error("Invalid JSON: "+j)},noop:function(){},globalEval:function(j){if(j&& +l.test(j)){var s=t.getElementsByTagName("head")[0]||t.documentElement,v=t.createElement("script");v.type="text/javascript";if(b.support.scriptEval)v.appendChild(t.createTextNode(j));else v.text=j;s.insertBefore(v,s.firstChild);s.removeChild(v)}},nodeName:function(j,s){return j.nodeName&&j.nodeName.toUpperCase()===s.toUpperCase()},each:function(j,s,v){var z,H=0,G=j.length,K=G===B||b.isFunction(j);if(v)if(K)for(z in j){if(s.apply(j[z],v)===false)break}else for(;H
                      a";var f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],l=t.createElement("select"), +k=l.appendChild(t.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:k.selected,deleteExpando:true,optDisabled:false,checkClone:false, +scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};l.disabled=true;c.support.optDisabled=!k.disabled;b.type="text/javascript";try{b.appendChild(t.createTextNode("window."+e+"=1;"))}catch(o){}a.insertBefore(b,a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}try{delete b.test}catch(x){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function r(){c.support.noCloneEvent= +false;d.detachEvent("onclick",r)});d.cloneNode(true).fireEvent("onclick")}d=t.createElement("div");d.innerHTML="";a=t.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var r=t.createElement("div");r.style.width=r.style.paddingLeft="1px";t.body.appendChild(r);c.boxModel=c.support.boxModel=r.offsetWidth===2;if("zoom"in r.style){r.style.display="inline";r.style.zoom= +1;c.support.inlineBlockNeedsLayout=r.offsetWidth===2;r.style.display="";r.innerHTML="
                      ";c.support.shrinkWrapBlocks=r.offsetWidth!==2}r.innerHTML="
                      t
                      ";var A=r.getElementsByTagName("td");c.support.reliableHiddenOffsets=A[0].offsetHeight===0;A[0].style.display="";A[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&A[0].offsetHeight===0;r.innerHTML="";t.body.removeChild(r).style.display= +"none"});a=function(r){var A=t.createElement("div");r="on"+r;var C=r in A;if(!C){A.setAttribute(r,"return;");C=typeof A[r]==="function"}return C};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();var ra={},Ja=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?ra:a;var e=a.nodeType,f=e?a[c.expando]:null,h= +c.cache;if(!(e&&!f&&typeof b==="string"&&d===B)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==B)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?ra:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando); +else if(d)delete f[e];else for(var l in a)delete a[l]}},acceptData:function(a){if(a.nodeName){var b=c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){var d=null;if(typeof a==="undefined"){if(this.length){var e=this[0].attributes,f;d=c.data(this[0]);for(var h=0,l=e.length;h-1)return true;return false},val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one"; +if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h=0;else if(c.nodeName(this,"select")){var A=c.makeArray(r);c("option",this).each(function(){this.selected=c.inArray(c(this).val(),A)>=0});if(!A.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true}, +attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return B;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==B;b=e&&c.props[b]||b;var h=Ta.test(b);if((b in a||a[b]!==B)&&e&&!h){if(f){b==="type"&&Ua.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");if(d===null)a.nodeType===1&&a.removeAttribute(b);else a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&& +b.specified?b.value:Va.test(a.nodeName)||Wa.test(a.nodeName)&&a.href?0:B;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return B;a=!c.support.hrefNormalized&&e&&h?a.getAttribute(b,2):a.getAttribute(b);return a===null?B:a}});var X=/\.(.*)$/,ia=/^(?:textarea|input|select)$/i,La=/\./g,Ma=/ /g,Xa=/[^\w\s.|`]/g,Ya=function(a){return a.replace(Xa,"\\$&")},ua={focusin:0,focusout:0}; +c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;else if(!d)return;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var l=a.nodeType?"events":"__events__",k=h[l],o=h.handle;if(typeof k==="function"){o=k.handle;k=k.events}else if(!k){a.nodeType||(h[l]=h=function(){});h.events=k={}}if(!o)h.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem, +arguments):B};o.elem=a;b=b.split(" ");for(var x=0,r;l=b[x++];){h=f?c.extend({},f):{handler:d,data:e};if(l.indexOf(".")>-1){r=l.split(".");l=r.shift();h.namespace=r.slice(0).sort().join(".")}else{r=[];h.namespace=""}h.type=l;if(!h.guid)h.guid=d.guid;var A=k[l],C=c.event.special[l]||{};if(!A){A=k[l]=[];if(!C.setup||C.setup.call(a,e,r,o)===false)if(a.addEventListener)a.addEventListener(l,o,false);else a.attachEvent&&a.attachEvent("on"+l,o)}if(C.add){C.add.call(a,h);if(!h.handler.guid)h.handler.guid= +d.guid}A.push(h);c.event.global[l]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,l=0,k,o,x,r,A,C,J=a.nodeType?"events":"__events__",w=c.data(a),I=w&&w[J];if(w&&I){if(typeof I==="function"){w=I;I=I.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in I)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[l++];){r=f;k=f.indexOf(".")<0;o=[];if(!k){o=f.split(".");f=o.shift();x=RegExp("(^|\\.)"+ +c.map(o.slice(0).sort(),Ya).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(A=I[f])if(d){r=c.event.special[f]||{};for(h=e||0;h=0){a.type=f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType=== +8)return B;a.result=B;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){var l;e=a.target;var k=f.replace(X,""),o=c.nodeName(e,"a")&&k=== +"click",x=c.event.special[k]||{};if((!x._default||x._default.call(d,a)===false)&&!o&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[k]){if(l=e["on"+k])e["on"+k]=null;c.event.triggered=true;e[k]()}}catch(r){}if(l)e["on"+k]=l;c.event.triggered=false}}},handle:function(a){var b,d,e,f;d=[];var h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+ +d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var l=d.length;f-1?c.map(a.options,function(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ia.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=xa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===B||f===e))if(e!=null||f){a.type="change";a.liveFired= +B;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",xa(a))}},setup:function(){if(this.type=== +"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ia.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ia.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}t.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){ua[b]++===0&&t.addEventListener(a,d,true)},teardown:function(){--ua[b]=== +0&&t.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=B}var l=b==="one"?c.proxy(f,function(o){c(this).unbind(o,l);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var k=this.length;h0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",function(){for(var a in c.cache)if(c.cache[a].handle)try{c.event.remove(c.cache[a].handle.elem)}catch(b){}}); +(function(){function a(g,i,n,m,p,q){p=0;for(var u=m.length;p0){F=y;break}}y=y[g]}m[p]=F}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,l=true;[0,0].sort(function(){l=false;return 0});var k=function(g,i,n,m){n=n||[];var p=i=i||t;if(i.nodeType!==1&&i.nodeType!==9)return[];if(!g||typeof g!=="string")return n;var q,u,y,F,M,N=true,O=k.isXML(i),D=[],R=g;do{d.exec("");if(q=d.exec(R)){R=q[3];D.push(q[1]);if(q[2]){F=q[3]; +break}}}while(q);if(D.length>1&&x.exec(g))if(D.length===2&&o.relative[D[0]])u=L(D[0]+D[1],i);else for(u=o.relative[D[0]]?[i]:k(D.shift(),i);D.length;){g=D.shift();if(o.relative[g])g+=D.shift();u=L(g,u)}else{if(!m&&D.length>1&&i.nodeType===9&&!O&&o.match.ID.test(D[0])&&!o.match.ID.test(D[D.length-1])){q=k.find(D.shift(),i,O);i=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]}if(i){q=m?{expr:D.pop(),set:C(m)}:k.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&i.parentNode?i.parentNode:i,O);u=q.expr?k.filter(q.expr, +q.set):q.set;if(D.length>0)y=C(u);else N=false;for(;D.length;){q=M=D.pop();if(o.relative[M])q=D.pop();else M="";if(q==null)q=i;o.relative[M](y,q,O)}}else y=[]}y||(y=u);y||k.error(M||g);if(f.call(y)==="[object Array]")if(N)if(i&&i.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&k.contains(i,y[g])))n.push(u[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&n.push(u[g]);else n.push.apply(n,y);else C(y,n);if(F){k(F,p,n,m);k.uniqueSort(n)}return n};k.uniqueSort=function(g){if(w){h= +l;g.sort(w);if(h)for(var i=1;i0};k.find=function(g,i,n){var m;if(!g)return[];for(var p=0,q=o.order.length;p":function(g,i){var n,m=typeof i==="string",p=0,q=g.length;if(m&&!/\W/.test(i))for(i=i.toLowerCase();p=0))n||m.push(u);else if(n)i[q]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},CHILD:function(g){if(g[1]==="nth"){var i=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=i[1]+(i[2]||1)-0;g[3]=i[3]-0}g[0]=e++;return g},ATTR:function(g,i,n, +m,p,q){i=g[1].replace(/\\/g,"");if(!q&&o.attrMap[i])g[1]=o.attrMap[i];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,i,n,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,i);else{g=k.filter(g[3],i,n,true^p);n||m.push.apply(m,g);return false}else if(o.match.POS.test(g[0])||o.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled=== +true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,i,n){return!!k(n[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"=== +g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},setFilters:{first:function(g,i){return i===0},last:function(g,i,n,m){return i===m.length-1},even:function(g,i){return i%2===0},odd:function(g,i){return i%2===1},lt:function(g,i,n){return in[3]-0},nth:function(g,i,n){return n[3]- +0===i},eq:function(g,i,n){return n[3]-0===i}},filter:{PSEUDO:function(g,i,n,m){var p=i[1],q=o.filters[p];if(q)return q(g,n,i,m);else if(p==="contains")return(g.textContent||g.innerText||k.getText([g])||"").indexOf(i[3])>=0;else if(p==="not"){i=i[3];n=0;for(m=i.length;n=0}},ID:function(g,i){return g.nodeType===1&&g.getAttribute("id")===i},TAG:function(g,i){return i==="*"&&g.nodeType===1||g.nodeName.toLowerCase()=== +i},CLASS:function(g,i){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(i)>-1},ATTR:function(g,i){var n=i[1];n=o.attrHandle[n]?o.attrHandle[n](g):g[n]!=null?g[n]:g.getAttribute(n);var m=n+"",p=i[2],q=i[4];return n==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&n!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,i,n,m){var p=o.setFilters[i[2]]; +if(p)return p(g,n,i,m)}}},x=o.match.POS,r=function(g,i){return"\\"+(i-0+1)},A;for(A in o.match){o.match[A]=RegExp(o.match[A].source+/(?![^\[]*\])(?![^\(]*\))/.source);o.leftMatch[A]=RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[A].source.replace(/\\(\d+)/g,r))}var C=function(g,i){g=Array.prototype.slice.call(g,0);if(i){i.push.apply(i,g);return i}return g};try{Array.prototype.slice.call(t.documentElement.childNodes,0)}catch(J){C=function(g,i){var n=0,m=i||[];if(f.call(g)==="[object Array]")Array.prototype.push.apply(m, +g);else if(typeof g.length==="number")for(var p=g.length;n";n.insertBefore(g,n.firstChild);if(t.getElementById(i)){o.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:B:[]};o.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}n.removeChild(g); +n=g=null})();(function(){var g=t.createElement("div");g.appendChild(t.createComment(""));if(g.getElementsByTagName("*").length>0)o.find.TAG=function(i,n){var m=n.getElementsByTagName(i[1]);if(i[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")o.attrHandle.href=function(i){return i.getAttribute("href",2)};g=null})();t.querySelectorAll&& +function(){var g=k,i=t.createElement("div");i.innerHTML="

                      ";if(!(i.querySelectorAll&&i.querySelectorAll(".TEST").length===0)){k=function(m,p,q,u){p=p||t;m=m.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!u&&!k.isXML(p))if(p.nodeType===9)try{return C(p.querySelectorAll(m),q)}catch(y){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var F=p.getAttribute("id"),M=F||"__sizzle__";F||p.setAttribute("id",M);try{return C(p.querySelectorAll("#"+M+" "+m),q)}catch(N){}finally{F|| +p.removeAttribute("id")}}return g(m,p,q,u)};for(var n in g)k[n]=g[n];i=null}}();(function(){var g=t.documentElement,i=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,n=false;try{i.call(t.documentElement,"[test!='']:sizzle")}catch(m){n=true}if(i)k.matchesSelector=function(p,q){q=q.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(p))try{if(n||!o.match.PSEUDO.test(q)&&!/!=/.test(q))return i.call(p,q)}catch(u){}return k(q,null,null,[p]).length>0}})();(function(){var g= +t.createElement("div");g.innerHTML="
                      ";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){o.order.splice(1,0,"CLASS");o.find.CLASS=function(i,n,m){if(typeof n.getElementsByClassName!=="undefined"&&!m)return n.getElementsByClassName(i[1])};g=null}}})();k.contains=t.documentElement.contains?function(g,i){return g!==i&&(g.contains?g.contains(i):true)}:t.documentElement.compareDocumentPosition? +function(g,i){return!!(g.compareDocumentPosition(i)&16)}:function(){return false};k.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var L=function(g,i){for(var n,m=[],p="",q=i.nodeType?[i]:i;n=o.match.PSEUDO.exec(g);){p+=n[0];g=g.replace(o.match.PSEUDO,"")}g=o.relative[g]?g+"*":g;n=0;for(var u=q.length;n0)for(var h=d;h0},closest:function(a,b){var d=[],e,f,h=this[0];if(c.isArray(a)){var l,k={},o=1;if(h&&a.length){e=0;for(f=a.length;e-1:c(h).is(e))d.push({selector:l,elem:h,level:o})}h= +h.parentNode;o++}}return d}l=cb.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},index:function(a){if(!a||typeof a==="string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var d=typeof a==="string"?c(a,b||this.context): +c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a, +2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a, +b){c.fn[a]=function(d,e){var f=c.map(this,b,d);Za.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||ab.test(e))&&$a.test(a))f=f.reverse();return this.pushStack(f,a,bb.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===B||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&& +e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var za=/ jQuery\d+="(?:\d+|null)"/g,$=/^\s+/,Aa=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Ba=/<([\w:]+)/,db=/\s]+\/)>/g,P={option:[1, +""],legend:[1,"
                      ","
                      "],thead:[1,"","
                      "],tr:[2,"","
                      "],td:[3,"","
                      "],col:[2,"","
                      "],area:[1,"",""],_default:[0,"",""]};P.optgroup=P.option;P.tbody=P.tfoot=P.colgroup=P.caption=P.thead;P.th=P.td;if(!c.support.htmlSerialize)P._default=[1,"div
                      ","
                      "];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d= +c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==B)return this.empty().append((this[0]&&this[0].ownerDocument||t).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this}, +wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})}, +prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b, +this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild); +return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(za,"").replace(fb,'="$1">').replace($,"")],e)[0]}else return this.cloneNode(true)});if(a===true){na(this,b);na(this.find("*"),b.find("*"))}return b},html:function(a){if(a===B)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(za,""):null; +else if(typeof a==="string"&&!Ca.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!P[(Ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Aa,"<$1>");try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?h.cloneNode(true):h)}k.length&&c.each(k,Oa)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:t;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===t&&!Ca.test(a[0])&&(c.support.checkClone||!Da.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append", +prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=d.length;f0?this.clone(true):this).get();c(d[f])[b](l);e=e.concat(l)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||t;if(typeof b.createElement==="undefined")b=b.ownerDocument|| +b[0]&&b[0].ownerDocument||t;for(var f=[],h=0,l;(l=a[h])!=null;h++){if(typeof l==="number")l+="";if(l){if(typeof l==="string"&&!eb.test(l))l=b.createTextNode(l);else if(typeof l==="string"){l=l.replace(Aa,"<$1>");var k=(Ba.exec(l)||["",""])[1].toLowerCase(),o=P[k]||P._default,x=o[0],r=b.createElement("div");for(r.innerHTML=o[1]+l+o[2];x--;)r=r.lastChild;if(!c.support.tbody){x=db.test(l);k=k==="table"&&!x?r.firstChild&&r.firstChild.childNodes:o[1]===""&&!x?r.childNodes:[];for(o=k.length- +1;o>=0;--o)c.nodeName(k[o],"tbody")&&!k[o].childNodes.length&&k[o].parentNode.removeChild(k[o])}!c.support.leadingWhitespace&&$.test(l)&&r.insertBefore(b.createTextNode($.exec(l)[0]),r.firstChild);l=r.childNodes}if(l.nodeType)f.push(l);else f=c.merge(f,l)}}if(d)for(h=0;f[h];h++)if(e&&c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script")))); +d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,l=0,k;(k=a[l])!=null;l++)if(!(k.nodeName&&c.noData[k.nodeName.toLowerCase()]))if(d=k[c.expando]){if((b=e[d])&&b.events)for(var o in b.events)f[o]?c.event.remove(k,o):c.removeEvent(k,o,b.handle);if(h)delete k[c.expando];else k.removeAttribute&&k.removeAttribute(c.expando);delete e[d]}}});var Ea=/alpha\([^)]*\)/i,gb=/opacity=([^)]*)/,hb=/-([a-z])/ig,ib=/([A-Z])/g,Fa=/^-?\d+(?:px)?$/i, +jb=/^-?\d/,kb={position:"absolute",visibility:"hidden",display:"block"},Pa=["Left","Right"],Qa=["Top","Bottom"],W,Ga,aa,lb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===B)return this;return c.access(this,a,b,true,function(d,e,f){return f!==B?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true, +zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),l=a.style,k=c.cssHooks[h];b=c.cssProps[h]||h;if(d!==B){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!k||!("set"in k)||(d=k.set(a,d))!==B)try{l[b]=d}catch(o){}}}else{if(k&&"get"in k&&(f=k.get(a,false,e))!==B)return f;return l[b]}}},css:function(a,b,d){var e,f=c.camelCase(b), +h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==B)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=e[f]},camelCase:function(a){return a.replace(hb,lb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=oa(d,b,f);else c.swap(d,kb,function(){h=oa(d,b,f)});if(h<=0){h=W(d,b,b);if(h==="0px"&&aa)h=aa(d,b,b); +if(h!=null)return h===""||h==="auto"?"0px":h}if(h<0||h==null){h=d.style[b];return h===""||h==="auto"?"0px":h}return typeof h==="string"?h:h+"px"}},set:function(d,e){if(Fa.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return gb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f= +d.filter||"";d.filter=Ea.test(f)?f.replace(Ea,e):d.filter+" "+e}};if(t.defaultView&&t.defaultView.getComputedStyle)Ga=function(a,b,d){var e;d=d.replace(ib,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return B;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};if(t.documentElement.currentStyle)aa=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],h=a.style;if(!Fa.test(f)&&jb.test(f)){d=h.left; +e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f===""?"auto":f};W=Ga||aa;if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var mb=c.now(),nb=/)<[^<]*)*<\/script>/gi, +ob=/^(?:select|textarea)/i,pb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,qb=/^(?:GET|HEAD)$/,Ra=/\[\]$/,T=/\=\?(&|$)/,ja=/\?/,rb=/([?&])_=[^&]*/,sb=/^(\w+:)?\/\/([^\/?#]+)/,tb=/%20/g,ub=/#.*$/,Ha=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ha)return Ha.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=b;b=null}else if(typeof b=== +"object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(l,k){if(k==="success"||k==="notmodified")h.html(f?c("
                      ").append(l.responseText.replace(nb,"")).find(f):l.responseText);d&&h.each(d,[l.responseText,k,l])}});return this},serialize:function(){return c.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?c.makeArray(this.elements):this}).filter(function(){return this.name&& +!this.disabled&&(this.checked||ob.test(this.nodeName)||pb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).get()}});c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){c.fn[b]=function(d){return this.bind(b,d)}});c.extend({get:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})}, +getScript:function(a,b){return c.get(a,null,b,"script")},getJSON:function(a,b,d){return c.get(a,b,d,"json")},post:function(a,b,d,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},ajaxSetup:function(a){c.extend(c.ajaxSettings,a)},ajaxSettings:{url:location.href,global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,xhr:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html", +script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),l=qb.test(h);b.url=b.url.replace(ub,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ja.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data|| +!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+mb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var k=E[d];E[d]=function(m){if(c.isFunction(k))k(m);else{E[d]=B;try{delete E[d]}catch(p){}}f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);r&&r.removeChild(A)}}if(b.dataType==="script"&&b.cache===null)b.cache= +false;if(b.cache===false&&l){var o=c.now(),x=b.url.replace(rb,"$1_="+o);b.url=x+(x===b.url?(ja.test(b.url)?"&":"?")+"_="+o:"")}if(b.data&&l)b.url+=(ja.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");o=(o=sb.exec(b.url))&&(o[1]&&o[1].toLowerCase()!==location.protocol||o[2].toLowerCase()!==location.host);if(b.dataType==="script"&&h==="GET"&&o){var r=t.getElementsByTagName("head")[0]||t.documentElement,A=t.createElement("script");if(b.scriptCharset)A.charset=b.scriptCharset; +A.src=b.url;if(!d){var C=false;A.onload=A.onreadystatechange=function(){if(!C&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){C=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);A.onload=A.onreadystatechange=null;r&&A.parentNode&&r.removeChild(A)}}}r.insertBefore(A,r.firstChild);return B}var J=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!l||a&&a.contentType)w.setRequestHeader("Content-Type", +b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}o||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(I){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&& +c.triggerGlobal(b,"ajaxSend",[w,b]);var L=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){J||c.handleComplete(b,w,e,f);J=true;if(w)w.onreadystatechange=c.noop}else if(!J&&w&&(w.readyState===4||m==="timeout")){J=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d|| +c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&Function.prototype.call.call(g,w);L("abort")}}catch(i){}b.async&&b.timeout>0&&setTimeout(function(){w&&!J&&L("timeout")},b.timeout);try{w.send(l||b.data==null?null:b.data)}catch(n){c.handleError(b,w,null,n);c.handleComplete(b,w,e,f)}b.async||L();return w}},param:function(a,b){var d=[],e=function(h,l){l=c.isFunction(l)?l():l;d[d.length]= +encodeURIComponent(h)+"="+encodeURIComponent(l)};if(b===B)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)da(f,a[f],b,e);return d.join("&").replace(tb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess", +[b,a])},handleComplete:function(a,b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"), +e=a.getResponseHeader("Etag");if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}}); +if(E.ActiveXObject)c.ajaxSettings.xhr=function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var ea={},vb=/^(?:toggle|show|hide)$/,wb=/^([+\-]=)?([\d+.\-]+)(.*)$/,ba,pa=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show", +3),a,b,d);else{d=0;for(var e=this.length;d=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b, +d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a* +Math.PI)/2+0.5)*e+d}},timers:[],fx:function(a,b,d){this.options=b;this.elem=a;this.prop=d;if(!b.orig)b.orig={}}});c.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this);(c.fx.step[this.prop]||c.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(l){return f.step(l)} +var f=this,h=c.fx;this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;e.elem=this.elem;if(e()&&c.timers.push(e)&&!ba)ba=setInterval(h.tick,h.interval)},show:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.show=true;this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur());c(this.elem).show()},hide:function(){this.options.orig[this.prop]=c.style(this.elem,this.prop);this.options.hide=true; +this.custom(this.cur(),0)},step:function(a){var b=c.now(),d=true;if(a||b>=this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;for(var e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(k,o){f.style["overflow"+o]=h.overflow[k]})}this.options.hide&&c(this.elem).hide();if(this.options.hide|| +this.options.show)for(var l in this.options.curAnim)c.style(this.elem,l,this.options.orig[l]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,0,1,this.options.duration);this.now=this.start+(this.end-this.start)*this.pos;this.update()}return true}};c.extend(c.fx,{tick:function(){for(var a= +c.timers,b=0;b-1;e={};var x={};if(o)x=f.position();l=o?x.top:parseInt(l,10)||0;k=o?x.left:parseInt(k,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+l;if(b.left!=null)e.left=b.left-h.left+k;"using"in b?b.using.call(a, +e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Ia.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||t.body;a&&!Ia.test(a.nodeName)&& +c.css(a,"position")==="static";)a=a.offsetParent;return a})}});c.each(["Left","Top"],function(a,b){var d="scroll"+b;c.fn[d]=function(e){var f=this[0],h;if(!f)return null;if(e!==B)return this.each(function(){if(h=fa(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=fa(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase(); +c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(l){var k=c(this);k[d](e.call(this,l,k[d]()))});if(c.isWindow(f))return f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b];else if(f.nodeType===9)return Math.max(f.documentElement["client"+ +b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]);else if(e===B){f=c.css(f,d);var h=parseFloat(f);return c.isNaN(h)?f:h}else return this.css(d,typeof e==="string"?e:e+"px")}})})(window); diff --git a/assets/modules/store/installer/lang/bulgarian.inc.php b/assets/modules/store/installer/lang/bulgarian.inc.php new file mode 100755 index 0000000000..cee1a3772a --- /dev/null +++ b/assets/modules/store/installer/lang/bulgarian.inc.php @@ -0,0 +1,173 @@ +assets/cache : '; +$_lang["checking_if_cache_file2_writable"] = 'Проверка дали може да се пише във файла assets/cache/sitePublishing.idx.php : '; +$_lang["checking_if_cache_file_writable"] = 'Проверка дали може да се пише във файла assets/cache/siteCache.idx.php : '; +$_lang["checking_if_cache_writable"] = 'Проверка дали в директорията assets/cache може да се пише: '; +$_lang["checking_if_config_exist_and_writable"] = 'Проверка дали '.MGR_DIR.'/includes/config.inc.php съществува и може да се пише в него: '; +$_lang["checking_if_export_exists"] = 'Проверка дали съществува директорията assets/export : '; +$_lang["checking_if_export_writable"] = 'Проверка дали в директорията assets/export може да се пише: '; +$_lang["checking_if_images_exist"] = 'Проверка дали съществува директорията assets/images : '; +$_lang["checking_if_images_writable"] = 'Проверка дали в директорията assets/images може да се пише: '; +$_lang["checking_mysql_strict_mode"] = 'Проверка дали MySQL е в strict mode: '; +$_lang["checking_mysql_version"] = 'Проверка на версията на MySQL: '; +$_lang["checking_php_version"] = 'Проверка на PHP версията: '; +$_lang["checking_registerglobals"] = 'Проверка дали Register_Globals са изключени: '; +$_lang["checking_registerglobals_note"] = 'Тази конфигурация прави сайта ви много по-уязвим към Cross Site Scripting (XSS) атаки. Трябва да говорите с вашия доставчик за забраняване на тази настройка, което става обикновено по един от трите начина: модифициране на основния php.ini файл, добавяне на правила в .htaccess файла в основната директория (root) на вашата MODx инсталация, или добавяне на собствен php.ini във всяка директория на вашата инсталация, за да препокрие основния файл. Въпреки, това ще можете да инсталирате MODx, но се считайте за предупредени.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Проверка дали сесиите са правилно конфигурирани: '; +$_lang["checking_table_prefix"] = 'Проверка на префикса на таблицата `'; +$_lang["chunks"] = 'Чънкове'; +$_lang["config_permissions_note"] = 'За нови Linux/Unix инсталации, моля, създайте празен файл с име config.inc.php в директорията '.MGR_DIR.'/includes/ и задайте права на файла 0666.'; +$_lang["connection_screen_collation"] = 'Колация:'; +$_lang["connection_screen_connection_information"] = 'Информация за връзката'; +$_lang["connection_screen_connection_method"] = 'Начин на свързване - метод:'; +$_lang["connection_screen_database_connection_information"] = 'Информация за БД'; +$_lang["connection_screen_database_connection_note"] = 'Моля, въведете името на БД, създадена за MODX. В случай, че няма такава БД, инсталаторът ще се опита да я създаде. Създаването може да е неуспешно, тъй като зависи от конфигурацията на MySQL или правата за достъп до БД на потребителя.'; +$_lang["connection_screen_database_host"] = 'Хостване на БД:'; +$_lang["connection_screen_database_login"] = 'Име за връзка към БД:'; +$_lang["connection_screen_database_name"] = 'Име на БД:'; +$_lang["connection_screen_database_pass"] = 'Парола за БД:'; +$_lang["connection_screen_database_test_connection"] = 'Кликнете, за да създадете БД или да тествате връзката към нея'; +$_lang["connection_screen_default_admin_email"] = 'Em@il адрес:'; +$_lang["connection_screen_default_admin_login"] = 'Потребителско Име:'; +$_lang["connection_screen_default_admin_note"] = 'Трябва да въведете данните за главния администраторски акаунт. Попълнете името и паролата си тук, за да не ги забравите. Ще имате нужда от тях за логване след като приключи инсталацията.'; +$_lang["connection_screen_default_admin_password"] = 'Парола:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Потвърди паролата:'; +$_lang["connection_screen_default_admin_user"] = 'Администратор по подразбиране'; +$_lang["connection_screen_server_connection_information"] = 'Връзка към сървъра и информация за логване'; +$_lang["connection_screen_server_connection_note"] = 'Моля, въведете името на сървъра, потребителското име и паролата и тогава тествайте връзката.'; +$_lang["connection_screen_server_test_connection"] = 'Кликнете, за да тествате връзката към сървъра и достъпните колации.'; +$_lang["connection_screen_table_prefix"] = 'Префикс на таблицата:'; +$_lang["creating_database_connection"] = 'Създаване на връзка към БД: '; +$_lang["database_alerts"] = 'БД - внимание!'; +$_lang["database_connection_failed"] = 'Връзката към БД неуспешна!'; +$_lang["database_connection_failed_note"] = 'Моля, проверете данните за връзка с БД и опитайте отново.'; +$_lang["database_use_failed"] = 'Базата от Данни не може да бъде избрана!'; +$_lang["database_use_failed_note"] = 'Моля, проверете правата за достъп до БД на определения потребител и опитайте отново.'; +$_lang["during_execution_of_sql"] = ' по време на изпълнение на SQL условие '; +$_lang["encoding"] = 'utf-8'; +$_lang["error"] = 'грешка'; +$_lang["errors"] = 'грешки'; +$_lang["failed"] = 'Неуспешно!'; +$_lang["iagree_box"] = 'Съгласен съм с условията на използване на този лиценз.'; +$_lang["install"] = 'Инсталиране'; +$_lang["install_overwrite"] = 'Инсталиране/Презаписване - '; +$_lang["install_results"] = 'Резултати от инсталацията'; +$_lang["install_update"] = 'Инсталиране/Обновяване - '; +$_lang["installation_error_occured"] = 'Следните грешки възникнаха по време на инсталацията'; +$_lang["installation_install_new_copy"] = 'Инсталиране на ново копие на '; +$_lang["installation_install_new_note"] = '. Моля, имайте предвид, че някоя опция може да презапише данните вътре в БД.'; +$_lang["installation_mode"] = 'Режим на Инсталация'; +$_lang["installation_new_installation"] = 'Нова Инсталация'; +$_lang["installation_note"] = 'Забележка: След логване в Мениджъра, трябва да редактирате и съхраните настройките на Системата Конфигурция преди да преглеждате сайта си, като изберете Администрация -> Системна Конфигурация в Мениджъра на MODx.'; +$_lang["installation_successful"] = 'Инсталацията беше успешна!'; +$_lang["installation_upgrade_advanced"] = 'Обновяване за напреднали
                      (редактиране на конфигурацията
                      на БД)
                      '; +$_lang["installation_upgrade_advanced_note"] = 'За напреднали администратори на БД или при преместване на сървъри с различна колация на БД. Трябва да знаете пълното име на БД, потребителското име, парола и подробности за връзката/колацията.'; +$_lang["installation_upgrade_existing"] = 'Обновяване на инсталация'; +$_lang["installation_upgrade_existing_note"] = 'Обновяване на налични файлове и БД.'; +$_lang["installed"] = 'Инсталиран'; +$_lang["installing_demo_site"] = 'Инсталиране на демо сайт: '; +$_lang["language_code"] = 'bg'; +$_lang["loading"] = 'Зареждане...'; +$_lang["modules"] = 'Модули'; +$_lang["modx_footer1"] = '© 2005-2011 MODx Content Management Framework (CMF) проект. Всички права запазени. MODx е лицензиран под GNU GPL.'; +$_lang["modx_footer2"] = 'MODx е свободен софтуер. Бъдете креативни и свикнете да работите с MODx. Имайте предвид, че ако решите да правите промени и да предоставяте копие от вашия модифициран MODx, изходния код трябва да е свободен!'; +$_lang["modx_install"] = 'MODx » Инсталиране'; +$_lang["modx_requires_php"] = ', и MODx върви на PHP 4.2.0 или по-висока'; +$_lang["mysql_5051"] = ' MySQL версията на сървъра е 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Има известни спорни въпроси с MySQL 5.0.51. Препоръчително е да обновите преди да продължите.'; +$_lang["mysql_version_is"] = ' MySQL версията ви е: '; +$_lang["none"] = 'Никой'; +$_lang["not_found"] = 'не е намерен'; +$_lang["ok"] = 'ОК!'; +$_lang["optional_items"] = 'Допълнителни опции'; +$_lang["optional_items_note"] = 'Моля, изберете допълнителни опции и кликнете на Инсталиране на:'; +$_lang["php_security_notice"] = 'Бележки за сигурността

                      Тъй като MODx ще работи на вашата PHP версия, използването на MODx на тази версия не се препоръчва. Вашата версия на PHP е уязвима по отношение на дупки в сигурността. Моля,обновете към PHP версия 4.3.8 или по-висока. Препоръчително е да обновите версията си за сигурността на вашия сайт.

                      '; +$_lang["please_correct_error"] = '. Моля, коригирайте грешката'; +$_lang["please_correct_errors"] = '. Моля, коригирайте грешките'; +$_lang["plugins"] = 'Плъгини'; +$_lang["preinstall_validation"] = 'Потвърждаване на инсталацията'; +$_lang["remove_install_folder_auto"] = 'Изтрий директория install и файловете, които се намират в нея
                       (Тази операция изисква да бъдат гарантирани права за изтриване върху директорията install).'; +$_lang["remove_install_folder_manual"] = 'Моля, запомнете да изтриете директорията "install" преди да се логнете в Мениджъра.'; +$_lang["retry"] = 'Опитай отново'; +$_lang["running_database_updates"] = 'Обновяване на БД: '; +$_lang["sample_web_site"] = 'Примерен Уеб Сайт'; +$_lang["sample_web_site_note"] = 'Моля, имайте предвид, че това ще презапише съществуващите документи и ресурси.'; +$_lang["setup_cannot_continue"] = 'За съжаление Инсталаторът не може да продължи в момента поради '; +$_lang["setup_couldnt_install"] = 'Инсталаторът на MODx не може да инсталира/промени някои таблици вътре в избраната БД.'; +$_lang["setup_database"] = 'Инсталаторът ще направи опит да конфигирира БД:
                      '; +$_lang["setup_database_create_connection"] = 'Създаване на връзка към БД: '; +$_lang["setup_database_create_connection_failed"] = 'Връзката към БД неуспешна!'; +$_lang["setup_database_create_connection_failed_note"] = 'Моля, проверете данните за логване към БД и опитайте отново.'; +$_lang["setup_database_creating_tables"] = 'Създаване на таблици в БД: '; +$_lang["setup_database_creation"] = 'Създаване на БД `'; +$_lang["setup_database_creation_failed"] = 'Създаването на БД е неуспешно!'; +$_lang["setup_database_creation_failed_note"] = ' - Инсталаторът не успя да създаде БД!'; +$_lang["setup_database_creation_failed_note2"] = 'Инсталаторът не успя да създаде БД, а също не намери съществуваща БД със същото име. Вероятно, сигурността при вашия хостинг доставчик не позволява външни скриптове да създават БД. Моля, създайте БД според условията на вашия хостинг доставчик и стартирайте Инсталатора отново.'; +$_lang["setup_database_selection"] = 'Избиране на БД `'; +$_lang["setup_database_selection_failed"] = 'Избирането на БД е неуспешно...'; +$_lang["setup_database_selection_failed_note"] = 'БД не съществува. Инсталаторът ще се опита да я създаде.'; +$_lang["snippets"] = 'Снипети'; +$_lang["some_tables_not_updated"] = 'Някои таблици не бяха обновени. Това може да е вследствие на предишни модификации.'; +$_lang["status_checking_database"] = 'Проверка на БД: '; +$_lang["status_connecting"] = ' Свързване с хостинг доставчика: '; +$_lang["status_failed"] = 'Неуспешно!'; +$_lang["status_failed_could_not_create_database"] = 'Неуспешно - не може да бъде създадена БД'; +$_lang["status_failed_table_prefix_already_in_use"] = 'Неуспешно - префикса на таблицата вече се използва!'; +$_lang["status_passed"] = 'Успешно - БД е избрана'; +$_lang["status_passed_database_created"] = 'Успешно - БД е създадена'; +$_lang["status_passed_server"] = 'Успешно - колациите са достъпни'; +$_lang["strict_mode"] = ' MySQL сървъра е в strict mode!'; +$_lang["strict_mode_error"] = 'MODx изисква strict mode да е disabled. Това можете да направите чрез настройките за режима на MySQL , като редактирате файла my.cnf или като се свържете със администратора на сървъра.'; +$_lang["summary_setup_check"] = 'Направени бяха редица проверки, за да сме сигурни, че инсталацията може да започне.'; +$_lang["table_prefix_already_inuse"] = ' - Префиксът на таблицата вече се използва в тази БД!'; +$_lang["table_prefix_already_inuse_note"] = 'Инсталаторът не може да инсталира в избраната БД, тъй като в нея вече съществуват таблици със зададения префикс. Моля, изберете нов префикс за таблицата и стартирайте Инсталатора отново.'; +$_lang["table_prefix_not_exist"] = ' - Префиксът на таблицата не съществува в тази БД!'; +$_lang["table_prefix_not_exist_note"] = 'Инсталаторът не може да инсталира в избраната БД, тъй като тя не съдържа таблици със зададения префикс, които да бъдат обновявени. Моля, изберете съществуващ префикс на таблица и стартирайте Инсталатора отново.'; +$_lang["templates"] = 'Шаблони'; +$_lang["to_log_into_content_manager"] = 'За да се логнете в Мениджъра ('.MGR_DIR.'/index.php) кликнете на бутона `Затваряне` .'; +$_lang["toggle"] = 'Включване'; +$_lang["unable_install_chunk"] = 'Не успя да инсталира Чънк. Файл'; +$_lang["unable_install_module"] = 'Не успя да инсталира Модул. Файл'; +$_lang["unable_install_plugin"] = 'Не успя да инсталира Плъгин. Файл'; +$_lang["unable_install_snippet"] = 'Не успя да инсталира Снипет. Файл'; +$_lang["unable_install_template"] = 'Не успя да инсталира Шаблон. Файл'; +$_lang["upgrade_note"] = 'Забележка: Преди да преглеждате сайта си, трябва да се логнете в Мениджъра с администраторския акаунт, след това да прегледате и съхраните настройките на Системната Конфигурация.'; +$_lang["upgraded"] = 'Обновен'; +$_lang["visit_forum"] = ', посетете MODx Форумите.'; +$_lang["welcome_message_text"] = 'Тази програма ще ви води през останалата част от инсталацията.'; +$_lang["welcome_message_welcome"] = 'Добре дошли в Инсталатора на MODx.'; +$_lang["writing_config_file"] = 'Записване на конфигурационния файл: '; +$_lang["you_running_php"] = ' - PHP версията ви е '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/czech.inc.php b/assets/modules/store/installer/lang/czech.inc.php new file mode 100755 index 0000000000..d7b71fd9fe --- /dev/null +++ b/assets/modules/store/installer/lang/czech.inc.php @@ -0,0 +1,196 @@ +/assets/cache a /assets/cache/rss: '; +$_lang["checking_if_cache_file_writable"] = 'Kontrola zda lze zapisovat do souboru /assets/cache/siteCache.idx.php: '; +$_lang["checking_if_cache_file2_writable"] = 'Kontrola zda lze zapisovat do souboru /assets/cache/sitePublishing.idx.php: '; +$_lang["checking_if_cache_writable"] = 'Kontrola zda lze zapisovat do adresářů /assets/cache a /assets/cache/rss: '; +$_lang["checking_if_config_exist_and_writable"] = 'Kontrola zda existuje soubor /'.MGR_DIR.'/includes/config.inc.php a lze do něj zapisovat: '; +$_lang["checking_if_export_exists"] = 'Kontrola existence adresáře /assets/export: '; +$_lang["checking_if_export_writable"] = 'Kontrola zda lze zapisovat do adresáře /assets/export: '; +$_lang["checking_if_images_exist"] = 'Kontrola zda existují adresáře /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup a /assets/.thumbs: '; +$_lang["checking_if_images_writable"] = 'Kontrola zda lze zapisovat do adresářů /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup a /assets/.thumbs: '; +$_lang["checking_mysql_strict_mode"] = 'Kontrola MySQL strict sql_mode: '; +$_lang["checking_mysql_version"] = 'Kontrola verze MySQL: '; +$_lang["checking_php_version"] = 'Kontrola verze PHP: '; +$_lang["checking_registerglobals"] = 'Kontrola zda je nastavení Register_Globals nastaveno na Off: '; +$_lang["checking_registerglobals_note"] = 'Díky tomtuto nastavení je Váš portál mnohem více náchylný k hackerským útokům typu Cross Site Scripting (XSS). Měli by jste pohovořit se svým poskytovatelem hostingu a zjistit co je možné udělat k deaktivaci tohoto nastavení.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Kontrola zda jsou správně nakonfigurovány session: '; +$_lang["checking_table_prefix"] = 'Kontrola prefixů tabulek `'; +$_lang["chunks"] = 'Chunky'; +$_lang["config_permissions_note"] = 'V nových instalacích Linux/Unix vytvořte prázdná soubor s názvem config.inc.php v adresáři /'.MGR_DIR.'/includes/ s atributy 0666.'; +$_lang["connection_screen_collation"] = 'Porovnání:'; +$_lang["connection_screen_connection_method"] = 'Způsob připojení:'; +$_lang["connection_screen_database_connection_information"] = 'Informace o databázi'; +$_lang["connection_screen_database_connection_note"] = 'Zadejte název databáze, kterou chcete použít nebo kterou chcete vytvořit pro tuto instalaci systému MODx. Pokud databáze neexistuje pokusí se ji instalátor vytvořit. Toto se nemusí povést v závislosti na nastavení MySQL nebo na uživatelských právech pro vaši doménu/instalaci.'; +$_lang["connection_screen_database_host"] = 'Hostitel databáze:'; +$_lang["connection_screen_database_info"] = 'Databázové informace'; +$_lang["connection_screen_database_login"] = 'Uživatelské jméno do databáze:'; +$_lang["connection_screen_database_name"] = 'Název databáze:'; +$_lang["connection_screen_database_pass"] = 'Heslo do databáze:'; +$_lang["connection_screen_database_test_connection"] = 'Vytvořit nebo otestovat zvolenou databázi.'; +$_lang["connection_screen_default_admin_email"] = 'Email administrátora:'; +$_lang["connection_screen_default_admin_login"] = 'Uživatelské jméno administrátora:'; +$_lang["connection_screen_default_admin_note"] = 'Nyní je třeba, aby jste zadali údaje pro výchozí administrátorský účet. Vyplněte uživatelské jméno a heslo, které si zapamatujte. Tyto údaje budete potřebovat po skončení instalace pro přístup do administračního rozhraní.'; +$_lang["connection_screen_default_admin_password"] = 'Heslo administrátora:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Ověření hesla:'; +$_lang["connection_screen_default_admin_user"] = 'Výchozí účet administrátora'; +$_lang["connection_screen_defaults"] = 'Nastavení výchozího administrátora'; +$_lang["connection_screen_server_connection_information"] = 'Údaje pro připojení a přihlášení k databázi'; +$_lang["connection_screen_server_connection_note"] = 'Před otestováním databáze zadejte hostitele (název serveru nebo IP adresu), uživatelské jméno a heslo.'; +$_lang["connection_screen_server_test_connection"] = 'Otestovat připojení k databázi a zobrazit porovnání.'; +$_lang["connection_screen_table_prefix"] = 'Prefix tabulek:'; +$_lang["creating_database_connection"] = 'Vytvářím připojení k databázi: '; +$_lang["database_alerts"] = 'Upozornění databáze!'; +$_lang["database_connection_failed"] = 'Připojení k databázi se nezdařilo!'; +$_lang["database_connection_failed_note"] = 'Zkontrolujte přihlašovací údaje k databázi a zkuste to znovu.'; +$_lang["database_use_failed"] = 'Nelze vybrat tuto databázi!'; +$_lang["database_use_failed_note"] = 'Zkontrolujte oprávnění daného uživatele pro tuto databázi a zkuste to znovu.'; +$_lang["default_language"] = 'Výchozí jazyk správce obsahu'; +$_lang["default_language_description"] = 'Toto bude výchozí jazyk, který bude použit v MODx správci obsahu.'; +$_lang["during_execution_of_sql"] = ' při provádění SQL '; +$_lang["encoding"] = 'utf-8'; //charset encoding for html header +$_lang["error"] = 'chyba'; +$_lang["errors"] = 'chyby'; +$_lang["failed"] = 'SELHALO!'; +$_lang["help"] = 'Nápověda!'; +$_lang["help_link"] = 'http://www.modxcms.cz/forums/'; +$_lang["help_title"] = 'Pomoc při instalaci využitím MODx diskuse'; +$_lang["iagree_box"] = 'Souhlasím s podmínkami MODx licence. Pro překlady GPL verze 2 licence, navštivte prosím stránku GNU Operating System.'; +$_lang["install"] = 'Instalovat'; +$_lang["install_overwrite"] = 'Instalovat/Přepsat'; +$_lang["install_results"] = 'Výsledky instalace'; +$_lang["install_update"] = 'Instalovat/Aktualizovat'; +$_lang["installation_error_occured"] = 'Během instalace došlo k následujícím chybám'; +$_lang["installation_install_new_copy"] = 'Instalace nové kopie '; +$_lang["installation_install_new_note"] = 'Pamatujte, že tato volba může přepsat data ve Vaší databázi.'; +$_lang["installation_mode"] = 'Typ instalace'; +$_lang["installation_new_installation"] = 'Nová instalace'; +$_lang["installation_note"] = 'Poznámka: Po přihlášení do správce obsahu byste měli nejdříve upravit a uložit konfiguraci systému v menu Nástroje -> Konfigurace systému.'; +$_lang["installation_successful"] = 'Instalace byla úspěšná!'; +$_lang["installation_upgrade_advanced"] = 'Rozšířená aktualizace'; +$_lang["installation_upgrade_advanced_note"] = 'Pro pokročilé správce nebo při přechodu na server s jiným kódováním znaků databáze. Je třeba znát celý název databáze, uživatelské jméno, heslo a detaily připojení/porovnávání.'; +$_lang["installation_upgrade_existing"] = 'Aktualizace existující instalace'; +$_lang["installation_upgrade_existing_note"] = 'Aktualizace Vašich současných souborů a databáze.'; +$_lang["installed"] = 'Nainstalováno'; +$_lang["installing_demo_site"] = 'Instalovat ukázkový portál: '; +$_lang["language_code"] = 'cs'; // for html element e.g. +$_lang["loading"] = 'Načítám...'; +$_lang["modules"] = 'Moduly'; +$_lang["modx_footer1"] = '© 2005-2011 the MODx Content Management Framework (CMF) projekt. Všechna práva vyhrazena. MODx je licencován pod GNU GPL.'; +$_lang["modx_footer2"] = 'MODx je free software. Doporučujeme Vám být kreativní a používat MODx jak jen uznáte za vhodné. Pouze se ujistěte, že pokud uděláte nějaké změny a budete chtít upravený MODx distribuovat dál, musí být zdrojové kódy volně přístupné!!'; +$_lang["modx_install"] = 'MODx » Instalace'; +$_lang["modx_requires_php"] = ', a MODx vyžaduje PHP 4.2.0 nebo novější'; +$_lang["mysql_5051"] = ' Verze MySQL serveru je 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Jsou známy problémy s MySQL 5.0.51. Je doporučeno, abyste před pokračováním aktualizovali.'; +$_lang["mysql_version_is"] = ' Verze Vaší MySQL je: '; +$_lang["no"] = 'Ne'; +$_lang["none"] = 'Žádný'; +$_lang["not_found"] = 'nenalezen'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Volitelné položky'; +$_lang["optional_items_note"] = 'Vyberte si položky, které chcete při instalaci nainstalovat/aktualizovat a klikněte na "Instalovat":'; +$_lang["php_security_notice"] = 'Bezpečnostní oznámení

                      Dokud bude běžet MODx na verzi PHP (%s), nedoporučujeme vám MODx v této verzi používat. Vaše verze PHP je zranitelná mnoha bezpečnostními dírami. Aktualizujte PHP na verzi 4.3.11 nebo novější, které obsahují záplaty těchto děr. Dopuručujeme Vám aktualizovat na tuto verzi pro zvýšení bezpečnosti Vašich vlastních webových stránek.

                      '; +$_lang["please_correct_error"] = '. Opravte chybu'; +$_lang["please_correct_errors"] = '.Opravte chyby'; +$_lang["plugins"] = 'Pluginy'; +$_lang["preinstall_validation"] = 'Před-instalační kontrola'; +$_lang["recommend_setting_change_title"] = 'Doporučené změny konfigurace'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Změna nastavení: Ověřit hlavičky HTTP_REFERER?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Na portálu není nastaveno ověřování hlaviček HTTP_REFERER pří přístupu do správce obsahu. Důrazně doporučujeme aktivovat toto nastavení, které vede ke snížení rizika útoků CSRF (Cross Site Request Forgery).'; +$_lang["remove_install_folder_auto"] = 'Odstranit z portálu adresář instalátoru a jeho soubory
                       (Tato operace vyžaduje práva pro mazání přidělená adresáři instalátoru).'; +$_lang["remove_install_folder_manual"] = 'Před tím než se přihlásíte do správce obsahu nezapomeňte odstranit adresář "instalátoru".'; +$_lang["retry"] = 'Znovu'; +$_lang["running_database_updates"] = 'Probíhající aktualizace databáze: '; +$_lang["sample_web_site"] = 'Ukázkový portál'; +$_lang["sample_web_site_note"] = 'Berte na vědomí, že tato možnost přepíše existující dokumenty a zdroje.'; +$_lang["session_problem"] = 'Byl detekován problém se session na Vašem serveru. Proberte tento problém se svým administrátorem serveru.'; +$_lang["session_problem_try_again"] = 'Zkusit znovu?'; +$_lang["setup_cannot_continue"] = 'Bohužel, instalátor nemůže pokračovat vzhledem k výše uvedeným '; +$_lang["setup_couldnt_install"] = 'MODx instalátor nemůže instalovat/změnit některé tabulky ve zvolené databázi.'; +$_lang["setup_database"] = 'Instalátor se nyní pokusí nastavit databázi:
                      '; +$_lang["setup_database_create_connection"] = 'Vytvářím připojení k databázi: '; +$_lang["setup_database_create_connection_failed"] = 'Připojení k databázi se nezdařilo!'; +$_lang["setup_database_create_connection_failed_note"] = 'Zkontrolujte si údaje pro přihlášení k databázi a zkuste to znovu.'; +$_lang["setup_database_creating_tables"] = 'Vytvářím databázové tabulky: '; +$_lang["setup_database_creation"] = 'Vytvářím databázi `'; +$_lang["setup_database_creation_failed"] = 'Vytvoření databáze se nezdařilo!'; +$_lang["setup_database_creation_failed_note"] = ' - Instalátor nemohl vytvořit databázi!'; +$_lang["setup_database_creation_failed_note2"] = 'Instalátor nemohl vytvořit databázi a ani nenalezl existující databázi s tímto názvem. Pravděpodobně je to proto, že bezpečnostní politika Vašeho poskytovatele hostingu nepovoluje vytváření databáze externími skripty. Vytvořte databázi dle postupu poskytovatele hostingu a spusťte instalátor znovu.'; +$_lang["setup_database_selection"] = 'Vybírám databázi `'; +$_lang["setup_database_selection_failed"] = 'Vybrání databáze se nezdařilo...'; +$_lang["setup_database_selection_failed_note"] = 'Databáze neexistuje. Instalátor se ji pokusí vytvořit.'; +$_lang["snippets"] = 'Snippety'; +$_lang["some_tables_not_updated"] = 'Některé tabulky nebyly aktualizovány. To může být způsobeno předchozími úpravami těchto tabulek.'; +$_lang["status_checking_database"] = 'Kontrola databáze: '; +$_lang["status_connecting"] = ' Připojení k hostiteli: '; +$_lang["status_failed"] = 'nezdařilo se!'; +$_lang["status_failed_could_not_create_database"] = 'nezdařilo se - nelze vytvořit databázi'; +$_lang["status_failed_database_collation_does_not_match"] = 'nezdařilo se - nesoulad porovnání databáze; použijte SET NAMES nebo vyberte %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'nezdařilo se - zvolený prefix tabulek se již používá!'; +$_lang["status_passed"] = 'v pořádku - databáze vybrána'; +$_lang["status_passed_database_created"] = 'v pořádku - databáze vytvořena'; +$_lang["status_passed_server"] = 'v pořádku - porovnání je dostupné'; +$_lang["strict_mode"] = ' MySQL strict sql_mode je aktivní!'; +$_lang["strict_mode_error"] = 'Určité vlastnosti systému MODx nemusí fungovat správně jestliže je STRICT_TRANS_TABLES sql_mode neaktivní. MySQL mód lze změnit úpravou souboru "my.cnf" nebo kontaktujte administrátora serveru.'; +$_lang["summary_setup_check"] = 'Instalátor provedl řadu kontrol, které je nutné provést před spuštěním instalátoru.'; +$_lang["system_configuration"] = 'Konfigurace systému'; +$_lang["system_configuration_validate_referer_description"] = 'Nastavení Ověřit hlavičky HTTP_REFERER je doporučeno a může ochránit Váš portál před útoky CSRF, ale na některých serverech může zapříčinit nedostupnost MODx správce obsahu.'; +$_lang["table_prefix_already_inuse"] = ' - Prefix tabulek se již v této databázi používá!'; +$_lang["table_prefix_already_inuse_note"] = 'Instalátor nemohl provést instalaci do vybrané databáze, neboť ta již obsahuje tabulky s tímto prefixem. Vyberte nový prefix tabulek a spusťte instalátor znovu.'; +$_lang["table_prefix_not_exist"] = ' - Tabulky s daným prefixem v této databázi neexistují!'; +$_lang["table_prefix_not_exist_note"] = 'Instalátor nemohl provést instalaci do vybrané databáze, neboť neobsahuje tabulky se zadaným prefixem. Vyberte existující prefix tabulek a spusťte instalátor znovu.'; +$_lang["templates"] = 'Šablony'; +$_lang["to_log_into_content_manager"] = 'Pro přihlášení do správce obsahu ('.MGR_DIR.'/index.php) klikněte na tlačítko "Zavřít".'; +$_lang["toggle"] = 'Přepnutí'; +$_lang['tvs'] = 'Template Variables'; +$_lang["unable_install_chunk"] = 'Nepodařilo se nainstalovat chunk. Soubor'; +$_lang["unable_install_module"] = 'Nepodařilo se nainstalovat modul. Soubor'; +$_lang["unable_install_plugin"] = 'Nepodařilo se nainstalovat plugin. Soubor'; +$_lang["unable_install_snippet"] = 'Nepodařilo se nainstalovat snippet. Soubor'; +$_lang["unable_install_template"] = 'Nepodařilo se nainstalovat šablonu. Soubor'; +$_lang["upgrade_note"] = 'Poznámka: Před tím než začnete procházet web by jste se měl přihlásit do MODx správce obsahu pod administrátorským účtem a zkontrolovat Konfiguraci systému.'; +$_lang["upgraded"] = 'Aktualizováno'; +$_lang["validate_referer_title"] = 'Ověřit hlavičky HTTP_REFERER?'; +$_lang["visit_forum"] = ', navštivte MODx diskusi.'; +$_lang["warning"] = 'VAROVÁNÍ!'; +$_lang["welcome_message_start"] = 'Nejdříve si vyberte typ instalace:'; +$_lang["welcome_message_text"] = 'Tento program Vás provede zbytkem instalace.'; +$_lang["welcome_message_welcome"] = 'Vítejte v instalačním programu systému MODx.'; +$_lang["writing_config_file"] = 'Zapisuji konfigurační soubor: '; +$_lang["yes"] = 'Ano'; +$_lang["you_running_php"] = ' - Váš server běží na PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/danish.inc.php b/assets/modules/store/installer/lang/danish.inc.php new file mode 100755 index 0000000000..2a8d41cd39 --- /dev/null +++ b/assets/modules/store/installer/lang/danish.inc.php @@ -0,0 +1,195 @@ +/assets/cache og /assets/cache/rss mapperne er oprettet: '; +$_lang["checking_if_cache_file_writable"] = 'Kontrollerer om /assets/cache/siteCache.idx.php filen er skrivbar: '; +$_lang["checking_if_cache_file2_writable"] = 'Kontrollerer om /assets/cache/sitePublishing.idx.php filen er skrivbar: '; +$_lang["checking_if_cache_writable"] = 'Kontrollerer om /assets/cache og /assets/cache/rss mapperne er skrivbare: '; +$_lang["checking_if_config_exist_and_writable"] = 'Kontrollerer om /'.MGR_DIR.'/includes/config.inc.php er oprettet og er skrivbar: '; +$_lang["checking_if_export_exists"] = 'Kontrollerer om /assets/export mappen er oprettet: '; +$_lang["checking_if_export_writable"] = 'Kontrollerer om /assets/export mappen er skrivbar: '; +$_lang["checking_if_images_exist"] = 'Kontrollerer om /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup og /assets/.thumbs mapperne er oprettet: '; +$_lang["checking_if_images_writable"] = 'Kontrollerer om /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup og /assets/.thumbs mapperne er skrivbare: '; +$_lang["checking_mysql_strict_mode"] = 'Kontrollerer om MySQL håndterer strict sql_mode: '; +$_lang["checking_mysql_version"] = 'Kontrollerer MySQL versionen: '; +$_lang["checking_php_version"] = 'Kontrollerer PHP versionen: '; +$_lang["checking_registerglobals"] = 'Kontrollerer om Register_Globals er slået fra: '; +$_lang["checking_registerglobals_note"] = 'Denne konfiguration medfører at dit website kan blive mere udsat for Cross Site Scripting (XSS) angreb end normalt. Du bør bede dit hosting firma om at ændre denne indstilling. Normalt kan det gøres på een af følgende måder: Ændrer den globale php.ini fil, tilføje regler til en .htaccess fil i websitets rod, eller oprette specielle php.ini filer i alle mapperne i denne installation - og dem er der mange af! Du kan stadigvæk installere MODx, men nu er du blevet advaret!'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Kontrollerer om sessions er korrekt konfigureret: '; +$_lang["checking_table_prefix"] = 'Kontrollerer database tabellernes præfiks `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'Ved nyinstallation under Linux eller Unix, skal du oprette en tom fil, med navnet config.inc.php i /'.MGR_DIR.'/includes/ mappen, med filrettighederne indstillet til 0666.'; +$_lang["connection_screen_collation"] = 'Collation:'; +$_lang["connection_screen_connection_method"] = 'Connection\'s metode:'; +$_lang["connection_screen_database_connection_information"] = 'Database information'; +$_lang["connection_screen_database_connection_note"] = 'Indtast navnet på databasen der skal bruges, eller som der skal oprettes til denne MODx installation. Hvis der ikke er oprettet en database, vil installationen forsøge at oprette den. Dette kan dog ikke altid gennemføres pga. brugerrettighederne i den pågældende database.'; +$_lang["connection_screen_database_host"] = 'Database host:'; +$_lang["connection_screen_database_info"] = 'Database Information'; +$_lang["connection_screen_database_login"] = 'Database brugernavn:'; +$_lang["connection_screen_database_name"] = 'Database navn:'; +$_lang["connection_screen_database_pass"] = 'Database kodeord:'; +$_lang["connection_screen_database_test_connection"] = 'Opret eller kontroller den valgte database.'; +$_lang["connection_screen_default_admin_email"] = 'Administratorens e-mail:'; +$_lang["connection_screen_default_admin_login"] = 'Administratorens brugernavn:'; +$_lang["connection_screen_default_admin_note"] = 'Her skal du indtaste oplysninger til brug for hovedadministrationskontoen. Du skal indtaste dit eget navn, samt et kodeord som du kan huske. Du skal efterfølgende bruge disse oplysninger for at kunne logge ind, når installationen er gennemført.'; +$_lang["connection_screen_default_admin_password"] = 'Administrator kodeord:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Bekræft kodeordet:'; +$_lang["connection_screen_default_admin_user"] = 'Hovedadministrator'; +$_lang["connection_screen_defaults"] = 'Standard indstillinger i MODx CMS\'et'; +$_lang["connection_screen_server_connection_information"] = 'Server forbindelse og log ind information'; +$_lang["connection_screen_server_connection_note"] = 'Indtast database serverens navn (server navnet eller IP addressen), brugernavn samt kodeord før forbindelsen kontrolleres.'; +$_lang["connection_screen_server_test_connection"] = 'Kontroller database serverens forbindelse og se collations.'; +$_lang["connection_screen_table_prefix"] = 'Tabel præfiks:'; +$_lang["creating_database_connection"] = 'Opretter forbindelse til databasen: '; +$_lang["database_alerts"] = 'Database advarsler!'; +$_lang["database_connection_failed"] = 'Der opstod en fejl under oprettelse af forbindelsen til databasen!'; +$_lang["database_connection_failed_note"] = 'Kontroller log ind informationerne til databasen og prøv igen.'; +$_lang["database_use_failed"] = 'Databasen kunne ikke vælges!'; +$_lang["database_use_failed_note"] = 'Kontroller databasens rettigheder for den angivne bruger og prøv igen.'; +$_lang["default_language"] = 'Standard sprog i CMS\'et'; +$_lang["default_language_description"] = 'Dette er standard sproget der vil blive brugt i CMS\'et.'; +$_lang["during_execution_of_sql"] = ' under eksekvering af SQL kommandoen '; +$_lang["encoding"] = 'utf-8'; //charset encoding for html header +$_lang["error"] = 'fejl'; +$_lang["errors"] = 'fejl'; +$_lang["failed"] = 'IKKE GENNEMFØRT!'; +$_lang["help"] = 'Hjælp!'; +$_lang["help_link"] = 'http://forums.modx.com/'; +$_lang["help_title"] = 'Hjælp til installation i MODx\'s fora'; +$_lang["iagree_box"] = 'Jeg er enig i betingelserne for MODx licensen. For at se oversættelser af GPL version 2 licensen, besøg venligst GNU Operating System websitet.'; +$_lang["install"] = 'Installer'; +$_lang["install_overwrite"] = 'Installer / Overskriv'; +$_lang["install_results"] = 'Resultatet af installationen'; +$_lang["install_update"] = 'Installer / Opdater'; +$_lang["installation_error_occured"] = 'Følgende fejl opstod under installationen'; +$_lang["installation_install_new_copy"] = 'Installer en ny kopi af '; +$_lang["installation_install_new_note"] = 'Bemærk at dette vil medføre at alt eksisterende indhold i databasen bliver overskrevet.'; +$_lang["installation_mode"] = 'Installationstype'; +$_lang["installation_new_installation"] = 'Ny installation'; +$_lang["installation_note"] = 'Bemærk: Efter at du har logget ind i CMS\'et, skal du redigere og gemme konfigurationsindstillingerne - før du besøger websitet - under menupunktet: Værktøjer -> Konfiguration i MODx administrationsmodulet.'; +$_lang["installation_successful"] = 'Installationen blev gennemført uden fejl!'; +$_lang["installation_upgrade_advanced"] = 'Advanceret opdatering'; +$_lang["installation_upgrade_advanced_note"] = 'Til brug for avancerede database administratore, eller hvis man skal kopiere indholdet til en anden database server med et andet forbindelses karaktersæt.
                      Du skal kende database navnet, brugernavnet, kodeordet samt forbindelses/collation\'s informationerne.'; +$_lang["installation_upgrade_existing"] = 'Opdater den eksisterende installation'; +$_lang["installation_upgrade_existing_note"] = 'Dette opdatere dine nuværende filer samt databasen.'; +$_lang["installed"] = 'Installeret'; +$_lang["installing_demo_site"] = 'Installerer demo website: '; +$_lang["language_code"] = 'da'; // for html element e.g. +$_lang["loading"] = 'Indlæser...'; +$_lang["modules"] = 'Moduler'; +$_lang["modx_footer1"] = '© 2005-2011 MODx Content Mangement Framework (CMF) projektet. Alle rettigheder forbeholdes. MODx er licenseret af GNU GPL.'; +$_lang["modx_footer2"] = 'MODx er gratis software. Vi opfordrer dig til at være kreativ og at du bruger MODx som det passer dig. Men vær opmærksom på at hvis du ændrer i MODx og vælger at offenliggøre ændringerne skal kildekoden være tilgængelige og gratis for alle!'; +$_lang["modx_install"] = 'MODx » Installation'; +$_lang["modx_requires_php"] = ', og MODx kræver PHP 4.2.0 eller nyere'; +$_lang["mysql_5051"] = ' MySQL server versionen er 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Der er adskillige problemer med MySQL 5.0.51. Og det anbefales at du opgradere MySQL, inden du fortsætter installationen.'; +$_lang["mysql_version_is"] = ' Din MySQL version er: '; +$_lang["no"] = 'Nej'; +$_lang["none"] = 'Ingen'; +$_lang["not_found"] = 'ikke fundet'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Valgbare muligheder'; +$_lang["optional_items_note"] = 'Vælg installationsindstillingerne - og klik på Installer:'; +$_lang["php_security_notice"] = 'Bemærkning om sikkerhed

                      Selvom MODx kan køre på denne PHP version, er det ikke anbefalet. Der er adskillige sikkerhedsfejl på denne PHP version som vil gøre dit website sårbart. Opgrader venligst PHP til version 4.3.8 eller nyere, da dette lukker disse sikkerhedshuller. Af hensyn til sikkerheden på dit website, anbefales det at du opdaterer PHP!

                      '; +$_lang["please_correct_error"] = '. Ret venligst fejlen'; +$_lang["please_correct_errors"] = '. Ret venligst fejlene'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Præ-installation kontrol'; +$_lang["recommend_setting_change_title"] = 'Anbefalet konfigurationsændring'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Konfigurationsændring: Validere HTTP_REFERER headers?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Dit website er ikke konfigureret til at validere indgående HTTP_REFERER forespørgelser til administrationsmodulet. Det anbefales på det kraftigeste at aktivere denne indstilling, for at nedsætte risici for CSRF (Cross Site Request Forgery) angreb.'; +$_lang["remove_install_folder_auto"] = 'Fjern installationsmappen samt filer i denne fra websitet
                       (Dette kræver at der er tildelt rettigheder til at slette på denne mappe).'; +$_lang["remove_install_folder_manual"] = 'Husk at slette "install" mappen inden du logger ind i MODx CMS\'et.'; +$_lang["retry"] = 'Prøv igen'; +$_lang["running_database_updates"] = 'Gennemfører opdatering af databasen: '; +$_lang["sample_web_site"] = 'Demo website'; +$_lang["sample_web_site_note"] = 'Vær opmærksom på at dette vil overskrive eksisterende dokumenter og ressourcer.'; +$_lang["session_problem"] = 'Der er fundet et problem med håndteringen af serverens sessions. Kontakt serverens administrator, for at få rettet fejlen.'; +$_lang["session_problem_try_again"] = 'Vil du prøve igen?'; +$_lang["setup_cannot_continue"] = 'Desværre kan installationen ikke fortsætte på grund af ovenstående '; +$_lang["setup_couldnt_install"] = 'Installationsprogrammet til MODx kunne ikke oprette/modificere nogle af tabellerne i den valgte database.'; +$_lang["setup_database"] = 'Installationsprogrammet vil nu prøve at oprette databasen samt indholdet i databasen:
                      '; +$_lang["setup_database_create_connection"] = 'Opretter forbindelse til databasen: '; +$_lang["setup_database_create_connection_failed"] = 'Der opstod en fejl under oprettelsen af forbindelse til databasen!'; +$_lang["setup_database_create_connection_failed_note"] = 'Kontroller log ind informationerne og prøv igen.'; +$_lang["setup_database_creating_tables"] = 'Opretter tabellerne i databasen: '; +$_lang["setup_database_creation"] = 'Opretter database `'; +$_lang["setup_database_creation_failed"] = 'Der opstod en fejl under oprettelsen af databasen!'; +$_lang["setup_database_creation_failed_note"] = ' - Installationsprogrammet kunne ikke oprette databasen!'; +$_lang["setup_database_creation_failed_note2"] = 'Installationsprogrammet kunne ikke oprette databasen, og der blev ikke fundet en eksisterende database med det samme navn. Årsagen er sandsynligvis at dit hosting firmas sikkerhedspolitik ikke tillader at eksterne scripts opretter en database. Opret en database i henhold til dit hosting firmas procedure, og kør installationsprogrammet igen.'; +$_lang["setup_database_selection"] = 'Vælger databasen `'; +$_lang["setup_database_selection_failed"] = 'Der opstod en fejl under valg af databasen...'; +$_lang["setup_database_selection_failed_note"] = 'Databasen eksisterer ikke. Installationsprogrammet vil prøve at oprette den.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Nogle af tabellerne i databasen blev ikke opdateret. Årsagen til dette kan være tidligere modifikationer.'; +$_lang["status_checking_database"] = 'Kontrollerer databasen: '; +$_lang["status_connecting"] = ' Forbindelse til serveren: '; +$_lang["status_failed"] = 'Fejlede!'; +$_lang["status_failed_could_not_create_database"] = 'fejlede - kunne ikke oprette databasen'; +$_lang["status_failed_database_collation_does_not_match"] = 'fejlede - databasens collation stemmer ikke overens; brug SET NAMES eller vælg %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'fejlede - tabellernes præfiks eksisterer allerede!'; +$_lang["status_passed"] = 'gennemført - databasen er valgt'; +$_lang["status_passed_database_created"] = 'gennemført - databasen er oprettet'; +$_lang["status_passed_server"] = 'gennemført - collations er nu tilgængelige'; +$_lang["strict_mode"] = ' MySQL server strict sql_mode er slået til!'; +$_lang["strict_mode_error"] = 'Nogle af funktionerne i MODx vil ikke virke, hvis ikke STRICT_TRANS_TABLES sql_mode er deaktiveret. Du kan rette dette ved at redigere my.cnf filen, eller kontakte serveradministratoren.'; +$_lang["summary_setup_check"] = 'Programmet har nu kontrolleret om det er klart til at gennemføre installationen.'; +$_lang["system_configuration"] = 'System konfiguration'; +$_lang["system_configuration_validate_referer_description"] = 'Valider HTTP_REFERER headers indstillingen anbefales at være aktiveret, og kan være med til at beskytte dit website mod CSRF angreb. Men i nogle server konfigurationer kan det medføre at administrationsmodulet (/manager) ikke kan tilgås.'; +$_lang["table_prefix_already_inuse"] = ' - Tabel præfikset er allerede i brug i den valgte database!'; +$_lang["table_prefix_already_inuse_note"] = 'Programmet kunne ikke installere ind i den valgte database, da den allerede indeholder tabeller med det indtastede præfiks. Vælg venligst et andet præfiks, og kør installationsprogrammet igen.'; +$_lang["table_prefix_not_exist"] = ' - Tabellens præfiks eksisterer ikke i denne database!'; +$_lang["table_prefix_not_exist_note"] = 'Installationsprogrammet kunne ikke installere i den valgte database, da de eksisterende tabeller du har valgt der skal opdateres, ikke indeholder det præfiks du har indtastet. Indtast et eksisterende tabel præfiks og prøv at køre installationsprogrammet igen.'; +$_lang["templates"] = 'Skabeloner'; +$_lang["to_log_into_content_manager"] = 'For at logge ind i CMS\'et ('.MGR_DIR.'/index.php) skal du klikke på `Luk` knappen.'; +$_lang["toggle"] = 'Byt om på det valgte'; +$_lang['tvs'] = 'Skabelon variabler'; +$_lang["unable_install_chunk"] = 'Kunne ikke installere chunk. Fil'; +$_lang["unable_install_module"] = 'Kunne ikke installere modulet. Fil'; +$_lang["unable_install_plugin"] = 'Kunne ikke installere plugin. Fil'; +$_lang["unable_install_snippet"] = 'Kunne ikke installere snippet. Fil'; +$_lang["unable_install_template"] = 'Kunne ikke installere skabelonen. Fil'; +$_lang["upgrade_note"] = 'Note: Før du se siderne på dit website, skal du først logge ind i CMS\'et med en administrationskonto, og kontrollere og gemme konfigurationsindstillingerne.'; +$_lang["upgraded"] = 'Opdateret'; +$_lang["validate_referer_title"] = 'Valider HTTP_REFERER headers?'; +$_lang["visit_forum"] = ', besøg MODx\'s fora.'; +$_lang["warning"] = 'ADVARSEL!'; +$_lang["welcome_message_start"] = 'Du skal først vælge hvilken type installation der skal gennemførers:'; +$_lang["welcome_message_text"] = 'Dette program vil hjælpe dig igennem installationen.'; +$_lang["welcome_message_welcome"] = 'Velkommen til installationen af MODx.'; +$_lang["writing_config_file"] = 'Skriver konfigurationsfilen: '; +$_lang["yes"] = 'Ja'; +$_lang["you_running_php"] = ' - Du kører på PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/english.inc.php b/assets/modules/store/installer/lang/english.inc.php new file mode 100755 index 0000000000..a579b91858 --- /dev/null +++ b/assets/modules/store/installer/lang/english.inc.php @@ -0,0 +1,194 @@ +/assets/cache and /assets/cache/rss directories exist: '; +$_lang["checking_if_cache_file_writable"] = 'Checking if /assets/cache/siteCache.idx.php file is writable: '; +$_lang["checking_if_cache_file2_writable"] = 'Checking if /assets/cache/sitePublishing.idx.php file is writable: '; +$_lang["checking_if_cache_writable"] = 'Checking if /assets/cache and /assets/cache/rss directories are writable: '; +$_lang["checking_if_config_exist_and_writable"] = 'Checking if /manager/includes/config.inc.php exists and is writable: '; +$_lang["checking_if_export_exists"] = 'Checking if /assets/export directory exists: '; +$_lang["checking_if_export_writable"] = 'Checking if /assets/export directory is writable: '; +$_lang["checking_if_images_exist"] = 'Checking if /assets/images, /assets/files, /assets/flash and /assets/media directories exists: '; +$_lang["checking_if_images_writable"] = 'Checking if /assets/images, /assets/files, /assets/flash and /assets/media directories are writable: '; +$_lang["checking_mysql_strict_mode"] = 'Checking MySQL for strict sql_mode: '; +$_lang["checking_mysql_version"] = 'Checking MySQL version: '; +$_lang["checking_php_version"] = 'Checking PHP version: '; +$_lang["checking_registerglobals"] = 'Checking if Register_Globals is off: '; +$_lang["checking_registerglobals_note"] = 'This configuration makes your site much more susceptible to Cross Site Scripting (XSS) attacks. You should speak to your host about disabling this setting, usually by one of three ways: modifying the global php.ini file, adding rules to a .htaccess file in the root of your MODX install, or adding custom php.ini override files in every directory on your install (and there\'s a lot of them). You will still be able to install MODX, but consider yourself warned.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Checking if sessions are properly configured: '; +$_lang["checking_table_prefix"] = 'Checking table prefix `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'For new Linux/Unix installs, please create a blank file named config.inc.php in the /manager/includes/ directory with file permissions set to 0666.'; +$_lang["connection_screen_collation"] = 'Collation:'; +$_lang["connection_screen_connection_method"] = 'Connection method:'; +$_lang["connection_screen_database_connection_information"] = 'Database information'; +$_lang["connection_screen_database_connection_note"] = 'Enter the database name to use or which you wish to create for this MODX install. If no database exists, the installer will attempt to create one. This may fail depending on the MySQL user permissions.'; +$_lang["connection_screen_database_host"] = 'Database host:'; +$_lang["connection_screen_database_info"] = 'Database Information'; +$_lang["connection_screen_database_login"] = 'Database login name:'; +$_lang["connection_screen_database_name"] = 'Database name:'; +$_lang["connection_screen_database_pass"] = 'Database password:'; +$_lang["connection_screen_database_test_connection"] = 'Create or test selection of your database.'; +$_lang["connection_screen_default_admin_email"] = 'Administrator email:'; +$_lang["connection_screen_default_admin_login"] = 'Administrator username:'; +$_lang["connection_screen_default_admin_note"] = 'Now you\'ll need to enter some details for the main administrator account. You can fill in your own name here, and a password you\'re not likely to forget. You\'ll need these to log into Admin once setup is complete.'; +$_lang["connection_screen_default_admin_password"] = 'Administrator password:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Confirm password:'; +$_lang["connection_screen_default_admin_user"] = 'Default Admin User'; +$_lang["connection_screen_defaults"] = 'Default Manager Settings'; +$_lang["connection_screen_server_connection_information"] = 'Server connection and login information'; +$_lang["connection_screen_server_connection_note"] = 'Enter the database host (server name or IP address), the username and password before testing the connection.'; +$_lang["connection_screen_server_test_connection"] = 'Test database server connection and view collations.'; +$_lang["connection_screen_table_prefix"] = 'Table prefix:'; +$_lang["creating_database_connection"] = 'Creating connection to the database: '; +$_lang["database_alerts"] = 'Database Alerts!'; +$_lang["database_connection_failed"] = 'Database connection failed!'; +$_lang["database_connection_failed_note"] = 'Please check the database login details and try again.'; +$_lang["database_use_failed"] = 'Database could not be selected!'; +$_lang["database_use_failed_note"] = 'Please check the database permissions for the specified user and try again.'; +$_lang["default_language"] = 'Default Manager Language'; +$_lang["default_language_description"] = 'This is the default language that will be used in the MODX Manager back end control panel.'; +$_lang["during_execution_of_sql"] = ' during the execution of SQL statement '; +$_lang["encoding"] = 'iso-8859-1'; //charset encoding for html header +$_lang["error"] = 'error'; +$_lang["errors"] = 'errors'; +$_lang["failed"] = 'FAILED!'; +$_lang["help"] = 'Help!'; +$_lang["help_link"] = 'http://forums.modx.com/'; +$_lang["help_title"] = 'Installation assistance in the MODX forums'; +$_lang["iagree_box"] = 'I agree to the terms of the MODX license. For translations of the GPL version 2 license, please visit the GNU Operating System website.'; +$_lang["install"] = 'Install'; +$_lang["install_overwrite"] = 'Install/Overwrite'; +$_lang["install_results"] = 'Install results'; +$_lang["install_update"] = 'Install/Update'; +$_lang["installation_error_occured"] = 'The following errors had occurred during installation'; +$_lang["installation_install_new_copy"] = 'Install a new copy of '; +$_lang["installation_install_new_note"] = 'Please note this option may overwrite any data inside your database.'; +$_lang["installation_mode"] = 'Installation Mode'; +$_lang["installation_new_installation"] = 'New Installation'; +$_lang["installation_note"] = 'Note: After logging into the manager you should edit and save your System Configuration settings before browsing the site by choosing Tools -> System Configuration in the MODX Manager.'; +$_lang["installation_successful"] = 'Installation was successful!'; +$_lang["installation_upgrade_advanced"] = 'Advanced Upgrade'; +$_lang["installation_upgrade_advanced_note"] = 'For advanced database admins or moving to servers with a different database connection character set.
                      You will need to know your full database name, user, password and connection/collation details.'; +$_lang["installation_upgrade_existing"] = 'Upgrade Existing Install'; +$_lang["installation_upgrade_existing_note"] = 'Upgrade your current files and database.'; +$_lang["installed"] = 'Installed'; +$_lang["installing_demo_site"] = 'Installing demo site: '; +$_lang["language_code"] = 'en'; // for html element e.g. +$_lang["loading"] = 'Loading...'; +$_lang["modules"] = 'Modules'; +$_lang["modx_footer1"] = '© 2005-2013 the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; +$_lang["modx_footer2"] = 'MODX is free software. We encourage you to be creative and make use of MODX in any way you see fit. Just make sure that if you do make changes and decide to redistribute your modified MODX, that you keep the source code free!'; +$_lang["modx_install"] = 'MODX » Install'; +$_lang["modx_requires_php"] = ', and MODX requires PHP 4.2.0 or later'; +$_lang["mysql_5051"] = ' MySQL server version is 5.0.51!'; +$_lang["mysql_5051_warning"] = 'There are known issues with MySQL 5.0.51. It is recommended that you upgrade before continuing.'; +$_lang["mysql_version_is"] = ' Your MySQL version is: '; +$_lang["no"] = 'No'; +$_lang["none"] = 'None'; +$_lang["not_found"] = 'not found'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Optional Items'; +$_lang["optional_items_note"] = 'Please choose your installation options and click Install:'; +$_lang["php_security_notice"] = 'Security notice

                      While MODX will work on your PHP version, usage of MODX on this version is not recommended. Your version of PHP is vulnerable to numerous security holes. Please upgrade to PHP version is 4.3.8 or higher, which patches these holes. It is recommended you upgrade to this version for the security of your own website.

                      '; +$_lang["please_correct_error"] = '. Please correct the error'; +$_lang["please_correct_errors"] = '. Please correct the errors'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Pre-install validation'; +$_lang["recommend_setting_change_title"] = 'Recommended Setting Change'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Setting change: Validate HTTP_REFERER headers?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Your site is not configured to validate the HTTP_REFERER of incoming requests to the Manager. We strongly recommend enabling this setting to reduce the risk of a CSRF (Cross Site Request Forgery) attack.'; +$_lang["remove_install_folder_auto"] = 'Remove the install folder and files from my website
                       (This operation requires delete permission to the granted to the install folder).'; +$_lang["remove_install_folder_manual"] = 'Please remember to remove the "install" folder before you log into the Content Manager.'; +$_lang["retry"] = 'Retry'; +$_lang["running_database_updates"] = 'Running database updates: '; +$_lang["sample_web_site"] = 'Sample Web Site'; +$_lang["sample_web_site_note"] = 'Please note that this will overwrite existing documents and resources.'; +$_lang["session_problem"] = 'A problem was detected with your server sessions. Please consult your server admin to correct this problem.'; +$_lang["session_problem_try_again"] = 'Try again?'; +$_lang["setup_cannot_continue"] = 'Unfortunately, Setup cannot continue at the moment, due to the above '; +$_lang["setup_couldnt_install"] = 'MODX setup couldn\'t install/alter some tables inside the selected database.'; +$_lang["setup_database"] = 'Setup will now attempt to setup the database:
                      '; +$_lang["setup_database_create_connection"] = 'Creating connection to the database: '; +$_lang["setup_database_create_connection_failed"] = 'Database connection failed!'; +$_lang["setup_database_create_connection_failed_note"] = 'Please check the database login details and try again.'; +$_lang["setup_database_creating_tables"] = 'Creating database tables: '; +$_lang["setup_database_creation"] = 'Creating database `'; +$_lang["setup_database_creation_failed"] = 'Database creation failed!'; +$_lang["setup_database_creation_failed_note"] = ' - Setup could not create the database!'; +$_lang["setup_database_creation_failed_note2"] = 'Setup could not create the database, and no existing database with the same name was found. It is likely that your hosting provider\'s security does not allow external scripts to create a database. Please create a database according to your hosting provider\'s procedure, and run Setup again.'; +$_lang["setup_database_selection"] = 'Selecting database `'; +$_lang["setup_database_selection_failed"] = 'Database selection failed...'; +$_lang["setup_database_selection_failed_note"] = 'The database does not exist. Setup will attempt to create it.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Some tables were not updated. This might be due to previous modifications.'; +$_lang["status_checking_database"] = 'Checking database: '; +$_lang["status_connecting"] = ' Connection to host: '; +$_lang["status_failed"] = 'failed!'; +$_lang["status_failed_could_not_create_database"] = 'failed - could not create database'; +$_lang["status_failed_database_collation_does_not_match"] = 'failed - database collation mismatch; use SET NAMES or choose %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'failed - table prefix already in use!'; +$_lang["status_passed"] = 'passed - database selected'; +$_lang["status_passed_database_created"] = 'passed - database created'; +$_lang["status_passed_server"] = 'passed - collations now available'; +$_lang["strict_mode"] = ' MySQL server strict sql_mode is enabled!'; +$_lang["strict_mode_error"] = 'Certain features of MODX may not work properly unless the STRICT_TRANS_TABLES sql_mode is disabled. You can set the MySQL mode by editing the my.cnf file or contact your server administrator.'; +$_lang["summary_setup_check"] = 'Setup has carried out a number of checks to see if everything\'s ready to start the setup.'; +$_lang["system_configuration"] = 'System Configuration'; +$_lang["system_configuration_validate_referer_description"] = 'The Validate HTTP_REFERER headers setting is recommended and can protect your site from CSRF attacks, but in some server configurations, can make your manager inaccessible.'; +$_lang["table_prefix_already_inuse"] = ' - Table prefix is already in use in this database!'; +$_lang["table_prefix_already_inuse_note"] = 'Setup couldn\'t install into the selected database, as it already contains tables with the prefix you specified. Please choose a new table prefix, and run Setup again.'; +$_lang["table_prefix_not_exist"] = ' - Table prefix does not exist in this database!'; +$_lang["table_prefix_not_exist_note"] = 'Setup couldn\'t install into the selected database, as it does not contain existing tables with the prefix you specified to be upgraded. Please choose an existing table prefix, and run Setup again.'; +$_lang["templates"] = 'Templates'; +$_lang["to_log_into_content_manager"] = 'To log into the Content Manager (manager/index.php) you can click on the `Close` button.'; +$_lang["toggle"] = 'Toggle'; +$_lang['tvs'] = 'Template Variables'; +$_lang["unable_install_chunk"] = 'Unable to install chunk. File'; +$_lang["unable_install_module"] = 'Unable to install module. File'; +$_lang["unable_install_plugin"] = 'Unable to install plugin. File'; +$_lang["unable_install_snippet"] = 'Unable to install snippet. File'; +$_lang["unable_install_template"] = 'Unable to install template. File'; +$_lang["upgrade_note"] = 'Note: Before browsing your site you should log into the manager with an administrative account, then review and save your System Configuration settings.'; +$_lang["upgraded"] = 'Upgraded'; +$_lang["validate_referer_title"] = 'Validate HTTP_REFERER headers?'; +$_lang["visit_forum"] = ', visit the MODX Forums.'; +$_lang["warning"] = 'WARNING!'; +$_lang["welcome_message_start"] = 'First, choose the type of installation to perform:'; +$_lang["welcome_message_text"] = 'This program will guide you through the rest of the installation.'; +$_lang["welcome_message_welcome"] = 'Welcome to the MODX installation program.'; +$_lang["writing_config_file"] = 'Writing configuration file: '; +$_lang["yes"] = 'Yes'; +$_lang["you_running_php"] = ' - You are running on PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/finnish-utf8.inc.php b/assets/modules/store/installer/lang/finnish-utf8.inc.php new file mode 100755 index 0000000000..7572effbf4 --- /dev/null +++ b/assets/modules/store/installer/lang/finnish-utf8.inc.php @@ -0,0 +1,185 @@ +/assets/cache ja /assets/cache/rss olemassa: '; +$_lang["checking_if_cache_file_writable"] = 'Tarkistetaan voiko tiedostoon /assets/cache/siteCache.idx.php kirjoittaa: '; +$_lang["checking_if_cache_file2_writable"] = 'Tarkistetaan voiko tiedostoon /assets/cache/sitePublishing.idx.php kirjoittaa: '; +$_lang["checking_if_cache_writable"] = 'Tarkistetaan voiko kansioihin /assets/cache ja /assets/cache/rss luoda uusia tiedostoja: '; +$_lang["checking_if_config_exist_and_writable"] = 'Tarkistetaan onko asetustiedosto '.MGR_DIR.'/includes/config.inc.php olemassa ja voiko siihen kirjoittaa: '; +$_lang["checking_if_export_exists"] = 'Tarkistetaan onko kansio /assets/export olemassa: '; +$_lang["checking_if_export_writable"] = 'Tarkistetaan voiko kansioon /assets/export luoda uusia tiedostoja: '; +$_lang["checking_if_images_exist"] = 'Tarkistetaan onko kansiot /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup ja /assets/.thumbs olemassa: '; +$_lang["checking_if_images_writable"] = 'Tarkistetaan voidaanko kansioihin /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup ja /assets/.thumbs luoda uusia tiedostoja: '; +$_lang["checking_mysql_strict_mode"] = 'Tarkistetaan MySQL palvelimen "strict sql_mode" asetus: '; +$_lang["checking_mysql_version"] = 'Tarkistetaan MySQL pavelimen versio: '; +$_lang["checking_php_version"] = 'Tarkistetaan PHP:n versio: '; +$_lang["checking_registerglobals"] = 'Tarkistetaan onko PHP:n Register_Globals asetus pois: '; +$_lang["checking_registerglobals_note"] = 'Tämä asetus tekee sivustostasi alttiimman XSS hyökkäyksille (Cross Site Scripting). Sinun tulisi kehottaa palveluntarjoajaasi kytkemään tämä asetus pois käytöstä. Useimmiten tämän asetuksen voi kytkeä pois muokkaamalla palvelimen php.ini tiedostoa. Jos se ei ole mahdollista, voit koittaa kytkeä sen pois .htaccess tiedostossa, joka sijaitsee MODx asennuksen juuri kansiossa. Jos tämäkään ei ole mahdollista, voit viimeisenä vaihtoehtona koittaa asettaa jokaiseen MODx asennuksen sisällä olevaan kansioon muokatun php.ini tiedoston, joka yliajaa asetukset palvelimen jaetusta php.ini tiedostosta, mutta kansioita MODx asennuksessa on tosin huomattava määrä. Voit kuitenkin asentaa MODx järjestelmän tästä asetuksesta huolimatta, mutta sinua on varoitettu.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Tarkistetaan onko palvelinistunnot asetettu toimimaan oikein: '; +$_lang["checking_table_prefix"] = 'Tarkistetaan tietokannan taulujen etuliite `'; +$_lang["chunks"] = 'HTML-palaset'; +$_lang["config_permissions_note"] = 'Jos olet asentamassa järjestelmää Linux / Unix palvelimeen, luo kansioon '.MGR_DIR.'/includes/ tyhjä tiedosto nimeltä config.inc.php ja aseta tiedostoon 0666 oikeudet.'; +$_lang["connection_screen_collation"] = 'Merkistö:'; +$_lang["connection_screen_connection_method"] = 'Yhteystyyppi:'; +$_lang["connection_screen_database_connection_information"] = 'Tietokannan yhteysasetukset'; +$_lang["connection_screen_database_connection_note"] = 'Ole hyvä ja syötä tietokannan nimi, jota MODx:n tulee käyttää. Jos tietokantaa ei ole vielä luotu, asennusohjelma yrittää luodan sen. Tämä voi epäonnistua riippuen MySQL asetuksista ja/tai tietokannan käyttäjän käyttöoikeuksista.'; +$_lang["connection_screen_database_host"] = 'Tietokantapalvelimen osoite:'; +$_lang["connection_screen_database_info"] = 'Tietokannan tiedot'; +$_lang["connection_screen_database_login"] = 'Käyttäjänimi:'; +$_lang["connection_screen_database_name"] = 'Tietokannan nimi:'; +$_lang["connection_screen_database_pass"] = 'Salasana:'; +$_lang["connection_screen_database_test_connection"] = 'Napsauta tähän luodaksesi tietokanta tai testataksesi jo luodun tietokannan valintaa'; +$_lang["connection_screen_default_admin_email"] = 'Pääkäyttäjän sähköpostiosoite:'; +$_lang["connection_screen_default_admin_login"] = 'Pääkäyttäjän käyttäjänimi:'; +$_lang["connection_screen_default_admin_note"] = 'Nyt on aika syöttää pääkäyttäjän tunnuksen tiedot. Voit luoda tunnukset omalla käyttäjänimellä. Suojaa tunnus salasanalla, joka on tietoturvallisesti vahva, mutta jonka muistat itse hyvin. Tarvitset nämä tunnukset kirjautumaan järjestelmään asennuksen jälkeen.'; +$_lang["connection_screen_default_admin_password"] = 'Pääkäyttäjän salasana:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Salasanan varmistus:'; +$_lang["connection_screen_default_admin_user"] = 'Oletuspääkäyttäjä'; +$_lang["connection_screen_defaults"] = 'Ylläpidon asetukset'; +$_lang["connection_screen_server_connection_information"] = 'Palvelinyhteyden tiedot sekä kirjautumistiedot'; +$_lang["connection_screen_server_connection_note"] = 'Ole hyvä ja syötä palvelimen osoite sekä kirjautumistiedot ja testaa yhteysasetuksia.'; +$_lang["connection_screen_server_test_connection"] = 'Napsauta tähän testataksesi palvelimen yhteysasetuksia ja nähdäksesi käytössä olevat merkistöt'; +$_lang["connection_screen_table_prefix"] = 'Tietokannan taulujen etuliite:'; +$_lang["creating_database_connection"] = 'Luodaan yhteys tietokantaan: '; +$_lang["database_alerts"] = 'Tietokanta varoitukset!'; +$_lang["database_connection_failed"] = 'Yhteys tietokantaan epäonnistui!'; +$_lang["database_connection_failed_note"] = 'Ole hyvä ja tarkista tietokannan yhteys-, sekä kirjautumistiedot ja yritä uudelleen.'; +$_lang["database_use_failed"] = 'Tietokantaa ei voitu valita!'; +$_lang["database_use_failed_note"] = 'Ole hyvä ja tarkista tietokannan käyttöoikeudet määritetylle käyttäjälle ja yritä uudelleen.'; +$_lang["default_language"] = 'Kieli'; +$_lang["default_language_description"] = 'Tämä asetetaan MODx ylläpidon oletus kieleksi.'; +$_lang["during_execution_of_sql"] = ' SQL lauseen suorituksen aikana '; +$_lang["encoding"] = 'UTF-8'; //charset encoding for html header +$_lang["error"] = 'virhe'; +$_lang["errors"] = 'virheet'; +$_lang["failed"] = 'EPÄONNISTUI!'; +$_lang["help"] = 'Tuki'; +$_lang["help_link"] = 'http://forums.modx.com/'; +$_lang["help_title"] = 'Asennustukea MODx keskustelufoorumilla'; +$_lang["iagree_box"] = 'Hyväksyn MODx lisenssin ehdot. GPL lisenssin versio 2:en käännökset löytyvät GNU Operating System internetsivuilta.'; +$_lang["install"] = 'Asenna'; +$_lang["install_overwrite"] = 'Asenna/Ylikirjoita'; +$_lang["install_results"] = 'Asennuksen tulos'; +$_lang["install_update"] = 'Asenna/Päivitä'; +$_lang["installation_error_occured"] = 'Asennuksen aikana tapahtui seuraavat virheet'; +$_lang["installation_install_new_copy"] = 'Asenna uusi '; +$_lang["installation_install_new_note"] = 'Ota huomioon että tämä vaihtoehto voi ylikirjoittaa tietokannan olemassaolevia tietoja.'; +$_lang["installation_mode"] = 'Asennuksen valinta'; +$_lang["installation_new_installation"] = 'Uusi asennus'; +$_lang["installation_note"] = 'HUOMIO: Sinun tulisi tarkistaa ja tallentaa järjestelmän asetukset heti ensimmäisen kirjautumisen yhteydessä valikosta Työkalut -> Järjestelmän asetukset.'; +$_lang["installation_successful"] = 'Asennus suoritettiin onnistuneesti!'; +$_lang["installation_upgrade_advanced"] = 'Edistynyt päivitys
                      (muokkaa tietokannan asetuksia)'; +$_lang["installation_upgrade_advanced_note"] = 'Edistyneille käyttäjille tai vaihdettaessa järjestelmää toiselle palvelimelle, jonka tietokantayhteys käyttää eri merkistöasetuksia. Sinun tulee tietää tietokannan koko nimi, käyttäjä ja salasana, sekä yhteys- ja merkistöasetukset.'; +$_lang["installation_upgrade_existing"] = 'Päivitä asennus'; +$_lang["installation_upgrade_existing_note"] = 'Päivitä nykyiset tiedostosi, sekä tietokannan tiedot.'; +$_lang["installed"] = 'Asennettu'; +$_lang["installing_demo_site"] = 'Asennetaan demo sivustoa: '; +$_lang["language_code"] = 'fi'; // for html element e.g. +$_lang["loading"] = 'Ladataan...'; +$_lang["modules"] = 'Moduulit'; +$_lang["modx_footer1"] = '© 2005-2011 MODx Content Mangement Framework (CMF). Kaikki oikeudet pidätetään. MODx on lisensoitu GNU GPL lisenssillä.'; +$_lang["modx_footer2"] = 'MODx on ilmainen ohjelmisto. Kehoitamme sinua olemaan luova ja käyttämään MODx järjestelmää siten, miten sinä sen parhaaksi näet. Jos teet muutoksia järjestelmään ja päätät jakaa muokattua MODx järjestelmää eteenpäin, muista pitää muokattu lähdekoodi vapaasti saatavilla!'; +$_lang["modx_install"] = 'MODx » Asennus'; +$_lang["modx_requires_php"] = ', ja MODx vaatii PHP:stä version 4.2.0 tai uudemman'; +$_lang["mysql_5051"] = ' MySQL palvelimen versio on 5.0.51!'; +$_lang["mysql_5051_warning"] = 'MySQL 5.0.51 versiolla on havaittu järjestelmän toiminnassa ongelmia. On suositeltavaa, että päivität MySQL version uudempaan ennen asennuksen jatkamista.'; +$_lang["mysql_version_is"] = ' Sinun MySQL palvelimen versio on: '; +$_lang["none"] = 'Ei mitään'; +$_lang["not_found"] = 'Ei löytynyt'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Valinnaiset kohdat'; +$_lang["optional_items_note"] = 'Ole hyvä ja valitse asennuksesi lisäasetukset ja napsauta "Asenna" painiketta:'; +$_lang["php_security_notice"] = 'Tietoturva huomio

                      Vaikka MODx toimiikin tällä PHP versiolla, sen käyttöä ei kuitenkaan suositella. PHP versiosi on altis useille tietoturva aukoille. On suositeltavaa sivustosi tietoturvallisuuden kannalta, että päivität PHP versiosi. Ole hyvä ja päivitä PHP versioon 4.3.8 tai uudempaan, joka korjaa kyseiset tietoturva aukot.'; +$_lang["please_correct_error"] = '. Ole hyvä ja korjaa seuraava virhe'; +$_lang["please_correct_errors"] = '. Ole hyvä ja korjaa seuraavat virheet'; +$_lang["plugins"] = 'Liitännäiset'; +$_lang["preinstall_validation"] = 'Ennen asennusta suoritettava tarkastus'; +$_lang["remove_install_folder_auto"] = 'Poista asennuskansio, sekä asennustiedostot sivutilastani
                       (Tämä toiminto vaatii, että kansioon /install on tiedostojen sekä ko. kansion poisto-oikeudet).'; +$_lang["remove_install_folder_manual"] = 'Muista poistaa "install" kansio ennen kuin kirjaudut järjestelmään.'; +$_lang["retry"] = 'Yritä uudelleen'; +$_lang["running_database_updates"] = 'Suoritetaan tietokannan päivityksiä: '; +$_lang["sample_web_site"] = 'Demo sivusto'; +$_lang["sample_web_site_note"] = 'Ota huomioon, että tämä ylikirjoittaa olemassaolevat sivut ja resurssit.'; +$_lang["session_problem"] = 'Palvelinistuntojen hallinnassa havaittu ongelmia. Ole hyvä ja ota yhteyttä palvelun ylläpitäjään ongelman korjaamiseksi.'; +$_lang["session_problem_try_again"] = 'Yritä uudelleen?'; +$_lang["setup_cannot_continue"] = 'Valitettavasti asennusta ei voi jatkaa ylläolevista syistä '; +$_lang["setup_couldnt_install"] = 'MODx asennus ei voinut asentaa/muokata joitain tietokannan tauluja.'; +$_lang["setup_database"] = 'Asennus yrittää luoda tietokantaa:
                      '; +$_lang["setup_database_create_connection"] = 'Luodaan yhteys tietokantaan: '; +$_lang["setup_database_create_connection_failed"] = 'Tietokantayhteys epäonnistui!'; +$_lang["setup_database_create_connection_failed_note"] = 'Ole hyvä ja tarkista tietokannan yhteystiedot ja yritä uudelleen.'; +$_lang["setup_database_creating_tables"] = 'Luodaan tietokannan tauluja: '; +$_lang["setup_database_creation"] = 'Luodaan tietokanta `'; +$_lang["setup_database_creation_failed"] = 'Tietokannan luonti epäonnistui!'; +$_lang["setup_database_creation_failed_note"] = ' - Asennus ei voinut luoda tietokantaa!'; +$_lang["setup_database_creation_failed_note2"] = 'Asennus ei voinut luoda tietokantaa ja olemassa olevaa tietokantaa annetulla nimellä ei löytynyt. On todennäköistä että palveluntarjoajasi tietoturva-asetukset ei salli ulkoisten ohjelmien luoda tietokantoja. Ole hyvä ja luo tietokanta palveluntarjoajasi vaatimien menetelmien mukaan ja suorita asennus uudelleen.'; +$_lang["setup_database_selection"] = 'Valitaan tietokanta `'; +$_lang["setup_database_selection_failed"] = 'Tietokannan valinta epäonnistui...'; +$_lang["setup_database_selection_failed_note"] = 'Tietokantaa ei ole olemassa. Asennus yrittää luoda tietokannan.'; +$_lang["snippets"] = 'PHP-palaset'; +$_lang["some_tables_not_updated"] = 'Joitain tauluja ei päivitetty. Tämä voi johtua aiemmista muokkauksista.'; +$_lang["status_checking_database"] = 'Tarkistetaan tietokantaa: '; +$_lang["status_connecting"] = ' Yhdistetään palvelimeen: '; +$_lang["status_failed"] = 'epäonnistui!'; +$_lang["status_failed_could_not_create_database"] = 'epäonnistui - tietokantaa ei voitu luoda'; +$_lang["status_failed_database_collation_does_not_match"] = 'epäonnistui - tietokannan merkistön yhteensopivuus ongelma. Käytä "SET NAMES" tai valitse %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'epäonnistui - tietokannan taulujen etuliite on jo käytössä!'; +$_lang["status_passed"] = 'onnistui - tietokanta valittu'; +$_lang["status_passed_database_created"] = 'onnistui - tietokanta luotu'; +$_lang["status_passed_server"] = 'onnistui - merkistöt ovat nyt käytettävissä'; +$_lang["strict_mode"] = ' MySQL palvelimen "strict sql_mode" asetus on päällä!'; +$_lang["strict_mode_error"] = 'Tietyt MODx:n toiminnot ei toimi oikein jos "STRICT_TRANS_TABLES sql_mode" ei kytketä pois käytöstä. Voit asettaa kyseisen MySQL asetuksen muokkaamalla my.cnf tiedostoa tai ottamalla yhteyttä palveluntarjoajaasi.'; +$_lang["summary_setup_check"] = 'Asennus on tarkistanut erinäiset tiedot tarkastaakseen, että kaikki on kunnossa asennusta varten.'; +$_lang["table_prefix_already_inuse"] = ' - Tietokannan taulujen etuliite on jo käytössä tässä tietokannassa!'; +$_lang["table_prefix_already_inuse_note"] = 'Asennusohjelma ei voinut asentaa valittuun tietokantaan, koska se sisältää jo tauluja asetetulla etuliitteellä. Ole hyvä ja valitse uusi etuliite ja yritä uudelleen.'; +$_lang["table_prefix_not_exist"] = ' - Tietokannan taulujen etuliitettä ei löydetty tästä tietokannasta!'; +$_lang["table_prefix_not_exist_note"] = 'Asennusohjelma ei voinut asentaa valittuun tietokantaan, koska se ei sisällä tauluja asetetulla etuliitteellä, jotka asetit päivitystietoihin. Ole hyvä ja valitse uusi etuliite ja yritä uudelleen.'; +$_lang["templates"] = 'Sivupohjat'; +$_lang["to_log_into_content_manager"] = 'Kirjautuaksesi sisällönhallintajärjestelmään ('.MGR_DIR.'/index.php) napsauta `Sulje` painiketta.'; +$_lang["toggle"] = 'Vastakkaiset'; +$_lang["unable_install_chunk"] = 'HTML-palasta ei voitu asentaa. Tiedosto'; +$_lang["unable_install_module"] = 'Moduulia ei voitu asentaa. Tiedosto'; +$_lang["unable_install_plugin"] = 'Liitännäistä ei voitu asentaa. Tiedosto'; +$_lang["unable_install_snippet"] = 'PHP-palasta ei voitu asentaa. Tiedosto'; +$_lang["unable_install_template"] = 'Sivupohjaa ei voitu asentaa. Tiedosto'; +$_lang["upgrade_note"] = 'HUOMIO: Ennen sivustojen käyttöä, sinun tulisi kirjautua järjestelmän hallintaan pääkäyttäjätunnuksella ja tarkistaa, sekä tallentaa järjestelmän asetukset.'; +$_lang["upgraded"] = 'Päivitetty'; +$_lang["visit_forum"] = ', vieraile MODx keskustelufoorumilla.'; +$_lang["warning"] = 'VAROITUS!'; +$_lang["welcome_message_start"] = 'Valitse aluksi suoritettavan asennuksen tyyppi:'; +$_lang["welcome_message_text"] = 'Tämä ohjelma ohjaa sinut suorittamaan järjestelmän asennuksen.'; +$_lang["welcome_message_welcome"] = 'Tervetuloa MODx asennusohjelmaan.'; +$_lang["writing_config_file"] = 'Kirjoitetaan asetuksia tiedostoon: '; +$_lang["you_running_php"] = ' - Käytössä on PHP versio '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/francais-utf8.inc.php b/assets/modules/store/installer/lang/francais-utf8.inc.php new file mode 100755 index 0000000000..f4e85b6c06 --- /dev/null +++ b/assets/modules/store/installer/lang/francais-utf8.inc.php @@ -0,0 +1,194 @@ +assets/cache: '; +$_lang["checking_if_cache_file2_writable"] = 'Vérification des droits en écriture du fichier assets/cache/sitePublishing.idx.php: '; +$_lang["checking_if_cache_file_writable"] = 'Vérification des droits en écriture du fichier assets/cache/siteCache.idx.php: '; +$_lang["checking_if_cache_writable"] = 'Vérification des droits en écriture du répertoire assets/cache: '; +$_lang["checking_if_config_exist_and_writable"] = 'Vérification de l\'existence et des droits en écriture du fichier '.MGR_DIR.'/includes/config.inc.php: '; +$_lang["checking_if_export_exists"] = 'Vérification de l\'existence du répertoire assets/export: '; +$_lang["checking_if_export_writable"] = 'Vérification des droits en écriture du répertoire assets/export: '; +$_lang["checking_if_images_exist"] = 'Vérification de l\'existence du répertoire assets/images: '; +$_lang["checking_if_images_writable"] = 'Vérification des droits en écriture des répertoires /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup et /assets/.thumbs: '; +$_lang["checking_mysql_strict_mode"] = 'Vérification du mode strict MySQL: '; +$_lang["checking_mysql_version"] = 'Vérification de la version MySQL: '; +$_lang["checking_php_version"] = 'Vérification de la version PHP: '; +$_lang["checking_registerglobals"] = 'Vérification que Register_Globals est sur off: '; +$_lang["checking_registerglobals_note"] = 'Cette configuration rend votre site vulnérable aux attaques XCSS (Cross Site Scripting). Consultez votre hébergeur sur la marche à suivre pour désactiver ce réglage, en général par l\'une de ces trois solutions: modifier le fichier php.ini global, ajouter des règles dans le fichier .htaccess à la racine de votre installation MODx, ou ajouter un fichier php.ini personnalisé pour neutraliser l\'ensemble des fichiers dans chacun des répertoires de votre installation (et il y en a beaucoup). Vous pouvez continuez l\installation de MODx, mais considérez vous comme averti.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Vérifications des paramètres de sessions: '; +$_lang["checking_table_prefix"] = 'Vérification du préfixe de table `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'Lors des installations Linux/Unix, veuillez créer un nouveau fichier nommé config.inc.php dans le répertoire '.MGR_DIR.'/includes/ avec les droits d\'accès 0666.'; +$_lang["connection_screen_collation"] = 'Collation:'; +$_lang["connection_screen_connection_method"] = 'Méthode de connexion:'; +$_lang["connection_screen_database_connection_information"] = 'Informations base de données'; +$_lang["connection_screen_database_connection_note"] = 'Veuillez saisir le nom de la base de données créée pour MODx. Si la base est inexistante, le programme d\'installation tentera de la créer pour vous. Cette opération est susceptible d\'échouer en fonction des autorisations de l\'utilisateur MySQL.'; +$_lang["connection_screen_database_host"] = 'Serveur hébergeant la base:'; +$_lang["connection_screen_database_info"] = 'Informations de la base de données'; +$_lang["connection_screen_database_login"] = 'Identifiant utilisateur de la base:'; +$_lang["connection_screen_database_name"] = 'Nom de la Base:'; +$_lang["connection_screen_database_pass"] = 'Mot de passe:'; +$_lang["connection_screen_database_test_connection"] = 'Cliquez ici pour créer votre base de données ou pour tester la sélection de votre base.'; +$_lang["connection_screen_default_admin_email"] = 'Email de l\'administrateur:'; +$_lang["connection_screen_default_admin_login"] = 'Nom d\'utilisateur de l\'administrateur:'; +$_lang["connection_screen_default_admin_note"] = 'Vous allez maintenent saisir des informations du compte administrateur principal. Vous pouvez donner ici votre nom et un mot de passe facile à retenir. Vous aurez besoin de ces informations pour vous connecter comme administrateur après l\'installation.'; +$_lang["connection_screen_default_admin_password"] = 'Mot de passe administrateur:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Confirmation du mot de passe:'; +$_lang["connection_screen_default_admin_user"] = 'Administrateur par défaut'; +$_lang["connection_screen_defaults"] = 'Paramètres par défaut du Gestionnaire'; +$_lang["connection_screen_server_connection_information"] = 'Connection au serveur et identification'; +$_lang["connection_screen_server_connection_note"] = 'Veuillez saisir l\'hôte du serveur (nom du serveur ou adresse IP), votre identifiant utilisateur et votre mot de passe avant de tester la connexion.'; +$_lang["connection_screen_server_test_connection"] = 'Tester la connexion au serveur de base de données et voire les collations disponibles.'; +$_lang["connection_screen_table_prefix"] = 'Préfixe de table:'; +$_lang["creating_database_connection"] = 'Création de la connexion à la base de données: '; +$_lang["database_alerts"] = 'Alertes de la base!'; +$_lang["database_connection_failed"] = 'Échec de connexion à la base de données!'; +$_lang["database_connection_failed_note"] = 'Veuillez vérifier les paramètres de connexion à la base de données et réessayez.'; +$_lang["database_use_failed"] = 'Impossible d\'accéder à la base de données!'; +$_lang["database_use_failed_note"] = 'Veuillez vérifier les droits d\'accès utilisateur à la base de données et réessayez.'; +$_lang["default_language"] = 'Langue par défaut du Gestionnaire'; +$_lang["default_language_description"] = 'Ceci est la langue par défaut qui sera utilisée dans l\'interface d\'administration de votre Gestionnaire de Contenu MODx.'; +$_lang["during_execution_of_sql"] = ' lors de l\'exécution de la requête SQL '; +$_lang["encoding"] = 'utf-8'; +$_lang["error"] = 'erreur'; +$_lang["errors"] = 'erreurs'; +$_lang["failed"] = 'ECHEC!'; +$_lang["help"] = 'Aide!'; +$_lang["help_link"] = 'http://forums.modx.com/'; +$_lang["help_title"] = 'Aide à l\'installation sur les forums de MODx'; +$_lang["iagree_box"] = 'J\'accepte les termes de la licence MODx. Pour consulter une traduction de la licence GPL version 2, visitez le site du système d\'exploitation GNU.'; +$_lang["install"] = 'Installation'; +$_lang["install_overwrite"] = 'Installation/Écrasement'; +$_lang["install_results"] = 'État de l\'installation'; +$_lang["install_update"] = 'Installation/Mise à jour'; +$_lang["installation_error_occured"] = 'Les erreurs suivantes se sont produites au cours de l\'installation'; +$_lang["installation_install_new_copy"] = 'Installation d\'une nouvelle copie de '; +$_lang["installation_install_new_note"] = 'Attention, cette option est susceptible d\'écraser les données de la base.'; +$_lang["installation_mode"] = 'Type d\'installation'; +$_lang["installation_new_installation"] = 'Nouvelle installation'; +$_lang["installation_note"] = 'NOTE: Après vous être connecté au Gestionnaire, vous devez éditer et sauvegarder les paramètres de configuration système avant de visiter le site en sélectionnant Outils -> Configuration dans le Gestionnaire MODx.'; +$_lang["installation_successful"] = 'Installation réalisée avec succès!'; +$_lang["installation_upgrade_advanced"] = 'Mise à jour avancée'; +$_lang["installation_upgrade_advanced_note"] = 'Destiné aux administrateurs avancés ou à la migration vers un serveur de base de données disposant d\'un encodage différent. Vous devez disposer du nom complet de la base de données, de l\'identifiant utilisateur, du mot de passe et des détails de connexion/collation.'; +$_lang["installation_upgrade_existing"] = 'Mise à jour d\'une installation existante'; +$_lang["installation_upgrade_existing_note"] = 'Mise à jour des fichiers existants et de la base de données.'; +$_lang["installed"] = 'Installé'; +$_lang["installing_demo_site"] = 'Installation du site de démonstration: '; +$_lang["language_code"] = 'fr'; // for html element e.g. +$_lang["loading"] = 'Chargement...'; +$_lang["modules"] = 'Modules'; +$_lang["modx_footer1"] = '© 2005-2011 le projet de Framework de Gestion de Contenu MODx. Tous droits réservés. MODx est publié sous la licence GNU GPL.'; +$_lang["modx_footer2"] = 'MODx est un logiciel libre. Nous vous encourageons à être créatifs et à utiliser MODx comme bon il vous semble. Votre seule obligation est de redistribuer sous licence libre votre version modifiée de MODx.'; +$_lang["modx_install"] = 'MODx » Installation'; +$_lang["modx_requires_php"] = ', alors que MODx nécessite PHP 4.2.0 ou supérieur'; +$_lang["mysql_5051"] = ' la version serveur de MySQL est 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Il existe plusieurs problèmes avec la version MySQL 5.0.51. Il est recommandé de mettre à jour votre version de MySQL avant de continuer.'; +$_lang["mysql_version_is"] = ' Votre version de MySQL est: '; +$_lang["no"] = 'No'; +$_lang["none"] = 'Aucun'; +$_lang["not_found"] = 'non trouvé'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Options d\'installation'; +$_lang["optional_items_note"] = 'Sélectionnez les options d\'installation et cliquez sur «Installer»:'; +$_lang["php_security_notice"] = 'Avertissement sécurité

                      Bien que MODx fonctionne avec votre version de PHP, nous n\'en recommandons pas l\'utilisation. Votre version de PHP comporte de nombreuses failles de sécurité. Veuillez mettre à jour PHP vers une version 4.3.8 ou supérieure, afin de corriger ces failles. Cette mise à jour est recommandée pour la sécurité de votre propre site internet.

                      '; +$_lang["please_correct_error"] = '. Veuillez corriger l\'erreur'; +$_lang["please_correct_errors"] = '. Veuillez corriger les erreurs'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Validation de la phase de pré-installation'; +$_lang["recommend_setting_change_title"] = 'Modification des paramètres de configuration recommendée'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Modification des paramètres de configuration: Autorisation des entêtes HTTP_REFERER?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Votre site n\'est pas configuré pour autoriser l\'entête HTTP_REFERER des requêtes entrantes dans le Manager. Nous recommandons fortement l\'autorisation de ce paramètre pour réduire le risque d\'attaque CSRF (Cross Site Request Forgery).'; +$_lang["remove_install_folder_auto"] = 'Effacer automatiquement le répertoire «install» de mon site
                       (Cette opération nécessite des droits d\'accès en effacement sur le répertoire «install»).'; +$_lang["remove_install_folder_manual"] = 'Veuillez effacer le répertoire "install" avant de vous connecter au Gestionnaire de Contenu.'; +$_lang["retry"] = 'Réessayer'; +$_lang["running_database_updates"] = 'Mise à jour de la base de données: '; +$_lang["sample_web_site"] = 'Exemple de site web'; +$_lang["sample_web_site_note"] = 'Attention, cette opération va écraser les Ressources et Éléments existants.'; +$_lang["session_problem"] = 'Un problème a été détecté avec vos sessions de serveur. Veuillez contacter votre administrateur pour corriger ce problème.'; +$_lang["session_problem_try_again"] = 'Essayer encore?'; +$_lang["setup_cannot_continue"] = 'Impossible de poursuivre l\'installation'; +$_lang["setup_couldnt_install"] = 'Le programme d\'installation n\'a pas pu créer/modifier certaines tables dans la base de données spécifiée.'; +$_lang["setup_database"] = 'Le programme d\'installation va tenter de configurer la base de données:
                      '; +$_lang["setup_database_create_connection"] = 'Création de la connexion à la base de données: '; +$_lang["setup_database_create_connection_failed"] = 'Échec de connexion à la base de données!'; +$_lang["setup_database_create_connection_failed_note"] = 'Veuillez vérifier les paramètres de connexion à la base de données et réessayer.'; +$_lang["setup_database_creating_tables"] = 'Création des tables de la base: '; +$_lang["setup_database_creation"] = 'Création de la base de données `'; +$_lang["setup_database_creation_failed"] = 'La création de la base de données a échoué!'; +$_lang["setup_database_creation_failed_note"] = ' - Le programme d\'installation n\'a pas pu créer la base de données!'; +$_lang["setup_database_creation_failed_note2"] = 'Le programme d\'installation n\'a pas pu créer la base de données, et aucune base de données existante avec le même nom n\'a été trouvée. Vraisemblablement, les réglages de sécurité de votre hébergeur n\'autorisent pas les scripts externes à créer une base de données. Veuillez suivre la procédure mise à disposition par votre hébergeur afin de créer la base, puis recommencez l\'installation.'; +$_lang["setup_database_selection"] = 'Sélection de la base de données `'; +$_lang["setup_database_selection_failed"] = 'La sélection de la base de données a échoué...'; +$_lang["setup_database_selection_failed_note"] = 'La base de données n\'existe pas. Le programme d\'installation va essayer de la créer.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Certaines tables n\'ont pas été mises à jour. Ceci peut être dû à des modifications précédentes.'; +$_lang["status_checking_database"] = 'Vérification de la base de données: '; +$_lang["status_connecting"] = 'Connexion à l\'hôte: '; +$_lang["status_failed"] = 'échec!'; +$_lang["status_failed_could_not_create_database"] = 'échec - impossible de créer la base de données'; +$_lang["status_failed_database_collation_does_not_match"] = 'échec - collation différente; utilisez SET NAMES ou choisir %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'échec - préfixe de table déjà utilisé!'; +$_lang["status_passed"] = 'succès - base sélectionnée'; +$_lang["status_passed_database_created"] = 'succès - base créée'; +$_lang["status_passed_server"] = 'succès - collations maintenant disponibles'; +$_lang["strict_mode"] = ' MySQL est configuré en mode strict!'; +$_lang["strict_mode_error"] = 'MODx nécessite que le mode strict de MySQL soit désactivé. Vous pouvez changer le mode strict en éditant le fichier my.cnf de MySQL ou alors contacter l\'administrateur de votre serveur.'; +$_lang["summary_setup_check"] = 'Le programme d\'installation a effectué une série de vérifications afin de déterminer si tout est prêt pour démarrer l\'installation.'; +$_lang["system_configuration"] = 'Configuration Système '; +$_lang["system_configuration_validate_referer_description"] = 'L\'autorisation des entêtes HTTP_REFERER est recommandée et peut protéger votre site d\'attaques CSRF, mais avec certaines configurations serveurs peut rendre votre manager inaccessible.'; +$_lang["table_prefix_already_inuse"] = ' - Le préfixe de table est déjà utilisé dans cette base de données!'; +$_lang["table_prefix_already_inuse_note"] = 'Le programme d\'installation n\'a pas pu utiliser la base de données spécifiée parce qu\'elle contient déjà des tables comportant le préfixe que vous avez choisi. Veuillez sélectionner un autre préfixe de table et recommencer l\'installation.'; +$_lang["table_prefix_not_exist"] = ' - Le préfixe de table n\'existe pas dans la base de données!'; +$_lang["table_prefix_not_exist_note"] = 'Le programme d\'installation n\'a pas pu utiliser la base de données spécifiée parce qu\'elle ne contient pas de tables comportant le préfixe que vous avez choisi pour la mise à jour. Veuillez choisir un préfixe de table existant et recommencer l\'installation.'; +$_lang["templates"] = 'Modèles'; +$_lang["to_log_into_content_manager"] = 'Pour vous connecter au Gestionnaire de Contenu ('.MGR_DIR.'/index.php), cliquez sur le bouton «Fermer».'; +$_lang["toggle"] = 'Intervertir'; +$_lang['tvs'] = 'Variables de Template'; +$_lang["unable_install_chunk"] = 'Impossible d\'installer le Chunk. Fichier'; +$_lang["unable_install_module"] = 'Impossible d\'installer le Module. Fichier'; +$_lang["unable_install_plugin"] = 'Impossible d\'installer le Plugin. Fichier'; +$_lang["unable_install_snippet"] = 'Impossible d\'installer le Snippet. Fichier'; +$_lang["unable_install_template"] = 'Impossible d\'installer le Modèle. Fichier'; +$_lang["upgrade_note"] = 'NOTE: Avant de visiter le site, il est conseillé de vous connecter en tant qu\'administrateur au Gestionnaire et de vérifier les paramètres de configuration système.'; +$_lang["upgraded"] = 'Mis à jour'; +$_lang["validate_referer_title"] = 'Autorisez vous les entêtes HTTP_REFERER?'; +$_lang["visit_forum"] = ', visitez les forums de MODx.'; +$_lang["warning"] = 'ATTENTION!'; +$_lang["welcome_message_start"] = 'Pour commencer, choisissez le type d\'installation à réaliser:'; +$_lang["welcome_message_text"] = 'Ce programme vous guidera tout au long du processus d\'installation.'; +$_lang["welcome_message_welcome"] = 'Bienvenue dans le programme d\'installation de MODx.'; +$_lang["writing_config_file"] = 'Écriture des fichiers de configuration: '; +$_lang["yes"] = 'Oui'; +$_lang["you_running_php"] = ' - Vous utilisez PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/german.inc.php b/assets/modules/store/installer/lang/german.inc.php new file mode 100755 index 0000000000..40ea8f5998 --- /dev/null +++ b/assets/modules/store/installer/lang/german.inc.php @@ -0,0 +1,186 @@ +assets/cache existiert: '; + $_lang["checking_if_cache_file2_writable"] = 'Überprüfen ob die Datei assets/cache/sitePublishing.idx.php beschreibbar ist: '; + $_lang["checking_if_cache_file_writable"] = 'Überprüfen ob die Datei assets/cache/siteCache.idx.php beschreibbar ist: '; + $_lang["checking_if_cache_writable"] = 'Überprüfen ob der Ordner assets/cache beschreibbar ist: '; + $_lang["checking_if_config_exist_and_writable"] = 'Überprüfen ob die Datei '.MGR_DIR.'/includes/config.inc.php existiert und beschreibbar ist: '; + $_lang["checking_if_export_exists"] = 'Überprüfen ob der Ordner assets/export existiert: '; + $_lang["checking_if_export_writable"] = 'Überprüfen ob der Ordner assets/export beschreibbar ist: '; + $_lang["checking_if_images_exist"] = 'Überprüfen ob der Ordner assets/images, assets/files, assets/flash, /assets/media, /assets/backup, /assets/.thumbs existiert: '; + $_lang["checking_if_images_writable"] = 'Überprüfen ob der Ordner assets/images, assets/files, assets/flash, /assets/media, /assets/backup, /assets/.thumbs beschreibbar ist: '; + $_lang["checking_mysql_strict_mode"] = 'Überprüfe MySQL Strict-Mode: '; + $_lang["checking_mysql_version"] = 'Überprüfe MySQL-Version: '; + $_lang["checking_php_version"] = 'Überprüfe PHP-Version: '; + $_lang["checking_registerglobals"] = 'Überprüfe ob PHP register_globals ausgeschaltet sind: '; + $_lang["checking_registerglobals_note"] = 'Diese Konfiguration macht Ihre Website angreifbarer für Cross Site Scripting (XSS) Attacken. Sie sollten mit Ihrem Provider sprechen, ob diese Einstellung geändert werden kann. Es gibt normalerweise drei Möglichkeiten: Ändern der globalen php.ini, Hinzufügen von Regeln zu der .htaccess-Datei im Root-Verzeichnis der MODx-Installation oder durch Hinzufügen einer angepassten php.ini in jedem Verzeichnis Ihrer MODx-Installation. Sie können MODx trotzdem installieren, aber Sie müssen sich den möglichen Sicherheitsrisiken bewusst sein.'; //Look at changing this to provide a solution. + $_lang["checking_sessions"] = 'Überprüfe ob die Sessions sauber definiert sind: '; + $_lang["checking_table_prefix"] = 'Überprüfe Tabellen-Präfixe `'; + $_lang["chunks"] = 'Chunks'; + $_lang["config_permissions_note"] = 'Für neue Linux/Unix Installationen bitt eine leere Datei config.inc.php im Ordner '.MGR_DIR.'/includes/ anlegen und die Dateirechte auf 0666 setzen.'; + $_lang["connection_screen_collation"] = 'Kollation:'; + $_lang["connection_screen_connection_method"] = 'Verbindungsmethode:'; + $_lang["connection_screen_database_connection_information"] = 'Datenbankinformationen'; + $_lang["connection_screen_database_connection_note"] = 'Bitte geben Sie den Namen der Datenbank an, die Sie für MODx nutzen wollen. Falls die Datenbank nicht existiert, wird MODx versuchen sie zu erstellen. Dies kann fehlschlagen, falls Sie nicht die nötigen Rechte besitzen. Bei vielen Web-Hosting-Angeboten sind die Datenbanken bereits eingerichtet oder können in der Administrationsoberfläche des Web-Hosting-Angebots erstellt werden. Notieren Sie diesen Namen und geben Sie ihn hier ein.'; + $_lang["connection_screen_database_host"] = 'Datenbank-Host:'; + $_lang["connection_screen_database_info"] = 'Datenbank-Information'; + $_lang["connection_screen_database_login"] = 'Datenbank-Login-Name:'; + $_lang["connection_screen_database_name"] = 'Datenbank-Name:'; + $_lang["connection_screen_database_pass"] = 'Datenbank-Passwort:'; + $_lang["connection_screen_database_test_connection"] = 'Klicken Sie hier, um die Datenbank zu erstellen bzw. um die Verbinding zu testen.'; + $_lang["connection_screen_default_admin_email"] = 'Administrator-E-Mail:'; + $_lang["connection_screen_default_admin_login"] = 'Administrator-Benutzername:'; + $_lang["connection_screen_default_admin_note"] = 'Bitte geben Sie weitere Details zu Ihren Administrator-Benutzerkonto an. Sie können Ihren Namen eingeben und ein Passwort, dass Sie nicht vergessen. Diese Daten benötigen Sie für die Anmeldung im MODx-Manager (dem MODx-Adminbereich) nach dem die Installation abgeschlossen ist.'; + $_lang["connection_screen_default_admin_password"] = 'Administrator-Passwort:'; + $_lang["connection_screen_default_admin_password_confirm"] = 'Passwort bestätigen:'; + $_lang["connection_screen_default_admin_user"] = 'Standard Administrator-Konto'; + $_lang["connection_screen_defaults"] = 'Standard-Manager-Einstellungen'; + $_lang["connection_screen_server_connection_information"] = 'Server-Verbindungs- und Anmeldeinformation'; + $_lang["connection_screen_server_connection_note"] = 'Bitte geben Sie den Datenbank-Server, den Login-Namen sowie das Datenbank-Passwort ein und testen Sie dann die Verbindung.'; + $_lang["connection_screen_server_test_connection"] = 'Klicken Sie hier, um die Datenbank-Verbindung zu testen und die verfügbaren Kollationen aufzulisten.'; + $_lang["connection_screen_table_prefix"] = 'Tabellen-Präfix:'; + $_lang["creating_database_connection"] = 'Stelle Verbindung zur Datenbank her: '; + $_lang["database_alerts"] = 'Datenbank Meldungen!'; + $_lang["database_connection_failed"] = 'Datenbank-Verbindung fehlgeschlagen!'; + $_lang["database_connection_failed_note"] = 'Bitte Überprüfen Sie Ihre Datenbank-Anmeldung und versuchen Sie es erneut.'; + $_lang["default_language"] = 'Standard-Sprache MODx-Manager'; + $_lang["default_language_description"] = 'Das ist die voreingestellte Sprache die im MODx-Manager (dem MODx-Adminbereich) verwendet wird.'; + $_lang["database_use_failed"] = 'Datenbank konnte nicht ausgewählt werden!'; + $_lang["database_use_failed_note"] = 'Bitte prüfen Sie den Datenbankzugang für den gewählten Benutzer und versuchen Sie es erneut.'; + $_lang["during_execution_of_sql"] = ' während des Ausführens des SQL-Statements '; + $_lang["encoding"] = 'utf-8'; + $_lang["error"] = 'Fehler'; + $_lang["errors"] = 'Fehler'; + $_lang["failed"] = 'fehlgeschlagen!'; + $_lang["help"] = 'Hilfe!'; + $_lang["help_link"] = 'http://www.modxcms.de/forum/'; + $_lang["help_title"] = 'Unterstützung zur Installation finden Sie in den MODx-Foren'; + $_lang["iagree_box"] = 'Ich stimme den Lizenzbedingungen zu.'; + $_lang["install"] = 'Installieren'; + $_lang["install_overwrite"] = 'Installieren/Überschreiben'; + $_lang["install_results"] = 'Installationsergebnisse'; + $_lang["install_update"] = 'Installation/Update'; + $_lang["installation_error_occured"] = 'Folgende Fehler sind während der Installation aufgetreten'; + $_lang["installation_install_new_copy"] = 'Neue Kopie installieren von '; + $_lang["installation_install_new_note"] = 'Beachten Sie, dass diese Option alle Daten in der Datenbank überschreibt.'; + $_lang["installation_mode"] = 'Installationsmodus'; + $_lang["installation_new_installation"] = 'Neue Installation'; + $_lang["installation_note"] = 'Achtung: Nach dem Anmelden im MODx-Manager sollten Sie die Konfigurationseinstellungen unter Werkzeuge > Konfiguration vornehmen und speichern bevor Sie Ihre Seite aufrufen.'; + $_lang["installation_successful"] = 'Installation war erfolgreich!'; + $_lang["installation_upgrade_advanced"] = 'Upgrade Installation für Fortgeschrittene
                      (Anpassung der Datenbank-Konfiguration)'; + $_lang["installation_upgrade_advanced_note"] = 'For fortgeschrittene Datenbank-Administratoren oder bei Umzug auf einen Server mit anderem Datenbank-Zeichensatz oder anderer Datenbank-Kollation. Sie müssen die vollständigen Datenbank-Anmeldedaten sowie den Datenbank-Zeichensatz und die Datenbank-Kollation kennen.'; + $_lang["installation_upgrade_existing"] = 'Upgrade einer existierenden Installation'; + $_lang["installation_upgrade_existing_note"] = 'Upgrade Ihrer Dateien und der Datenbank.'; + $_lang["installed"] = 'Installiert'; + $_lang["installing_demo_site"] = 'Installiere Beispielinhalte: '; + $_lang["language_code"] = 'de'; + $_lang["loading"] = 'Laden …'; + $_lang["modules"] = 'Module'; + $_lang["modx_footer1"] = '© 2005-2011 MODx Content Mangement Framework (CMF) Projekt. Alle Rechte vorbehalten. MODx ist unter der GNU GPL lizenziert.'; + $_lang["modx_footer2"] = 'MODx is freie Software. Wir ermutigen Sie, kreativ zu sein und MODx so zu nutzen wie es Ihnen am besten passt. Stellen Sie nur sicher, dass Sie bei Veränderungen des Quellcodes und der Weiterverbreitung der modifizierten MODx-Version den Quelltext frei zugänglich belassen!'; + $_lang["modx_install"] = 'MODx » Installation'; + $_lang["modx_requires_php"] = ', und MODx benötigt PHP 4.2.0. oder höher'; + $_lang["mysql_5051"] = 'Warnung: MySQL-Server-Version ist 5.0.51!'; + $_lang["mysql_5051_warning"] = 'MySQL-Server-Version ist 5.0.51 hat bekannte Bugs. Es wird empfohlen ein Update auf eine neuere Version durchzuführen bevor Sie fortfahren.'; + $_lang["mysql_version_is"] = ' Ihre MySQL-Version ist: '; + $_lang["none"] = 'Keine'; + $_lang["not_found"] = 'nicht gefunden'; + $_lang["ok"] = 'OK!'; + $_lang["optional_items"] = 'Optionale Einstellungen'; + $_lang["optional_items_note"] = 'Bitte wählen Sie Ihre Installationsoptionen und klicken Sie auf Install:'; + $_lang["php_security_notice"] = 'Sicherheitshinweis

                      MODx wird mit Ihrer PHP-Version wohl laufen, unter dieser PHP-Version wird die Benutzung von MODx nicht empfohlen. Ihre Version von PHP ist angreifbar aufgrund verschiedener Sicherheitslöcher. Bitte führen Sie ein Update auf PHP-Version 4.4.1. oder höher durch, um die Sicherheitsprobleme zu beheben.

                      '; + $_lang["please_correct_error"] = '. Bitte korrigieren Sie den Fehler'; + $_lang["please_correct_errors"] = '. Bitte korrigieren Sie die Fehler'; + $_lang["plugins"] = 'Plugins'; + $_lang["preinstall_validation"] = 'Prüfung vor der Installation'; + $_lang["remove_install_folder_auto"] = 'Installationsordner löschen
                       (Dies erfordert die entsprechenden Zugriffsrechte um den Ordner löschen zu können).'; + $_lang["remove_install_folder_manual"] = 'Bitte denken Sie daran den Ordner install zu löschen bevor Sie sich im MODx-Manager anmelden.'; + $_lang["retry"] = 'Nochmal versuchen'; + $_lang["running_database_updates"] = 'Führe Datenbank-Updates durch: '; + $_lang["sample_web_site"] = 'Beispiel-Website'; + $_lang["sample_web_site_note"] = 'Beachten Sie, dass damit alle Dokumente und Ressourcen überschrieben werden.'; + $_lang["session_problem"] = 'Ein Problem mit Ihren Server-Session wurde festgestellt. Bitte kontaktieren Sie Ihren Server-Administator um dieses Problem zu beheben.'; + $_lang["session_problem_try_again"] = 'Erneut versuchen?'; + $_lang["setup_cannot_continue"] = 'Leider kann die Installation wegen oben aufgeführter Gründe nicht fortgesetzt werden.'; + $_lang["setup_couldnt_install"] = 'Die Tabellen in der gewählten Datenbank konnten nicht angelegt/geändert werden.'; + $_lang["setup_database"] = 'Die MODx-Installation wird nun versuchen die Datenbank einzurichten:
                      '; + $_lang["setup_database_create_connection"] = 'Verbindung zur Datenbank: '; + $_lang["setup_database_create_connection_failed"] = 'Datenbank-Verbindung fehlgeschlagen!'; + $_lang["setup_database_create_connection_failed_note"] = 'Bitte prüfen Sie die Datenbank-Anmeldedaten und versuchen Sie es erneut.'; + $_lang["setup_database_creating_tables"] = 'Erstelle Datenbanktabellen: '; + $_lang["setup_database_creation"] = 'Lege Datenbank an `'; + $_lang["setup_database_creation_failed"] = 'Datenbank-Erstellung fehlgeschlagen!'; + $_lang["setup_database_creation_failed_note"] = ' – Die Datenbank konnte nicht angelegt werden!'; + $_lang["setup_database_creation_failed_note2"] = 'Die Datenbank konnte nicht angelegt werden und keine Datenbank mit gleichem Namen wurde gefunden. Höchstwahrscheinlich lässt Ihr Web-Hosting-Provider das Anlegen von Datenbanken mit einem externem Script nicht zu. Bitte legen Sie die Datenbank wie vom Web-Hosting-Provider beschrieben an oder geben Sie die Verbindungsdaten einer bereits angelegten Datenbank an.'; + $_lang["setup_database_selection"] = 'Datenbank wählen`'; + $_lang["setup_database_selection_failed"] = 'Datenbank-Auswahl fehlgeschlagen …'; + $_lang["setup_database_selection_failed_note"] = 'Die Datenbank existiert nicht, es wird versucht versucht sie anzulegen.'; + $_lang["snippets"] = 'Snippets'; + $_lang["some_tables_not_updated"] = 'Manche Tabellen wurden nicht aktualisiert. Dies könnte an zuvor individuell ausgeführten Modifikationen liegen.'; + $_lang["status_checking_database"] = 'Überprüfe Datenbank: '; + $_lang["status_connecting"] = ' Verbindung zum Host: '; + $_lang["status_failed"] = 'fehlgeschlagen!'; + $_lang["status_failed_could_not_create_database"] = 'fehlgeschlagen – konnte Datenbank nicht erstellen'; + $_lang["status_failed_database_collation_does_not_match"] = 'fehlgeschlagen – Unterschied in der Datenbank-Kollation; benutzen Sie SET NAMES oder wählen Sie %s'; + $_lang["status_failed_table_prefix_already_in_use"] = 'fehlgeschlagen – Tabellen-Präfix bereits verwendet!'; + $_lang["status_passed"] = 'In Ordnung – Datenbank ausgewählt'; + $_lang["status_passed_database_created"] = 'In Ordnung – Datenbank erstellt'; + $_lang["status_passed_server"] = 'In Ordung – Kollationen sind nun auswählbar'; + $_lang["strict_mode"] = 'Warnung: MySQL-Server hat „sql_mode strict“ aktiviert'; + $_lang["strict_mode_error"] = 'Bestimmte MODx-Funktionen funktionieren nicht korrekt solange „STRICT_TRANS_TABLES sql_mode“ aktiviert ist. Sie können den MySQL-Modus ändern, in dem Sie die Datei „my.cnf“ anpassen oder Ihren Server-Administrator kontaktieren.'; + $_lang["summary_setup_check"] = 'Es wird überprüft, ob alles für die Installation bereit ist.'; + $_lang["table_prefix_already_inuse"] = ' – Tabellen-Präfix wird bereits benutzt!'; + $_lang["table_prefix_already_inuse_note"] = 'Die gewählte Datenbank konnte nicht beschrieben werden, da der Tabellen-Präfix bereits verwendet wird. Bitte wählen Sie einen anderen Präfix und wiederholen Sie die Installation.'; + $_lang["table_prefix_not_exist"] = ' – Tabellen-Präfix existiert nicht in der gewählten Datenbank!'; + $_lang["table_prefix_not_exist_note"] = 'Die gewählte Datenbank konnte nicht beschrieben werden, da keine Tabellen mit dem gewählten Präfix existieren. Bitte wählen Sie einen existierenden Präfix und wiederholen Sie die Installation.'; + $_lang["templates"] = 'Templates'; + $_lang["to_log_into_content_manager"] = 'Um sich im Manager anzumelden, klicken Sie auf den Schließen-Button.'; + $_lang["toggle"] = 'Umschalten'; + $_lang['tvs'] = 'Template-Variablen'; + $_lang["unable_install_chunk"] = 'Konnte Chunk nicht installieren. Datei'; + $_lang["unable_install_module"] = 'Konnte Modul nicht installieren. Datei'; + $_lang["unable_install_plugin"] = 'Konnte Plugin nicht installieren. Datei'; + $_lang["unable_install_snippet"] = 'Konnte Snippet nicht installieren. Datei'; + $_lang["unable_install_template"] = 'Konnte Template nicht installieren. Datei'; + $_lang["upgrade_note"] = 'Achtung: Nach dem Anmelden im Manager sollten Sie die Konfigurationseinstellungen unter Werkzeuge > Konfiguration überprüfen und speichern bevor Sie Ihre Seite aufrufen.'; + $_lang["upgraded"] = 'Aktualisiert'; + $_lang["visit_forum"] = ', besuchen Sie die MODx-Foren.'; + $_lang["warning"] = 'ACHTUNG!'; + $_lang["welcome_message_start"] = 'Wählen Sie zunächst den Intallationstyp aus:'; + $_lang["welcome_message_text"] = 'Dieses Programm wird Sie durch die Installation begleiten.'; + $_lang["welcome_message_welcome"] = 'Willkommen beim MODx-Installationsprogramm.'; + $_lang["writing_config_file"] = 'Schreibe Konfigurationsdatei: '; + $_lang["you_running_php"] = ' – Benutzte PHP-Version '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/hebrew.inc.php b/assets/modules/store/installer/lang/hebrew.inc.php new file mode 100755 index 0000000000..57e10d9a31 --- /dev/null +++ b/assets/modules/store/installer/lang/hebrew.inc.php @@ -0,0 +1,183 @@ +assets/cache directory exists: '; +$_lang["checking_if_cache_file2_writable"] = 'Checking if assets/cache/sitePublishing.idx.php file is writable: '; +$_lang["checking_if_cache_file_writable"] = 'Checking if assets/cache/siteCache.idx.php file is writable: '; +$_lang["checking_if_cache_writable"] = 'Checking if assets/cache directory is writable: '; +$_lang["checking_if_config_exist_and_writable"] = 'Checking if '.MGR_DIR.'/includes/config.inc.php exists and is writable: '; +$_lang["checking_if_export_exists"] = 'Checking if assets/export directory exists: '; +$_lang["checking_if_export_writable"] = 'Checking if assets/export directory is writable: '; +$_lang["checking_if_images_exist"] = 'Checking if assets/images directory exists: '; +$_lang["checking_if_images_writable"] = 'Checking if assets/images, /assets/media, /assets/backup, /assets/.thumbs directory is writable: '; +$_lang["checking_mysql_strict_mode"] = 'Checking MySQL for strict sql_mode: '; +$_lang["checking_mysql_version"] = 'Checking MySQL version: '; +$_lang["checking_php_version"] = 'Checking PHP version: '; +$_lang["checking_registerglobals"] = 'Checking if Register_Globals is off: '; +$_lang["checking_registerglobals_note"] = 'This configuration makes your site much more susceptible to Cross Site Scripting (XSS) attacks. You should speak to your host about disabling this setting, usually by one of three ways: modifying the global php.ini file, adding rules to a .htaccess file in the root of your MODx install, or adding custom php.ini override files in every directory on your install (and there\'s a lot of them). You will still be able to install MODx, but consider yourself warned.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Checking if sessions are properly configured: '; +$_lang["checking_table_prefix"] = 'Checking table prefix '; +$_lang["chunks"] = 'מיני תבניות'; +$_lang["config_permissions_note"] = 'For new Linux/Unix installs, please create a blank file named config.inc.php in the '.MGR_DIR.'/includes/ directory with file permissions set to 0666.'; +$_lang["connection_screen_character_set"] = 'חיבור ערכת תווים:'; +$_lang["connection_screen_collation"] = 'אוסף נתונים:'; +$_lang["connection_screen_connection_information"] = 'מידע התחברות'; +$_lang["connection_screen_connection_method"] = 'שיטת התחברות:'; +$_lang["connection_screen_database_connection_information"] = 'מידע אודות מסד הנתונים'; +$_lang["connection_screen_database_connection_note"] = 'נא להזין את שם מסד הנתונים שנוצר עבור MODX. אם אין עדיין מסד נתונים, תוכנת ההתקנה תנסה ליצור מסד נתונים עבורך. תהליך זה עלול להיכשל בהתאם לתצורת MySQL או הרשאות משתמש עבור שם המתחם /התקנה.'; +$_lang["connection_screen_database_host"] = 'שרת מסד הנתונים:'; +$_lang["connection_screen_database_login"] = 'שם התחברות למסד הנתונים:'; +$_lang["connection_screen_database_name"] = 'שם מסד הנתונים:'; +$_lang["connection_screen_database_pass"] = 'סיסמת מסד הנתונים:'; +$_lang["connection_screen_database_test_connection"] = 'לחץ כאן כדי ליצור את מסד הנתונים או כדי לבדוק את הבחירה של מסד הנתונים'; +$_lang["connection_screen_default_admin_email"] = 'דואל מנהל המערכת:'; +$_lang["connection_screen_default_admin_information"] = 'מידע אודות מנהל המערכת'; +$_lang["connection_screen_default_admin_login"] = 'שם משתמש למנהל המערכת:'; +$_lang["connection_screen_default_admin_note"] = 'עכשיו תצטרך להזין מספר פרטים של חשבון המנהל הראשי. אתה יכול למלא את השם כאן, וסיסמה שלא סביר שתשכח. תצטרך פרטים אלו להתחברות למערכת הניהול לאחר סיום ההתקנה.'; +$_lang["connection_screen_default_admin_password"] = 'סיסמת מנהל המערכת:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'אימות סיסמא:'; +$_lang["connection_screen_default_admin_user"] = 'ברירת מחדל משתמש מנהל מערכת'; +$_lang["connection_screen_server_connection_information"] = 'חיבור לשרת ופרטי התחברות'; +$_lang["connection_screen_server_connection_note"] = 'נא להזין את שם השרת, שם המשתמש שלך ואת הסיסמה שלך ולאחר מכן לבדוק את ההתחברות לשרת.'; +$_lang["connection_screen_server_test_connection"] = 'לחץ כאן כדי לבדוק את השרת ולקבל את אוספי התווים הזמינים'; +$_lang["connection_screen_table_prefix"] = 'קידומת טבלה:'; +$_lang["creating_database_connection"] = 'יוצר חיבור למסד הנתונים: '; +$_lang["database_alerts"] = 'התראות מסד הנתונים!'; +$_lang["database_connection_failed"] = 'התחברות למסד הנתונים נכשלה!'; +$_lang["database_connection_failed_note"] = 'אנא בדוק את פרטי ההתחברות למסד הנתונים ונסה שוב.'; +$_lang["database_use_failed"] = 'מסד הנתונים לא ניתן לבחירה!'; +$_lang["database_use_failed_note"] = 'Please check the database permissions for the specified user and try again.'; +$_lang["during_execution_of_sql"] = ' during the execution of SQL statement '; +$_lang["encoding"] = 'UTF-8'; //charset encoding for html header +$_lang["error"] = 'שגיאה'; +$_lang["errors"] = 'שגיאות'; +$_lang["failed"] = 'נכשל!'; +$_lang["iagree_box"] = 'אני מסכים לתנאים שהוצגו ברשיון זה.'; +$_lang["install"] = 'התקן'; +$_lang["install_overwrite"] = 'התקנה/דריסה'; +$_lang["install_results"] = 'תוצאות התקנה'; +$_lang["install_update"] = 'התקנה/עדכון'; +$_lang["installation_error_occured"] = 'השגיאות הבאות התגלו במהלך ההתקנה'; +$_lang["installation_install_new_copy"] = 'התקנת עותק חדש של '; +$_lang["installation_install_new_note"] = 'שים לב, אפשרות זו עלולה להחליף את כל הנתונים בתוך מסד הנתונים.'; +$_lang["installation_mode"] = 'מצב התקנה'; +$_lang["installation_new_installation"] = 'התקנה חדשה'; +$_lang["installation_note"] = 'הערה: לאחר ההתחברות הראשונית למערכת הניהול עליך לעדכן את הגדרות האתר.'; +$_lang["installation_successful"] = 'ההתקנה בוצעה בהצלחה!'; +$_lang["installation_upgrade_advanced"] = 'שדרוג התקנה קיימת מתקדמת
                      (עריכת הגדרות מסד נתונים)'; +$_lang["installation_upgrade_advanced_note"] = 'עבור מנהלים מתקדמים או לעוברים לשרתים אחרים בעלי נתוני חיבור שונים. מצריך פרטים אודות שם מסד הנתונים, שם משתמש, סיסמה ופרטי התחברות מלאים.'; +$_lang["installation_upgrade_existing"] = 'שדרוג התקנה קיימת'; +$_lang["installation_upgrade_existing_note"] = 'שדרוג קבצים ומסד נתונים נוכחים.'; +$_lang["installed"] = 'הותקן'; +$_lang["installing_demo_site"] = 'התקנת אתר דוגמא: '; +$_lang["language_code"] = 'he'; // for html element e.g. +$_lang["loading"] = 'טוען...'; +$_lang["modules"] = 'מודולים'; +$_lang["modx_footer1"] = '© 2005-2011 the MODx Content Mangement Framework (CMF) project. All rights reserved. MODx is licensed under the GNU GPL.'; +$_lang["modx_footer2"] = 'MODx is free software. We encourage you to be creative and make use of MODx in any way you see fit. Just make sure that if you do make changes and decide to redistribute your modified MODx, that you keep the source code free!'; +$_lang["modx_install"] = 'MODx » Install'; +$_lang["modx_requires_php"] = ', and MODx requires PHP 4.2.0 or later'; +$_lang["mysql_5051"] = ' MySQL server version is 5.0.51!'; +$_lang["mysql_5051_warning"] = 'There are known issues with MySQL 5.0.51. It is recommended that you upgrade before continuing.'; +$_lang["mysql_version_is"] = ' Your MySQL version is: '; +$_lang["none"] = 'ללא'; +$_lang["not_found"] = 'לא נמצא'; +$_lang["ok"] = 'תקין!'; +$_lang["optional_items"] = 'פריטים אופצוינאלים'; +$_lang["optional_items_note"] = 'אנא בחר את אפשרויות ההתקנה שלך ולחץ על התקן:'; +$_lang["php_security_notice"] = 'Security notice

                      While MODx will work on your PHP version, usage of MODx on this version is not recommended. Your version of PHP is vulnerable to numerous security holes. Please upgrade to PHP version is 4.3.8 or higher, which patches these holes. It is recommended you upgrade to this version for the security of your own website.

                      '; +$_lang["please_correct_error"] = '. Please correct the error'; +$_lang["please_correct_errors"] = '. Please correct the errors'; +$_lang["plugins"] = 'התקנים'; +$_lang["preinstall_validation"] = 'אימות לפני התקנה'; +$_lang["remove_install_folder_auto"] = 'מחק את תיקיית התתקנה מהאתר
                       (פעולה זו מצריכה הרשאת מחיקה).'; +$_lang["remove_install_folder_manual"] = 'אנא זכור להסיר את "תקיית ההתקנה" לפני כניסתך למערכת הניהול.'; +$_lang["retry"] = 'נסה שוב'; +$_lang["running_database_updates"] = 'Running database updates: '; +$_lang["running_setup_script"] = 'Running setup script... please wait'; +$_lang["sample_web_site"] = 'אתר אינטרנט לדוגמא'; +$_lang["sample_web_site_note"] = 'יש לקחת בחשבון כי פעולה זו דורסת מסמכים ומשאבים קיימים.'; +$_lang["setup_cannot_continue"] = 'Unfortunately, Setup cannot continue at the moment, due to the above '; +$_lang["setup_couldnt_install"] = 'MODx setup couldn\'t install/alter some tables inside the selected database.'; +$_lang["setup_database"] = 'מערכת ההתקנה תנסה כעת להתקין את מסד הנתונים:
                      '; +$_lang["setup_database_create_connection"] = 'Creating connection to the database: '; +$_lang["setup_database_create_connection_failed"] = 'Database connection failed!'; +$_lang["setup_database_create_connection_failed_note"] = 'Please check the database login details and try again.'; +$_lang["setup_database_creating_tables"] = 'יצירת טבלאות מסד נתונים: '; +$_lang["setup_database_creation"] = 'יצירת מסד נתונים `'; +$_lang["setup_database_creation_failed"] = 'יצירת מסד נתונים נכשלה!'; +$_lang["setup_database_creation_failed_note"] = ' - Setup could not create the database!'; +$_lang["setup_database_creation_failed_note2"] = 'Setup could not create the database, and no existing database with the same name was found. It is likely that your hosting provider\'s security does not allow external scripts to create a database. Please create a database according to your hosting provider\'s procedure, and run Setup again.'; +$_lang["setup_database_selection"] = 'בחירת מסד נתונים `'; +$_lang["setup_database_selection_failed"] = 'בחירת מסד נתונים נכשלה...'; +$_lang["setup_database_selection_failed_note"] = 'The database does not exist. Setup will attempt to create it.'; +$_lang["snippets"] = 'קטעי קוד'; +$_lang["some_tables_not_updated"] = 'Some tables were not updated. This might be due to previous modifications.'; +$_lang["status_checking_database"] = 'בודק מסד נתונים: '; +$_lang["status_connecting"] = 'חיבור לשרת: '; +$_lang["status_failed"] = 'נכשל!'; +$_lang["status_failed_could_not_create_database"] = 'נכשל - לא ניתן ליצור את מסד הנתונים'; +$_lang["status_failed_could_not_select_database"] = 'נכשל - לא ניתן לבחור את מסד הנתונים'; +$_lang["status_failed_database_collation_does_not_match"] = 'נכשל - אוסף הנתונים לא תואם; השתמש ב SET NAMES או בחר %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'failed - table prefix already in use!'; +$_lang["status_passed"] = 'עבר - מסד נתונים נבחר'; +$_lang["status_passed_database_created"] = 'עבר - יצירת מסד נתונים'; +$_lang["status_passed_server"] = 'עבר - אוסף נתונים זמין'; +$_lang["strict_mode"] = ' MySQL server strict sql_mode is enabled!'; +$_lang["strict_mode_error"] = 'Certain features of MODx may not work properly unless the STRICT_TRANS_TABLES sql_mode is disabled. You can set the MySQL mode by editing the my.cnf file or contact your server administrator.'; +$_lang["summary_setup_check"] = 'מערכת ההתקנה ביצעה מספר בדיקות על מנת לודא כי ניתן להמשיך בהתקנה.'; +$_lang["table_prefix_already_inuse"] = ' - Table prefix is already in use in this database!'; +$_lang["table_prefix_already_inuse_note"] = 'Setup couldn\'t install into the selected database, as it already contains tables with the prefix you specified. Please choose a new table prefix, and run Setup again.'; +$_lang["table_prefix_not_exist"] = ' - Table prefix does not exist in this database!'; +$_lang["table_prefix_not_exist_note"] = 'Setup couldn\'t install into the selected database, as it does not contain existing tables with the prefix you specified to be upgraded. Please choose an existing table prefix, and run Setup again.'; +$_lang["templates"] = 'תבניות עיצוב'; +$_lang["testing_connection"] = 'בודק חיבור...'; +$_lang["to_log_into_content_manager"] = 'על מנת להתחבר למערכת הניהול ('.MGR_DIR.'/index.php) ניתן ללחוץ על כפתור `סגור`.'; +$_lang["toggle"] = 'בחירה הפוכה'; +$_lang["unable_install_chunk"] = 'Unable to install chunk. File'; +$_lang["unable_install_module"] = 'Unable to install module. File'; +$_lang["unable_install_plugin"] = 'Unable to install plugin. File'; +$_lang["unable_install_snippet"] = 'Unable to install snippet. File'; +$_lang["unable_install_template"] = 'Unable to install template. File'; +$_lang["upgrade_note"] = 'הערה: לפני גלישה באתר יש להכנס למערכת הניהול לבדוק את ההגדרות ולשמור אותן.'; +$_lang["upgraded"] = 'שודרג'; +$_lang["visit_forum"] = ', בקרו ב פורומים בעברית.'; +$_lang["warning"] = 'אזהרה!'; +$_lang["welcome_message_select_begin_button"] = 'בחר בכפתור התחל להתחלת ההתקנה:'; +$_lang["welcome_message_text"] = 'תוכנה זו תלווה אתכם בהמשך תהליך ההתקנה.'; +$_lang["welcome_message_welcome"] = 'ברוכים הבאים להתקנת MODx.'; +$_lang["writing_config_file"] = 'יוצר קובץ הגדרות: '; +$_lang["you_running_php"] = ' - אתה רץ על PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/italian.inc.php b/assets/modules/store/installer/lang/italian.inc.php new file mode 100755 index 0000000000..a80058aa27 --- /dev/null +++ b/assets/modules/store/installer/lang/italian.inc.php @@ -0,0 +1,194 @@ +/assets/cache e /assets/cache/rss : '; +$_lang["checking_if_cache_file_writable"] = 'Controllo i permessi di scrittura sul file /assets/cache/siteCache.idx.php : '; +$_lang["checking_if_cache_file2_writable"] = 'Controllo i permessi di scrittura sul file /assets/cache/sitePublishing.idx.php : '; +$_lang["checking_if_cache_writable"] = 'Controllo i permessi di scrittura sulle directories /assets/cache e /assets/cache/rss : '; +$_lang["checking_if_config_exist_and_writable"] = 'Controllo l\'esistenza e i permessi di scrittura di /'.MGR_DIR.'/includes/config.inc.php : '; +$_lang["checking_if_export_exists"] = 'Controllo se esiste la directory /assets/export : '; +$_lang["checking_if_export_writable"] = 'Controllo i permessi di scrittura della directory /assets/export : '; +$_lang["checking_if_images_exist"] = 'Controllo se esistono le directories /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup e /assets/.thumbs : '; +$_lang["checking_if_images_writable"] = 'Controllo i permessi di scrittura delle directories /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup e /assets/.thumbs : '; +$_lang["checking_mysql_strict_mode"] = 'Controllo la modalità strict sql_mode di MySql: '; +$_lang["checking_mysql_version"] = 'Controllo la versione di MySQL: '; +$_lang["checking_php_version"] = 'Controllo la versione di PHP: '; +$_lang["checking_registerglobals"] = 'Controllo se Register_Globals è disattivato: '; +$_lang["checking_registerglobals_note"] = 'Con questa configurazione il vostro sito può essere vittima di attacchi Cross Site Scripting (XSS). Per disabilitare Register_Globals ci sono diverse alternative: modificare il file php.ini globale, modificare il file .htaccess nella root della vostra installazione MODx, oppure aggiungere dei files php.ini in ogni directory della vostra installazione MODx (ma ci sono molte directories). Potete continuare con l\'installazione, ma non dite che non vi abbiamo avvertito.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Controllo se le sessioni sono configurate correttamente: '; +$_lang["checking_table_prefix"] = 'Controllo il prefisso per le tabelle `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'Per nuove installazioni su Linux/Unix, vi preghiamo di creare un file vuoto config.inc.php nella directory /'.MGR_DIR.'/includes/ con i permessi di scrittura a 0666.'; +$_lang["connection_screen_collation"] = 'Collation:'; +$_lang["connection_screen_connection_method"] = 'Tipo di connessione:'; +$_lang["connection_screen_database_connection_information"] = 'Informazioni sul Database'; +$_lang["connection_screen_database_connection_note"] = 'Inserite il nome del database da usare o che volete creare per questa installazione MODx. Se il database non esiste, il programma di installazione proverà a crearlo. Questa operazione potrebbe non riuscire in funzione della vostra configurazione di MySql.'; +$_lang["connection_screen_database_host"] = 'Server del Database:'; +$_lang["connection_screen_database_info"] = 'informazioni sul Database'; +$_lang["connection_screen_database_login"] = 'Nome utente del Database:'; +$_lang["connection_screen_database_name"] = 'Nome del Database:'; +$_lang["connection_screen_database_pass"] = 'Password del Database:'; +$_lang["connection_screen_database_test_connection"] = 'Crea Database o verifica Database selezionato.'; +$_lang["connection_screen_default_admin_email"] = 'Indirizzo email dell\'Amministratore:'; +$_lang["connection_screen_default_admin_login"] = 'Username dell\'Amministratore:'; +$_lang["connection_screen_default_admin_note"] = 'Ora occorre inserire alcuni dettagli per l\'account dell\'Amministratore. Potete inserire il vostro nome e scegliere una password che possibilmente non vi dimenticherete. Una volta terminata l\'installazione questi dati vi serviranno per accedere al sistema.'; +$_lang["connection_screen_default_admin_password"] = 'Password dell\'Amministratore:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Confermare la password:'; +$_lang["connection_screen_default_admin_user"] = 'Utente Admin di default'; +$_lang["connection_screen_defaults"] = 'Impostazioni di default per il Manager'; +$_lang["connection_screen_server_connection_information"] = 'Informazioni sulla connessione al server e l\'accesso'; +$_lang["connection_screen_server_connection_note"] = 'Prima di verificare la connessione occorre indicare il server del Database (nome del server o indirizzo IP), username e password.'; +$_lang["connection_screen_server_test_connection"] = 'Verifica del server del Database e delle collations.'; +$_lang["connection_screen_table_prefix"] = 'Prefisso per la Tabella:'; +$_lang["creating_database_connection"] = 'Creo la connessione al database: '; +$_lang["database_alerts"] = 'Database Alerts!'; +$_lang["database_connection_failed"] = 'La connessione al Database è fallita!'; +$_lang["database_connection_failed_note"] = 'Vi preghiamo di controllare i dettagli della connessione al database e riprovare.'; +$_lang["database_use_failed"] = 'Impossibile selezionare il Database!'; +$_lang["database_use_failed_note"] = 'Vi preghiamo di controllare i permessi dell\'utente specificato e riprovare.'; +$_lang["default_language"] = 'Lingua di default per il Manager'; +$_lang["default_language_description"] = 'Questa è la lingua che verrà usata nel Manager MODx Manager.'; +$_lang["during_execution_of_sql"] = ' durante l\'esecuzione del comando SQL '; +$_lang["encoding"] = 'iso-8859-1'; //charset encoding for html header +$_lang["error"] = 'errore'; +$_lang["errors"] = 'errori'; +$_lang["failed"] = 'FALLITA!'; +$_lang["help"] = 'Aiuto!'; +$_lang["help_link"] = 'http://modxcms.com/forums/'; +$_lang["help_title"] = 'Assistenza per l\'installazione nei forums MODx'; +$_lang["iagree_box"] = 'Accetto i termini della licenza MODx. Per una traduzione della licenza GPL versione 2, vi preghiamo di visitare il sito GNU.'; +$_lang["install"] = 'Installazione'; +$_lang["install_overwrite"] = 'Installazione/Ripristino'; +$_lang["install_results"] = 'Risultato dell\'Installazione'; +$_lang["install_update"] = 'Installazione/Aggiornamento'; +$_lang["installation_error_occured"] = 'Si sono verificati i seguenti errori durante l\'installazione'; +$_lang["installation_install_new_copy"] = 'Installare una nuova copia di '; +$_lang["installation_install_new_note"] = 'Vi preghiamo di notare che questa opzione può sovrascrivere i dati preesistenti nel vostro database.'; +$_lang["installation_mode"] = 'Modalità di Installazione'; +$_lang["installation_new_installation"] = 'Nuova Installazione'; +$_lang["installation_note"] = 'Nota: Dopo l\'accesso al Manager dovete modificare e salvare la Configurazione di Sistema selezionando Strumenti -> Configurazione di Sistema nel Manager MODx.'; +$_lang["installation_successful"] = 'L\'Installazione è terminata con successo!'; +$_lang["installation_upgrade_advanced"] = 'Aggiornamento Avanzato'; +$_lang["installation_upgrade_advanced_note"] = 'Per amministratori di database esperti oppure quando è necessario migrare a database con un diverso set di caratteri.
                      Vi occorre conoscere il nome del database, utente, password e i dettagli della connessione e collation utilizzate.'; +$_lang["installation_upgrade_existing"] = 'Aggiornamento di una Installazione Esistente'; +$_lang["installation_upgrade_existing_note"] = 'Aggiornamento dei files esistenti e del database.'; +$_lang["installed"] = 'Installato'; +$_lang["installing_demo_site"] = 'Installazione del sito demo: '; +$_lang["language_code"] = 'en'; // for html element e.g. +$_lang["loading"] = 'Sto caricando...'; +$_lang["modules"] = 'Moduli'; +$_lang["modx_footer1"] = '© 2005-2011 the MODx Content Mangement Framework (CMF) project. All rights reserved. MODx is licensed under the GNU GPL.'; +$_lang["modx_footer2"] = 'MODx is software libero. Vi incoraggiamo ad essere creativi e usare MODx come vi pare. Se fate delle modifiche al codice e decidete di ridistribuire il vostro MODx modificato, vi chiediamo di distribuire gratuitamente il codice sorgente!'; +$_lang["modx_install"] = 'MODx » Installazione'; +$_lang["modx_requires_php"] = ', e MODx richiede PHP 4.2.0 o successivo'; +$_lang["mysql_5051"] = ' la versione di MySQL è 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Ci sono dei problemi noti con MySQL 5.0.51. Vi consigliamo di aggiornarlo prima di continuare.'; +$_lang["mysql_version_is"] = ' La vostra versione di MySQL è: '; +$_lang["no"] = 'No'; +$_lang["none"] = 'Nessuno'; +$_lang["not_found"] = 'non trovato'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Componenti Opzionali'; +$_lang["optional_items_note"] = 'Vi preghiamo di scegliere le opzioni di installazione e fare click su Installazione:'; +$_lang["php_security_notice"] = 'Avviso di Sicurezza

                      Anche se MODx funziona con la vostra versione di PHP, vi suggeriamo di non farlo. La vostra versione di PHP ha numerosi problemi di sicurezza. Un aggiornamento a PHP versione 4.3.8 o successiva correggerà questi problemi. Vi raccomandiamo di farlo per garantire la sicurezza del vostro sito web.

                      '; +$_lang["please_correct_error"] = '. Vi preghiamo di correggere l\'errore'; +$_lang["please_correct_errors"] = '. Vi preghiamo di correggere gli errori'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Verifica Pre-Installazione'; +$_lang["recommend_setting_change_title"] = 'Modifiche consigliate alla Configurazione'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Modifica: Validazione degli headers HTTP_REFERER?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Il vostro sito non è configurato per validare gli headers HTTP_REFERER degli accessi al Manager. Vi raccomandiamo di abilitare questa impostazione per ridurre il rischio di attacchi CSRF (Cross Site Request Forgery).'; +$_lang["remove_install_folder_auto"] = 'Rimuovere la cartella install e i files in essa contenuti
                       (Questa operazione richiede i permessi di scrittura nella cartella di installazione).'; +$_lang["remove_install_folder_manual"] = 'Ricordatevi di cancellare la cartella "install" prima di accedere a MODx.'; +$_lang["retry"] = 'Riprova'; +$_lang["running_database_updates"] = 'Esecuzione degli aggiornamenti del database: '; +$_lang["sample_web_site"] = 'Sito Web di Esempio'; +$_lang["sample_web_site_note"] = 'Vi preghiamo di notare che questo cancellerà i documenti e le risorse esistenti.'; +$_lang["session_problem"] = 'E\' stato riscontrato un problema cone le sessioni del vostro server. Contattare un amministratore di sistema per risolvere il problema.'; +$_lang["session_problem_try_again"] = 'Riprovare?'; +$_lang["setup_cannot_continue"] = 'Sfortunatamente il programma di Installazione non può continuare, perchè '; +$_lang["setup_couldnt_install"] = 'MODx non ha potuto installare/modificare alcune tabelle del database selezionato.'; +$_lang["setup_database"] = 'MODx tenterà ora di configurare il database:
                      '; +$_lang["setup_database_create_connection"] = 'Creazione della connessione con il database: '; +$_lang["setup_database_create_connection_failed"] = 'Impossibile connettersi con il Database!'; +$_lang["setup_database_create_connection_failed_note"] = 'Vi preghiamo di controllare i dettagli della connessione al database e riprovare.'; +$_lang["setup_database_creating_tables"] = 'Creazione delle tabelle del database: '; +$_lang["setup_database_creation"] = 'Creazione del database `'; +$_lang["setup_database_creation_failed"] = 'Impossibile creare il Database!'; +$_lang["setup_database_creation_failed_note"] = ' - MODx non ha potuto creare il database!'; +$_lang["setup_database_creation_failed_note2"] = 'MODx non ha potuto creare il database e non è stato trovato un database con il nome specificato. Probabilmente il vostro hosting provider non consente a degli script esterni di creare un database. Vi preghiamo di creare manualmente un database ed eseguire nuovamente il programma di installazione.'; +$_lang["setup_database_selection"] = 'Selezione del database `'; +$_lang["setup_database_selection_failed"] = 'Impossibile selezionare il Database...'; +$_lang["setup_database_selection_failed_note"] = 'Il database specificato non esiste. MODx proverà a crearlo.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Alcune tabelle non sono state aggiornate, probabilmente a causa di precedenti modifiche.'; +$_lang["status_checking_database"] = 'Verifica del database: '; +$_lang["status_connecting"] = ' Connessione al server: '; +$_lang["status_failed"] = 'fallita!'; +$_lang["status_failed_could_not_create_database"] = 'fallita - impossibile creare il database'; +$_lang["status_failed_database_collation_does_not_match"] = 'fallita - problemi con la collation del database; usate SET NAMES o scegliete %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'fallita - il prefisso scelto per le tabelle è già in uso!'; +$_lang["status_passed"] = 'successo - il database è stato selezionato'; +$_lang["status_passed_database_created"] = 'successo - il database è stato creato'; +$_lang["status_passed_server"] = 'successo - la collation del database è disponibile'; +$_lang["strict_mode"] = ' Il server MySQL ha lo strict sql_mode abilitato!'; +$_lang["strict_mode_error"] = 'Alcune funzionalità di MODx potrebbero non funzionare se STRICT_TRANS_TABLES sql_mode è abilitato. Potete configurare MySQL dal file my.cnf o contattando un amministratore di sistema.'; +$_lang["summary_setup_check"] = 'MODx ha effettuato dei controlli per verificare che tutto sia pronto per l\'installazione.'; +$_lang["system_configuration"] = 'Configurazione di Sistema'; +$_lang["system_configuration_validate_referer_description"] = 'L\'opzione di Validazione degli headers HTTP_REFERER è consigliata e vi può proteggere da attacchi CSRF, ma in qualche caso può impedire l\'accesso al Manager.'; +$_lang["table_prefix_already_inuse"] = ' - Il prefisso selezionato per le Tabelle è già in uso in questo database!'; +$_lang["table_prefix_already_inuse_note"] = 'MODx non ha potuto proseguire con l\'installazione nel database selezionato poichè contiene già delle tabelle con il prefisso indicato. Vi preghiamo di scegliere un nuovo prefisso per le tabelle ed eseguire nuovamente il programma di installazione.'; +$_lang["table_prefix_not_exist"] = ' - Il prefisso selezionato per le tabelle non esiste in questo database!'; +$_lang["table_prefix_not_exist_note"] = 'MODx non ha potuto proseguire con l\'installazione nel database selezionato poichè non contiene tabelle da aggiornare con il prefisso indicato. Vi preghiamo di scegliere un prefisso già esistente per le tabelle ed eseguire nuovamente il programma di installazione.'; +$_lang["templates"] = 'Templates'; +$_lang["to_log_into_content_manager"] = 'Per accedere al Manager ('.MGR_DIR.'/index.php) fate click sul bottone `Chiudi`.'; +$_lang["toggle"] = 'Inverti'; +$_lang['tvs'] = 'Variabili di Template'; +$_lang["unable_install_chunk"] = 'Impossibile installare il chunk. File'; +$_lang["unable_install_module"] = 'Impossibile installare il modulo. File'; +$_lang["unable_install_plugin"] = 'Impossibile installare il plugin. File'; +$_lang["unable_install_snippet"] = 'Impossibile installare lo snippet. File'; +$_lang["unable_install_template"] = 'Impossibile installare il template. File'; +$_lang["upgrade_note"] = 'Note: Vi preghiamo di accedere al Manager come Amministratore e verificare la Configurazione di Sistema.'; +$_lang["upgraded"] = 'Aggiornato'; +$_lang["validate_referer_title"] = 'Validazione degli headers HTTP_REFERER?'; +$_lang["visit_forum"] = ', consultate i Forums MODx.'; +$_lang["warning"] = 'ATTENZIONE!'; +$_lang["welcome_message_start"] = 'Selezionate la modalità di installazione:'; +$_lang["welcome_message_text"] = 'Questo programma vi guiderà attraverso il processo di Installazione.'; +$_lang["welcome_message_welcome"] = 'Benvenuti nel programma di Installazione di MODx.'; +$_lang["writing_config_file"] = 'Scrittura del file di configurazione: '; +$_lang["yes"] = 'Si'; +$_lang["you_running_php"] = ' - State eseguendo PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/japanese-utf8.inc.php b/assets/modules/store/installer/lang/japanese-utf8.inc.php new file mode 100755 index 0000000000..9ad2ae50fa --- /dev/null +++ b/assets/modules/store/installer/lang/japanese-utf8.inc.php @@ -0,0 +1,194 @@ +/assets/cacheディレクトリの存在チェック(なければ転送に失敗しています): '; +$_lang["checking_if_cache_file_writable"] = 'ファイル/assets/cache/siteCache.idx.phpの書き込み属性(606などに設定): '; +$_lang["checking_if_cache_file2_writable"] = 'ファイル/assets/cache/sitePublishing.idx.phpの書き込み属性(606などに設定): '; +$_lang["checking_if_cache_writable"] = '/assets/cacheディレクトリの書き込み属性(707などに設定): '; +$_lang["checking_if_config_exist_and_writable"] = 'ファイル/'.MGR_DIR.'/includes/config.inc.phpの存在と書き込み属性: '; +$_lang["checking_if_export_exists"] = '/assets/exportディレクトリの存在(なければ転送に失敗しています): '; +$_lang["checking_if_export_writable"] = '/assets/exportディレクトリの書き込み属性(707などに設定): '; +$_lang["checking_if_images_exist"] = '/assets/images,/assets/files,/assets/flash, /assets/media,/assets/backup,/assets/.thumbsディレクトリの存在(なければ転送に失敗しています): '; +$_lang["checking_if_images_writable"] = '/assets/images,/assets/files,/assets/flash, /assets/media,/assets/backup,/assets/.thumbsディレクトリの書き込み属性(707などに設定): '; +$_lang["checking_mysql_strict_mode"] = 'Checking MySQL for strict mode: '; +$_lang["checking_mysql_version"] = 'MySQLのバージョン: '; +$_lang["checking_php_version"] = 'PHPのバージョンチェック: '; +$_lang["checking_registerglobals"] = 'Register_Globalsの設定: '; +$_lang["checking_registerglobals_note"] = 'Register_Globalsがオンになっていると、サイトはXSS攻撃の対象としてさらされるため非常に危険です。特に必要がなければオフにしてください。.htaccessに「php_flag register_globals off」と記述を加えることでオフに設定できます。'; +$_lang["checking_sessions"] = 'セッション情報が正常に構成されるかどうか: '; +$_lang["checking_table_prefix"] = 'Tableプリフィックスの設定 `'; +$_lang["chunks"] = 'チャンク'; +$_lang["config_permissions_note"] = 'config.inc.phpという名前の空ファイルを作って/'.MGR_DIR.'/includes/ディレクトリに転送するか、すでに転送済みのconfig.inc.php.blankをリネームするなどし、パーミッションを606などに設定してください。'; +$_lang["connection_screen_collation"] = '照合順序(エンコード指定含む):
                      ※utf8_general_ciを
                      おすすめします'; +$_lang["connection_screen_connection_method"] = '接続時の文字セットの扱い:'; +$_lang["connection_screen_database_connection_information"] = 'データベース設定'; +$_lang["connection_screen_database_connection_note"] = 'データベース名を入力してください。データベース作成権限がある場合は、ここで指定した名前でデータベースが作成されます。
                      文字セットの扱いは「SET CHARACTER SET」、接続照合順序は「utf8_general_ci」をおすすめします。
                      ※MySQL4.1未満ではこれらのエンコード設定を無視して日本語を扱います。'; +$_lang["connection_screen_database_host"] = 'データベースホスト名:'; +$_lang["connection_screen_database_info"] = 'データベース設定'; +$_lang["connection_screen_database_login"] = 'データベース接続ログイン名:'; +$_lang["connection_screen_database_name"] = 'データベース名:'; +$_lang["connection_screen_database_pass"] = 'データベース接続パスワード:'; +$_lang["connection_screen_database_test_connection"] = 'ここをクリックして、データベースのテストを行なってください。
                      (※権限がある場合は、この操作でデータベースを新規に作成できます)'; +$_lang["connection_screen_default_admin_email"] = 'email:'; +$_lang["connection_screen_default_admin_login"] = 'ログイン名(半角英数字):'; +$_lang["connection_screen_default_admin_note"] = 'デフォルトの管理アカウントを作成します。メールアドレスはパスワード再発行の際に必要となるので、タイプミスがないよう気をつけてください。'; +$_lang["connection_screen_default_admin_password"] = 'パスワード:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'パスワード(確認入力):'; +$_lang["connection_screen_default_admin_user"] = 'デフォルトの管理アカウント作成'; +$_lang["connection_screen_defaults"] = '管理アカウントの初期設定'; +$_lang["connection_screen_server_connection_information"] = 'データベースホストへの接続'; +$_lang["connection_screen_server_connection_note"] = 'データベースサーバのホスト名・ログイン名・パスワードを入力し、「ここをクリック」をクリックし接続テストをしてください。
                      ポート番号を指定する場合は「ホスト名:ポート番号」とします(例:localhost:3306)。
                      ※MODx本体はMySQL4.0.2以上をサポートしますが、MySQL4.1未満ではAjaxSearchなど同梱アドオンの一部の機能が制限されます。ご注意ください。
                      ※通常の運用ではWebサーバがデータベースサーバを兼ねるためホスト名は「localhost」となりますが、さくらインターネット・ロリポップ・エックスサーバーなどメジャーなレンタルサーバでは専用のサーバを指定するケースが多いです。ご確認ください。'; +$_lang["connection_screen_server_test_connection"] = 'ここをクリックして、接続テストを行ってください。'; +$_lang["connection_screen_table_prefix"] = 'Tableプリフィクス:'; +$_lang["creating_database_connection"] = 'データベース接続: '; +$_lang["database_alerts"] = 'データベースの警告'; +$_lang["database_connection_failed"] = 'データベース接続に異常があります'; +$_lang["database_connection_failed_note"] = 'データベースのログイン設定を確認し、再びチェックを試してください。'; +$_lang["database_use_failed"] = 'データベースを選択できません。データベース名を確認してください。'; +$_lang["database_use_failed_note"] = 'データベースのユーザー権限を確認してください。'; +$_lang["default_language"] = '管理画面で使用する言語'; +$_lang["default_language_description"] = '管理画面で使用する言語を選択してください。(※Japanese-eucを選択するとプリインストールされるサンプルコンテンツやアドオンの説明文は文字化けしますのでご注意ください。アドオンの機能は利用できます。)'; +$_lang["during_execution_of_sql"] = ' during the execution of SQL statement '; +$_lang["encoding"] = 'utf-8'; //charset encoding for html header +$_lang["error"] = 'エラー'; +$_lang["errors"] = 'エラー'; //Plural form +$_lang["failed"] = '確認してください'; +$_lang["help"] = 'Help!'; +$_lang["help_link"] = 'http://modxcms-jp.com/howto/rserver.html'; +$_lang["help_title"] = 'インストールで困ったらココをチェック(MODxフォーラム)'; +$_lang["iagree_box"] = 'このライセンス(GPL2)で規定される諸条件に同意します。

                      GPL2ライセンスの日本語訳はこちらにあります。この翻訳には法的効力はないため、厳密な法的検証が必要な場合は必ず英語の原文をご確認ください。'; +$_lang["install"] = 'インストール'; +$_lang["install_overwrite"] = 'インストール - '; +$_lang["install_results"] = 'インストールを実行しました。'; +$_lang["install_update"] = ''; +$_lang["installation_error_occured"] = 'インストール中に以下のエラーが発生しました。'; +$_lang["installation_install_new_copy"] = '新規インストール - '; +$_lang["installation_install_new_note"] = 'すでにMODxをインストールしている場合はデータを上書きします。
                      ※Tableプリフィクスが異なる場合を除く'; +$_lang["installation_mode"] = 'インストールの選択'; +$_lang["installation_new_installation"] = '新規インストール'; +$_lang["installation_note"] = 'はじめに:管理画面にログインできたら、まずは管理画面右上のヘルプをご確認ください。'; +$_lang["installation_successful"] = 'インストールは無事に成功しました。'; +$_lang["installation_upgrade_advanced"] = 'カスタムアップデート
                      (データベース設定をアップデートできます)'; +$_lang["installation_upgrade_advanced_note"] = 'データベース設定の変更を伴うアップデート(MySQL4→MySQL5など)が必要な場合はこちらを選んでください。config.inc.phpのデータベース接続情報一式を更新します。
                      '; +$_lang["installation_upgrade_existing"] = '通常アップデート'; +$_lang["installation_upgrade_existing_note"] = '通常のアップデートはこのオプションを。コアファイル・リソースファイルの両方とデータベースをアップデートします。
                      【注意】データベースのバックアップはお済みですか?まだの場合は今からでもバックアップマネージャーでどうぞ。'; +$_lang["installed"] = 'インストールしました'; +$_lang["installing_demo_site"] = 'サンプルサイトのインストール: '; +$_lang["language_code"] = 'ja'; +$_lang["loading"] = '処理中...'; +$_lang["modules"] = 'モジュール'; +$_lang["modx_footer1"] = '© 2005-2011 the MODx Content Management Framework (CMF) project. All rights reserved. MODx is licensed under the GNU GPL.'; +$_lang["modx_footer2"] = 'MODx is free software. We encourage you to be creative and make use of MODx in any way you see fit. Just make sure that if you do make changes and decide to redistribute your modified MODx, that you keep the source code free!'; +$_lang["modx_install"] = 'MODx » インストール'; +$_lang["modx_requires_php"] = ', PHP5.0.0以上を推奨します(4.3.8以上であれば動作しますがセキュリティ面に問題があります)'; +$_lang["mysql_5051"] = ' MySQL server version is 5.0.51!'; +$_lang["mysql_5051_warning"] = 'MySQL 5.0.51には不具合が確認されています。MySQLのアップデートをおすすめします。'; +$_lang["mysql_version_is"] = ' Version '; +$_lang["no"] = 'いいえ'; +$_lang["none"] = '全ての選択を解除'; +$_lang["not_found"] = '見つかりません'; +$_lang["ok"] = '問題なし'; +$_lang["optional_items"] = 'インストールオプションの選択'; +$_lang["optional_items_note"] = 'オプションを選択してください:

                      初めてMODxを試す人は、全てチェックを入れましょう。
                      ※日本チームより:「サンプルサイト」は内容が古く、検証も不十分です。興味がある場合のみ、参考程度にお試しください。'; +$_lang["php_security_notice"] = 'セキュリティ警告

                      このサーバ上で稼働しているPHPには重大な問題があります。MODxの稼働自体には問題はありませんが、このバージョンのPHPには報告されている脆弱性がいくつか存在し、MODxに限らずさまざまなPHPアプリを通じて多数の攻撃にさらされてきました。バージョン4.3.8より古いPHPは深刻な脆弱性を抱えています。この機会にPHPのアップデートをおすすめします。

                      '; +$_lang["please_correct_error"] = 'があります。'; +$_lang["please_correct_errors"] = 'があります。'; //Plural form +$_lang["plugins"] = 'プラグイン'; +$_lang["preinstall_validation"] = 'インストール前の状態確認'; +$_lang["recommend_setting_change_title"] = 'Recommended Setting Change'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Setting change: Validate HTTP_REFERER headers?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Your site is not configured to validate the HTTP_REFERER of incoming requests to the Manager. We strongly recommend enabling this setting to reduce the risk of a CSRF (Cross Site Request Forgery) attack.'; +$_lang["remove_install_folder_auto"] = 'インストールディレクトリを自動的に削除する
                      ※この操作はサーバ設定によっては実行されないことがあります。
                      削除できなかった場合は、管理画面ログイン時に太文字で警告が表示されますので、手作業で削除してください。'; +$_lang["remove_install_folder_manual"] = '管理画面にログインする前に、"install" フォルダを必ず削除してください。'; +$_lang["retry"] = '再チェック'; +$_lang["running_database_updates"] = '実行中のデータベースのアップデート: '; +$_lang["sample_web_site"] = 'サンプルサイト'; +$_lang["sample_web_site_note"] = '※このサンプルサイトは内容が古く検証も不十分なので、現状ではMODxの仕組みの理解にはあまり役立ちません。テスト目的のダミーコンテンツなどとして、必要に応じてお試しください。'; +$_lang["session_problem"] = 'サーバー接続に問題が発生しました。問題修正のために、サーバー管理者へ相談してください。'; +$_lang["session_problem_try_again"] = '再試行しますか?'; +$_lang["setup_cannot_continue"] = '上記理由のため、セットアップを継続できません。'; +$_lang["setup_couldnt_install"] = '選択されたテーブルをインストール/変更できませんでした。'; +$_lang["setup_database"] = 'セットアップ結果
                      '; +$_lang["setup_database_create_connection"] = 'データベース接続: '; +$_lang["setup_database_create_connection_failed"] = 'データベース接続に失敗しました!'; +$_lang["setup_database_create_connection_failed_note"] = 'データベースのログイン情報を確認して再試行してください。'; +$_lang["setup_database_creating_tables"] = '必要なテーブルの作成: '; +$_lang["setup_database_creation"] = 'Creating database `'; +$_lang["setup_database_creation_failed"] = 'データベース作成に失敗しました'; +$_lang["setup_database_creation_failed_note"] = ' - データベースを作成できませんでした'; +$_lang["setup_database_creation_failed_note2"] = '指定の名前のデータベースが見つからなかったためデータベースの作成を試みましたが、作成できませんでした。ホスティング会社がデータベースの作成を許可していないようです。ホスティング会社の手順に従ってデータベースを作成し、セットアップを再開してください。'; +$_lang["setup_database_selection"] = 'データベース選択 `'; +$_lang["setup_database_selection_failed"] = 'データベース選択が失敗しました'; +$_lang["setup_database_selection_failed_note"] = 'データベースが存在しません。データベースの作成を試行します。'; +$_lang["snippets"] = 'スニペット'; +$_lang["some_tables_not_updated"] = 'いくつかのテーブルはアップデートされませんでした。修正などに起因しているようです。'; +$_lang["status_checking_database"] = '... データベースとのマッチング: '; +$_lang["status_connecting"] = ' DBホストとの接続テストの結果: '; +$_lang["status_failed"] = '接続できません'; +$_lang["status_failed_could_not_create_database"] = 'データベースを作成できません'; +$_lang["status_failed_database_collation_does_not_match"] = '問題があります - データベース側の照合順序のデフォルト値が「%s」になっています。phpMyAdminが利用できる場合は、該当データベースの「操作」タブで照合順序のデフォルト値を変更してください。'; +$_lang["status_failed_table_prefix_already_in_use"] = '接続できません - このTableプリフィクスはすでに使われています。異なるTableプリフィクスを指定するか、phpMyAdminなどを利用し関連Tableを削除してください。'; +$_lang["status_passed"] = '問題ありません'; +$_lang["status_passed_database_created"] = 'データベースを作成できます'; +$_lang["status_passed_server"] = '接続できます'; +$_lang["strict_mode"] = ' MySQLがストリクトモードになっています。'; +$_lang["strict_mode_error"] = 'ストリクトモードが無効である必要があります。my.cnfを編集することで、MySQLのモードを変更することができます。あるいは、サーバー管理者へお尋ねください。'; +$_lang["summary_setup_check"] = 'インストール実行前の最終チェックです。'; +$_lang["system_configuration"] = 'System Configuration'; +$_lang["system_configuration_validate_referer_description"] = 'The Validate HTTP_REFERER headers setting is recommended and can protect your site from CSRF attacks, but in some server configurations, can make your manager inaccessible.'; +$_lang["table_prefix_already_inuse"] = ' - このテーブルプレフィックスはすでに使われています。'; +$_lang["table_prefix_already_inuse_note"] = '異なるテーブルプリフィクスを指定するか、phpMyAdminなどを利用し関連テーブルを削除し、再びインストールを試してみてください。'; +$_lang["table_prefix_not_exist"] = ' - 指定されたテーブルプレフィックスがデータベース内に存在していなかったため、インストールが完了しませんでした。正しいテーブルプリフィックスを指定し、再度実行してください。'; +$_lang["table_prefix_not_exist_note"] = 'Setup couldn\'t install into the selected database, as it does not contain existing tables with the prefix you specified to be upgraded. Please choose an existing table prefix, and run Setup again.'; +$_lang["templates"] = 'テンプレート'; +$_lang["to_log_into_content_manager"] = 'おつかれさまでした。「インストール終了」ボタンをクリックすると、管理画面のログインページ('.MGR_DIR.'/index.php)にアクセスします。'; +$_lang["toggle"] = '選択状態を反転'; +$_lang['tvs'] = 'テンプレート変数'; +$_lang["unable_install_chunk"] = 'チャンクをインストールできません'; +$_lang["unable_install_module"] = 'モジュールをインストールできません'; +$_lang["unable_install_plugin"] = 'プラグインをインストールできません'; +$_lang["unable_install_snippet"] = 'スニペットをインストールできません'; +$_lang["unable_install_template"] = 'テンプレートをインストールできません'; +$_lang["upgrade_note"] = '注意:管理画面に無事にログインできたら、リソース(旧称・ドキュメント)および各種設定を日本語を含めて編集・保存し、文字化けが起きないかどうかを必ず確認してください。また管理画面内の「イベントログ」を開き、エラーの有無をご確認ください。'; +$_lang["upgraded"] = 'アップデートしました'; +$_lang["validate_referer_title"] = 'Validate HTTP_REFERER headers?'; +$_lang["visit_forum"] = ''; +$_lang["warning"] = '注意 '; +$_lang["welcome_message_start"] = ''; +$_lang["welcome_message_text"] = '心踊る、未知の領域へようこそ。ガイドに従ってインストールを進めましょう。MODxのインストールは簡単。インストーラの説明に従って、次へ次へと進めてください。

                      このインストーラの手順に従うことにより、他のCMSとのデータベースの共有設定(Tableプリフィクス)や、サンプルコンテンツ及び、推奨される拡張機能のインストールを個別に選択できます。何も選択せずシンプルにコアのみをインストールすることもできます。また、すでに運用中のMODxをアップデートしたり、データベースの設定を変更することもできます。'; +$_lang["welcome_message_welcome"] = 'MODxのインストールを開始します。'; +$_lang["writing_config_file"] = 'config.inc.phpへの書き込み(設定情報): '; +$_lang["yes"] = 'はい'; +$_lang["you_running_php"] = ' - You are running on PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/norwegian.inc.php b/assets/modules/store/installer/lang/norwegian.inc.php new file mode 100755 index 0000000000..daed056914 --- /dev/null +++ b/assets/modules/store/installer/lang/norwegian.inc.php @@ -0,0 +1,178 @@ +assets/cache eksisterer: '; +$_lang["checking_if_cache_file2_writable"] = 'Kontrollerer at filen assets/cache/sitePublishing.idx.php er skrivbar: '; +$_lang["checking_if_cache_file_writable"] = 'Kontrollerer at filen assets/cache/siteCache.idx.php er skrivbar: '; +$_lang["checking_if_cache_writable"] = 'Kontrollerer at katalogen assets/cache er skrivbar: '; +$_lang["checking_if_config_exist_and_writable"] = 'Kontrollerer at filen '.MGR_DIR.'/includes/config.inc.php eksisterer og er skrivbar: '; +$_lang["checking_if_export_exists"] = 'Kontrollerer at katalogen assets/export eksisterer: '; +$_lang["checking_if_export_writable"] = 'Kontrollerer at katalogen assets/export er skrivbar: '; +$_lang["checking_if_images_exist"] = 'Kontrollerer at katalogen assets/images, /assets/media, /assets/backup, /assets/.thumbs eksisterer: '; +$_lang["checking_if_images_writable"] = 'Kontrollerer at katalogen assets/images, /assets/media, /assets/backup, /assets/.thumbs er skrivbar: '; +$_lang["checking_mysql_strict_mode"] = 'Sjekker MySQL for strict mode: '; +$_lang["checking_mysql_version"] = 'Sjekker MySQL versjon: '; +$_lang["checking_php_version"] = 'Kontrollerer PHP-versjon: '; +$_lang["checking_registerglobals"] = 'Kontrollerar att Register_Globals är inaktiverad: '; +$_lang["checking_registerglobals_note"] = 'Denne konfigurasjonen gjør din nettside betydelig mer sårbar for webkodeinjeksjon (Cross Site Scripting - XSS). Du bør kontakte din webhost og be om å få inaktivert denne instillingen. Vanligvis lar det seg gjøre på tre følgende måter: modifisering av den globale php.ini-filen, tillegg av regler i en .htaccess-fil i roten på din MODX-installasjon eller gjennom å legge til en tilpasset php.ini-fil (som tilsidesetter den globale filen) i alla kataloger i din installasjon (og det finns masser av dem). Du kan fremdeles installere MODx, men ta denne advarselen på alvor.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Kontrollerer at sesjoner er korrekt konfigurert: '; +$_lang["checking_table_prefix"] = 'Kontrollerer tabellprefixet `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'For nye installasjoner i Linux/Unix-miljø må en tom fil med navnet config.inc.php opprettes i katalogen '.MGR_DIR.'/includes/ med skriverrettighetene satt til 666.'; +$_lang["connection_screen_collation"] = 'Kollasjonering:'; +$_lang["connection_screen_connection_information"] = 'Tilkoblingsopplysninger'; +$_lang["connection_screen_connection_method"] = 'Tilkoblingsmetode:'; +$_lang["connection_screen_database_connection_information"] = 'Databaseopplysninger'; +$_lang["connection_screen_database_connection_note"] = 'Angi navnet på databasen som ble opprettet for MODx. Om det ikke finnes en database fra før, kommer installasjonsprogrammet til å prøve å opprette en for deg. Dette kan mislykkes avhengig av MySQL-konfigurasjonen eller databasens tilgangsrettigheter for ditt domene/installasjon.'; +$_lang["connection_screen_database_host"] = 'Databasevert:'; +$_lang["connection_screen_database_login"] = 'Databasens inloggingsnavn:'; +$_lang["connection_screen_database_name"] = 'Databasenavn:'; +$_lang["connection_screen_database_pass"] = 'Databasens passord:'; +$_lang["connection_screen_database_test_connection"] = 'Klikk her for å opprette din database eller for å teste ditt databasevalg'; +$_lang["connection_screen_default_admin_email"] = 'Administratorens epost:'; +$_lang["connection_screen_default_admin_login"] = 'Administratorens brukernavn:'; +$_lang["connection_screen_default_admin_note"] = 'Nå skal du oppgi noen opplysninger for administratorkontoen. Du må fylle inn ditt eget navn og et passord som du ikke må glemme. Du vil trenge disse opplysningene senere når du skal logge inn på administratorkontoen etter at installasjonen er avsluttet.'; +$_lang["connection_screen_default_admin_password"] = 'Administratorens passord:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Bekreft passord:'; +$_lang["connection_screen_default_admin_user"] = 'Administratorkonto'; +$_lang["connection_screen_server_connection_information"] = 'Serverens tilkoblings- og innloggingsopplysninger'; +$_lang["connection_screen_server_connection_note"] = 'Oppgi navnet på din server, ditt innloggningsnavn samt ditt passord og test så tilkoblingen.'; +$_lang["connection_screen_server_test_connection"] = 'Klikk her for å teste tilkoblingen til serveren og for å hente tilgjengelige kollasjoneringer'; +$_lang["connection_screen_table_prefix"] = 'Tabellprefix:'; +$_lang["creating_database_connection"] = 'Oppretter en tilkobling til databasen: '; +$_lang["database_alerts"] = 'Databasevarsler!'; +$_lang["database_connection_failed"] = 'Tilkobling til databasen mislyktes!'; +$_lang["database_connection_failed_note"] = 'Kontrollér databasens tilkoblingsopplysninger og forsøk igjen.'; +$_lang["database_use_failed"] = 'Databasen kunne ikke velges!'; +$_lang["database_use_failed_note"] = 'Kontrollér databasens tilkoblingsrettigheter for den oppgitte brukeren og forsøk igjen.'; +$_lang["during_execution_of_sql"] = ' under kjøringen av SQL-spørringen '; +$_lang["encoding"] = 'utf-8'; +$_lang["error"] = 'feil'; +$_lang["errors"] = 'feil'; +$_lang["failed"] = 'mislyktes!'; +$_lang["iagree_box"] = 'Jeg aksepterer vilkårene i denne lisensen.'; +$_lang["install"] = 'Installér'; +$_lang["install_overwrite"] = 'Installér/skriv over'; +$_lang["install_results"] = 'Installasjonsresultat'; +$_lang["install_update"] = 'Installér/oppdater'; +$_lang["installation_error_occured"] = 'Følgande feil oppsto under installasjonen'; +$_lang["installation_install_new_copy"] = 'Installer en ny kopi av '; +$_lang["installation_install_new_note"] = '
                      Vær klar over at dette valget kan skrive over data som finnes i databasen.'; +$_lang["installation_mode"] = 'Installasjonstype'; +$_lang["installation_new_installation"] = 'Ny installasjon'; +$_lang["installation_note"] = 'Notér: Etter å ha logget inn i inneholdshåndtereren bør du redigere og lagre dine systeminstillinger før du begynner å arbeide med ditt nettsted. Gå til Verktøy -> Konfigurasjon i inneholdshåndtereren.'; +$_lang["installation_successful"] = 'Installasjonen er vellykket!'; +$_lang["installation_upgrade_advanced"] = 'Avansert oppgradering
                      av installasjon
                      (rediger databasens konfigurasjon)'; +$_lang["installation_upgrade_advanced_note"] = 'For databasadministratorer eller ved flytting til servere med et annet tegnoppsett for tilkobling.
                      Du vil trenge databasens fulle navn, brukernavn, passord og tilkoblingsdetaljer.'; +$_lang["installation_upgrade_existing"] = 'Oppgradér eksisterende installasjon'; +$_lang["installation_upgrade_existing_note"] = 'Oppgradér dine nåværende filer og database.'; +$_lang["installed"] = 'Installert'; +$_lang["installing_demo_site"] = 'Installerer prøve-data: '; +$_lang["language_code"] = 'no'; +$_lang["loading"] = 'Henter...'; +$_lang["modules"] = 'Moduler'; +$_lang["modx_footer1"] = '© 2005-2011 the MODx Content Mangement Framework (CMF) project. Med enerett. MODx er lisensiert under GNU GPL.'; +$_lang["modx_footer2"] = 'MODx er fri programvare. Vi oppmuntrer deg til å være kreativ og bruke MODx på hvilken måte du vil. Vær bare nøye med å beholde kildekoden fri om du gjør endringer og siden velger å omdistribuere din modifiserte versjon av MODx.'; +$_lang["modx_install"] = 'MODx » Installasjon'; +$_lang["modx_requires_php"] = ', og MODx krever PHP 4.2.0 eller senere.'; +$_lang["mysql_5051"] = ' MySQL server versjon er 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Det er kjente problemer med MySQL 5.0.51. Det anbefales at du oppgraderer før du fortsetter.'; +$_lang["mysql_version_is"] = ' Din MySQL versjon er: '; +$_lang["none"] = 'Ingen'; +$_lang["not_found"] = 'ble ikke funnet'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Valgbare alternativ'; +$_lang["optional_items_note"] = 'Velg dine installasjonsalternativ og klikk Installér:'; +$_lang["php_security_notice"] = 'Sikkerhetsmelding

                      Selv om MODx kommer til å fungere på din PHP-versjon, så anbefales det ikke å bruke MODx med den versjonen. Din PHP-versjon er sårbar for en rekke sikkerhetshull. Oppgrader til PHP-versjon 4.3.8 eller senere, der disse sikkerhetshullene er tettet. Det anbefales at du oppgraderer til denne versjonen for å beskytte ditt nettsted.

                      '; +$_lang["please_correct_error"] = '. Korrigér feilen'; +$_lang["please_correct_errors"] = '. Korrigér feilen'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Kontroller før installasjon'; +$_lang["remove_install_folder_auto"] = 'Ta bort installasjonskatalogen og -filene fra mitt nettsted
                       (Denne operasjonen krever at sletterettigheter er satt for installasjonskatalogen).'; +$_lang["remove_install_folder_manual"] = 'Husk å ta bort katalogen "install" før du logger inn i inneholdshåndtereren.'; +$_lang["retry"] = 'Forsøk igjen'; +$_lang["running_database_updates"] = 'Kjør oppdateringer for databasen: '; +$_lang["sample_web_site"] = 'Prøve-data'; +$_lang["sample_web_site_note"] = 'Vær klar over at dette kommer til å skrive over eksisterende dokumenter og ressurser.'; +$_lang["setup_cannot_continue"] = 'Installasjonsprogrammet kan desverre ikke fortsette på grunn av ovenforstående '; +$_lang["setup_couldnt_install"] = 'MODx installasjonsprogramet kunne ikke legge til/endre noen tabeller i den valgte databasen.'; +$_lang["setup_database"] = 'Installasjonsprogrammet kommer nå til å forsøke å konfigurere databasen:
                      '; +$_lang["setup_database_create_connection"] = 'Oppretter tilkobling til databasen: '; +$_lang["setup_database_create_connection_failed"] = 'Tilkoblingen til databasen mislyktes!'; +$_lang["setup_database_create_connection_failed_note"] = 'Kontroller databasens innloggingsopplysninger og forsøk igjen.'; +$_lang["setup_database_creating_tables"] = 'Oppretter databasetabeller: '; +$_lang["setup_database_creation"] = 'Oppretter database `'; +$_lang["setup_database_creation_failed"] = 'Databasen kunne ikke opprettes!'; +$_lang["setup_database_creation_failed_note"] = ' - Installasjonsprogrammet kunne ikke opprette databasen!'; +$_lang["setup_database_creation_failed_note2"] = 'Installasjonsprogrammet kunne ikke opprette databasen og ingen database med samme navn eksisterer. Det er sannsynligvis fordi din webbhosts sikkerhetsinnstillinger ikke tillater at eksterne script oppretter databaser. Opprett en database i følge din webbhosts instruksjoner og kjør installasjonsprogemmet på nytt.'; +$_lang["setup_database_selection"] = 'Velger database `'; +$_lang["setup_database_selection_failed"] = 'Valg av database mislyktes...'; +$_lang["setup_database_selection_failed_note"] = 'Databasen eksisterer ikke. Installasjonsprogrammet kommer til å prøve og opprette den.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Noen tabeller ble ikke oppdatert. Årsaken kan være tidligere modifikasjoner.'; +$_lang["status_checking_database"] = '... Kontrollerer databasen: '; +$_lang["status_connecting"] = ' Tilkobling til vertdatamaskin: '; +$_lang["status_failed"] = 'mislyktes!'; +$_lang["status_failed_could_not_create_database"] = 'mislyktes - kunne ikke opprette database'; +$_lang["status_failed_database_collation_does_not_match"] = 'mislyktes - database collation ulikhet; bruk SET NAMES eller velg %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'mislyktes - tabellprefixet er allerede i bruk!'; +$_lang["status_passed"] = 'godkjent - databasen valgt'; +$_lang["status_passed_database_created"] = 'godkjent - database opprettet'; +$_lang["status_passed_server"] = 'godkjent - kollasjoneringer er nå tilgjengelig'; +$_lang["strict_mode"] = ' MySQL serveren er i strict mode!'; +$_lang["strict_mode_error"] = 'MODx krever at strict mode er utkoblet. Du kan sette MySQL tilstanden ved å endre my.cnf filen eller ved å kontakte din serveradministrator.'; +$_lang["summary_setup_check"] = 'Installasjonsprogrammet har gjennomført en del tester för å kontrollere at alt er klart for å starte installasjonen.'; +$_lang["table_prefix_already_inuse"] = ' - Tabellprefixet brukes allerede i denne databasen!'; +$_lang["table_prefix_already_inuse_note"] = 'Installasjonsprogrammet kunne ikke installere i den valgte databasen ettersom den allerede inneholder tabeller med det prefixet du oppga. Angi et nytt prefix og kjør installasjonsprogrammet på nytt.'; +$_lang["table_prefix_not_exist"] = ' - Tabellprefixet finnes ikke i denne databasen!'; +$_lang["table_prefix_not_exist_note"] = 'Installasjonsprogrammet kunne ikke installere i den valgte databasen ettersom den ikke inneholder tabeller med det prefixet du oppga før oppgraderingen. Velg et eksisterende prefix og kjør installasjonsprogrammet på nytt.'; +$_lang["templates"] = 'Maler'; +$_lang["to_log_into_content_manager"] = 'Du kan logge inn i inneholdshåndtereren ('.MGR_DIR.'/index.php)ved å klikke på \"Lukk\"-knappen.'; +$_lang["toggle"] = 'Skift'; +$_lang["unable_install_chunk"] = 'Kunne ikke installere chunk. Fil'; +$_lang["unable_install_module"] = 'Kunne ikke installere modul. Fil'; +$_lang["unable_install_plugin"] = 'Kunne ikke installere plugin. Fil'; +$_lang["unable_install_snippet"] = 'Kunne ikke installere snippet. Fil'; +$_lang["unable_install_template"] = 'Kunne ikke installere template. Fil'; +$_lang["upgrade_note"] = 'Notér: Før du begynner å bruke ditt nettsted bør du logge inn i inneholdshåndtereren via en administrasjonskonto og kontrollere og lagre dine konfigurasjonsinstillingar.'; +$_lang["upgraded"] = 'Oppgradert'; +$_lang["visit_forum"] = ', så besøk MODx forum.'; +$_lang["warning"] = 'ADVARSEL!'; +$_lang["welcome_message_text"] = 'Dette programmet vil guide deg gjennom hele installasjonen.'; +$_lang["welcome_message_welcome"] = 'Velkommen til installasjonsprogrammet for MODx.'; +$_lang["writing_config_file"] = 'Skriver konfigurasjonsfil: '; +$_lang["you_running_php"] = ' - Du kører PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/persian.inc.php b/assets/modules/store/installer/lang/persian.inc.php new file mode 100755 index 0000000000..eb0ec4def4 --- /dev/null +++ b/assets/modules/store/installer/lang/persian.inc.php @@ -0,0 +1,175 @@ +assets/cache موجود است: '; +$_lang["checking_if_cache_file2_writable"] = 'ررو اینکه آیا فایل assets/cache/sitePublishing.idx.php قابل نوشتن است: '; +$_lang["checking_if_cache_file_writable"] = 'مرور اینکه آیا فایل assets/cache/siteCache.idx.php قابل نوشتن است: '; +$_lang["checking_if_cache_writable"] = 'مرور اینکه آیا assets/cache قابل نوشتن است: '; +$_lang["checking_if_config_exist_and_writable"] = 'مرور اینکه آیا فایل '.MGR_DIR.'/includes/config.inc.php موجود است و قابل نوشتن است: '; +$_lang["checking_if_export_exists"] = 'مرور اینکه آیا assets/export موجود است: '; +$_lang["checking_if_export_writable"] = 'مرور اینکه آیا assets/export قابل نوشتن است: '; +$_lang["checking_if_images_exist"] = 'مرور اینکه آیا assets/images موجود است: '; +$_lang["checking_if_images_writable"] = 'مرور اینکه آیا assets/images قابل نوشتن است: '; +$_lang["checking_mysql_strict_mode"] = 'مرور MySQL برای strict mode: '; +$_lang["checking_mysql_version"] = 'مرور نسخه ی MySQL شما: '; +$_lang["checking_php_version"] = 'بازبینی نسخه PHP : '; +$_lang["checking_registerglobals"] = 'بازخوانی اینکه Register_Globals خاموش است: '; +$_lang["checking_registerglobals_note"] = 'این تنظیمات سایت شما رو در مقابل حملات (XSS) نقوذ پذیر کرده. شما بایستی از طریق هاستینگ خود این تنظیمات را غیر فعال کنید, به طور معمول از سه طریق امکان پذیر است: از طریق اعمال تغییر در فایل php.ini, ویرایش قوانین و دستورات در فایل .htaccess روت و پرونده نصب مادایکس و یا اضافه کردن دستور اضافه در فایل جدید خود تحت نام php.ini که داخل همه ی پرونده های نصب شده مادایکس خود قرار می دهیدو. شما همچنان قادر به نصب مادایکس هستید, به هر حال ما به شما تذکرات لازم را دادیم!'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'بازخوانی sessions مطابق تنظیمات درست: '; +$_lang["checking_table_prefix"] = 'مرور پیشوند جدول `'; +$_lang["chunks"] = 'چانکها'; +$_lang["config_permissions_note"] = 'برای نصب جدید روی لینوکس/یونیکس, لطفا یک فایل خالی به نام config.inc.php در دایرکتوری '.MGR_DIR.'/includes/ ایجاد کنید که سطح دسترسی به آن 0666 تنظیم شده باشد.'; +$_lang["connection_screen_collation"] = 'تطبیق(Collation):'; +$_lang["connection_screen_connection_information"] = 'جزییات اتصال به پایگاه داده »'; +$_lang["connection_screen_database_connection_information"] = 'اطلاعات پایگاه داده'; +$_lang["connection_screen_database_connection_note"] = 'لطفا نام کاربری پایگاه داده ای را که برای مدایکس ساخته اید بدهید.اگر پایگاه داده ای وجود نداشت برنامه شما را برای ایجاد پایگاه داده مطلع می کند. ممکن است به دلیل تنظیمات پایگاه داده این عمل با مشکل روبرو شود.'; +$_lang["connection_screen_database_host"] = 'نوع میزبانی پایگاه داده:'; +$_lang["connection_screen_database_login"] = 'نام کاربری:'; +$_lang["connection_screen_database_name"] = 'نام پایگاه داده:'; +$_lang["connection_screen_database_pass"] = 'کلمه ی عبور:'; +$_lang["connection_screen_database_test_connection"] = 'لطفا برای ایجاد پایگاه داده و یا بررسی کردن انتخاب شده های پایگاه داده اینجا کلیک کنید.'; +$_lang["connection_screen_default_admin_email"] = 'ایمیل مدیرکل:'; +$_lang["connection_screen_default_admin_login"] = 'نام کاربری مدیرکل:'; +$_lang["connection_screen_default_admin_note"] = 'هم اکنون شما بایستی برخی جزئیات مربوط به حساب کاربری مدیرکل وبگاه را وارد کنید. شما می توانید نام خود و کلمه ی عبوری که فراموش نمی کنید را در اینجا وارد کنید. پس از تکمیل نصب برنامه، شما این اطلاعات را برای ورورد به بخش مدیریت وبگاه نیاز دارید.'; +$_lang["connection_screen_default_admin_password"] = 'کلمه ی عبور مدیرکل:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'کلمه ی عبور را مجددا وارد کنید:'; +$_lang["connection_screen_default_admin_user"] = 'تعریف حساب کاربری مدیرکل:'; +$_lang["connection_screen_server_connection_information"] = 'اطلاعات ارتباط با میزبان و ورود'; +$_lang["connection_screen_server_connection_note"] = 'لطفا نام میزبان، نام کاربری، کلمه عبور را وارد کنید و سپس درستی آنها را بررسی کنید.'; +$_lang["connection_screen_server_test_connection"] = 'برای اینکه ارتباط با پایگاه داده را بررسی کنید اینجا کلیک کنید.'; +$_lang["connection_screen_table_prefix"] = 'پیشوند جداول:'; +$_lang["creating_database_connection"] = 'ایجاد ارتباط با پایگاه داده : '; +$_lang["database_alerts"] = 'خطار پایگاه داده!'; +$_lang["database_connection_failed"] = 'ارتباط با پایگاه داده ناموفق بود!'; +$_lang["database_connection_failed_note"] = 'لطفا اطلاعات مربوط به پایگاه داده خود را مرور و دوباره اقدام کنید.'; +$_lang["database_use_failed"] = 'پایگاه داده نمی تواند انتخاب شود!'; +$_lang["database_use_failed_note"] = 'لطفا اجازه دسترسی پایگاه داده با کاربر مورد اشاره را مرور و دوباره اقدام کنید.'; +$_lang["during_execution_of_sql"] = ' به هنگام اجراي فرامين SQL '; +$_lang["encoding"] = 'utf-8'; +$_lang["error"] = 'خطا'; +$_lang["errors"] = 'خطا ها'; +$_lang["failed"] = 'با مشکل روبرو شد!'; +$_lang["iagree_box"] = 'من با شرایط استفاده مندرج در بالا موافقم.'; +$_lang["install"] = 'نصب'; +$_lang["install_overwrite"] = ' نصب/بازنگاری '; +$_lang["install_results"] = 'نتایج نصب »'; +$_lang["install_update"] = ' نصب/ارتقاء'; +$_lang["installation_error_occured"] = 'خطاهای موجود در هنگام نصب بوجود آمده است'; +$_lang["installation_install_new_copy"] = 'نصب نسخه جدیدی از '; +$_lang["installation_install_new_note"] = '
                      توجه: با انتخاب این گزینه، داده های داخل پایگاه دادهی جایگزین می شود.'; +$_lang["installation_mode"] = 'انتخاب نوع نصب »'; +$_lang["installation_new_installation"] = 'نصب نسخه جدید'; +$_lang["installation_note"] = 'تذکر: پس از ورود به بخش مدیریت شما می توانید تنظیمات وبگاه را از ابزارها -> تنظیمات، ویرایش کنید.'; +$_lang["installation_successful"] = 'نصب با موفقیت انجام شد!'; +$_lang["installation_upgrade_advanced"] = 'ارتقاء و نصب پیشرفته
                      (ویرایش تنظیمات پایگاه داده)'; +$_lang["installation_upgrade_advanced_note"] = 'این نوع مناسب کاربران حرفه ای پایگاه داده است و یا به منظور انتقال سرور(میزبان) که نحوه اتصال کاراکترست متفاوتی دارد استفاده شود. شما بایستی اطلاعات کامل پایگاه دادهی خود اعم از اسم بانک، نام کاربری، کلمه ی عبور و سایر جزییات مربوط به پایگاه دادهی(پایگاه داده) خور را در دسترس داشته باشید.'; +$_lang["installation_upgrade_existing"] = 'ارتقاء نسخه ی فعلی'; +$_lang["installation_upgrade_existing_note"] = 'ارتقاء فایل ها و پایگاه دادهی موجود.'; +$_lang["installed"] = 'نصب شد'; +$_lang["installing_demo_site"] = 'نصب محتوای سایت پیشفرض (دمو): '; +$_lang["language_code"] = 'fa'; +$_lang["loading"] = 'در حال بارگذاری ...'; +$_lang["modules"] = 'ماژولها'; +$_lang["modx_footer1"] = '© 2005-2009 کلیه ی حقوق برای پروژه ی سیستم مدیریت محتوای مادایکس محفوظ است. مادایکس تحت لیسانس GNU-GPL است.'; +$_lang["modx_footer2"] = 'مادایکس نرم افزاری رایگان است، ما شما را تشویق به خلاقیت می کنیم، شما می توانید به منظور هماهنگی مادایکس با نیازهای خود، هر تغییری را در آن اعمال کنید. چنانچه قصد ارائه نسخه مادایکس ویژه خود به دیگران را دارید حتما آن را رایگان ارائه کنید!'; +$_lang["modx_install"] = 'MODx » برنامه نصب'; +$_lang["modx_requires_php"] = ', است, و مادایکس به نسخه ی PHP 4.2.0 و یا بالاتر نیاز دار'; +$_lang["mysql_5051"] = ' نسخه MySQL سرور 5.0.51 می باشد!'; +$_lang["mysql_5051"] = 'Warning : MySQL server version is 5.0.51'; +$_lang["mysql_5051_warning"] = 'مشکلاتی با نسخه MySQL 5.0.51 کشف شده. پیشنهاد می کنیم نسخه MySQL خود را ارتقا دهید.'; +$_lang["mysql_version_is"] = ' نسخه MySQL شما: '; +$_lang["none"] = 'هیچکدام'; +$_lang["not_found"] = 'پیدا نشد'; +$_lang["ok"] = ' مشکلی ندارد!'; +$_lang["optional_items"] = 'موارد اختیاری »'; +$_lang["optional_items_note"] = 'لطفا موارد نصب را انتخاب و روی نصب کلیک کنید:'; +$_lang["php_security_notice"] = 'تذکر امنیتی

                      چنانچه مادایکس روی نسخه ی فعلی PHPفعالیت کند , استفاده مادایکس در این نسخه پیشنهاد نمی شود. نسخه ی PHP شما قابلیت آسیب پذیری و حفره های امنیتی بسیاری دارد. لطفا PHP را به نسخه ی 4.3.8 یا بالاتر ارتقاء دهید, که فاقد این مشکلات است. به منظور ایمنی بیشتر وبگاه پیشنهاد میکنیم به این نسخه ارتقاء دهید.

                      '; +$_lang["please_correct_error"] = '. لطفا خطا موحود را درست کنید'; +$_lang["please_correct_errors"] = '. لطفا خطا های موجود را درست کنید.'; +$_lang["plugins"] = 'پلاگینها'; +$_lang["preinstall_validation"] = 'بازبینی قبل از نصب »'; +$_lang["remove_install_folder_auto"] = ' پوشه و فایلهای نصب را از وبگاه پاک کن
                       (این کار مستلزم دارا بودن سطح حذف پوشه ی نصب(install) است). '; +$_lang["remove_install_folder_manual"] = 'لطفا به خاطر بسیپارید که پوشه ی "نصب یا install" را پیش از ورود به وبگاه حذف کنید.'; +$_lang["retry"] = 'دوباره'; +$_lang["running_database_updates"] = 'به روز رسانی پایگاه داده:'; +$_lang["sample_web_site"] = 'محتویات پیشفرض وبگاه'; +$_lang["sample_web_site_note"] = ' لطفا توجه کنید که در این حالت همه ی پرونده ها و منابع موجود جایگزین می شود.'; +$_lang["setup_cannot_continue"] = 'متاسفانه عملایت نصب به علت مشکلات بالا با مشکل روبرو شده است. '; +$_lang["setup_couldnt_install"] = 'برنامه نصب مادایکس نتوانست جداولی را در پایگاه داده ایجاد کند یا تغییر بدهد.'; +$_lang["setup_database"] = 'برنامه نصب اکنون پایگاه داده را ایجاد می کند:
                      '; +$_lang["setup_database_create_connection"] = 'ایجاد ارتباط با پایگاه داده:'; +$_lang["setup_database_create_connection_failed"] = 'ارتباط با پایگاه داده با مشکل روبرو شد!'; +$_lang["setup_database_create_connection_failed_note"] = 'لطفا اطلاعات ارتباط با پایگاه داده را مرور کنید و دوباره امتحان کنید.'; +$_lang["setup_database_creating_tables"] = 'ایجاد جداول پایگاه داده: '; +$_lang["setup_database_creation"] = 'ایجاد پایگاه داده `'; +$_lang["setup_database_creation_failed"] = 'ایجاد پایگاه داده با مشکل روبرو شد!'; +$_lang["setup_database_creation_failed_note"] = ' - یرنامه نصب نتوانست پایگاه داده را ایجاد کند!'; +$_lang["setup_database_creation_failed_note2"] = 'عملیات نصب نتوانست پایگاه داده را ایجاد کند. احتمالا میزبان شما اجازه ایجاد پایگاه داده به وسیله اسکریپت خارجی را ممنوع کرده است. لطفا بر اساس دسترسی هایی که میزبان شما برای شما قرار داده است پایگاه داده را ایجاد کنید و دوباره امتحان کنید'; +$_lang["setup_database_selection"] = 'انتخاب پایگاه داده `'; +$_lang["setup_database_selection_failed"] = 'انتخاب پایگاه داده با مشکل روبرو شد...'; +$_lang["setup_database_selection_failed_note"] = 'پایگاه داده موجود نمی باشد.حال برنامه نصب برای ایجاد آن می کوشد.'; +$_lang["snippets"] = 'اسنیپت ها'; +$_lang["some_tables_not_updated"] = 'برخی از جداول به روز رسانی نشدند. ممكن است حاصل تغييرات پيشين باشد.'; +$_lang["status_checking_database"] = 'بررسی پایگاه داده : '; +$_lang["status_connecting"] = ' ارتباط با میزبان(هاست) : '; +$_lang["status_failed"] = 'ناموفق!'; +$_lang["status_failed_could_not_create_database"] = 'ناموفق - قادر به ایجاد پایگاه داده نمی باشیم'; +$_lang["status_failed_table_prefix_already_in_use"] = 'ناموفق - پیشوند جدول هایی که انتخاب کردید پیش از این موجود می باشد'; +$_lang["status_passed"] = 'موفقیت آمیز - پایگاه دادهی انتخاب شد!'; +$_lang["status_passed_database_created"] = 'موفقیت آمیز - پایگاه داده ایجاد شد'; +$_lang["status_passed_server"] = 'موفقیت آمیز - تطبیق ها تهیه شد!'; +$_lang["strict_mode"] = 'Warning : MySQL server is in strict mode'; +$_lang["strict_mode_error"] = 'مادایکس نیازمند strict mode غیر فعال است. شما می توانید از طریق ویرایش فایل my.cnf یا تماس با هاستینگ خود این حالت را غیر فعال کنید.'; +$_lang["summary_setup_check"] = 'برنامه ی نصب، مواردی را بازبینی کرده تا در صورت آمادگی برای نصب اقدام شود.'; +$_lang["table_prefix_already_inuse"] = ' - پیشوند جداول موجود می باشد!'; +$_lang["table_prefix_already_inuse_note"] = 'برنامه ی نصب قادر به نصب در پایگاه داده انتخاب شده نیست، چرا که از قبل حاوی جداولی با پیشوند تعیین شده از طرف شماست. لطفا پیشوند جدیدی را انتخاب کنید و برنامه ی نصب را دوباره اجرا کنید.'; +$_lang["table_prefix_not_exist"] = ' - پیشوند جداول موجود نمی باشد'; +$_lang["table_prefix_not_exist_note"] = 'صب و بروزرسانی با پیشوند جداولی که انتخاب کردید به علت موجود نبودن یشوند جداول با مشکل روبرو شد. لطف پیشوند جداول را بازرسی و دوباره امتحان کنید.'; +$_lang["templates"] = 'قالب ها'; +$_lang["to_log_into_content_manager"] = 'برای ورود به قسمت مدیریت ('.MGR_DIR.'/index.php) شما می توانید بر دکمه "ببند" کلیک کنید.'; +$_lang["toggle"] = 'دستور'; +$_lang["unable_install_chunk"] = 'نصب چانک با مشکل روبرو شد. فایل'; +$_lang["unable_install_module"] = 'نصب ماژول با مشکل روبرو شد. فایل'; +$_lang["unable_install_plugin"] = 'نصب پلاگین با مشکل روبرو شد. فایل'; +$_lang["unable_install_snippet"] = 'نصب اسنیپت با مشکل روبرو شد. فایل'; +$_lang["unable_install_template"] = 'نصب قالب با مشکل روبرو شد. فایل'; +$_lang["upgrade_note"] = 'یادداشت: قبل از ورد به سایت شما می بایست به قسمت مدیریت بروید و پیکربندی را مرور و ویرایش کنید .'; +$_lang["upgraded"] = 'به روز شد'; +$_lang["visit_forum"] = ', به انجمن پشتیبانی مادایکس بروید.'; +$_lang["welcome_message_text"] = 'این برنامه تا آخرین مرحله ی نصب مادایکس راهنمای شماست.'; +$_lang["welcome_message_welcome"] = ' به برنامه ی نصب MODx فارسی خوش آمدید.'; +$_lang["writing_config_file"] = 'نگارش فایل پیکر بندی: '; +$_lang["you_running_php"] = ' - نسخه فعلی PHP شما '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/polish-utf8.inc.php b/assets/modules/store/installer/lang/polish-utf8.inc.php new file mode 100755 index 0000000000..7d95b80424 --- /dev/null +++ b/assets/modules/store/installer/lang/polish-utf8.inc.php @@ -0,0 +1,199 @@ +/assets/cache oraz /assets/cache/rss: '; +$_lang["checking_if_cache_file_writable"] = 'Sprawdzanie, czy plik /assets/cache/siteCache.idx.php jest zapisywalny: '; +$_lang["checking_if_cache_file2_writable"] = 'Sprawdzanie, czy plik /assets/cache/sitePublishing.idx.php jest zapisywalny: '; +$_lang["checking_if_cache_writable"] = 'Sprawdzanie, czy foldery /assets/cache oraz /assets/cache/rss są zapisywalne: '; +$_lang["checking_if_config_exist_and_writable"] = 'Sprawdzanie, czy plik /'.MGR_DIR.'/includes/config.inc.php istnieje i jest zapisywalny: '; +$_lang["checking_if_export_exists"] = 'Sprawdzanie, czy istnieje folder /assets/export: '; +$_lang["checking_if_export_writable"] = 'Sprawdzanie, czy folder /assets/export jest zapisywalny: '; +$_lang["checking_if_images_exist"] = 'Sprawdzanie, czy istnieją foldery /assets/images, /assets/files, /assets/flash oraz /assets/media: '; +$_lang["checking_if_images_writable"] = 'Sprawdzanie, czy foldery /assets/images, /assets/files, /assets/flash oraz /assets/media są zapisywalne: '; +$_lang["checking_mysql_strict_mode"] = 'Sprawdzanie trybu "strict sql_mode" dla MySQL: '; +$_lang["checking_mysql_version"] = 'Sprawdzanie wersji MySQL: '; +$_lang["checking_php_version"] = 'Sprawdzanie wersji PHP: '; +$_lang["checking_registerglobals"] = 'Sprawdzanie, czy zmienne globalne (Register_Globals) są wyłączone: '; +$_lang["checking_registerglobals_note"] = 'Taka konfiguracja powoduje, że Twoja strona jest znacznie bardziej podatna na ataki typu Cross Site Scripting (XSS). Powinieneś wyłączyć tę opcję na serwerze. Są trzy podstawowe sposoby, aby to zrobić: można zmodyfikować główny plik php.ini, dodać regułę w pliku .htaccess znajdującym się w głównym folderze, w którym zainstalowany został MODx lub dodać własny plik php.ini w każdym z folderów MODxa (a jest ich sporo) z ustawieniami nadpisującymi ustawienia globalne. Jeśli nie zmienisz tych ustawień, będziesz mógł w dalszym ciągu zainstalować MODxa - pamiętaj jednak, że zostałeś ostrzeżony!'; +$_lang["checking_sessions"] = 'Sprawdzanie, czy obsługa sesji jest skonfigurowana poprawnie: '; +$_lang["checking_table_prefix"] = 'Sprawdzanie prefiksu tabeli `'; +$_lang["chunks"] = 'Chunki'; +$_lang["config_permissions_note"] = 'Dla nowych instalacji na systemach Linux/Unix utwórz pusty plik o nazwie config.inc.php w folderze /'.MGR_DIR.'/includes/ i ustaw dla niego prawa dostępu na 0666.'; +$_lang["connection_screen_collation"] = 'System porównań (collation): '; +$_lang["connection_screen_connection_method"] = 'Metoda połączenia: '; +$_lang["connection_screen_database_connection_information"] = 'Informacje o bazie danych'; +$_lang["connection_screen_database_connection_note"] = 'Wybierz nazwę bazy danych, którą chcesz użyć dla tej instalacji MODxa. Jeśli baza danych nie istnieje, instalator podejmie próbę utworzenia jej. Utworzenie nowej bazy danych może się nie powieść, jeśli użytkownik MySQL nie ma wystarczających uprawnień.'; +$_lang["connection_screen_database_host"] = 'Host bazy danych:'; +$_lang["connection_screen_database_info"] = 'Informacje o bazie danych'; +$_lang["connection_screen_database_login"] = 'Nazwa użytkownika bazy: '; +$_lang["connection_screen_database_name"] = 'Nazwa bazy: '; +$_lang["connection_screen_database_pass"] = 'Hasło do bazy: '; +$_lang["connection_screen_database_test_connection"] = 'Tworzenie lub testowanie wybranej bazy danych.'; +$_lang["connection_screen_default_admin_email"] = 'Adres e-mail administratora: '; +$_lang["connection_screen_default_admin_login"] = 'Nazwa dla konta administratora: '; +$_lang["connection_screen_default_admin_note"] = 'Teraz musisz skonfigurować konto administratora. Podaj nazwę oraz hasło, które na pewno zapamiętasz. Będziesz potrzebował tych danych aby zalogować się do Menedżera MODxa po zakończeniu procesu instalacji.'; +$_lang["connection_screen_default_admin_password"] = 'Hasło administratora: '; +$_lang["connection_screen_default_admin_password_confirm"] = 'Potwierdź hasło: '; +$_lang["connection_screen_default_admin_user"] = 'Domyślna nazwa użytkownika'; +$_lang["connection_screen_defaults"] = 'Domyślne ustawienia Menedżera'; +$_lang["connection_screen_server_connection_information"] = 'Informacje dotyczące połączenia i logowania'; +$_lang["connection_screen_server_connection_note"] = 'Przed przetestowaniem połączenia wpisz nazwę hosta bazy danych (nazwę serwera lub adres IP), nazwę użytkownika oraz hasło.'; +$_lang["connection_screen_server_test_connection"] = 'Testowanie połączenia z bazą danych i sprawdzanie systemu porównań.'; +$_lang["connection_screen_table_prefix"] = 'Prefiks tabeli: '; +$_lang["creating_database_connection"] = 'Łączenie z bazą danych: '; +$_lang["database_alerts"] = 'Ostrzeżenia bazy danych!'; +$_lang["database_connection_failed"] = 'Połączenie z bazą danych nie powiodło się!'; +$_lang["database_connection_failed_note"] = 'Sprawdź nazwę użytkownika i hasło, a następnie spróbuj ponownie.'; +$_lang["database_use_failed"] = 'Baza danych nie może być użyta!'; +$_lang["database_use_failed_note"] = 'Sprawdź prawa dostępu do bazy danych dla wybranego użytkownika i spróbuj ponownie.'; +$_lang["default_language"] = 'Domyślny język Menedżera'; +$_lang["default_language_description"] = 'Domyślny język dla Menedżera MODxa.'; +$_lang["during_execution_of_sql"] = ' podczas wykonywania zapytania SQL '; +$_lang["encoding"] = 'utf-8'; +$_lang["error"] = 'błąd'; +$_lang["errors"] = 'błędy'; +$_lang["failed"] = 'NIE POWIODŁO SIĘ!'; +$_lang["help"] = 'Pomoc!'; +$_lang["help_link"] = 'http://modxcms.com/forums/'; +$_lang["help_title"] = 'Pomoc dotyczącą instalacji można uzyskać na forum MODxa'; +$_lang["iagree_box"] = 'Akceptuję warunki licencji MODxa. Tłumaczenia licencji GPL w wersji 2 znajdziesz na stronie GNU Operating System.'; +$_lang["install"] = 'Instaluj'; +$_lang["install_overwrite"] = 'Instaluj/Nadpisz: '; +$_lang["install_results"] = 'Wyniki instalacji'; +$_lang["install_update"] = 'Instaluj/Aktualizuj: '; +$_lang["installation_error_occured"] = 'Podczas instalacji wystąpił następujący błąd'; +$_lang["installation_install_new_copy"] = 'Zainstaluj nową kopię '; +$_lang["installation_install_new_note"] = 'Wybór tej opcji może spowodować nadpisanie danych w wybranej bazie danych.'; +$_lang["installation_mode"] = 'Typ instalacji'; +$_lang["installation_new_installation"] = 'Nowa instalacja'; +$_lang["installation_note"] = 'Uwaga: Zanim zaczniesz przeglądać zasoby swojej strony zaloguj się do Menedżera i zapisz konfigurację. Do modułu konfiguracji systemu w Menedżerze MODxa dostaniesz się wybierając zakładkę: Narzędzia -> Konfiguracja systemu.'; +$_lang["installation_successful"] = 'Instalacja zakończona pomyślnie!'; +$_lang["installation_upgrade_advanced"] = 'Zaawansowany tryb aktualizacji'; +$_lang["installation_upgrade_advanced_note"] = 'Tryb dla użytkowników zaawansowanych. Wybierz go, jeśli przenosisz instalację do bazy danych z innym kodowaniem znaków.
                      Będziesz potrzebował pełnej nazwy bazy danych, nazwy użytkownika oraz jego hasła, jak również szczegółów dotyczących połączenia i systemu porównań.'; +$_lang["installation_upgrade_existing"] = 'Aktualizuj bieżącą instalację'; +$_lang["installation_upgrade_existing_note"] = 'Aktualizuje bieżące pliki i bazę danych.'; +$_lang["installed"] = 'Zainstalowano'; +$_lang["installing_demo_site"] = 'Instalowanie strony demo: '; +$_lang["language_code"] = 'pl'; +$_lang["loading"] = 'Ładowanie...'; +$_lang["modules"] = 'Moduły'; +$_lang["modx_footer1"] = '© 2005-2011 MODx Content Management Framework (CMF) project. Wszystkie prawa zastrzeżone. MODx jest objęty licencją GNU GPL.'; +$_lang["modx_footer2"] = 'MODx jest wolnym oprogramowaniem. Zachęcamy Cię, abyś kreatywnie wykorzystywał MODxa w jakikolwiek sposób, który uznasz za przydatny. Prosimy jedynie, abyś pozostawił kod źródłowy otwartym i darmowym w przypadku gdy zdecydujesz się na redystrybucję MODxa w zmodyfikowanej przez siebie wersji!'; +$_lang["modx_install"] = 'MODx » Instalacja'; +$_lang["modx_requires_php"] = ', MODx wymaga PHP w wersji 4.2.0 lub nowszej'; +$_lang["mysql_5051"] = ' MySQL w wersji 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Wersja 5.0.51 MySQL posiada wiele dobrze znanych błędów, które mogą przyczynić się do nieprawidłowego działania MODxa. Zalecamy uaktualnienie MySQL przed kontynuowaniem instalacji.'; +$_lang["mysql_version_is"] = 'Wersja MySQL: '; +$_lang["no"] = 'Nie'; +$_lang["none"] = 'Żadne'; +$_lang["not_found"] = 'nie znaleziono'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Komponenty opcjonalne'; +$_lang["optional_items_note"] = 'Wybierz opcje instalacji, a następnie kliknij przycisk `Instaluj`: '; +$_lang["php_security_notice"] = 'Informacja dotycząca bezpieczeństwa

                      Co prawda MODx będzie działał na Twojej wersji PHP, jednak używanie MODxa z tą akurat wersją nie jest zalecane. Używana przez Ciebie wersja PHP posiada wiele błędów związanych z bezpieczeństwem. Zaktualizuj PHP do wersji 4.3.8 lub nowszej, w której wyżej wymienione błędy nie występują. Zalecamy aktualizację ze względu na bezpieczeństwo Twojej strony internetowej.

                      '; +$_lang["please_correct_error"] = '. Proszę popraw błąd'; +$_lang["please_correct_errors"] = '. Proszę popraw błędy'; +$_lang["plugins"] = 'Pluginy'; +$_lang["preinstall_validation"] = 'Weryfikacja pre-instalacyjna'; +$_lang["recommend_setting_change_title"] = 'Rekomendowana zmiana ustawień'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Zmiana ustawienia: Weryfikuj nagłówki HTTP_REFERER?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Strona nie została skonfigurowana aby weryfikować nagłówki HTTP_REFERER. Zalecamy włączenie tej opcji aby zmniejszyć ryzyko ataków CSRF (Cross Site Request Forgery).'; +$_lang["remove_install_folder_auto"] = 'Usuń folder instalatora z zasobów mojej strony
                       (Ta operacja wymaga uprawnień do usuwania plików dla folderu instalatora).'; +$_lang["remove_install_folder_manual"] = 'Pamiętaj aby usunąć folder "install" przed zalogowaniem się do Menedżera MODxa.'; +$_lang["retry"] = 'Spróbuj ponownie'; +$_lang["running_database_updates"] = 'Wykonywanie aktualizacji bazy danych: '; +$_lang["sample_web_site"] = 'Przykładowa strona internetowa'; +$_lang["sample_web_site_note"] = 'Pamiętaj, że ta operacja nadpisze istniejące już dokumenty i zasoby.'; +$_lang["session_problem"] = 'Wystąpił problem z obsługą sesji przez serwer. Proszę skonsultuj się z administratorem aby usunąć ten problem.'; +$_lang["session_problem_try_again"] = 'Ponowić próbę?'; +$_lang["setup_cannot_continue"] = 'Z powodów wymienionych powyżej instalacja nie może być kontynuowana'; +$_lang["setup_couldnt_install"] = 'Instalator MODxa nie mógł zainstalować/zmodyfikować niektórych tabel w wybranej bazie danych.'; +$_lang["setup_database"] = 'Instalator spróbuje teraz skonfigurować bazę danych:
                      '; +$_lang["setup_database_create_connection"] = 'Łączenie z bazą danych: '; +$_lang["setup_database_create_connection_failed"] = 'Połączenie z bazą danych nie powiodło się!'; +$_lang["setup_database_create_connection_failed_note"] = 'Sprawdź nazwę użytkownika i hasło, a następnie spróbuj ponownie.'; +$_lang["setup_database_creating_tables"] = 'Tworzenie tabel: '; +$_lang["setup_database_creation"] = 'Tworzenie bazy danych `'; +$_lang["setup_database_creation_failed"] = 'Błąd podczas próby utworzenia bazy danych!'; +$_lang["setup_database_creation_failed_note"] = ' - Instalator nie mógł utworzyć bazy danych!'; +$_lang["setup_database_creation_failed_note2"] = 'Instalator nie był w stanie utworzyć bazy danych. Nie mógł również odnaleźć istniejącej bazy danych o wybranej nazwie. Prawdopodobnie konfiguracja Twojego hostingu nie zezwala zewnętrznym skryptom na tworzenie baz danych. Proszę utwórz bazę danych według instrukcji dostarczonych przez administratora hostingu, a następnie uruchom instalatora ponownie.'; +$_lang["setup_database_selection"] = 'Wybieranie bazy danych `'; +$_lang["setup_database_selection_failed"] = 'Błąd podczas wybierania bazy danych...'; +$_lang["setup_database_selection_failed_note"] = 'Baza danych nie istnieje. Instalator podejmie próbę jej utworzenia.'; +$_lang["snippets"] = 'Snippety'; +$_lang["some_tables_not_updated"] = 'Niektóre tabele nie zostały zaktualizowane. Może to być wynikiem wcześniejszych ich modyfikacji.'; +$_lang["status_checking_database"] = 'Sprawdzanie bazy danych: '; +$_lang["status_connecting"] = 'Łączenie z hostem: '; +$_lang["status_failed"] = 'BŁĄD!'; +$_lang["status_failed_could_not_create_database"] = 'BŁĄD! - nie można utworzyć bazy danych'; +$_lang["status_failed_database_collation_does_not_match"] = 'BŁĄD! - niezgodność systemów porównań; użyj SET NAMES lub wybierz %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'BŁĄD! - wybrany prefiks tabeli jest już wykorzystywany!'; +$_lang["status_passed"] = 'OK - baza danych została wybrana'; +$_lang["status_passed_database_created"] = 'OK - baza danych utworzona'; +$_lang["status_passed_server"] = 'OK - system porównań dostępny'; +$_lang["strict_mode"] = 'Tryb `strict sql_mode` dla MySQL jest włączony!'; +$_lang["strict_mode_error"] = 'Niektóre z funkcji MODxa mogą działać niepoprawnie gdy tryb STRICT_TRANS_TABLES sql_mode jest włączony. Możesz zmienić tryb MySQL edytując plik my.cnf lub kontaktując się z administratorem.'; +$_lang["summary_setup_check"] = 'Instalator wykonał serię testów aby sprawdzić, czy wszystko jest gotowe do rozpoczęcia procesu instalacji.'; +$_lang["system_configuration"] = 'Konfiguracja systemu'; +$_lang["system_configuration_validate_referer_description"] = 'Włączenie weryfikacji nagłówków HTTP_REFERER jest rekomendowane aby zmniejszyć prawdopodobieństwo ataków CSRF, jednak przy niektórych konfiguracjach serwera może spowodować, że Menedżer MODxa będzie niedostępny.'; +$_lang["table_prefix_already_inuse"] = '- Tabele o tym prefiksie już istnieją w wybranej bazie danych!'; +$_lang["table_prefix_already_inuse_note"] = 'Nie można zainstalować MODxa w wybranej bazie danych, ponieważ zawiera ona już tabele z określonym prefiksem. Wybierz inny prefiks dla tabeli i uruchom instalatora ponownie.'; +$_lang["table_prefix_not_exist"] = '- Tabele o tym prefiksie nie istnieją w wybranej bazie danych!'; +$_lang["table_prefix_not_exist_note"] = 'Nie można zaktualizować MODxa w wybranej bazie danych, ponieważ nie zawiera ona tabel z określonym prefiksem. Wybierz prefiks, który został zastosowany dla istniejących już tabel i uruchom instalatora ponownie.'; +$_lang["templates"] = 'Szablony'; +$_lang["to_log_into_content_manager"] = 'Po kliknięciu w przycisk `Zamknij` będziesz mógł zalogować się do Menedżera MODxa ('.MGR_DIR.'/index.php).'; +$_lang["toggle"] = 'Odwróć zaznaczenie'; +$_lang['tvs'] = 'Zmienne Szablonów'; +$_lang["unable_install_chunk"] = 'Nie można zainstalować chunków. Plik'; +$_lang["unable_install_module"] = 'Nie można zainstalować modułów. Plik'; +$_lang["unable_install_plugin"] = 'Nie można zainstalować pluginów. Plik'; +$_lang["unable_install_snippet"] = 'Nie można zainstalować snippetów. Plik'; +$_lang["unable_install_template"] = 'Nie można zainstalować szablonów. Plik'; +$_lang["upgrade_note"] = 'Uwaga: Przed rozpoczęciem przeglądania swojej strony zaloguj się jako administrator do Menedżera MODxa, a następnie sprawdź i zapisz konfigurację systemu.'; +$_lang["upgraded"] = 'Zaktualizowano'; +$_lang["validate_referer_title"] = 'Weryfikuj nagłówki HTTP_REFERER?'; +$_lang["visit_forum"] = ', odwiedź Forum MODxa.'; +$_lang["warning"] = 'UWAGA!'; +$_lang["welcome_message_start"] = 'Najpierw wybierz typ instalacji: '; +$_lang["welcome_message_text"] = 'Ten kreator przeprowadzi Cię przez proces instalacji.'; +$_lang["welcome_message_welcome"] = 'Witamy w instalatorze MODxa.'; +$_lang["writing_config_file"] = 'Zapisywanie pliku konfiguracyjnego: '; +$_lang["yes"] = 'Tak'; +$_lang["you_running_php"] = '- włączone PHP'; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/portuguese-br.inc.php b/assets/modules/store/installer/lang/portuguese-br.inc.php new file mode 100755 index 0000000000..77a00c848d --- /dev/null +++ b/assets/modules/store/installer/lang/portuguese-br.inc.php @@ -0,0 +1,166 @@ +assets/cache existe: '; +$_lang["checking_if_cache_file2_writable"] = 'Checando se o arquivo assets/cache/sitePublishing.idx.php est liberado pra escrita: '; +$_lang["checking_if_cache_file_writable"] = 'Checando se o arquivo assets/cache/siteCache.idx.php est liberado pra escrita: '; +$_lang["checking_if_cache_writable"] = 'Checando se o diretrio assets/cache est liberado pra escrita: '; +$_lang["checking_if_config_exist_and_writable"] = 'Checando se o arquivo '.MGR_DIR.'/includes/config.inc.php existe e est liberado pra escrita: '; +$_lang["checking_if_export_exists"] = 'Checando se o diretrio assets/export directory exists: '; +$_lang["checking_if_export_writable"] = 'Checando se o diretrio assets/export est liberado pra escrita: '; +$_lang["checking_if_images_exist"] = 'Checando se o diretrio assets/images existe: '; +$_lang["checking_if_images_writable"] = 'Checando se o diretrio assets/images est liberado pra escrita: '; +$_lang["checking_php_version"] = 'Checando verso do PHP: '; +$_lang["checking_registerglobals"] = 'Checando se Register_Globals est desligado: '; +$_lang["checking_registerglobals_note"] = 'Este script faz com que seu site seja muito mais propenso ataques de Cross Site Scripting (XSS). Voc deveria entrar em contato com seu Host para mudar esta configurao, geralmente h trs modos de desabilitar: modificando o arquivo global php.ini, adicionando regras para um arquivo .htaccess na raiz da pasta da instalao do MODx, ou adicionando um php.ini sobre cada arquivo em cada pasta de sua instao (e tem um muitos deles). Ou voc poder instalar o MODx, mas considere-se avisado.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Checando se as sees esto configuradas apropiadamente: '; +$_lang["checking_table_prefix"] = 'Verificando Prefixo de Tabela `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'Para novas instalaes de Linux/Unix, crie um arquivo vazio chamado config.inc.php no diretrio '.MGR_DIR.'/includes/ com as permisses de 0666.'; +$_lang["connection_screen_collation"] = 'Collation:'; +$_lang["connection_screen_connection_information"] = 'Informao de Conexo'; +$_lang["connection_screen_database_connection_information"] = 'Informao da Base de Dados.'; +$_lang["connection_screen_database_connection_note"] = 'Entre com o nome da base de dados que voc criou para o MODX. Se voc ainda no criou uma base de dados, a instalao ir tentar criar uma base para voc. Isto pode falhar dependendo das configuraes MySQL das permisses de usurio de seu domnio/instalao.'; +$_lang["connection_screen_database_host"] = 'Servidor da Base de Dados:'; +$_lang["connection_screen_database_login"] = 'Login da Base de Dados:'; +$_lang["connection_screen_database_name"] = 'Nome da Base de Dados:'; +$_lang["connection_screen_database_pass"] = 'Senha da Base de Dados:'; +$_lang["connection_screen_database_test_connection"] = 'Clique aqui para criar a sua Base de Dados ou testar a conexo'; +$_lang["connection_screen_default_admin_email"] = 'E-mail do Administrador:'; +$_lang["connection_screen_default_admin_login"] = 'Nome de Usurio de administrador:'; +$_lang["connection_screen_default_admin_note"] = 'Agora voc ira digitar os dados para a conta principal de administrador. Voc pode digitar seu nome aqui, e uma senha que voc no ir esquecer. Voc prescisar de fazer o login como administrador para terminar a instalao.'; +$_lang["connection_screen_default_admin_password"] = 'Senha do Administrador:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Confirme a Senha:'; +$_lang["connection_screen_default_admin_user"] = 'Usurio Admin Padro'; +$_lang["connection_screen_server_connection_information"] = 'Informaes de Conexo com o servidor e de login'; +$_lang["connection_screen_server_connection_note"] = 'Por favor insira o nome do seu servidor, seu login e senha e depois teste a conexo.'; +$_lang["connection_screen_server_test_connection"] = 'Clique aqui para testar a conexo com o servidor e veja as collations disponveis.'; +$_lang["connection_screen_table_prefix"] = 'Prefixo de Tabela:'; +$_lang["creating_database_connection"] = 'Criando conexo com a Base de Dados: '; +$_lang["database_alerts"] = 'Alertas de Base de Dados!'; +$_lang["database_connection_failed"] = 'Conexo com a Base de Dados Falhou!'; +$_lang["database_connection_failed_note"] = 'Verifique os detalhes de login e senha da base e tente novamente.'; +$_lang["database_use_failed"] = 'Base de Dados no pode ser selecionada!'; +$_lang["database_use_failed_note"] = 'Verifique se h permisso na Base de Dados para o usurio e tente novamente.'; +$_lang["during_execution_of_sql"] = ' durante uma execuo do SQL statement '; +$_lang["encoding"] = 'iso-8859-1'; +$_lang["error"] = 'erro'; +$_lang["errors"] = 'erros'; +$_lang["failed"] = 'Falhou!'; +$_lang["iagree_box"] = 'Eu Concordo com os termos da licensa.'; +$_lang["install"] = 'Instalar'; +$_lang["install_overwrite"] = 'Instalar/Sobre-escrever'; +$_lang["install_results"] = 'Resultados da Instalao'; +$_lang["install_update"] = 'Instalar/Atualizar'; +$_lang["installation_error_occured"] = 'Os seguintes erros ocorreram durante a instalao'; +$_lang["installation_install_new_copy"] = 'Instalar uma nova cpia de '; +$_lang["installation_install_new_note"] = 'Ateno esta opo ir sobreescrever qualquer contedo dentro de sua Base de Dados.'; +$_lang["installation_mode"] = 'Modo de Instalao'; +$_lang["installation_new_installation"] = 'Nova Instalao'; +$_lang["installation_note"] = 'Nota: Antes de entrar no painel voc deve editar e salvar as suas Configuraes do Sistema antes de navergar no site, escolhendo Administrao -> Configurao do Sistema no Gerenciador do MODx.'; +$_lang["installation_successful"] = 'Instalao feita com sucesso!'; +$_lang["installation_upgrade_advanced"] = 'Instalao de Atualizao Avanada (Upgrade)
                      (editar config. da database)'; +$_lang["installation_upgrade_advanced_note"] = 'Para administradores avanados de database ou mover para servidores com uma conexo de um character set diferente. Voc vai precisar de saber o nome completo da base de dados, usurio, senha e detalhes conexo/collations.'; +$_lang["installation_upgrade_existing"] = 'Atualizando Instalao j existente - Upgrade'; +$_lang["installation_upgrade_existing_note"] = 'Upgrade dos arquivos atuais e bases de dados.'; +$_lang["installed"] = 'Instalado'; +$_lang["installing_demo_site"] = 'Instalando site de exemplo: '; +$_lang["loading"] = 'Carregando...'; +$_lang["modules"] = 'Modulos'; +$_lang["modx_footer1"] = '© 2005-2007 o projeto MODx Content Mangement Framework (CMF). Todos os direitos reservados. MODx licensiado pela GNU GPL.'; +$_lang["modx_footer2"] = 'MODx um software livre. Ns indicamos o uso do MODx do modo que for mais conveniente para voc. Apenas, sempre que redistribuir verses modificadas do MODx incluir uma cpia original do cdigo-fonte gratuitamente!'; +$_lang["modx_install"] = 'MODx » Instalao'; +$_lang["modx_requires_php"] = ', e o MODx requer PHP 4.1.0 ou mais recente'; +$_lang["mysql_5051"] = 'Aviso : Verso do MySQL no servidor 5.0.51'; +$_lang["none"] = 'Nenhuma'; +$_lang["not_found"] = 'no encontrado'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Itens Opcionais'; +$_lang["optional_items_note"] = 'Escolha as opes de instalaes e clique em Instalar:'; +$_lang["php_security_notice"] = 'Alerta de Segurana

                      Enquanto MODx ir trabalhar em sua verso de PHP, o uso do MODx nesta verso no recomendado. Sua verso do PHP vulnervel muitas falhas de segurana. Por favor, atualize o PHP para verso 4.3.8 ou superior, que fecha estas falhas. Voc deve atualizar pela segurana de seu prpio site.

                      '; +$_lang["please_correct_error"] = '. Por favor, corriga o erro'; +$_lang["please_correct_errors"] = '. Por favor, corriga os erros'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Validao de Pr Instalao'; +$_lang["remove_install_folder_auto"] = 'Remova o diretrio e arquivos de instalao do site
                       ( necessrio permisses para apagar arquivos).'; +$_lang["remove_install_folder_manual"] = 'Por favor, lembre-se de remover o diretrio "install" antes de entrar no Gerenciador de Contedo.'; +$_lang["retry"] = 'Tentar Novamente'; +$_lang["running_database_updates"] = 'Rodando atualizaes na Base de Dados: '; +$_lang["sample_web_site"] = 'Web Site Exemplo'; +$_lang["sample_web_site_note"] = 'Ateno: Est ir Sobre-Escrever documentos e recursos existentes.'; +$_lang["setup_cannot_continue"] = 'Infelizmente o Setup no pode continuar pelos motivos acima citados '; +$_lang["setup_couldnt_install"] = 'A instalao no pode inserir/modificar algumas tabelas na Base de Dados selecionada.'; +$_lang["setup_database"] = 'O Setup agora ir tentar configurar a Base de dados.:
                      '; +$_lang["setup_database_create_connection"] = 'Criando uma conexo com a Base de Dados: '; +$_lang["setup_database_create_connection_failed"] = 'A conexo com a Base de Dados falhou!'; +$_lang["setup_database_create_connection_failed_note"] = 'Por favor, verifique o usurio e senha da base de dados.'; +$_lang["setup_database_creating_tables"] = 'Criando tabelas da Base de Dados: '; +$_lang["setup_database_creation"] = 'Criando Base de Dados `'; +$_lang["setup_database_creation_failed"] = 'A criao da Base de Dados Falhou!'; +$_lang["setup_database_creation_failed_note"] = ' - O Setup no pode criar a Base de Dados!'; +$_lang["setup_database_creation_failed_note2"] = 'No foi possvel criar a Base de Dados, e no foi encontrado uma Base de Dados. Parece que seu provedor de hospedagem por motivos de segurana no permite scripts externos para criar a Base de Dados. Por favor crie uma Base de Dados atravs do procedure de seu provedor, e rode o setup novamente.'; +$_lang["setup_database_selection"] = 'Selecionando base de dados `'; +$_lang["setup_database_selection_failed"] = 'Seleo da base de dados falhou...'; +$_lang["setup_database_selection_failed_note"] = 'A base de dados no existe. O Setup ir tentar criar esta base de dados.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Algumas tabelas no foram atualizadas. Isto pode ter sido ocasionado por modificaes anteriores.'; +$_lang["status_checking_database"] = 'Checando Base de Dados: '; +$_lang["status_connecting"] = ' Conexo ao servidor: '; +$_lang["status_failed"] = 'falhou!'; +$_lang["status_failed_could_not_create_database"] = 'falhou - no foi possvel criar a base de dadose'; +$_lang["status_failed_table_prefix_already_in_use"] = 'falhou - o table prefix j est em uso!'; +$_lang["status_passed"] = 'sucesso - Base de Dados selecionada'; +$_lang["status_passed_database_created"] = 'sucesso - Base de Dados criada'; +$_lang["status_passed_server"] = 'sucesso - collations agora disponveis'; +$_lang["strict_mode"] = 'Aviso : Serviodr de MySQL est no modo strict'; +$_lang["summary_setup_check"] = 'O setup carregou um nmero de checkagens para verificar se est pronto para iniciar o setup.'; +$_lang["table_prefix_already_inuse"] = ' - Prefixo de Tabela j est em usa nesta base de dados!'; +$_lang["table_prefix_already_inuse_note"] = 'Setup no pode instalar porque, a base j possui o prefixo de tabela selecionado. Selecione outro prefixo de tabela e inicie o setup novamente.'; +$_lang["table_prefix_not_exist"] = ' - Prefixo de Table no existe nesta Base de Dados!'; +$_lang["table_prefix_not_exist_note"] = 'No foi possvel instalar na base de dados selecionada, como no h tabelas com o prefixo que voc inseriu. Por favor, escolha outro prefixo de tabela e re-comee a atualizao.'; +$_lang["templates"] = 'Templates'; +$_lang["to_log_into_content_manager"] = 'Para logar no gerenciador de contedo ('.MGR_DIR.'/index.php) voc pode clicar no boto Fechar.'; +$_lang["toggle"] = 'Detalhar'; +$_lang["unable_install_chunk"] = 'No foi possivel instalar o chunk. Arquivo'; +$_lang["unable_install_module"] = 'No foi possivel instalar o module. Arquivo'; +$_lang["unable_install_plugin"] = 'No foi possivel instalar o plugin. Arquivo'; +$_lang["unable_install_snippet"] = 'No foi possivel instalar o snippet. Arquivo'; +$_lang["unable_install_template"] = 'No foi possivel instalar o template. Arquivo'; +$_lang["upgrade_note"] = 'Nota: Antes de navegar em seu site voc deve acessar o Gerenciador usando uma conta de Administrador, e depois revisar e gravar suas Configuraes de Sistema.'; +$_lang["upgraded"] = 'Atualizado'; +$_lang["visit_forum"] = ', visite o Operation MODx Forums.'; +$_lang["welcome_message_text"] = 'Este programa ir te guiar pelo resto da instalao do pacote.'; +$_lang["welcome_message_welcome"] = 'Bem-vindo instalao do MODx.'; +$_lang["writing_config_file"] = 'Escrevendo arquivo de configurao: '; +$_lang["you_running_php"] = ' - Voc est rodando no PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/russian-UTF8.inc.php b/assets/modules/store/installer/lang/russian-UTF8.inc.php new file mode 100755 index 0000000000..87dbddba6f --- /dev/null +++ b/assets/modules/store/installer/lang/russian-UTF8.inc.php @@ -0,0 +1,197 @@ +/assets/cache и /assets/cache/rss: '; +$_lang["checking_if_cache_file_writable"] = 'Проверка возможности записи в файл /assets/cache/siteCache.idx.php: '; +$_lang["checking_if_cache_file2_writable"] = 'Проверка возможности записи в файл /assets/cache/sitePublishing.idx.php: '; +$_lang["checking_if_cache_writable"] = 'Проверка возможности записи в папки /assets/cache и /assets/cache/rss: '; +$_lang["checking_if_config_exist_and_writable"] = 'Проверка существования и возможности записи в файл /manager/includes/config.inc.php: '; +$_lang["checking_if_export_exists"] = 'Проверка существования папки /assets/export: '; +$_lang["checking_if_export_writable"] = 'Проверка возможности записи в папку /assets/export: '; +$_lang["checking_if_images_exist"] = 'Проверка существования папок /assets/images, /assets/files, /assets/flash и /assets/media: '; +$_lang["checking_if_images_writable"] = 'Проверка возможности записи в папки /assets/images, /assets/files, /assets/flash и /assets/media: '; +$_lang["checking_mysql_strict_mode"] = 'Проверка MySQL на строгий режим strict sql_mode: '; +$_lang["checking_mysql_version"] = 'Проверка версии MySQL: '; +$_lang["checking_php_version"] = 'Проверка версии PHP: '; +$_lang["checking_registerglobals"] = 'Проверка PHP-параметра Register_Globals: '; +$_lang["checking_registerglobals_note"] = 'Конфигурация PHP делает ваш сайт более восприимчивым к XSS-атакам. Вы должны самостоятельно, или связавшись с администрацией хостинга, выключить Register_Globals. Обычно это делается одним из следующих путей: вносятся исправления в php.ini файл, добавляются правила в файл .htaccess, который находится в корне папки MODX, или добавлением своего php.ini в каждую папку внутри папки MODX (их очень много). Вы можете продолжить установку MODX, но обдумайте это предупреждение.'; +$_lang["checking_sessions"] = 'Проверка настроек сессий: '; +$_lang["checking_table_prefix"] = 'Проверка префикса таблиц `'; +$_lang["chunks"] = 'Чанки'; +$_lang["config_permissions_note"] = 'При новой Linux/Unix установке, создайте пустой файл config.inc.php в папке /manager/includes/ с правами 0666.'; +$_lang["connection_screen_collation"] = 'Сопоставление:'; +$_lang["connection_screen_connection_method"] = 'Метод сопоставления:'; +$_lang["connection_screen_database_connection_information"] = 'Параметры базы данных'; +$_lang["connection_screen_database_connection_note"] = 'Введите имя базы данных, созданной для MODX. Если у вас еще нет базы данных, то программа установки попытается создать базу данных для вас. В зависимости от конфигурации MySQL или прав пользователя базы данных процесс может завершиться неудачей.'; +$_lang["connection_screen_database_host"] = 'Хост базы данных:'; +$_lang["connection_screen_database_info"] = 'Информация базы данных'; +$_lang["connection_screen_database_login"] = 'Имя пользователя:'; +$_lang["connection_screen_database_name"] = 'Имя базы данных:'; +$_lang["connection_screen_database_pass"] = 'Пароль:'; +$_lang["connection_screen_database_test_connection"] = 'Нажмите здесь для создания базы данных или для проверки, что такая база существует'; +$_lang["connection_screen_default_admin_email"] = 'E-mail администратора:'; +$_lang["connection_screen_default_admin_login"] = 'Имя администратора:'; +$_lang["connection_screen_default_admin_note"] = 'Теперь вы должны ввести данные о главной записи администратора. Вы можете ввести свое имя и пароль, который вы вряд ли забудете. Вам понадобятся эти данные, чтобы войти в панель управления после окончания установки.'; +$_lang["connection_screen_default_admin_password"] = 'Пароль администратора:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Подтвердить пароль:'; +$_lang["connection_screen_default_admin_user"] = 'Администратор по умолчанию'; +$_lang["connection_screen_defaults"] = 'Установки по умолчанию менеджера'; +$_lang["connection_screen_server_connection_information"] = 'Параметры подключения и входа на сервер базы данных'; +$_lang["connection_screen_server_connection_note"] = 'Введите данные для входа в базу данных и затем проверьте их.'; +$_lang["connection_screen_server_test_connection"] = 'Нажмите здесь для проверки соединения с вашим сервером базы данных и получения сопоставления кодировки'; +$_lang["connection_screen_table_prefix"] = 'Префикс таблиц:'; +$_lang["creating_database_connection"] = 'Проверка соединения с базой данных: '; +$_lang["database_alerts"] = 'Внимание ошибка!'; +$_lang["database_connection_failed"] = 'Ошибка соединения с базой данных!'; +$_lang["database_connection_failed_note"] = 'Проверьте параметры соединения и попробуйте еще раз.'; +$_lang["database_use_failed"] = 'Невозможно выбрать базу данных!'; +$_lang["database_use_failed_note"] = 'Проверьте, есть ли у вас необходимые права на доступ к базе данных.'; +$_lang["default_language"] = 'Язык по умолчанию менеджера'; +$_lang["default_language_description"] = 'Это язык, который будет по умолчанию использоваться менеджером в административной панели MODX.'; +$_lang["during_execution_of_sql"] = ' во время выполнения SQL запроса '; +$_lang["encoding"] = 'utf-8'; +$_lang["error"] = 'ошибки'; +$_lang["errors"] = 'ошибок'; +$_lang["failed"] = 'ОШИБКА!'; +$_lang["help"] = 'Помощь!'; +$_lang["help_link"] = 'http://forums.modx.com/board/230/russian'; +$_lang["help_title"] = 'Помощь в установке на форумах MODX'; +$_lang["iagree_box"] = 'Я согласен с условиями лицензии. С русским переводом текста лицензии можно познакомиться на странице GNU General Public License.'; +$_lang["install"] = 'Установить'; +$_lang["install_overwrite"] = 'Установить/Переписать'; +$_lang["install_results"] = 'Результаты установки'; +$_lang["install_update"] = 'Установить/Обновить'; +$_lang["installation_error_occured"] = 'Следующая ошибка возникла во время установки'; +$_lang["installation_install_new_copy"] = 'Установить новую копию '; +$_lang["installation_install_new_note"] = 'Внимание, выбор этого варианта может перезаписать данные в вашей базе данных.'; +$_lang["installation_mode"] = 'Режим установки'; +$_lang["installation_new_installation"] = 'Новая установка'; +$_lang["installation_note"] = 'Внимание: После входа в панель управления вы должны отредактировать и сохранить системную конфигурацию MODX, прежде чем смотреть сайт, выбрав Инструменты -> Конфигурация в панели управления.'; +$_lang["installation_successful"] = 'Установка успешно завершена!'; +$_lang["installation_upgrade_advanced"] = 'Расширенное обновление установки'; +$_lang["installation_upgrade_advanced_note"] = 'Для расширенного управления базой данных с различным набором символов.
                      Вы должны знать полное название вашей базы данных, имя пользователя, пароль, детали подключения и таблицу сопоставления.'; +$_lang["installation_upgrade_existing"] = 'Обновление существующей установки'; +$_lang["installation_upgrade_existing_note"] = 'Обновление ваших файлов и базы данных.'; +$_lang["installed"] = 'Установлен'; +$_lang["installing_demo_site"] = 'Установка контента: '; +$_lang["language_code"] = 'ru'; +$_lang["loading"] = 'Загружается...'; +$_lang["modules"] = 'Модули'; +$_lang["MODX_footer1"] = '© 2005-2013 MODX Content Mangement Framework (CMF) project. Все права защищены. MODX лицензирован GNU GPL.'; +$_lang["MODX_footer2"] = 'MODX — свободное программное обеспечение. Мы поощряем вас быть творческими и использовать MODX как вы считаете целесообразным. Если вы внесете изменения и решите распространять ваш измененный вариант MODX, то должны сохранять и распространять исходный код бесплатно.'; +$_lang["MODX_install"] = 'MODX » Установка'; +$_lang["MODX_requires_php"] = ', а MODX необходим PHP 4.2.0 или более поздний'; +$_lang["mysql_5051"] = ' версия MySQL - 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Известны проблемы с MySQL 5.0.51. Настоятельно рекомендуем обновить базу данных перед продолжением установки.'; +$_lang["mysql_version_is"] = ' Ваша версия MySQL: '; +$_lang["no"] = 'Нет'; +$_lang["none"] = 'Ни один'; +$_lang["not_found"] = 'не найден'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Дополнительные элементы'; +$_lang["optional_items_note"] = 'Пожалуйста, выберите параметры установки и нажмите кнопку `Установить`:'; +$_lang["php_security_notice"] = 'Уведомление безопасности

                      Несмотря на то, что MODX будет работать на вашей версии PHP, использовать его c этой версией PHP крайне не рекомендуется. Ваша версия PHP уязвима из-за многочисленных брешей в защите. Обновите PHP до версии 4.3.8 или более поздней для безопасности вашего сайта.

                      '; +$_lang["please_correct_error"] = '. Исправьте эту ошибку'; +$_lang["please_correct_errors"] = '. Исправьте эти ошибки'; +$_lang["plugins"] = 'Плагины'; +$_lang["preinstall_validation"] = 'Проверка перед установкой'; +$_lang["recommend_setting_change_title"] = 'Рекомендуемое изменение настройки'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Изменить установку: Проверять заголовки HTTP_REFERER?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Ваш сайт не настроен на проверку серверных заголовков HTTP_REFERER во входящих запросах в систему управления. Мы настоятельно рекомендуем включить этот параметр, чтобы снизить риск CSRF (Cross Site Request Forgery - подделка межсайтовых запросов) атак.'; +$_lang["remove_install_folder_auto"] = 'Удалить папку и файлы программы установки с моего сайта
                       (Для выполнения этой операции необходимы права на запись в папку install).'; +$_lang["remove_install_folder_manual"] = 'Пожалуйста, удалите папку "install" прежде чем войти в панель управления.'; +$_lang["retry"] = 'Повторить'; +$_lang["running_database_updates"] = 'Обновление базы данных: '; +$_lang["sample_web_site"] = 'Демо контент'; +$_lang["sample_web_site_note"] = 'Осторожно! Установка этого параметра перепишет существующие ресурсы и элементы.'; +$_lang["session_problem"] = 'Была обнаружена проблема в сессии сервера. Свяжитесь, пожалуйста, с администратором сервера для ее устранения.'; +$_lang["session_problem_try_again"] = 'Повторить?'; +$_lang["setup_cannot_continue"] = 'К сожалению, установка не может быть продолжена из-за '; +$_lang["setup_couldnt_install"] = 'Программа установки MODX не смогла установить/изменить некоторые таблицы базы данных.'; +$_lang["setup_database"] = 'Программа установки сейчас попробует установить базу данных:
                      '; +$_lang["setup_database_create_connection"] = 'Создание подключения к базе данных: '; +$_lang["setup_database_create_connection_failed"] = 'Не удалось соединиться с базой данных!'; +$_lang["setup_database_create_connection_failed_note"] = 'Проверьте параметры подключения и попробуйте снова.'; +$_lang["setup_database_creating_tables"] = 'Создание таблиц базы данных: '; +$_lang["setup_database_creation"] = 'Создание базы данных `'; +$_lang["setup_database_creation_failed"] = 'Не удалось создать базу данных!'; +$_lang["setup_database_creation_failed_note"] = ' - программа установки не смогла создать базу данных!'; +$_lang["setup_database_creation_failed_note2"] = 'Программа установки не смогла создать базу данных, и нет базы данных с таким именем. Возможно, у вас нет прав на создание базы. Проверьте параметры базы данных и попробуйте еще раз.'; +$_lang["setup_database_selection"] = 'Выбор базы данных `'; +$_lang["setup_database_selection_failed"] = 'Ошибка выбора базы данных...'; +$_lang["setup_database_selection_failed_note"] = 'База данных не существует. Программа установки попробует ее создать.'; +$_lang["snippets"] = 'Cниппеты'; +$_lang["some_tables_not_updated"] = 'Некоторые таблицы не были обновлены. Возможно из-за предыдущих модификаций'; +$_lang["status_checking_database"] = 'Проверка базы данных: '; +$_lang["status_connecting"] = ' Подключение: '; +$_lang["status_failed"] = 'ошибка!'; +$_lang["status_failed_could_not_create_database"] = 'ошибка - не удается создать базу данных'; +$_lang["status_failed_database_collation_does_not_match"] = 'ошибка - сопоставление базы данных не соответствует; используйте SET NAMES или выберите %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'ошибка - префикс таблицы уже используется!'; +$_lang["status_passed"] = 'успех - база данных выбрана'; +$_lang["status_passed_database_created"] = 'успех - база данных создана'; +$_lang["status_passed_server"] = 'успех - сопоставление базы данных доступно'; +$_lang["strict_mode"] = ' сервер MySQL работает в строгом режиме strict sql_mode!'; +$_lang["strict_mode_error"] = 'Некоторые возможности MODX не могут работать должным образом, если режим sql_mode STRICT_TRANS_TABLES не отключен. Вы можете задать режим через внесения изменений в my.cnf файл или связаться с администратором базы данных.'; +$_lang["summary_setup_check"] = 'Программа установки выполнит несколько тестов, чтобы удостовериться, что все готово к установке.'; +$_lang["system_configuration"] = 'Конфигурация системы'; +$_lang["system_configuration_validate_referer_description"] = 'Рекомендуется установка Проверять заголовки HTTP_REFERER, которая может защитить ваш сайт от атак CSRF, но при некоторых конфигурациях сервера система управления может быть недоступна.'; +$_lang["table_prefix_already_inuse"] = ' - такой префикс таблиц уже используется в базе данных!'; +$_lang["table_prefix_already_inuse_note"] = 'Продолжение установки невозможно. Уже существуют таблицы с указанным префиксом, измените префикс таблиц и попробуйте снова.'; +$_lang["table_prefix_not_exist"] = ' - нет такого префикса таблиц в базе данных!'; +$_lang["table_prefix_not_exist_note"] = 'Продолжение установки невозможно, так как нет таблиц с указанным префиксом, измените префикс таблиц и попробуйте снова.'; +$_lang["templates"] = 'Шаблоны'; +$_lang["to_log_into_content_manager"] = 'Чтобы войти в панель управления (manager/index.php) нажмите на кнопку `Закрыть`.'; +$_lang["toggle"] = 'Переключить'; +$_lang["tvs"] = 'Параметры (TV)'; +$_lang["unable_install_chunk"] = 'Невозможно установить чанк. Файл'; +$_lang["unable_install_module"] = 'Невозможно установить модуль. Файл'; +$_lang["unable_install_plugin"] = 'Невозможно установить плагин. Файл'; +$_lang["unable_install_snippet"] = 'Невозможно установить сниппет. Файл'; +$_lang["unable_install_template"] = 'Невозможно установить шаблон. Файл'; +$_lang["upgrade_note"] = 'Внимание: Прежде чем открыть ваш сайт, вам необходимо войти в панель управления, затем просмотреть и сохранить системную конфигурацию.'; +$_lang["upgraded"] = 'Обновлен'; +$_lang["validate_referer_title"] = 'Проверять серверные заголовки HTTP_REFERER?'; +$_lang["visit_forum"] = ', посетите форум MODX.'; +$_lang["warning"] = 'Предупреждение!'; +$_lang["welcome_message_start"] = 'Выберите тип установки:'; +$_lang["welcome_message_text"] = 'Эта программа проведет вас через весь процесс установки.'; +$_lang["welcome_message_welcome"] = 'Добро пожаловать в программу установки MODX.'; +$_lang["writing_config_file"] = 'Запись конфигурационного файла: '; +$_lang["yes"] = 'Да'; +$_lang["you_running_php"] = ' - вы используете PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/lang/spanish-utf8.inc.php b/assets/modules/store/installer/lang/spanish-utf8.inc.php new file mode 100755 index 0000000000..be42dfccc6 --- /dev/null +++ b/assets/modules/store/installer/lang/spanish-utf8.inc.php @@ -0,0 +1,186 @@ +assets/cache existe: '; +$_lang["checking_if_cache_file2_writable"] = 'Comprobando que el archivo assets/cache/sitePublishing.idx.php es escribible: '; +$_lang["checking_if_cache_file_writable"] = 'Comprobando que el archivo assets/cache/siteCache.idx.php es escribible: '; +$_lang["checking_if_cache_writable"] = 'Comprobando que el directorio assets/cache es escribible: '; +$_lang["checking_if_config_exist_and_writable"] = 'Comprobando que el archivo '.MGR_DIR.'/includes/config.inc.php existe y es escribible: '; +$_lang["checking_if_export_exists"] = 'Comprobando que el directorio assets/export existe: '; +$_lang["checking_if_export_writable"] = 'Comprobando que el directorio assets/export es escribible: '; +$_lang["checking_if_images_exist"] = 'Comprobando que los directorios assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup y /assets/.thumbs existan: '; +$_lang["checking_if_images_writable"] = 'Comprobando que los directorios assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup y /assets/.thumbs sean escribibles: '; +$_lang["checking_mysql_strict_mode"] = 'Checando MySQL para el sql_mode estricto: '; +$_lang["checking_mysql_version"] = 'Checando la versión de MySQL: '; +$_lang["checking_php_version"] = 'Checando la versión de PHP: '; +$_lang["checking_registerglobals"] = 'Checando si Register_Globals está deshabilitado (off): '; +$_lang["checking_registerglobals_note"] = 'Esta configuración hace tu sitio mucho más propenso a ataques de programas (Cross Site Scripting - XSS). Deberías hablar con tu proveedor de hospedaje para deshabilitar esta configuración, normalmente de una de estas tres maneras: modificando el archivo php.ini global, añadiendo reglas al archivo .htaccess en la raíz de tu instalación de MODx o añadiendo archivos personalizados de php.ini en cada directorio de tu instalación (y hay muchos de ellos). Todavía podrás instalar MODx, pero considérate advertido.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Checando si las sesiones están apropiadamente configuradas: '; +$_lang["checking_table_prefix"] = 'Checando el prefijo de las tablas `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'Para instalaciones nuevas en servidores Linux/Unix, favpr de crear un archivo nuevo en blanco llamado config.inc.php en el directorio '.MGR_DIR.'/includes/ con los permisos de archivo configurados a 0666.'; +$_lang["connection_screen_collation"] = 'Compaginación:'; +$_lang["connection_screen_connection_method"] = 'Método de Conexión:'; +$_lang["connection_screen_database_connection_information"] = 'Información de la base de datos'; +$_lang["connection_screen_database_connection_note"] = 'Favor de escribir el nombre de la base de datos creada para MODx. Si no existe una base de datos todavía, el instalador tratará de crear una para ti. Esto puede fallar dependiendo de la configuración de MySQL o de los permisos del usuario de bases de datos para tu dominio/instalación.'; +$_lang["connection_screen_database_host"] = 'Servidor de base de datos:'; +$_lang["connection_screen_database_info"] = 'Información de la base de datos'; +$_lang["connection_screen_database_login"] = 'Nombre de usuario de la base de datos:'; +$_lang["connection_screen_database_name"] = 'Nombre de la base de datos:'; +$_lang["connection_screen_database_pass"] = 'Contraseña de la base de datos:'; +$_lang["connection_screen_database_test_connection"] = 'Haz clic aquí para crear tu base de datos o para probar la selección de tu base de datos'; +$_lang["connection_screen_default_admin_email"] = 'Email del administrador:'; +$_lang["connection_screen_default_admin_login"] = 'Nombre de usuario para el administrador:'; +$_lang["connection_screen_default_admin_note"] = 'Ahora necesitarás escribir algunos detalles para la cuenta principal del administrador de MODx. Puedes llenar tu nombre y una contraseña que no se te vaya a olvidar. Necesitarás esta información para entrar al administrador una vez que la configuración esté completa.'; +$_lang["connection_screen_default_admin_password"] = 'Contraseña para Administrador:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Confirmar contraseña:'; +$_lang["connection_screen_default_admin_user"] = 'Usuario Administrador Prefijado'; +$_lang["connection_screen_defaults"] = 'Configuración del Administrador Prefijada'; +$_lang["connection_screen_server_connection_information"] = 'Conexión del servidor e información de entrada'; +$_lang["connection_screen_server_connection_note"] = 'Por favor escribe el nombre de tu servidor, tu nombre de usuario y tu contraseña y entonces prueba la conexión.'; +$_lang["connection_screen_server_test_connection"] = 'Haz clic aquí para probar la conexión de tu servidor y obtener las compaginaciones disponibles'; +$_lang["connection_screen_table_prefix"] = 'Prefijo de las tablas:'; +$_lang["creating_database_connection"] = 'Creando conexión a la base de datos: '; +$_lang["database_alerts"] = '¡Alertas de la base de datos!'; +$_lang["database_connection_failed"] = '¡La conexión a la base de datos falló!'; +$_lang["database_connection_failed_note"] = 'Favor de revisar los detalles de conexión a tu base de datos y vuélvelo a intentar.'; +$_lang["database_use_failed"] = '¡No se pudo seleccionar la base de datos!'; +$_lang["database_use_failed_note"] = 'Favor de revisar los permisos de base de datos para el usuario especificado y vuélvelo a intentar.'; +$_lang["default_language"] = 'Idioma del Administrador Prefijado'; +$_lang["default_language_description"] = 'Este es el idioma prefijado que será usado en el panel de control del Administrador de MODx.'; +$_lang["during_execution_of_sql"] = ' durante la ejecución del comando SQL '; +$_lang["encoding"] = 'UTF-8'; //charset encoding for html header +$_lang["error"] = 'error'; +$_lang["errors"] = 'errores'; +$_lang["failed"] = '¡Falló!'; +$_lang["help"] = '!Ayuda!'; +$_lang["help_link"] = 'http://modxcms.com/forums/'; +$_lang["help_title"] = 'Asistencia para la instalación en los foros de MODx'; +$_lang["iagree_box"] = 'Estoy de acuerdo con los términos de la licencia de MODx. Para las traducciones de la licencia GPL version 2, por favor visitar el sitio del Sistema Operativo GNU.'; +$_lang["install"] = 'Instalar'; +$_lang["install_overwrite"] = 'Instalar/Sobrescribir'; +$_lang["install_results"] = 'Resultados de Instalación'; +$_lang["install_update"] = 'Instalar/Actualizar'; +$_lang["installation_error_occured"] = 'Los siguientes errores han ocurrido durante la instalación'; +$_lang["installation_install_new_copy"] = 'Instalar una copia nueva de '; +$_lang["installation_install_new_note"] = 'Favor de notar que esta opción puede sobreescribir cualquier dato en tu base de datos.'; +$_lang["installation_mode"] = 'Modo de Instalación'; +$_lang["installation_new_installation"] = 'Instalación Nueva'; +$_lang["installation_note"] = 'Nota: Después de entrar al sistema de administración de MODx, debes de editar y guardar las configuraciones del sistema antes de navegar por el sitio al ir a Herramientas -> Configuración del Sistema en el administrador de MODx.'; +$_lang["installation_successful"] = '¡La instalación fue exitosa!'; +$_lang["installation_upgrade_advanced"] = 'Actualización Avanzada'; +$_lang["installation_upgrade_advanced_note"] = 'Para administradores avanzados de base de datos o para cambiar a servidores con una conexión de base de datos con un conjunto de caracteres diferente. Necesitarás saber el nombre completo de tu base de datos, su usuario, contraseña, y detalles de su conexión y compaginación.'; +$_lang["installation_upgrade_existing"] = 'Actualizar un Instalación Existente'; +$_lang["installation_upgrade_existing_note"] = 'Actualizar tus archivos y la base de datos existentes.'; +$_lang["installed"] = 'Instalado'; +$_lang["installing_demo_site"] = 'Instalando el sitio de demostración: '; +$_lang["language_code"] = 'es'; // for html element e.g. +$_lang["loading"] = 'Cargando...'; +$_lang["modules"] = 'Módulos'; +$_lang["modx_footer1"] = '© 2005-2009 del proyecto de MODx. Todos los derechos reservados. MODx tiene licencia GPL de GNU.'; +$_lang["modx_footer2"] = 'MODx es software gratuito. Te invitamos a ser creativo y usarlo de cualquier manera que se te antoje. Sólo asegura que si haces cambios y decides distribuir una versión modificada de MODx que el código fuente siga siendo gratis.'; +$_lang["modx_install"] = 'MODx » Instalar'; +$_lang["modx_requires_php"] = ', y MODx requiere de PHP versión 4.2.0 o mayor'; +$_lang["mysql_5051"] = ' la versión del servidor de MySQL es 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Se sabe de algunos problemas con MySQL 5.0.51. Es recomendado que actualices antes de continuar.'; +$_lang["mysql_version_is"] = ' Tu versión de MySQL es: '; +$_lang["none"] = 'Ninguna'; +$_lang["not_found"] = 'no encontrado'; +$_lang["ok"] = 'OK'; +$_lang["optional_items"] = 'Opciones adicionales'; +$_lang["optional_items_note"] = 'Escoge tus opciones de instalación y haz clic en Instalar:'; +$_lang["php_security_notice"] = 'Aviso de Seguridad

                      Aunque MODx puede funcionar con esta versión de PHP, no lo recomendamos. Tu versión de PHP es vulnerable a numerosos problemas de seguridad. Por favor actualiza a la versión PHP 4.3.8 o mayor, la cual resuelve estos problemas. Se recomienda que actualices a esta versión para la seguridad de tu propio sitio de internet.

                      '; +$_lang["please_correct_error"] = '. Favor de corregir el error'; +$_lang["please_correct_errors"] = '. Favor de corregir los errores'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Validación previa a la instalación'; +$_lang["remove_install_folder_auto"] = 'Borrar la carpeta de instalación y sus archivos de mi sitio de internet
                       (Esta operación requiere los permisos correctos para borrar la carpeta).'; +$_lang["remove_install_folder_manual"] = 'Por favor recuerda borrar la carpeta "install" antes de entrar al sistema de administración.'; +$_lang["retry"] = 'Volver a Intentar'; +$_lang["running_database_updates"] = 'Actualizando la base de datos: '; +$_lang["sample_web_site"] = 'Sitio de Muestra'; +$_lang["sample_web_site_note"] = 'Favor de notar que esto va a sobreescribir los documentos y recursos existentes.'; +$_lang["session_problem"] = 'Un problema fue detectado con tus sesiones de servidor. Por favor consulta con tu admin de servidor para corregir este problema.'; +$_lang["session_problem_try_again"] = '¿Intentar nuevamente?'; +$_lang["setup_cannot_continue"] = 'Desafortunadamente, el configurador no puede continuar en este momento, debido a lo anterior '; +$_lang["setup_couldnt_install"] = 'El configurador de MODx no pudo instalar/alterar algunas tablas dentro de la base de datos seleccionada.'; +$_lang["setup_database"] = 'El configurador intentará ahora configurar la base de datos:
                      '; +$_lang["setup_database_create_connection"] = 'Creando una conexión a la base de datos: '; +$_lang["setup_database_create_connection_failed"] = '¡La conexión a la base de datos falló!'; +$_lang["setup_database_create_connection_failed_note"] = 'Favor de revisar los detalles de conexión de la base de datos y volver a intentar.'; +$_lang["setup_database_creating_tables"] = 'Creando tablas de la base de datos: '; +$_lang["setup_database_creation"] = 'Creando la base de datos: `'; +$_lang["setup_database_creation_failed"] = '¡No se pudo crear la base de datos!'; +$_lang["setup_database_creation_failed_note"] = ' - ¡El configurador no pudo crear la base de datos!'; +$_lang["setup_database_creation_failed_note2"] = 'El configurador no pudo crear la base de datos, y no se encontró una base de datos con el mismo nombre. Es probable que la seguridad de su proveedor de hospedaje no prmita programas externos para crear bases de datos. Favor de crear una base de datos de acuerdo con el procedimiento de tu proveedor de hospedaje y vuélvelo a intentar.'; +$_lang["setup_database_selection"] = 'Seleccionando la base de datos: `'; +$_lang["setup_database_selection_failed"] = '¡No se pudo seleccionar la base de datos!'; +$_lang["setup_database_selection_failed_note"] = 'No existe la base de datos. El configurador intentará crearla.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Algunas tablas no fueron actualizadas. Esto puede ser debido a modificaciones previas.'; +$_lang["status_checking_database"] = 'Checando la base de datos: '; +$_lang["status_connecting"] = ' Conexión al servidor: '; +$_lang["status_failed"] = '¡falló!'; +$_lang["status_failed_could_not_create_database"] = 'falló - no se pudo crear la base de datos'; +$_lang["status_failed_database_collation_does_not_match"] = 'falló - no coincide la compaginación de la base de datos; usa SET NAMES o elige %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'falló - el prefijo de tabla ya existe'; +$_lang["status_passed"] = 'pasó - base de datos seleccionada'; +$_lang["status_passed_database_created"] = 'pasó - base de datos creada'; +$_lang["status_passed_server"] = 'pasó - compaginaciones ahora disponibles'; +$_lang["strict_mode"] = ' !El modo sql_mode estricto del servidor MySQL está habilitado!'; +$_lang["strict_mode_error"] = 'Algunas características de MODx pueden no trabajar apropiadamente a no se de que el modo STRICT_TRANS_TABLES sql_mode esté habilitado. Puedes configurar el modo de MySQL al editar el archivo my.cnf o contactar al administrador de tu servidor.'; +$_lang["summary_setup_check"] = 'El configurador ha revisado varios elementos para ver si todo está listo para comenzar la configuración.'; +$_lang["table_prefix_already_inuse"] = ' - ¡Este prefijo ya se está usando en esta base de datos!'; +$_lang["table_prefix_already_inuse_note"] = 'El configurador no puede instalar en la base de datos seleccionada, ya contiene tablas con el prefijo que especificaste. Por favor escoge un nuevo prefijo para tablas y corre el configurador otra vez.'; +$_lang["table_prefix_not_exist"] = ' - ¡Este prefijo no existe en esta base de datos!'; +$_lang["table_prefix_not_exist_note"] = 'El configurador no pudo instalar en la base de datos seleccionada, no contiene tablas existentes con el prefijo que especificaste para ser actualizadas. Por favor escoge un prefijo de tablas existente y corre el configurador otra vez.'; +$_lang["templates"] = 'Templates'; +$_lang["to_log_into_content_manager"] = 'Para entrar al sistema de administración de MODx ('.MGR_DIR.'/index.php) dando clic en el botón de `Cerrar`.'; +$_lang["toggle"] = 'Invertir'; +$_lang['tvs'] = 'Template Variables'; +$_lang["unable_install_chunk"] = 'No se pudo instalar el chunk. Archivo'; +$_lang["unable_install_module"] = 'No se pudo instalar el módulo. Archivo'; +$_lang["unable_install_plugin"] = 'No se pudo instalar el plugin. Archivo'; +$_lang["unable_install_snippet"] = 'No se pudo instalar el snippet. Archivo'; +$_lang["unable_install_template"] = 'No se pudo instalar el template. Archivo'; +$_lang["upgrade_note"] = 'Nota: Antes de navegar por tu sitio debes de entrar al admin con una cuenta de administrador, revisar y guardar tus configuraciones del Sistema.'; +$_lang["upgraded"] = 'Actualizado'; +$_lang["visit_forum"] = 'visita los Foros de MODx.'; +$_lang["warning"] = '!ADVERTENCIA!'; +$_lang["welcome_message_start"] = 'Primero, elige el tipo de instalación a efectuarse:'; +$_lang["welcome_message_text"] = 'Este programa te guiará por el resto de la instalación.'; +$_lang["welcome_message_welcome"] = 'Bienvenido al programa de instalación de MODx.'; +$_lang["writing_config_file"] = 'Escribiendo el archivo de configuración: '; +$_lang["you_running_php"] = ' - Estás operando con PHP '; +?> diff --git a/assets/modules/store/installer/lang/svenska.inc.php b/assets/modules/store/installer/lang/svenska.inc.php new file mode 100755 index 0000000000..1dc54cf5aa --- /dev/null +++ b/assets/modules/store/installer/lang/svenska.inc.php @@ -0,0 +1,199 @@ +/assets/cache och /assets/cache/rss existerar: '; +$_lang["checking_if_cache_file_writable"] = 'Kontrollerar att filen /assets/cache/siteCache.idx.php är skrivbar: '; +$_lang["checking_if_cache_file2_writable"] = 'Kontrollerar att filen /assets/cache/sitePublishing.idx.php är skrivbar: '; +$_lang["checking_if_cache_writable"] = 'Kontrollerar att katalogerna /assets/cache och /assets/cache/rss är skrivbara: '; +$_lang["checking_if_config_exist_and_writable"] = 'Kontrollerar att filen /'.MGR_DIR.'/includes/config.inc.php existerar och är skrivbar: '; +$_lang["checking_if_export_exists"] = 'Kontrollerar att katalogen /assets/export existerar: '; +$_lang["checking_if_export_writable"] = 'Kontrollerar att katalogen /assets/export är skrivbar: '; +$_lang["checking_if_images_exist"] = 'Kontrollerar att katalogerna /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup och /assets/.thumbs existerar: '; +$_lang["checking_if_images_writable"] = 'Kontrollerar att katalogerna /assets/images, /assets/files, /assets/flash, /assets/media, /assets/backup och /assets/.thumbs är skrivbara: '; +$_lang["checking_mysql_strict_mode"] = 'Kontrollerar MySQL för strikt sql_mode: '; +$_lang["checking_mysql_version"] = 'Kontrollerar MySQL-versionen: '; +$_lang["checking_php_version"] = 'Kontrollerar PHP-version: '; +$_lang["checking_registerglobals"] = 'Kontrollerar att Register_Globals är inaktiverad: '; +$_lang["checking_registerglobals_note"] = 'Denna konfiguration gör din webbplats betydligt mer sårbar för attacker med webbkodsinjektion (Cross Site Scripting - XSS). Du bör kontakta din webbhost om att inaktivera denna inställning. Vanligen går det till på ett av följande tre sätt: modifiering av den globala php.ini-filen, tillägg av regler i en .htaccess-fil i roten på din MODX-installation eller genom att lägga till en anpassad php.ini-fil (som åsidosätter den globala filen) i alla kataloger i din installation (och det finns massor av dom). Du kan fortfarande installera MODx, men ta den här varningen på allvar.'; //Look at changing this to provide a solution. +$_lang["checking_sessions"] = 'Kontrollerar att sessioner är korrekt konfigurerade: '; +$_lang["checking_table_prefix"] = 'Kontrollerar tabellprefixet `'; +$_lang["chunks"] = 'Chunks'; +$_lang["config_permissions_note"] = 'För nya installationer i Linux/Unix-miljö måste en tom fil med namnet config.inc.php skapas i katalogen /'.MGR_DIR.'/includes/ med åtkomsträttigheterna satta till 0666.'; +$_lang["connection_screen_collation"] = 'Kollationering:'; +$_lang["connection_screen_connection_method"] = 'Anslutningsmetod:'; +$_lang["connection_screen_database_connection_information"] = 'Databasuppgifter'; +$_lang["connection_screen_database_connection_note"] = 'Ange namnet på den databas som ska användas eller som du vill skapa för denna MODx-installation. Om det inte finns någon databas kommer installationsprogrammet att försöka skapa en. Det här kan misslyckas beroende på hur MySQLs åtkomsträttigheter är konfigurerade.'; +$_lang["connection_screen_database_host"] = 'Databasens värd:'; +$_lang["connection_screen_database_info"] = 'Databasinformation'; +$_lang["connection_screen_database_login"] = 'Databasens inloggningsnamn:'; +$_lang["connection_screen_database_name"] = 'Databasnamn:'; +$_lang["connection_screen_database_pass"] = 'Databasens lösenord:'; +$_lang["connection_screen_database_test_connection"] = 'Skapa databas eller testa ditt databasval'; +$_lang["connection_screen_default_admin_email"] = 'Administratörens e-post:'; +$_lang["connection_screen_default_admin_login"] = 'Administratörens användarnamn:'; +$_lang["connection_screen_default_admin_note"] = 'Nu ska du ange ett antal uppgifter för det administrativa kontot. Du kan fylla i ditt eget namn här och ett lösenord som du inte glömmer i första taget. Du kommer att behöva de här uppgifterna när du ska logga in på det administrativa kontot efter att installationen är klar.'; +$_lang["connection_screen_default_admin_password"] = 'Administratörens lösenord:'; +$_lang["connection_screen_default_admin_password_confirm"] = 'Bekräfta lösenord:'; +$_lang["connection_screen_default_admin_user"] = 'Administratörskonto'; +$_lang["connection_screen_defaults"] = 'Standardinställningar för hanteraren'; +$_lang["connection_screen_server_connection_information"] = 'Serverns anslutnings- och inloggningsuppgifter'; +$_lang["connection_screen_server_connection_note"] = 'Ange databasnamnet (servernamnet eller IP-adressen), användarnamnet och lösenordet innan du testar anslutningen.'; +$_lang["connection_screen_server_test_connection"] = 'Testa anslutningen till databasservern och visa tillgängliga kollationeringar'; +$_lang["connection_screen_table_prefix"] = 'Tabellprefix:'; +$_lang["creating_database_connection"] = 'Skapar en anslutning till databasen: '; +$_lang["database_alerts"] = 'Databasvarningar!'; +$_lang["database_connection_failed"] = 'Anslutningen till databasen misslyckades!'; +$_lang["database_connection_failed_note"] = 'Kontrollera databasens inloggningsuppgifter och försök igen.'; +$_lang["database_use_failed"] = 'Databasen kunde inte väljas!'; +$_lang["database_use_failed_note"] = 'Kontrollera databasens åtkomsträttigheter för den angivna användaren och försök igen.'; +$_lang["default_language"] = 'Standardspråk i hanteraren'; +$_lang["default_language_description"] = 'Det här är det standardspråk som kommer att användas i MODx hanterare.'; +$_lang["during_execution_of_sql"] = ' under körningen av SQL-frågan '; +$_lang["encoding"] = 'utf-8'; //charset encoding for html header +$_lang["error"] = 'fel'; +$_lang["errors"] = 'fel'; +$_lang["failed"] = 'MISSLYCKADES!'; +$_lang["help"] = 'Hjälp!'; +$_lang["help_link"] = 'http://modxcms.com/forums/'; +$_lang["help_title"] = 'Installationshjälp i MODx forum'; +$_lang["iagree_box"] = 'Jag godkänner licensvillkoren för MODx.
                      Om du vill läsa en översättning av GPL-licensen, version 2, hittar du den på operativsystemet GNUs webbplats.'; +$_lang["install"] = 'Installera'; +$_lang["install_overwrite"] = 'Installera/skriv över'; +$_lang["install_results"] = 'Installationsresultat'; +$_lang["install_update"] = 'Installera/uppdatera'; +$_lang["installation_error_occured"] = 'Följande fel inträffade under installationen'; +$_lang["installation_install_new_copy"] = 'Installera en ny kopia av '; +$_lang["installation_install_new_note"] = 'Observera att detta val kan skriva över data som finns i databasen.'; +$_lang["installation_mode"] = 'Installationstyp'; +$_lang["installation_new_installation"] = 'Ny installation'; +$_lang["installation_note"] = 'Notera: Efter att ha loggat in i innehållshanteraren bör du redigera och spara dina systeminställningar innan du börjar surfa på din webbplats. Gå till Verktyg -> Konfiguration i innehållshanteraren.'; +$_lang["installation_successful"] = 'Installationen lyckades!'; +$_lang["installation_upgrade_advanced"] = 'Avancerad uppgradering'; +$_lang["installation_upgrade_advanced_note"] = 'För avancerade databasadministratörer eller vid flytt till servrar med en annan teckenuppsättning för anslutning.
                      Du kommer att behöva databasens fullständiga namn, användarnamn, lösenord och anslutnings/kollationeringsuppgifter.'; +$_lang["installation_upgrade_existing"] = 'Uppgradera befintlig installation'; +$_lang["installation_upgrade_existing_note"] = 'Uppgradera dina nuvarande filer och databas.'; +$_lang["installed"] = 'Installerad'; +$_lang["installing_demo_site"] = 'Installerar demo-webbplats: '; +$_lang["language_code"] = 'sv'; // for html element e.g. +$_lang["loading"] = 'Laddar...'; +$_lang["modules"] = 'Moduler'; +$_lang["modx_footer1"] = '© 2005-2011 the MODx Content Mangement Framework (CMF) project. Med ensamrätt. MODx är licensierad under GNU GPL.'; +$_lang["modx_footer2"] = 'MODx är fri programvara. Vi uppmuntrar dig att vara kreativ och använda MODx på vilket sätt du vill. Vara bara noga med att bevara källkoden fri om du gör ändringar och sedan väljer att omdistribuera din modifierade version av MODx.'; +$_lang["modx_install"] = 'MODx » Installation'; +$_lang["modx_requires_php"] = ', och MODx kräver PHP 4.2.0 eller senare.'; +$_lang["mysql_5051"] = ' MySQL-serverns version är 5.0.51!'; +$_lang["mysql_5051_warning"] = 'Det finns kända problem med MySQL 5.0.51. Du rekommenderas att uppgradera innan du fortsätter.'; +$_lang["mysql_version_is"] = ' Din MySQL-version är: '; +$_lang["no"] = 'Nej'; +$_lang["none"] = 'Inga'; +$_lang["not_found"] = 'hittades inte'; +$_lang["ok"] = 'OK!'; +$_lang["optional_items"] = 'Valbara alternativ'; +$_lang["optional_items_note"] = 'Välj dina installationsalternativ och klicka på Installera:'; +$_lang["php_security_notice"] = 'Säkerhetsmeddelande

                      Även om MODx kommer att fungera med din PHP-version, så rekommenderas det inte att använda MODx med den versionen. Din PHP-version är sårbar för ett antal säkerhetshål. Uppgradera till PHP-version 4.3.8 eller senare, vilket åtgärdar de här hålen. Det rekommenderas att du uppgraderar till den här versionen för att få en bättre säkerhet på din webbplats.

                      '; +$_lang["please_correct_error"] = '. Korrigera felet'; +$_lang["please_correct_errors"] = '. Korrigera felen'; +$_lang["plugins"] = 'Plugins'; +$_lang["preinstall_validation"] = 'Kontroller innan installation'; +$_lang["recommend_setting_change_title"] = 'Rekommenderad inställningsändring'; +$_lang["recommend_setting_change_validate_referer_confirmation"] = 'Inställningsändring: Validera HTTP_REFERER-headers?'; +$_lang["recommend_setting_change_validate_referer_description"] = 'Din webbplats är inte konfigurerad för att validera HTTP_REFERER på inkommande förfrågningar till hanteraren. Vi rekommenderar starkt att du aktiverar den inställningen för att minska risken för CSRF-attacker (Cross Site Request Forgery).'; +$_lang["remove_install_folder_auto"] = 'Ta bort installationskatalogen och -filerna från min webbplats.
                       (Den här operationen kräver att raderingsrättigheter är angivna för installationskatalogen)'; +$_lang["remove_install_folder_manual"] = 'Kom ihåg att ta bort katalogen "install" innan du loggar in i innehållshanteraren.'; +$_lang["retry"] = 'Försök igen'; +$_lang["running_database_updates"] = 'Kör uppdateringar för databasen: '; +$_lang["sample_web_site"] = 'Demo-webbplats'; +$_lang["sample_web_site_note"] = 'Observera att detta kommer att skriva över existerande dokument och resurser.'; +$_lang["session_problem"] = 'Ett problem med dina serversessioner upptäcktes. Kontakta din serveradministratör för att rätta till problemet.'; +$_lang["session_problem_try_again"] = 'Försök igen?'; +$_lang["setup_cannot_continue"] = 'Installationsprogrammet kan tyvärr inte fortsätta på grund av ovanstående '; +$_lang["setup_couldnt_install"] = 'MODx installationsprogram kunde inte lägga till/ändra några tabeller i den valda databasen.'; +$_lang["setup_database"] = 'Installationsprogrammet kommer nu att försöka konfigurera databasen:
                      '; +$_lang["setup_database_create_connection"] = 'Skapar anslutning till databasen: '; +$_lang["setup_database_create_connection_failed"] = 'Anslutningen till databasen misslyckades!'; +$_lang["setup_database_create_connection_failed_note"] = 'Kontrollera databasens inloggningsuppgifter och försök igen.'; +$_lang["setup_database_creating_tables"] = 'Skapar databastabeller: '; +$_lang["setup_database_creation"] = 'Skapar databas `'; +$_lang["setup_database_creation_failed"] = 'Databasen kunde inte skapas!'; +$_lang["setup_database_creation_failed_note"] = ' - Installationsprogrammet kunde inte skapa databasen!'; +$_lang["setup_database_creation_failed_note2"] = 'Installationsprogrammet kunde inte skapa databasen och ingen databas med samma namn existerar. Det är troligt att din webbhosts säkerhetsintällningar inte tillåter externa script att skapa en databas. Skapa en databas enligt webbhostens instruktioner och kör sedan installationsprogrammet igen.'; +$_lang["setup_database_selection"] = 'Väljer databas `'; +$_lang["setup_database_selection_failed"] = 'Val av databas misslyckades...'; +$_lang["setup_database_selection_failed_note"] = 'Databasen existerar inte. Installationsprogrammet kommer att försöka skapa den.'; +$_lang["snippets"] = 'Snippets'; +$_lang["some_tables_not_updated"] = 'Några av tabellerna uppdaterades inte. Det här kan bero på tidigare modifikationer.'; +$_lang["status_checking_database"] = 'Kontrollerar databas: '; +$_lang["status_connecting"] = ' Anslutning till värddatorn: '; +$_lang["status_failed"] = 'misslyckades!'; +$_lang["status_failed_could_not_create_database"] = 'misslyckades - kunde inte skapa databas'; +$_lang["status_failed_database_collation_does_not_match"] = 'misslyckades - databaskollationeringen stämmer inte; använd SET_NAMES eller välj %s'; +$_lang["status_failed_table_prefix_already_in_use"] = 'misslyckades - tabellprefixet används redan!'; +$_lang["status_passed"] = 'godkänd - databasen valdes'; +$_lang["status_passed_database_created"] = 'godkänd - databas skapades'; +$_lang["status_passed_server"] = 'godkänd - kollationeringar finns nu tillgängliga'; +$_lang["strict_mode"] = ' MySQL-serverns strikt sql_mode är aktiverad!'; +$_lang["strict_mode_error"] = 'Det är möjligt att vissa funktioner i MODx inte kommer att fungera som de ska om inte STRICT_TRANS_TABLES sql_mode är inaktiverat. Du kan ställa in MySQLs läge genom att redigera filen my.cnf eller genom att kontakta din serveradministratör.'; +$_lang["summary_setup_check"] = 'Installationsprogrammet har gjort ett antal test för att kontrollera att allt är klart för att starta installationen.'; +$_lang["system_configuration"] = 'Systemkonfiguration'; +$_lang["system_configuration_validate_referer_description"] = 'Inställningen Validera HTTP_REFERER-headers rekommenderas och kan skydda din webbplats från CSRF-attacker. Vid en del serverkonfigurationer kan den dock göra hanteraren oåtkomlig.'; +$_lang["table_prefix_already_inuse"] = ' - Tabellprefixet används redan i den här databasen!'; +$_lang["table_prefix_already_inuse_note"] = 'Installationsprogrammet kunde inte installera i den valda databasen eftersom den redan innehåller tabeller med det prefix du angav. Ange ett nytt prefix och kör sedan installationsprogrammet igen.'; +$_lang["table_prefix_not_exist"] = ' - Tabellprefixet finns inte i den här databasen!'; +$_lang["table_prefix_not_exist_note"] = 'Installationsprogrammet kunde inte installera i den valda databasen eftersom den inte innehåller tabeller med det prefix du angav för uppgradering. Välj ett existerande prefix och kör sedan installationsprogrammet igen.'; +$_lang["templates"] = 'Mallar'; +$_lang["to_log_into_content_manager"] = 'Du kan logga in i innehållshanteraren ('.MGR_DIR.'/index.php) genom att klicka på "Stäng"-knappen.'; +$_lang["toggle"] = 'Växla'; +$_lang['tvs'] = 'Mallvariabler'; +$_lang["unable_install_chunk"] = 'Kunde inte installera chunk. Fil'; +$_lang["unable_install_module"] = 'Kunde inte installera modul. Fil'; +$_lang["unable_install_plugin"] = 'Kunde inte installera plugin. Fil'; +$_lang["unable_install_snippet"] = 'Kunde inte installera snippet. Fil'; +$_lang["unable_install_template"] = 'Kunde inte installera mall. Fil'; +$_lang["upgrade_note"] = 'Notera: Innan du börjar surfa på din webbplats bör du logga in i innehållshanteraren på ett administrativt konto och kontrollera och spara dina konfigurationsinställningar.'; +$_lang["upgraded"] = 'Uppgraderad'; +$_lang["validate_referer_title"] = 'Validera HTTP_REFERER-headers?'; +$_lang["visit_forum"] = ', så besök MODx forum.'; +$_lang["warning"] = 'VARNING!'; +$_lang["welcome_message_start"] = 'Välj först vilken sorts installation som ska göras:'; +$_lang["welcome_message_text"] = 'Detta program kommer att vägleda dig genom hela installationen.'; +$_lang["welcome_message_welcome"] = 'Välkommen till MODx installationsprogram'; +$_lang["writing_config_file"] = 'Skriver konfigurationsfil: '; +$_lang["yes"] = 'Ja'; +$_lang["you_running_php"] = ' - Du kör PHP '; +?> \ No newline at end of file diff --git a/assets/modules/store/installer/setup.info.php b/assets/modules/store/installer/setup.info.php new file mode 100755 index 0000000000..7264d92be2 --- /dev/null +++ b/assets/modules/store/installer/setup.info.php @@ -0,0 +1,326 @@ +hasPermission('exec_module')) die('INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + +//:: MODx Installer Setup file +//::::::::::::::::::::::::::::::::::::::::: +require_once(MGR.'/includes/version.inc.php'); +$installPath = MODX_BASE_PATH .'assets/cache/store/install'; + +$moduleName = "MODX"; +$moduleVersion = $modx_branch.' '.$modx_version; +$moduleRelease = $modx_release_date; +$moduleSQLBaseFile = "setup.sql"; +$moduleSQLDataFile = "install/setup.data.sql"; +$chunkPath = $installPath .'/install/assets/chunks'; +$snippetPath = $installPath .'/install/assets/snippets'; +$pluginPath = $installPath .'/install/assets/plugins'; +$modulePath = $installPath .'/install/assets/modules'; +$templatePath = $installPath .'/install/assets/templates'; +$tvPath = $installPath .'/install/assets/tvs'; + +// setup Template template files - array : name, description, type - 0:file or 1:content, parameters, category +$mt = &$moduleTemplates; +if(is_dir($templatePath) && is_readable($templatePath)) { + $d = dir($templatePath); + while (false !== ($tplfile = $d->read())) + { + if(substr($tplfile, -4) != '.tpl') continue; + $params = parse_docblock($templatePath, $tplfile); + if(is_array($params) && (count($params)>0)) + { + $description = empty($params['version']) ? $params['description'] : "{$params['version']} {$params['description']}"; + $mt[] = array + ( + $params['name'], + $description, + // Don't think this is gonna be used ... but adding it just in case 'type' + $params['type'], + "$templatePath/{$params['filename']}", + $params['modx_category'], + $params['lock_template'], + array_key_exists('installset', $params) ? preg_split("/\s*,\s*/", $params['installset']) : false + ); + } + } + $d->close(); +} + +// setup Template Variable template files +$mtv = &$moduleTVs; +if(is_dir($tvPath) && is_readable($tvPath)) { + $d = dir($tvPath); + while (false !== ($tplfile = $d->read())) { + if(substr($tplfile, -4) != '.tpl') continue; + $params = parse_docblock($tvPath, $tplfile); + if(is_array($params) && (count($params)>0)) { + $description = empty($params['version']) ? $params['description'] : "{$params['version']} {$params['description']}"; + $mtv[] = array( + $params['name'], + $params['caption'], + $description, + $params['input_type'], + $params['input_options'], + $params['input_default'], + $params['output_widget'], + $params['output_widget_params'], + "$templatePath/{$params['filename']}", /* not currently used */ + $params['template_assignments'], /* comma-separated list of template names */ + $params['modx_category'], + $params['lock_tv'], /* value should be 1 or 0 */ + array_key_exists('installset', $params) ? preg_split("/\s*,\s*/", $params['installset']) : false + ); + } + } + $d->close(); +} + +// setup chunks template files - array : name, description, type - 0:file or 1:content, file or content +$mc = &$moduleChunks; +if(is_dir($chunkPath) && is_readable($chunkPath)) { + $d = dir($chunkPath); + while (false !== ($tplfile = $d->read())) { + if(substr($tplfile, -4) != '.tpl') { + continue; + } + $params = parse_docblock($chunkPath, $tplfile); + if(is_array($params) && count($params) > 0) { + $mc[] = array( + $params['name'], + $params['description'], + "$chunkPath/{$params['filename']}", + $params['modx_category'], + array_key_exists('overwrite', $params) ? $params['overwrite'] : 'true', + array_key_exists('installset', $params) ? preg_split("/\s*,\s*/", $params['installset']) : false + ); + } + } + $d->close(); +} + +// setup snippets template files - array : name, description, type - 0:file or 1:content, file or content,properties +$ms = &$moduleSnippets; + +if(is_dir($snippetPath) && is_readable($snippetPath)) { + + $d = dir($snippetPath); + while (false !== ($tplfile = $d->read())) { + if(substr($tplfile, -4) != '.tpl') { + continue; + } + $params = parse_docblock($snippetPath, $tplfile); + + if(is_array($params) && count($params) > 0) { + $description = empty($params['version']) ? $params['description'] : "{$params['version']} {$params['description']}"; + $ms[] = array( + $params['name'], + $description, + "$snippetPath/{$params['filename']}", + $params['properties'], + $params['modx_category'], + array_key_exists('installset', $params) ? preg_split("/\s*,\s*/", $params['installset']) : false + ); + } + } + $d->close(); +} + +// setup plugins template files - array : name, description, type - 0:file or 1:content, file or content,properties +$mp = &$modulePlugins; +if(is_dir($pluginPath) && is_readable($pluginPath)) { + $d = dir($pluginPath); + while (false !== ($tplfile = $d->read())) { + if(substr($tplfile, -4) != '.tpl') { + continue; + } + $params = parse_docblock($pluginPath, $tplfile); + if(is_array($params) && count($params) > 0) { + $description = empty($params['version']) ? $params['description'] : "{$params['version']} {$params['description']}"; + $mp[] = array( + $params['name'], + $description, + "$pluginPath/{$params['filename']}", + $params['properties'], + $params['events'], + $params['guid'], + $params['modx_category'], + $params['legacy_names'], + array_key_exists('installset', $params) ? preg_split("/\s*,\s*/", $params['installset']) : false, + intval($params['disabled']) + ); + } + } + $d->close(); +} + +// setup modules - array : name, description, type - 0:file or 1:content, file or content,properties, guid,enable_sharedparams +$mm = &$moduleModules; +if(is_dir($modulePath) && is_readable($modulePath)) { + $d = dir($modulePath); + while (false !== ($tplfile = $d->read())) { + if(substr($tplfile, -4) != '.tpl') { + continue; + } + $params = parse_docblock($modulePath, $tplfile); + if(is_array($params) && count($params) > 0) { + $description = empty($params['version']) ? $params['description'] : "{$params['version']} {$params['description']}"; + $mm[] = array( + $params['name'], + $description, + "$modulePath/{$params['filename']}", + $params['properties'], + $params['guid'], + intval($params['shareparams']), + $params['modx_category'], + array_key_exists('installset', $params) ? preg_split("/\s*,\s*/", $params['installset']) : false + ); + } + } + $d->close(); +} + +// setup callback function +$callBackFnc = "clean_up"; + +function clean_up($sqlParser) { + $ids = array(); + $mysqlVerOk = -1; + + if(function_exists("mysql_get_server_info")) { + $mysqlVerOk = (version_compare(mysql_get_server_info(),"4.0.2")>=0); + } + + // secure web documents - privateweb + mysql_query("UPDATE `".$modx->db->config['table_prefix']."site_content` SET privateweb = 0 WHERE privateweb = 1",$sqlParser->conn); + $sql = "SELECT DISTINCT sc.id + FROM `".$modx->db->config['table_prefix']."site_content` sc + LEFT JOIN `".$modx->db->config['table_prefix']."document_groups` dg ON dg.document = sc.id + LEFT JOIN `".$modx->db->config['table_prefix']."webgroup_access` wga ON wga.documentgroup = dg.document_group + WHERE wga.id>0"; + $ds = $modx->db->queryquery($sql); + if(!$ds) { + echo "An error occurred while executing a query: ".mysql_error(); + } + else { + while($r = $modx->db->GetRow($ds,'assoc')) $ids[]=$r["id"]; + if(count($ids)>0) { + mysql_query("UPDATE `".$modx->db->config['table_prefix']."site_content` SET privateweb = 1 WHERE id IN (".implode(", ",$ids).")"); + unset($ids); + } + } + + // secure manager documents privatemgr + mysql_query("UPDATE `".$modx->db->config['table_prefix']."site_content` SET privatemgr = 0 WHERE privatemgr = 1"); + $sql = "SELECT DISTINCT sc.id + FROM `".$modx->db->config['table_prefix']."site_content` sc + LEFT JOIN `".$modx->db->config['table_prefix']."document_groups` dg ON dg.document = sc.id + LEFT JOIN `".$modx->db->config['table_prefix']."membergroup_access` mga ON mga.documentgroup = dg.document_group + WHERE mga.id>0"; + $ds = $modx->db->query($sql); + if(!$ds) { + echo "An error occurred while executing a query: ".mysql_error(); + } + else { + while($r = $modx->db->GetRow($ds,'assoc')) $ids[]=$r["id"]; + if(count($ids)>0) { + $modx->db->query("UPDATE `".$modx->db->config['table_prefix']."site_content` SET privatemgr = 1 WHERE id IN (".implode(", ",$ids).")"); + unset($ids); + } + } + + /**** Add Quick Plugin to Module + // get quick edit module id + $ds = mysql_query("SELECT id FROM `".$sqlParser->prefix."site_modules` WHERE name='QuickEdit'"); + if(!$ds) { + echo "An error occurred while executing a query: ".mysql_error(); + } + else { + $row = mysql_fetch_assoc($ds); + $moduleid=$row["id"]; + } + // get plugin id + $ds = mysql_query("SELECT id FROM `".$sqlParser->prefix."site_plugins` WHERE name='QuickEdit'"); + if(!$ds) { + echo "An error occurred while executing a query: ".mysql_error(); + } + else { + $row = mysql_fetch_assoc($ds); + $pluginid=$row["id"]; + } + // setup plugin as module dependency + $ds = mysql_query("SELECT module FROM `".$sqlParser->prefix."site_module_depobj` WHERE module='$moduleid' AND resource='$pluginid' AND type='30' LIMIT 1"); + if(!$ds) { + echo "An error occurred while executing a query: ".mysql_error(); + } + elseif (mysql_num_rows($ds)==0){ + mysql_query("INSERT INTO `".$sqlParser->prefix."site_module_depobj` (module, resource, type) VALUES('$moduleid','$pluginid',30)"); + } + ***/ +} + +function parse_docblock($element_dir, $filename) { + $params = array(); + $fullpath = $element_dir . '/' . $filename; + if(is_readable($fullpath)) { + $tpl = @fopen($fullpath, "r"); + if($tpl) { + $params['filename'] = $filename; + $docblock_start_found = false; + $name_found = false; + $description_found = false; + $docblock_end_found = false; + + while(!feof($tpl)) { + $line = fgets($tpl); + if(!$docblock_start_found) { + // find docblock start + if(strpos($line, '/**') !== false) { + $docblock_start_found = true; + } + continue; + } elseif(!$name_found) { + // find name + $ma = null; + if(preg_match("/^\s+\*\s+(.+)/", $line, $ma)) { + $params['name'] = trim($ma[1]); + $name_found = !empty($params['name']); + } + continue; + } elseif(!$description_found) { + // find description + $ma = null; + if(preg_match("/^\s+\*\s+(.+)/", $line, $ma)) { + $params['description'] = trim($ma[1]); + $description_found = !empty($params['description']); + } + continue; + } else { + $ma = null; + if(preg_match("/^\s+\*\s+\@([^\s]+)\s+(.+)/", $line, $ma)) { + $param = trim($ma[1]); + $val = trim($ma[2]); + if(!empty($param) && !empty($val)) { + if($param == 'internal') { + $ma = null; + if(preg_match("/\@([^\s]+)\s+(.+)/", $val, $ma)) { + $param = trim($ma[1]); + $val = trim($ma[2]); + } + //if($val !== '0' && (empty($param) || empty($val))) { + if(empty($param)) { + continue; + } + } + $params[$param] = $val; + } + } elseif(preg_match("/^\s*\*\/\s*$/", $line)) { + $docblock_end_found = true; + break; + } + } + } + @fclose($tpl); + } + } + return $params; +} diff --git a/assets/modules/store/installer/sqlParser.class.php b/assets/modules/store/installer/sqlParser.class.php new file mode 100755 index 0000000000..47795f9cd8 --- /dev/null +++ b/assets/modules/store/installer/sqlParser.class.php @@ -0,0 +1,91 @@ +adminname = $adminname; + $this->adminemail = $adminemail; + $this->connection_charset = $connection_charset; + $this->connection_method = $connection_method; + $this->ignoreDuplicateErrors = false; + $this->managerlanguage = $managerlanguage; + $this->autoTemplateLogic = $auto_template_logic; + } + + function process($filename) { + global $modx_version,$modx; + + // check to make sure file exists + if (!file_exists($filename)) { + $this->mysqlErrors[] = array("error" => "File '$filename' not found"); + $this->installFailed = true ; + return false; + } + + $fh = fopen($filename, 'r'); + $idata = ''; + + while (!feof($fh)) { + $idata .= fread($fh, 1024); + } + + fclose($fh); + $idata = str_replace("\r", '', $idata); + + if ($this->mode=="upd") { + $s = strpos($idata,"non-upgrade-able[["); + $e = strpos($idata,"]]non-upgrade-able")+17; + if($s && $e) $idata = str_replace(substr($idata,$s,$e-$s)," Removed non upgradeable items",$idata); + } + + // replace {} tags + $idata = str_replace('{PREFIX}', $modx->db->config['table_prefix'], $idata); + $idata = str_replace('{ADMIN}', $this->adminname, $idata); + $idata = str_replace('{ADMINEMAIL}', $this->adminemail, $idata); + $idata = str_replace('{ADMINPASS}', $this->adminpass, $idata); + $idata = str_replace('{IMAGEPATH}', $this->imagePath, $idata); + $idata = str_replace('{IMAGEURL}', $this->imageUrl, $idata); + $idata = str_replace('{FILEMANAGERPATH}', $this->fileManagerPath, $idata); + $idata = str_replace('{MANAGERLANGUAGE}', $this->managerlanguage, $idata); + $idata = str_replace('{AUTOTEMPLATELOGIC}', $this->autoTemplateLogic, $idata); + //$idata = str_replace('{VERSION}', $modx_version, $idata); + + $sql_array = explode("\n\n", $idata); + + $num = 0; + foreach($sql_array as $sql_entry) { + $sql_do = trim($sql_entry, "\r\n; "); + + if (preg_match('/^\#/', $sql_do)) continue; + + // strip out comments and \n for mysql 3.x + if ($this->dbVersion <4.0) { + $sql_do = preg_replace("~COMMENT.*[^']?'.*[^']?'~","",$sql_do); + $sql_do = str_replace('\r', "", $sql_do); + $sql_do = str_replace('\n', "", $sql_do); + } + + + $num = $num + 1; + if ($sql_do) $modx->db->query($sql_do, false); + } + + + } +} + +?> diff --git a/assets/modules/store/installer/style.css b/assets/modules/store/installer/style.css new file mode 100755 index 0000000000..4a3848adf9 --- /dev/null +++ b/assets/modules/store/installer/style.css @@ -0,0 +1,611 @@ +html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, blockquote, pre, a, abbr, acronym, address, big, cite, code, del, dfn, em, font, img, ins, kbd, q, s, samp, small, strike, strong, sub, sup, tt, var, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, +html body * span.clear, html body * div.clear, html body * li.clear, html body * dd.clear { +background:transparent none repeat scroll 0 0; +border:0 none; +font-size:100%; +margin:0; +outline-color:-moz-use-text-color; +outline-style:none; +outline-width:0; +padding:0; +vertical-align:baseline; +} + +body { +-x-system-font:none; +font-family:Helvetica,Arial,'Liberation Sans',FreeSans,sans-serif; +font-size:75%; +font-size-adjust:none; +font-stretch:normal; +font-style:normal; +font-variant:normal; +font-weight:normal; +line-height:1.5; +background: #F4F4F4 none repeat scroll 0 0; +} + +html > body { +font-size:13px; +} +body { +background-color: #FFFFFF; +font-family: "Lucida Grande","Lucida Sans Unicode",Verdana,Arial,Helvetica,sans-serif; +} + +ol, ul { +list-style-image:none; +list-style-position:outside; +list-style-type:none; +} +ins { +text-decoration:none; +} +del { +text-decoration:line-through; +} +table { +border-collapse:collapse; +border-spacing:0; +} +a:focus { +} +h1, h2, h3, h4, h5, h6 { +font-weight:normal; +} +h1 { +font-size:216.667%; +line-height:0.692308; +margin:0.461538em 0 0.230769em; +} +h2 { +font-size:166.667%; +line-height:0.9; +margin:0.6em 0 0.3em; +} +h3 { +font-size:141.667%; +line-height:0.823529; +margin:0.54902em 0 0.27451em; +font-weight: bold; +} +h4 { +font-size:116.667%; +line-height:1; +margin:0.666667em 0 0.333333em; +} +h3, h4 { +color:#585858; +font-size:1.1em; +line-height:1.3em; +margin-bottom:0.75em; +} + + +h5 { +font-size:100%; +font-weight:bold; +line-height:1.5; +margin:1em 0 0.5em; +} +h6 { +font-size:83.3333%; +font-weight:bold; +line-height:1.8; +margin:1.8em 0 0; +} +ol { +list-style-image:none; +list-style-position:outside; +list-style-type:decimal; +} +ul { +list-style-image:none; +list-style-position:outside; +list-style-type:square; +} +li { +margin-left:30px; +} +p, dl, hr, ol, ul, dl pre, table, address, fieldset { +margin-bottom:1.5em; +} +.container_12 { +margin-left:auto; +margin-right:auto; +width:700px; +} + +#rtl { + direction: rtl; + text-align: right; +} + +.alpha { +margin-left:0; +} +.omega { +margin-right:0; +} + +.clearfix:after { +clear:both; +content:'.'; +display:block; +height:0; +visibility:hidden; +} +.clearfix { +display:inline-block; +} +* html .clearfix { +height:1%; +} +.clearfix { +display:block; +} +strong, em, b, i { +} +h1, h2, h3, h4, h5, h6, address { +margin-top:0; +} +p, td, th, dt, dd, li { +color:#6A6A6A; +} +#footer p { +color:#FFFFFF; +} +code, pre { +margin-bottom:1em; +} +dt { +display:inline; +font-weight:bold; +} +dd { +margin-bottom:20px; +} +.left { +float:left; +} +.right { +float:right; +} +img.left { +float:left; +margin-right:10px; +} +img.right { +float:right; +margin-left:10px; +} +a { +color:#0066CC; +} +a img { +border:0 none; +} +sup { +font-size:smaller; +vertical-align:super; +} +.hidden { +display:none; +} +hr { +clear:both; +border-bottom: 1px solid #FFFFFF; +border-top: 1px solid #E6E6E6; +color:#E6E6E6; +height:0; +} +.clear, .cls { +background-color:transparent; +border:0 none; +clear:both !important; +height:1px; +margin-top:-1px; +visibility:hidden; +} +.center { +margin:0 auto; +text-align:center; +} + +.inputtip { +color:#888888; +} + +.help { + float: right; +} +.help a { + color: #fff; + text-decoration: none !important; + text-transform: uppercase; + -moz-border-radius: 3x; + -webkit-border-radius: 3px; + border-radius: 3px; + border: 1px solid #ffbc6c; + border-right-color: #db831a; + border-bottom-color: #db831a; + background: #f2901d; + font-size: 86%; + padding: 2px 4px; + letter-spacing: 1px; +} +.help a:hover { + background: #f8a440; +} +.help a:active { + border: 1px solid #db831a; + border-right-color: #ffbc6c; + border-bottom-color: #ffbc6c; +} +.version { + color: #fff; +} +span.mono { + font-family: Courier, monospace; +} +.buttonlinks { + display:block; + height:26px; + line-height:26px; + margin-bottom:20px; + float:right; + clear: left; +} +#rtl .buttonlinks { + float: left; +} + +.info .buttonlinks { +margin:0; +} +.buttonlinks a { +-x-system-font:none; +background:transparent url(img/site-ui-gfx.png) no-repeat scroll -54px -353px; +color:#5A5A5A; +display:block; +float:left; +font: bold 11px/23px "Lucida Grande",Lucida,Verdana,sans-serif; +height:26px; +margin:0 20px 0 0; +padding:0; +max-width:250px; +text-decoration:none; +text-transform:uppercase; +} +#rtl .buttonlinks a { + margin: 0 0 0 20px; +} +.buttonlinks a span { +background:#FFFFFF url(img/site-ui-gfx.png) no-repeat scroll 100% -353px; +display:block; +float:left; +height:26px; +margin:0 0 0 10px; +padding:0 22px 0 0; +} + +.buttonlinks a:hover { +background-position:-54px -379px; +cursor:pointer; +} +.buttonlinks a:hover span { +background-position:100% -379px; +cursor:pointer; +} +.buttonlinks a:hover { +background-position:-54px -379px; +} +.buttonlinks a:hover span { +background-position:100% -379px; +} +#header .buttonlinks a:hover { +text-decoration:none; +} +.buttonlinks a.prev { +background:transparent url(img/link_button_prev.jpg) no-repeat scroll right 0; +float:left; +margin:0 20px 0 0; +} +.buttonlinks a.prev span { +background:transparent url(img/link_button_prev.jpg) no-repeat scroll left 0; +float:left; +margin:0 10px 0 0; +padding:0 0 0 22px; +} +.buttonlinks a.prev:hover { +background-position:right -26px; +} +.buttonlinks a.prev:hover span { +background-position:left -26px; +} + +#header { +background:transparent url(img/site-ui-gfx.png) repeat-x scroll -23px -23px; + margin-bottom:25px; + padding-top:16px; +} +#header a:hover { +text-decoration:underline; +} +#mainheader { +position:relative; + height:116px; + margin-top:25px; +} + +#contentarea h2 { +color:#5A8F34; +font-size:1.7em; +font-weight:bold; +line-height:1em; +margin-bottom:0.5em; +} + +#downloadbar { +background:transparent url(img/installbar.png) no-repeat scroll 0 0; +height:93px; +margin-bottom:20px; +position:relative; +width:940px; +} +#downloadinfo { + color:#FFFFFF; + font-size:26px; + font-weight:bold; + line-height:66px; + padding: 0 20px; + text-transform:lowercase; + background:none; +} + +#footer { +background:#64AB24 url(img/site-ui-gfx.png) repeat-x scroll 0 -198px; +color:#FFFFFF; +margin-top:20px; +padding-top:23px; +} +#footer-inner { + background: #64AB24 none repeat scroll 0 0; + padding: 15px 0; +} +#footer h6 { +font-size:1.7em; +margin-bottom:10px; +} +#footer a { +color:#FFFFFF; +} + +#bottom { +background:#64AB24 url(img/site-ui-gfx.png) repeat-x scroll 0 0; +clear:both; +height:23px; +margin:0; +overflow:hidden; +padding:0; +} +#content ul, #content ol { +margin-left:15px; +} +#content li { +color:#6A6A6A; +margin:0 0 5px 20px; +padding-left:5px; +} +.box_6, .box_12 { +padding-top:20px; +} +.box_6 .box-inner, .box_12 .box-inner { +margin-bottom:2px; +padding:0 20px; +} +.box_6 .box-bottom { +height:20px; +line-height:20px; +} +.notes { +background-color:#FEFFCB; +} +.info { +background-color:#F3F3F3; +} +#contentarea .notes h3 { +font-size:1.3em; +} + +.installImg { + float: left; + width: 120px; + min-height: 100px; + text-align: center; +} +#rtl .installImg { + float: right; +} +#installChoices { + margin:2em 0; +} +#installChoices h3 { + padding: 0 20px; + background: url(img/elements.gif) no-repeat top left; +} +#rtl #installChoices h3 { + background-position: top right; +} +#installChoices hr { + height: 1px; + border-width: 1px 0 0; + border-top: 1px dotted #ddd; +} +#installChoices input { + margin: 0 10px 10px 0; + float: left; + display: block; +} +#rtl #installChoices input { + margin: 0 0 10px 10px; + float: right; +} + +table { +color:#8C8C8C; +font-size:95%; +width:100%; +} +caption { +text-align:center; +} +thead th { +background:#333333 none repeat scroll 0 0; +border-right:1px solid #E4E4E4; +border-top:1px solid #E4E4E4; +color:#FFFFFF; +padding:6px 6px 6px 12px; +text-align:center; +width:10%; +} +thead th.nobg { +background:transparent none repeat scroll 0 0; +border-left:0 none; +border-right:1px solid #E4E4E4; +border-top:0 none; +color:#8C8C8C; +font-style:normal; +font-weight:normal; +text-align:left; +width:auto; +} +td, th { +background:#FFFFFF none repeat scroll 0 0; +border-bottom:1px solid #E4E4E4; +border-right:1px solid #E4E4E4; +color:#8C8C8C; +height:24px; +line-height:24px; +padding:0 6px 0 12px; +} +td.alt { +background:#F5FAFA none repeat scroll 0 0; +} +tbody th { +border-left:1px solid #E4E4E4; +border-top:0 none; +font-weight:normal; +text-align:left; +} +tbody td { +padding:3px 6px; +text-align:center; +} +tr.alt td, tr.alt th { +background:#F3F3F3 none repeat scroll 0 0; +} +tr.highlight td, tr.highlight th { +background-color:#78AE20; +background-image:none; +color:#fff; +font-size:1.1em; +font-weight:bold; +padding-bottom:5px; +padding-top:5px; +} +td del { +color:#aaa; +} +p.labelHolder { + clear: left; + margin-bottom:5px; +} + +#content ul li { background: none; list-style: none; } + +#downloadbar ul { + margin:0 0 1.5em 15px; +} +#downloadbar li { + list-style-type:none; + margin:0; +} + + +#setCollation, #AUH { + background-color:#fff; + display:none; +} + +#collationMask, #AUHMask { + background-color:#fff; + opacity:0; +} + +tbody td { + text-align:left; +} +.labelHolder label { + float: left; + margin-bottom: 5px; + width: 200px; +} +#rtl .labelHolder label { + float: right; +} +.status { + margin: 1em 0 2em; + padding: .25em .5em; + background: #eee; +} +p.actions { + line-height: 1; + margin-top: 3px; +} +p.actions a { + margin: 0 5px 1px; + padding: 2px 6px 3px; + border-bottom: 1px solid #039; + display: block; + float: left; + color: navy; + text-decoration: none; +} +#rtl p.actions a { + float: right; +} +p.actions a:hover { + background: #039; + color: #fff; +} +p.actions a:active { + background-color: #ccc; +} +img.options { + float:left; + margin: 0 10px 0 0; +} +#rtl img.options { + float:right; + margin: 0 0 0 10px; +} +span.ok { + font-weight:bold; + color:green; +} +span.notok { + font-weight:bold; + color:red; +} +#logo { +background:transparent url(img/site-ui-gfx.png) repeat -10px -289px; +display:block; +height:63px; +left:0; +line-height:63px; +margin:20px 0 0; +position:absolute; +text-indent:-9999px; +top:0; +width:228px; +} \ No newline at end of file diff --git a/manager/media/script/forIE/x.gif b/assets/modules/store/js/fancybox/blank.gif old mode 100644 new mode 100755 similarity index 100% rename from manager/media/script/forIE/x.gif rename to assets/modules/store/js/fancybox/blank.gif diff --git a/assets/modules/store/js/fancybox/fancybox_loading.gif b/assets/modules/store/js/fancybox/fancybox_loading.gif new file mode 100755 index 0000000000..742131fc4f Binary files /dev/null and b/assets/modules/store/js/fancybox/fancybox_loading.gif differ diff --git a/assets/modules/store/js/fancybox/fancybox_overlay.png b/assets/modules/store/js/fancybox/fancybox_overlay.png new file mode 100644 index 0000000000..a4391396a9 Binary files /dev/null and b/assets/modules/store/js/fancybox/fancybox_overlay.png differ diff --git a/assets/modules/store/js/fancybox/fancybox_sprite.png b/assets/modules/store/js/fancybox/fancybox_sprite.png new file mode 100755 index 0000000000..753021b950 Binary files /dev/null and b/assets/modules/store/js/fancybox/fancybox_sprite.png differ diff --git a/assets/modules/store/js/fancybox/helpers/fancybox_buttons.png b/assets/modules/store/js/fancybox/helpers/fancybox_buttons.png new file mode 100755 index 0000000000..e0e1ea87ac Binary files /dev/null and b/assets/modules/store/js/fancybox/helpers/fancybox_buttons.png differ diff --git a/assets/modules/store/js/fancybox/helpers/jquery.fancybox-buttons.css b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-buttons.css new file mode 100755 index 0000000000..c0a81df164 --- /dev/null +++ b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-buttons.css @@ -0,0 +1,96 @@ +#fancybox-buttons { + position: fixed; + left: 0; + width: 100%; + z-index: 8050; +} + +#fancybox-buttons.top { + top: 10px; +} + +#fancybox-buttons.bottom { + bottom: 10px; +} + +#fancybox-buttons ul { + display: block; + width: 166px; + height: 30px; + margin: 0 auto; + padding: 0; + list-style: none; + border: 1px solid #111; + border-radius: 3px; + -webkit-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + -moz-box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + box-shadow: inset 0 0 0 1px rgba(255,255,255,.05); + background: rgb(50,50,50); + background: -moz-linear-gradient(top, rgb(68,68,68) 0%, rgb(52,52,52) 50%, rgb(41,41,41) 50%, rgb(51,51,51) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(68,68,68)), color-stop(50%,rgb(52,52,52)), color-stop(50%,rgb(41,41,41)), color-stop(100%,rgb(51,51,51))); + background: -webkit-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: -o-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: -ms-linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + background: linear-gradient(top, rgb(68,68,68) 0%,rgb(52,52,52) 50%,rgb(41,41,41) 50%,rgb(51,51,51) 100%); + filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#444444', endColorstr='#222222',GradientType=0 ); +} + +#fancybox-buttons ul li { + float: left; + margin: 0; + padding: 0; +} + +#fancybox-buttons a { + display: block; + width: 30px; + height: 30px; + text-indent: -9999px; + background-image: url('fancybox_buttons.png'); + background-repeat: no-repeat; + outline: none; + opacity: 0.8; +} + +#fancybox-buttons a:hover { + opacity: 1; +} + +#fancybox-buttons a.btnPrev { + background-position: 5px 0; +} + +#fancybox-buttons a.btnNext { + background-position: -33px 0; + border-right: 1px solid #3e3e3e; +} + +#fancybox-buttons a.btnPlay { + background-position: 0 -30px; +} + +#fancybox-buttons a.btnPlayOn { + background-position: -30px -30px; +} + +#fancybox-buttons a.btnToggle { + background-position: 3px -60px; + border-left: 1px solid #111; + border-right: 1px solid #3e3e3e; + width: 35px +} + +#fancybox-buttons a.btnToggleOn { + background-position: -27px -60px; +} + +#fancybox-buttons a.btnClose { + border-left: 1px solid #111; + width: 35px; + background-position: -56px 0px; +} + +#fancybox-buttons a.btnDisabled { + opacity : 0.4; + cursor: default; +} diff --git a/assets/modules/store/js/fancybox/helpers/jquery.fancybox-buttons.js b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-buttons.js new file mode 100755 index 0000000000..a31a4932c6 --- /dev/null +++ b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-buttons.js @@ -0,0 +1,121 @@ + /*! + * Buttons helper for fancyBox + * version: 1.0.5 (Mon, 15 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * buttons: { + * position : 'top' + * } + * } + * }); + * + */ +(function ($) { + //Shortcut for fancyBox object + var F = $.fancybox; + + //Add helper object + F.helpers.buttons = { + defaults : { + skipSingle : false, // disables if gallery contains single image + position : 'top', // 'top' or 'bottom' + tpl : '
                      ' + }, + + list : null, + buttons: null, + + beforeLoad: function (opts, obj) { + //Remove self if gallery do not have at least two items + + if (opts.skipSingle && obj.group.length < 2) { + obj.helpers.buttons = false; + obj.closeBtn = true; + + return; + } + + //Increase top margin to give space for buttons + obj.margin[ opts.position === 'bottom' ? 2 : 0 ] += 30; + }, + + onPlayStart: function () { + if (this.buttons) { + this.buttons.play.attr('title', 'Pause slideshow').addClass('btnPlayOn'); + } + }, + + onPlayEnd: function () { + if (this.buttons) { + this.buttons.play.attr('title', 'Start slideshow').removeClass('btnPlayOn'); + } + }, + + afterShow: function (opts, obj) { + var buttons = this.buttons; + + if (!buttons) { + this.list = $(opts.tpl).addClass(opts.position).appendTo('body'); + + buttons = { + prev : this.list.find('.btnPrev').click( F.prev ), + next : this.list.find('.btnNext').click( F.next ), + play : this.list.find('.btnPlay').click( F.play ), + toggle : this.list.find('.btnToggle').click( F.toggle ) + } + } + + //Prev + if (obj.index > 0 || obj.loop) { + buttons.prev.removeClass('btnDisabled'); + } else { + buttons.prev.addClass('btnDisabled'); + } + + //Next / Play + if (obj.loop || obj.index < obj.group.length - 1) { + buttons.next.removeClass('btnDisabled'); + buttons.play.removeClass('btnDisabled'); + + } else { + buttons.next.addClass('btnDisabled'); + buttons.play.addClass('btnDisabled'); + } + + this.buttons = buttons; + + this.onUpdate(opts, obj); + }, + + onUpdate: function (opts, obj) { + var toggle; + + if (!this.buttons) { + return; + } + + toggle = this.buttons.toggle.removeClass('btnDisabled btnToggleOn'); + + //Size toggle button + if (obj.canShrink) { + toggle.addClass('btnToggleOn'); + + } else if (!obj.canExpand) { + toggle.addClass('btnDisabled'); + } + }, + + beforeClose: function () { + if (this.list) { + this.list.remove(); + } + + this.list = null; + this.buttons = null; + } + }; + +}(jQuery)); diff --git a/assets/modules/store/js/fancybox/helpers/jquery.fancybox-media.js b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-media.js new file mode 100755 index 0000000000..2ec984d18f --- /dev/null +++ b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-media.js @@ -0,0 +1,196 @@ +/*! + * Media helper for fancyBox + * version: 1.0.5 (Tue, 23 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * media: true + * } + * }); + * + * Set custom URL parameters: + * $(".fancybox").fancybox({ + * helpers : { + * media: { + * youtube : { + * params : { + * autoplay : 0 + * } + * } + * } + * } + * }); + * + * Or: + * $(".fancybox").fancybox({, + * helpers : { + * media: true + * }, + * youtube : { + * autoplay: 0 + * } + * }); + * + * Supports: + * + * Youtube + * http://www.youtube.com/watch?v=opj24KnzrWo + * http://www.youtube.com/embed/opj24KnzrWo + * http://youtu.be/opj24KnzrWo + * Vimeo + * http://vimeo.com/40648169 + * http://vimeo.com/channels/staffpicks/38843628 + * http://vimeo.com/groups/surrealism/videos/36516384 + * http://player.vimeo.com/video/45074303 + * Metacafe + * http://www.metacafe.com/watch/7635964/dr_seuss_the_lorax_movie_trailer/ + * http://www.metacafe.com/watch/7635964/ + * Dailymotion + * http://www.dailymotion.com/video/xoytqh_dr-seuss-the-lorax-premiere_people + * Twitvid + * http://twitvid.com/QY7MD + * Twitpic + * http://twitpic.com/7p93st + * Instagram + * http://instagr.am/p/IejkuUGxQn/ + * http://instagram.com/p/IejkuUGxQn/ + * Google maps + * http://maps.google.com/maps?q=Eiffel+Tower,+Avenue+Gustave+Eiffel,+Paris,+France&t=h&z=17 + * http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + * http://maps.google.com/?ll=48.859463,2.292626&spn=0.000965,0.002642&t=m&z=19&layer=c&cbll=48.859524,2.292532&panoid=YJ0lq28OOy3VT2IqIuVY0g&cbp=12,151.58,,0,-15.56 + */ +(function ($) { + "use strict"; + + //Shortcut for fancyBox object + var F = $.fancybox, + format = function( url, rez, params ) { + params = params || ''; + + if ( $.type( params ) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function(key, value) { + url = url.replace( '$' + key, value || '' ); + }); + + if (params.length) { + url += ( url.indexOf('?') > 0 ? '&' : '?' ) + params; + } + + return url; + }; + + //Add helper object + F.helpers.media = { + defaults : { + youtube : { + matcher : /(youtube\.com|youtu\.be)\/(watch\?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*)).*/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'opaque', + enablejsapi : 1 + }, + type : 'iframe', + url : '//www.youtube.com/embed/$3' + }, + vimeo : { + matcher : /(?:vimeo(?:pro)?.com)\/(?:[^\d]+)?(\d+)(?:.*)/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1 + }, + type : 'iframe', + url : '//player.vimeo.com/video/$1' + }, + metacafe : { + matcher : /metacafe.com\/(?:watch|fplayer)\/([\w\-]{1,10})/, + params : { + autoPlay : 'yes' + }, + type : 'swf', + url : function( rez, params, obj ) { + obj.swf.flashVars = 'playerVars=' + $.param( params, true ); + + return '//www.metacafe.com/fplayer/' + rez[1] + '/.swf'; + } + }, + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'swf', + url : '//www.dailymotion.com/swf/video/$1' + }, + twitvid : { + matcher : /twitvid\.com\/([a-zA-Z0-9_\-\?\=]+)/i, + params : { + autoplay : 0 + }, + type : 'iframe', + url : '//www.twitvid.com/embed.php?guid=$1' + }, + twitpic : { + matcher : /twitpic\.com\/(?!(?:place|photos|events)\/)([a-zA-Z0-9\?\=\-]+)/i, + type : 'image', + url : '//twitpic.com/show/full/$1/' + }, + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/' + }, + google_maps : { + matcher : /maps\.google\.([a-z]{2,3}(\.[a-z]{2})?)\/(\?ll=|maps\?)(.*)/i, + type : 'iframe', + url : function( rez ) { + return '//maps.google.' + rez[1] + '/' + rez[3] + '' + rez[4] + '&output=' + (rez[4].indexOf('layer=c') > 0 ? 'svembed' : 'embed'); + } + } + }, + + beforeLoad : function(opts, obj) { + var url = obj.href || '', + type = false, + what, + item, + rez, + params; + + for (what in opts) { + item = opts[ what ]; + rez = url.match( item.matcher ); + + if (rez) { + type = item.type; + params = $.extend(true, {}, item.params, obj[ what ] || ($.isPlainObject(opts[ what ]) ? opts[ what ].params : null)); + + url = $.type( item.url ) === "function" ? item.url.call( this, rez, params, obj ) : format( item.url, rez, params ); + + break; + } + } + + if (type) { + obj.href = url; + obj.type = type; + + obj.autoHeight = false; + } + } + }; + +}(jQuery)); diff --git a/assets/modules/store/js/fancybox/helpers/jquery.fancybox-thumbs.css b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-thumbs.css new file mode 100755 index 0000000000..7cc3e016d1 --- /dev/null +++ b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-thumbs.css @@ -0,0 +1,54 @@ +#fancybox-thumbs { + position: fixed; + left: 0; + width: 100%; + overflow: hidden; + z-index: 8050; +} + +#fancybox-thumbs.bottom { + bottom: 2px; +} + +#fancybox-thumbs.top { + top: 2px; +} + +#fancybox-thumbs ul { + position: relative; + list-style: none; + margin: 0; + padding: 0; +} + +#fancybox-thumbs ul li { + float: left; + padding: 1px; + opacity: 0.5; +} + +#fancybox-thumbs ul li.active { + opacity: 0.75; + padding: 0; + border: 1px solid #fff; +} + +#fancybox-thumbs ul li:hover { + opacity: 1; +} + +#fancybox-thumbs ul li a { + display: block; + position: relative; + overflow: hidden; + border: 1px solid #222; + background: #111; + outline: none; +} + +#fancybox-thumbs ul li img { + display: block; + position: relative; + border: 0; + padding: 0; +} diff --git a/assets/modules/store/js/fancybox/helpers/jquery.fancybox-thumbs.js b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-thumbs.js new file mode 100755 index 0000000000..c7a7c7904a --- /dev/null +++ b/assets/modules/store/js/fancybox/helpers/jquery.fancybox-thumbs.js @@ -0,0 +1,162 @@ + /*! + * Thumbnail helper for fancyBox + * version: 1.0.7 (Mon, 01 Oct 2012) + * @requires fancyBox v2.0 or later + * + * Usage: + * $(".fancybox").fancybox({ + * helpers : { + * thumbs: { + * width : 50, + * height : 50 + * } + * } + * }); + * + */ +(function ($) { + //Shortcut for fancyBox object + var F = $.fancybox; + + //Add helper object + F.helpers.thumbs = { + defaults : { + width : 50, // thumbnail width + height : 50, // thumbnail height + position : 'bottom', // 'top' or 'bottom' + source : function ( item ) { // function to obtain the URL of the thumbnail image + var href; + + if (item.element) { + href = $(item.element).find('img').attr('src'); + } + + if (!href && item.type === 'image' && item.href) { + href = item.href; + } + + return href; + } + }, + + wrap : null, + list : null, + width : 0, + + init: function (opts, obj) { + var that = this, + list, + thumbWidth = opts.width, + thumbHeight = opts.height, + thumbSource = opts.source; + + //Build list structure + list = ''; + + for (var n = 0; n < obj.group.length; n++) { + list += '
                    • '; + } + + this.wrap = $('
                      ').addClass(opts.position).appendTo('body'); + this.list = $('
                        ' + list + '
                      ').appendTo(this.wrap); + + //Load each thumbnail + $.each(obj.group, function (i) { + var href = thumbSource( obj.group[ i ] ); + + if (!href) { + return; + } + + $("").load(function () { + var width = this.width, + height = this.height, + widthRatio, heightRatio, parent; + + if (!that.list || !width || !height) { + return; + } + + //Calculate thumbnail width/height and center it + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + parent = that.list.children().eq(i).find('a'); + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = Math.floor(width / heightRatio); + height = thumbHeight; + + } else { + width = thumbWidth; + height = Math.floor(height / widthRatio); + } + } + + $(this).css({ + width : width, + height : height, + top : Math.floor(thumbHeight / 2 - height / 2), + left : Math.floor(thumbWidth / 2 - width / 2) + }); + + parent.width(thumbWidth).height(thumbHeight); + + $(this).hide().appendTo(parent).fadeIn(300); + + }).attr('src', href); + }); + + //Set initial width + this.width = this.list.children().eq(0).outerWidth(true); + + this.list.width(this.width * (obj.group.length + 1)).css('left', Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5))); + }, + + beforeLoad: function (opts, obj) { + //Remove self if gallery do not have at least two items + if (obj.group.length < 2) { + obj.helpers.thumbs = false; + + return; + } + + //Increase bottom margin to give space for thumbs + obj.margin[ opts.position === 'top' ? 0 : 2 ] += ((opts.height) + 15); + }, + + afterShow: function (opts, obj) { + //Check if exists and create or update list + if (this.list) { + this.onUpdate(opts, obj); + + } else { + this.init(opts, obj); + } + + //Set active element + this.list.children().removeClass('active').eq(obj.index).addClass('active'); + }, + + //Center list + onUpdate: function (opts, obj) { + if (this.list) { + this.list.stop(true).animate({ + 'left': Math.floor($(window).width() * 0.5 - (obj.index * this.width + this.width * 0.5)) + }, 150); + } + }, + + beforeClose: function () { + if (this.wrap) { + this.wrap.remove(); + } + + this.wrap = null; + this.list = null; + this.width = 0; + } + } + +}(jQuery)); diff --git a/assets/modules/store/js/fancybox/jquery.fancybox.css b/assets/modules/store/js/fancybox/jquery.fancybox.css new file mode 100755 index 0000000000..37e921b4c6 --- /dev/null +++ b/assets/modules/store/js/fancybox/jquery.fancybox.css @@ -0,0 +1,249 @@ +/*! fancyBox v2.1.4 fancyapps.com | fancyapps.com/fancybox/#license */ +.fancybox-wrap, +.fancybox-skin, +.fancybox-outer, +.fancybox-inner, +.fancybox-image, +.fancybox-wrap iframe, +.fancybox-wrap object, +.fancybox-nav, +.fancybox-nav span, +.fancybox-tmp +{ + padding: 0; + margin: 0; + border: 0; + outline: none; + vertical-align: top; +} + +.fancybox-wrap { + position: absolute; + top: 0; + left: 0; + z-index: 8020; +} + +.fancybox-skin { + position: relative; + background: #fff; + color: #444; + text-shadow: none; + -webkit-border-radius: 4px; + -moz-border-radius: 4px; + border-radius: 4px; +} + +.fancybox-opened { + z-index: 8030; +} + +.fancybox-opened .fancybox-skin { + -webkit-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); + -moz-box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.5); +} + +.fancybox-outer, .fancybox-inner { + position: relative; +} + +.fancybox-inner { + overflow: hidden; +} + +.fancybox-type-iframe .fancybox-inner { + -webkit-overflow-scrolling: touch; +} + +.fancybox-error { + color: #444; + font: 14px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; + margin: 0; + padding: 15px; + white-space: nowrap; +} + +.fancybox-image, .fancybox-iframe { + display: block; + width: 100%; + height: 100%; +} + +.fancybox-image { + max-width: 100%; + max-height: 100%; +} + +#fancybox-loading, .fancybox-close, .fancybox-prev span, .fancybox-next span { + background-image: url('fancybox_sprite.png'); +} + +#fancybox-loading { + position: fixed; + top: 50%; + left: 50%; + margin-top: -22px; + margin-left: -22px; + background-position: 0 -108px; + opacity: 0.8; + cursor: pointer; + z-index: 8060; +} + +#fancybox-loading div { + width: 44px; + height: 44px; + background: url('fancybox_loading.gif') center center no-repeat; +} + +.fancybox-close { + position: absolute; + top: -18px; + right: -18px; + width: 36px; + height: 36px; + cursor: pointer; + z-index: 8040; +} + +.fancybox-nav { + position: absolute; + top: 0; + width: 40%; + height: 100%; + cursor: pointer; + text-decoration: none; + background: transparent url('blank.gif'); /* helps IE */ + -webkit-tap-highlight-color: rgba(0,0,0,0); + z-index: 8040; +} + +.fancybox-prev { + left: 0; +} + +.fancybox-next { + right: 0; +} + +.fancybox-nav span { + position: absolute; + top: 50%; + width: 36px; + height: 34px; + margin-top: -18px; + cursor: pointer; + z-index: 8040; + visibility: hidden; +} + +.fancybox-prev span { + left: 10px; + background-position: 0 -36px; +} + +.fancybox-next span { + right: 10px; + background-position: 0 -72px; +} + +.fancybox-nav:hover span { + visibility: visible; +} + +.fancybox-tmp { + position: absolute; + top: -99999px; + left: -99999px; + visibility: hidden; + max-width: 99999px; + max-height: 99999px; + overflow: visible !important; +} + +/* Overlay helper */ + +.fancybox-lock { + overflow: hidden; +} + +.fancybox-overlay { + position: absolute; + top: 0; + left: 0; + overflow: hidden; + display: none; + z-index: 8010; + background: url('fancybox_overlay.png'); +} + +.fancybox-overlay-fixed { + position: fixed; + bottom: 0; + right: 0; +} + +.fancybox-lock .fancybox-overlay { + overflow: auto; + overflow-y: scroll; +} + +/* Title helper */ + +.fancybox-title { + visibility: hidden; + font: normal 13px/20px "Helvetica Neue",Helvetica,Arial,sans-serif; + position: relative; + text-shadow: none; + z-index: 8050; +} + +.fancybox-opened .fancybox-title { + visibility: visible; +} + +.fancybox-title-float-wrap { + position: absolute; + bottom: 0; + right: 50%; + margin-bottom: -35px; + z-index: 8050; + text-align: center; +} + +.fancybox-title-float-wrap .child { + display: inline-block; + margin-right: -100%; + padding: 2px 20px; + background: transparent; /* Fallback for web browsers that doesn't support RGBa */ + background: rgba(0, 0, 0, 0.8); + -webkit-border-radius: 15px; + -moz-border-radius: 15px; + border-radius: 15px; + text-shadow: 0 1px 2px #222; + color: #FFF; + font-weight: bold; + line-height: 24px; + white-space: nowrap; +} + +.fancybox-title-outside-wrap { + position: relative; + margin-top: 10px; + color: #fff; +} + +.fancybox-title-inside-wrap { + padding-top: 10px; +} + +.fancybox-title-over-wrap { + position: absolute; + bottom: 0; + left: 0; + color: #fff; + padding: 10px; + background: #000; + background: rgba(0, 0, 0, .8); +} diff --git a/assets/modules/store/js/fancybox/jquery.fancybox.pack.js b/assets/modules/store/js/fancybox/jquery.fancybox.pack.js new file mode 100755 index 0000000000..95ce8050af --- /dev/null +++ b/assets/modules/store/js/fancybox/jquery.fancybox.pack.js @@ -0,0 +1,45 @@ +/*! fancyBox v2.1.4 fancyapps.com | fancyapps.com/fancybox/#license */ +(function(C,z,f,r){var q=f(C),n=f(z),b=f.fancybox=function(){b.open.apply(this,arguments)},H=navigator.userAgent.match(/msie/),w=null,s=z.createTouch!==r,t=function(a){return a&&a.hasOwnProperty&&a instanceof f},p=function(a){return a&&"string"===f.type(a)},F=function(a){return p(a)&&0
                      ',image:'',iframe:'",error:'

                      The requested content cannot be loaded.
                      Please try again later.

                      ',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0, +openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1, +isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=t(a)?f(a).get():[a]),f.each(a,function(e,c){var k={},g,h,j,m,l;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),t(c)?(k={href:c.data("fancybox-href")||c.attr("href"),title:c.data("fancybox-title")||c.attr("title"),isDom:!0,element:c},f.metadata&&f.extend(!0,k, +c.metadata())):k=c);g=d.href||k.href||(p(c)?c:null);h=d.title!==r?d.title:k.title||"";m=(j=d.content||k.content)?"html":d.type||k.type;!m&&k.isDom&&(m=c.data("fancybox-type"),m||(m=(m=c.prop("class").match(/fancybox\.(\w+)/))?m[1]:null));p(g)&&(m||(b.isImage(g)?m="image":b.isSWF(g)?m="swf":"#"===g.charAt(0)?m="inline":p(c)&&(m="html",j=c)),"ajax"===m&&(l=g.split(/\s+/,2),g=l.shift(),l=l.shift()));j||("inline"===m?g?j=f(p(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):k.isDom&&(j=c):"html"===m?j=g:!m&&(!g&& +k.isDom)&&(m="inline",j=c));f.extend(k,{href:g,type:m,content:j,title:h,selector:l});a[e]=k}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==r&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1!==b.trigger("onCancel")&&(b.hideLoading(),b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(),b.coming=null,b.current|| +b._afterZoomOut(a))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(!b.isOpen||!0===a?(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut()):(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&&(b.player.timer= +setTimeout(b.next,b.current.playSpeed))},c=function(){d();f("body").unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};if(!0===a||!b.player.isActive&&!1!==a){if(b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==r&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,k;c&&(k=b._getPosition(d),a&&"scroll"===a.type?(delete k.position,c.stop(!0,!0).animate(k,200)):(c.css(k),e.pos=f.extend({}, +e.dim,k)))},update:function(a){var d=a&&a.type,e=!d||"orientationchange"===d;e&&(clearTimeout(w),w=null);b.isOpen&&!w&&(w=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),w=null)},e&&!s?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,s&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"), +b.trigger("onUpdate")),b.update())},hideLoading:function(){n.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
                      ').click(b.cancel).appendTo("body");n.bind("keydown.loading",function(a){if(27===(a.which||a.keyCode))a.preventDefault(),b.cancel()});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}))},getViewport:function(){var a=b.current&&b.current.locked|| +!1,d={x:q.scrollLeft(),y:q.scrollTop()};a?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=s&&C.innerWidth?C.innerWidth:q.width(),d.h=s&&C.innerHeight?C.innerHeight:q.height());return d},unbindEvents:function(){b.wrap&&t(b.wrap)&&b.wrap.unbind(".fb");n.unbind(".fb");q.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(q.bind("orientationchange.fb"+(s?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&n.bind("keydown.fb",function(e){var c=e.which||e.keyCode,k= +e.target||e.srcElement;if(27===c&&b.coming)return!1;!e.ctrlKey&&(!e.altKey&&!e.shiftKey&&!e.metaKey&&(!k||!k.type&&!f(k).is("[contenteditable]")))&&f.each(d,function(d,k){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();if(0!==c&&!j&&1g||0>k)b.next(0>g?"up":"right");d.preventDefault()}}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d, +e){e&&(b.helpers[d]&&f.isFunction(b.helpers[d][a]))&&(e=f.extend(!0,{},b.helpers[d].defaults,e),b.helpers[d][a](e,c))});f.event.trigger(a+".fb")}},isImage:function(a){return p(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp)((\?|#).*)?$)/i)},isSWF:function(a){return p(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=l(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&& +(d.padding=[c,c,c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive= +!0;if("image"===c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&s&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(s?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,x(d.padding[a]))});b.trigger("onReady"); +if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width= +this.width;b.coming.height=this.height;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming,d=f(a.tpl.iframe.replace(/\{rnd\}/g, +(new Date).getTime())).attr("scrolling",s?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);s||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload||b._afterLoad()},_preloadImages:function(){var a= +b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,k,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove());b.unbindEvents(); +e=a.content;c=a.type;k=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
                      ").html(e).find(a.selector):t(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
                      ').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder", +!1)}));break;case "image":e=a.tpl.image.replace("{href}",g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}(!t(e)||!e.parent().is(a.inner))&&a.inner.append(e);b.trigger("beforeShow"); +a.inner.css("overflow","yes"===k?"scroll":"no"===k?"hidden":k);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(b.isOpened){if(d.prevMethod)b.transitions[d.prevMethod]()}else f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,k=b.skin,g=b.inner,h=b.current,c=h.width,j=h.height,m=h.minWidth,u=h.minHeight,n=h.maxWidth, +v=h.maxHeight,s=h.scrolling,q=h.scrollOutside?h.scrollbarWidth:0,y=h.margin,p=l(y[1]+y[3]),r=l(y[0]+y[2]),z,A,t,D,B,G,C,E,w;e.add(k).add(g).width("auto").height("auto").removeClass("fancybox-tmp");y=l(k.outerWidth(!0)-k.width());z=l(k.outerHeight(!0)-k.height());A=p+y;t=r+z;D=F(c)?(a.w-A)*l(c)/100:c;B=F(j)?(a.h-t)*l(j)/100:j;if("iframe"===h.type){if(w=h.content,h.autoHeight&&1===w.data("ready"))try{w[0].contentWindow.document.location&&(g.width(D).height(9999),G=w.contents().find("body"),q&&G.css("overflow-x", +"hidden"),B=G.height())}catch(H){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(D),h.autoHeight||g.height(B),h.autoWidth&&(D=g.width()),h.autoHeight&&(B=g.height()),g.removeClass("fancybox-tmp");c=l(D);j=l(B);E=D/B;m=l(F(m)?l(m,"w")-A:m);n=l(F(n)?l(n,"w")-A:n);u=l(F(u)?l(u,"h")-t:u);v=l(F(v)?l(v,"h")-t:v);G=n;C=v;h.fitToView&&(n=Math.min(a.w-A,n),v=Math.min(a.h-t,v));A=a.w-p;r=a.h-r;h.aspectRatio?(c>n&&(c=n,j=l(c/E)),j>v&&(j=v,c=l(j*E)),cA||p>r)&&(c>m&&j>u)&&!(19n&&(c=n,j=l(c/E)),g.width(c).height(j),e.width(c+y),a=e.width(),p=e.height();else c=Math.max(m,Math.min(c,c-(a-A))),j=Math.max(u,Math.min(j,j-(p-r)));q&&("auto"===s&&jA||p>r)&&c>m&&j>u;c=h.aspectRatio?cu&&j
                      ').appendTo("body"); +this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(q.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay",function(a){f(a.target).hasClass("fancybox-overlay")&&(b.isActive?b.close():d.close())});this.overlay.css(a.css).show()}, +close:function(){f(".fancybox-overlay").remove();q.unbind("resize.overlay");this.overlay=null;!1!==this.margin&&(f("body").css("margin-right",this.margin),this.margin=!1);this.el&&this.el.removeClass("fancybox-lock")},update:function(){var a="100%",b;this.overlay.width(a).height("100%");H?(b=Math.max(z.documentElement.offsetWidth,z.body.offsetWidth),n.width()>b&&(a=n.width())):n.width()>q.width()&&(a=n.width());this.overlay.width(a).height(n.height())},onReady:function(a,b){f(".fancybox-overlay").stop(!0, +!0);this.overlay||(this.margin=n.height()>q.height()||"scroll"===f("body").css("overflow-y")?f("body").css("margin-right"):!1,this.el=z.all&&!z.querySelector?f("html"):f("body"),this.create(a));a.locked&&this.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&(this.el.addClass("fancybox-lock"),!1!==this.margin&&f("body").css("margin-right",l(this.margin)+b.scrollbarWidth));this.open(a)},onUpdate:function(){this.fixed|| +this.update()},afterClose:function(a){this.overlay&&!b.isActive&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float",position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(p(e)&&""!==f.trim(e)){d=f('
                      '+e+"
                      ");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"), +H&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(l(d.css("margin-bottom")))}d["top"===a.position?"prependTo":"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",k=function(g){var h=f(this).blur(),j=d,k,l;!g.ctrlKey&&(!g.altKey&&!g.shiftKey&&!g.metaKey)&&!h.is(".fancybox-wrap")&&(k=a.groupAttr||"data-fancybox-group",l=h.attr(k),l||(k="rel",l=h.get(0)[k]),l&&(""!==l&&"nofollow"!==l)&&(h=c.length?f(c):e,h=h.filter("["+k+'="'+l+ +'"]'),j=h.index(this)),a.index=j,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;!c||!1===a.live?e.unbind("click.fb-start").bind("click.fb-start",k):n.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')","click.fb-start",k);this.filter("[data-fancybox-start=1]").trigger("click");return this};n.ready(function(){f.scrollbarWidth===r&&(f.scrollbarWidth=function(){var a=f('
                      ').appendTo("body"),b=a.children(), +b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});if(f.support.fixedPosition===r){var a=f.support,d=f('
                      ').appendTo("body"),e=20===d[0].offsetTop||15===d[0].offsetTop;d.remove();a.fixedPosition=e}f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")})})})(window,document,jQuery); diff --git a/assets/modules/store/js/fancybox/jquery.mousewheel-3.0.6.pack.js b/assets/modules/store/js/fancybox/jquery.mousewheel-3.0.6.pack.js new file mode 100755 index 0000000000..8adf44dc8b --- /dev/null +++ b/assets/modules/store/js/fancybox/jquery.mousewheel-3.0.6.pack.js @@ -0,0 +1,13 @@ +/*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) + * Licensed under the MIT License (LICENSE.txt). + * + * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. + * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. + * Thanks to: Seamus Leahy for adding deltaX and deltaY + * + * Version: 3.0.6 + * + * Requires: 1.2.2+ + */ +(function(d){function e(a){var b=a||window.event,c=[].slice.call(arguments,1),f=0,e=0,g=0,a=d.event.fix(b);a.type="mousewheel";b.wheelDelta&&(f=b.wheelDelta/120);b.detail&&(f=-b.detail/3);g=f;b.axis!==void 0&&b.axis===b.HORIZONTAL_AXIS&&(g=0,e=-1*f);b.wheelDeltaY!==void 0&&(g=b.wheelDeltaY/120);b.wheelDeltaX!==void 0&&(e=-1*b.wheelDeltaX/120);c.unshift(a,f,e,g);return(d.event.dispatch||d.event.handle).apply(this,c)}var c=["DOMMouseScroll","mousewheel"];if(d.event.fixHooks)for(var h=c.length;h;)d.event.fixHooks[c[--h]]= +d.event.mouseHooks;d.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var a=c.length;a;)this.addEventListener(c[--a],e,false);else this.onmousewheel=e},teardown:function(){if(this.removeEventListener)for(var a=c.length;a;)this.removeEventListener(c[--a],e,false);else this.onmousewheel=null}};d.fn.extend({mousewheel:function(a){return a?this.bind("mousewheel",a):this.trigger("mousewheel")},unmousewheel:function(a){return this.unbind("mousewheel",a)}})})(jQuery); \ No newline at end of file diff --git a/assets/modules/store/js/jquery.min.js b/assets/modules/store/js/jquery.min.js new file mode 100755 index 0000000000..83589daa70 --- /dev/null +++ b/assets/modules/store/js/jquery.min.js @@ -0,0 +1,2 @@ +/*! jQuery v1.8.3 jquery.com | jquery.org/license */ +(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write(""),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t
                      a",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="
                      t
                      ",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="
                      ",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;ti.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="
                      ",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="

                      ",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t0)for(i=r;i=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*\s*$/g,Nt={option:[1,""],legend:[1,"
                      ","
                      "],thead:[1,"","
                      "],tr:[2,"","
                      "],td:[3,"","
                      "],col:[2,"","
                      "],area:[1,"",""],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X
                      ","
                      "]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1>");try{for(;r1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]===""&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("
                      ").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window); \ No newline at end of file diff --git a/assets/modules/store/js/store.js b/assets/modules/store/js/store.js new file mode 100755 index 0000000000..687612f6f4 --- /dev/null +++ b/assets/modules/store/js/store.js @@ -0,0 +1,331 @@ +var url = decodeURIComponent(window.location.href); +var _GET = decodeURIComponent(window.location.search.slice(1)) + .split('&') + .reduce(function _reduce (a,b) { + b = b.split('='); + if (a[b[0]]) { + if (is_array(a[b[0]])) {a[b[0]].push(b[1])} + else {var arr=[];arr.push(a[b[0]]);arr.push( b[1]);a[b[0]]=arr;} + } else {a[b[0]] = b[1];} + return a; + }, {}); + +function link(){ + mass = location.href.split('?'); + return mass[0]+'?id='+_GET['id']+'&a='+_GET['a']; +} + +function store_search(val){ + $('.item_list .catalog_item').each(function(){ + var search_name = $(this).find('h3').html(); + search_name = search_name.toLowerCase(); + if ( search_name.indexOf( val.toLowerCase() ) < 0 ) { + $(this).hide(); + } else { + $(this).show(); + } + }) +} + +store = { + categories:{}, + types:{}, + extend:function(obj1){ + hash = ''; + if ($('[name="hash"]').val() != '') { + res = eval('('+$('[name="hash"]').val()+')'); + hash = res.hash; + }; + param = { + hash:hash, + lang:$('[name="language"]').val() + }; + return $.extend(obj1,param); + }, + update:function(){ + $.ajax({ + url:'http://'+location.hostname+'/assets/modules/store/update.php', + cache:false, + data:{just:'empty'}, + type:'get', + success:function(data){ + window.location.reload(); + } + }) + }, + verifyUser: function(){ + if ($('[name="hash"]').val() !='') { + store.query('verifyuser',{'verify':'1'},function(data){ + if ( data.result ) { + store.updateUserCategory( data ); + }; + + + store.showUserForms( data.result ); + }); + } + }, + showUserForms: function(bool){ + if (bool){ + res = eval('('+$('[name="hash"]').val()+')'); + $('#username').html( res.username ); + $('#login').hide(); + $('.logined').show(); + } + }, + logout: function(){ + $.ajax({url:link()+"&action=exituser",type:'POST',data:{res:$('[name="hash"]').val()},success:function(){ + window.location.href = window.location.href + }}); + }, + login:function(){ + $('.cart_list .error').hide(); + var res ={}; + store.query('login',{name:$('[name="name"]').val(),password:$('[name="password"]').val()},function(data){ + if (data.result) { + res.hash = data.hash; + res.username = data.username; + $('[name="hash"]').val( JSON.stringify(res) ); + //switch user forms enter/exit + store.updateUserCategory(data); + store.showUserForms(true); + //remember user + $.ajax({url:link()+"&action=saveuser",type:'POST',data:{res:$('[name="hash"]').val()}}); + } else { + $('.cart_list .error').fadeIn(); + } + }); + }, + init:function(){ + store.query('start',{'user':'1'},function(data){ + store.category = data.allcategory; + store.catalog = data.category; + store.update_category(data.category); + /*Show firdt category*/ + var id = $('.category_list').find('li').first().find('a').attr('data-id'); + $('[name=parent]').val(id); + store.update_list( store.category[id] ); + + + if (data.version != $('.version').html()) { + $('.new_version').html(data.version); + $('#actions').show(); + } + + if (data.user) { + store.showUserForms( data.user.result ); + store.updateUserCategory( data.user ); + } + }); + + store.types = eval('('+$('[name="types"]').val()+')'); + + $('a.item-reinstall,a.item-update').live('click',function(){ + if (confirm($(this).attr('data-text'))) store.install(this); + return false; + }); + $('a.item-install').live('click',function(){ + store.install(this); + return false; + }); + + $('.item-install2').live('click',function(){ + tpl = '
                    • '+$(this).parent().find('.row-category').text()+'X
                    • '; + $('.cart_list ul').append(tpl); + return false; + }); + + $('.category_list a').live('click',function(){ + $('[name=parent]').val($(this).attr('data-id')); + //store.get_list({}, store.update_list ); + + store.update_list( store.category[$(this).attr('data-id')] , $(this).attr('data-tpl') ); + return false; + }); + + $('.category_list2 a').live('click',function(){ + $('[name=parent]').val($(this).html()); + store.get_own_list({}, store.updateUserPack ); + return false; + }); + + $('.item_header :input').change(function(){ + store.get_list({}, store.update_list ); + }); + + }, + install:function(elm){ + + var el = $(elm).closest('.catalog_item').find('.informer'); + var file = $(elm).closest('.catalog_item').find('[name="link"]').val(); + store.query('download',{id:$(elm).attr('data-id')},function(data){ + //el.find('.download').html( parseInt(el.find('.download').html())+1 ); + }); + + if ($(elm).attr('data-method') == "package"){ + var install_url = link() + "&action=install&cid="+$(elm).attr('data-id')+"&name="+$(elm).attr('data-name')+"&file="+file; + $.fancybox.open({href : install_url, type: 'iframe'}); + } else { + $('.item_list .catalog_item').addClass('blocked'); + $(elm).closest('.catalog_item').find('.loader').show(); + $.ajax({ + url:link()+"&method=fast&action=install&cid="+$(elm).attr('data-id')+"&name="+$(elm).attr('data-name'), + type:'POST', + data:{method:'fast',file:file}, + success:function(){ + el.closest('.catalog_item').find('.loader').hide(); + el.css('display','block').animate({opacity:1},500,function(){ + el.delay(2000).animate({opacity:0},3000,function(){el.css('display','none')}); + }); + + el.closest('.catalog_item').removeClass('item-install').removeClass('item-update').addClass('item-reinstall'); + el.closest('.catalog_item').find('.curr').hide(); + + $('.item_list .catalog_item').removeClass('blocked'); + } + + }) + + } + + }, + + query:function(action,param,callback){ + param = store.extend(param); + $.ajax({ + url:'https://extras.evolution-cms.com/get.php?get=' + action, + cache:false, + data:param, + dataType: "json", + type:'post', + cache:false, + success:function(data){ + callback(data); + } + }) + }, + get_category: function( param , callback){ + store.query('get_category',param,function(data){callback(data)}); + }, + get_list: function( param , callback){ + store.query('get_list',$.extend(param,{parent:$('[name=parent]').val(),sort:$('[name=sort]').val(),dir:$('[name=dir]').val()}),function(data){callback(data)}); + }, + + get_own_list: function( param , callback){ + $('.item_list > .loader').show(); + store.query('get_own_list',$.extend(param,{parent:$('[name=parent]').val(),sort:$('[name=sort]').val(),dir:$('[name=dir]').val()}),function(data){ + callback(data) + }); + }, + + update_category: function(data){ + $('.category_list').html( '
                        ' +store.parse_list1( data , $('.tpl #tpl_category').html() ) + '
                      ' ); + }, + update_list: function(data,tpl){ + tpl = tpl || 'list'; + $('.item_list').html( store.parse_list( data , $('.tpl #tpl_'+tpl).html() ,tpl) ); + }, + updateUserPack: function(data){ + $('.item_list').html( store.parse_list( data , $('.tpl #tpl_list').html() ) + '
                      ' ); + }, + updateUserCategory:function(data){ + if (data) { + $('.category_list2').html( '
                        ' +store.parse_list1( data.category , $('.tpl #tpl_category2').html() ) + '
                      ' ); + } + }, + parse_list:function(data,tpl,template){ + var out=''; + if (data){ + $.each( data , function( key, value ) { + try { + out = out + store.parse_list_item(tpl, value , template); + } catch(e){ + console.log( e.name ); + } + }); + } else { + //console.log(data); + } + return out; + }, + parse_list1:function(data,tpl){ + var out=''; + $.each( data , function( key, value ) { + try { + out = out + store.parse(tpl, value); + } catch(e){ + console.log( e.name ); + } + }); + return out; + }, + parse_list_item: function(str,array,tpl){ + tpl = tpl || 'list'; + array.cls = 'pack_install'; + array.zip = array.url == ''?'zip':'github'; + + array.version = array.version || ''; + array.date = array.date || ''; + + if ($.isPlainObject(array.url)){ + options =[]; + + versions = array.url.fieldValue; + $.each(versions,function(key,value){ + options.push(''); + if (!array.version) array.version = value.version; + if (!array.date) array.date = value.date; + $str = $(str); + $str.find('[name=link]').append( options.join('')); + + }); + $str.find('option').first().prop('selected',true); + if (versions.length == 1){ + $str.find('[name=link]').hide(); + } + + str = $str.wrapAll('
                      ').parent().html(); + + } + + if ( array.type ) { + array.type = array.type == 'snippet'?'snippets':array.type; + array.type = array.type == 'module'?'modules':array.type; + array.type = array.type == 'plugin'?'plugins':array.type; + + if ( store.types[ array.type ]) { + if ( store.types[ array.type ][ array.name_in_modx ]) { + array.current_version = store.types[ array.type ][ array.name_in_modx ]; + if ( store.types[ array.type ][ array.name_in_modx ] < array.version){ + array.cls = 'pack_update'; + } + if ( store.types[ array.type ][ array.name_in_modx ] == array.version){ + array.cls = 'pack_reinstall'; + } + } + } + } + + out = str.replace(/%\w+%/g, function(placeholder) { + return array[ placeholder.split('%').join('') ] || ''; + }); + img = array.image; + if (tpl =='cart') img = array.cartimage; + if (array.image) out = $('
                      '+out+'
                      ').find('img').attr('src', img).closest('#tmpl').html(); + return out; + }, + parse: function(str,array){ + var out = str.replace(/%\w+%/g, function(placeholder) { + return array[ placeholder.split('%').join('') ] || ''; + }); + if (array.image) out = $('
                      '+out+'
                      ').find('img').attr('src',array.image).closest('#tmpl').html(); + return out; + }, + is_array: function(inputArray) { + return inputArray && !(inputArray.propertyIsEnumerable('length')) && typeof inputArray === 'object' && typeof inputArray.length === 'number'; + } +}; + +$(function(){ + store.init(); +}) \ No newline at end of file diff --git a/assets/modules/store/lang/english.php b/assets/modules/store/lang/english.php new file mode 100755 index 0000000000..2737b8db9a --- /dev/null +++ b/assets/modules/store/lang/english.php @@ -0,0 +1,44 @@ +Why do you need repository +
                    • How to add a package to the repository
                    • +
                    • How to create a package for installation
                    • '; + +?> \ No newline at end of file diff --git a/assets/modules/store/lang/italian.php b/assets/modules/store/lang/italian.php new file mode 100755 index 0000000000..8dbffdb1e7 --- /dev/null +++ b/assets/modules/store/lang/italian.php @@ -0,0 +1,44 @@ +A cosa serve la repository⏎ +
                    • Come aggiungere un pacchetto alla repository
                    • ⏎ +
                    • Come creare un pacchetto per la installazione
                    • '; + +?> \ No newline at end of file diff --git a/assets/modules/store/lang/nederlands-utf8.php b/assets/modules/store/lang/nederlands-utf8.php new file mode 100755 index 0000000000..4536c50213 --- /dev/null +++ b/assets/modules/store/lang/nederlands-utf8.php @@ -0,0 +1,44 @@ +Waarom heb je een opslagplaats nodig? +
                    • Hoe voeg je een pakket toe aan de opslagplaats?
                    • +
                    • Hoe maak je een pakket voor de opslagplaats?
                    • '; + +?> \ No newline at end of file diff --git a/assets/modules/store/lang/nederlands.php b/assets/modules/store/lang/nederlands.php new file mode 100755 index 0000000000..4536c50213 --- /dev/null +++ b/assets/modules/store/lang/nederlands.php @@ -0,0 +1,44 @@ +Waarom heb je een opslagplaats nodig? +
                    • Hoe voeg je een pakket toe aan de opslagplaats?
                    • +
                    • Hoe maak je een pakket voor de opslagplaats?
                    • '; + +?> \ No newline at end of file diff --git a/assets/modules/store/lang/russian-UTF8.php b/assets/modules/store/lang/russian-UTF8.php new file mode 100755 index 0000000000..02b8d3b696 --- /dev/null +++ b/assets/modules/store/lang/russian-UTF8.php @@ -0,0 +1,44 @@ +Зачем свой репозиторий +
                    • Как добавить пакет в репозиторий
                    • +
                    • Как правильно собрать пакет для установки
                    • '; + +?> \ No newline at end of file diff --git a/assets/modules/store/template/main.html b/assets/modules/store/template/main.html new file mode 100755 index 0000000000..8adff53091 --- /dev/null +++ b/assets/modules/store/template/main.html @@ -0,0 +1,193 @@ + + + + + + MODx Store + + + + + + + + + + [+onManagerMainFrameHeaderHTMLBlock+] + + +

                      + + + + + [+store_name+] [+v+] + +

                      +
                      + +
                      + +
                      + + +
                      +
                      + +
                      +
                      +
                      +
                      + + + + \ No newline at end of file diff --git a/assets/modules/store/update.php b/assets/modules/store/update.php new file mode 100755 index 0000000000..8aad258729 --- /dev/null +++ b/assets/modules/store/update.php @@ -0,0 +1,40 @@ +open(dirname(__FILE__).'/update.zip'); +$zip->extractTo( dirname(__FILE__) ); +$zip->close(); +echo dirname(__FILE__).'/update.zip'; +unlink('update.zip'); +?> \ No newline at end of file diff --git a/assets/plugins/codemirror/cm/emmet-compressed.js b/assets/plugins/codemirror/cm/emmet-compressed.js index f328c403c2..5178335c91 100644 --- a/assets/plugins/codemirror/cm/emmet-compressed.js +++ b/assets/plugins/codemirror/cm/emmet-compressed.js @@ -314,11 +314,7 @@ cur:"cursor:${pointer};","cur:a":"cursor:auto;","cur:d":"cursor:default;","cur:c "!multiTV":"[!multiTV? &tvName=`` &docid=`[*id*]` &tplConfig=`` &outerTpl=`@CODE:
                        [+wrapper+]
                      ` &rowTpl=`@CODE:
                    • [+event+], [+location+], [+price+]
                    • ` &display=`all` &offset=`0` &orderBy=``!]", "@multiTV":"@INCLUDE/assets/tvs/multitv/multitv.customtv.php", "@choiceTV":"@INCLUDE /assets/tvs/choicetv/choicetv.php", -"header":"{{header}}", -"head":"{{head}}", -"content":"[+content+]", -"foo":"{{footer}}", -"footer":"{{footer}}", + "!!!":"","!!!4t":'',"!!!4s":'',"!!!xt":'', "!!!xs":'',"!!!xxs":'',c:"\x3c!-- |${child} --\x3e","cc:ie6":"\x3c!--[if lte IE 6]>\n\t${child}|\n\n\t${child}|\n\x3c!--\x3e\n\t${child}|\n\x3c!--',"a:link":'', diff --git a/assets/plugins/codemirror/cm/lib/codemirror-compressed.js b/assets/plugins/codemirror/cm/lib/codemirror-compressed.js old mode 100755 new mode 100644 index 5444c3f124..e803211bc2 --- a/assets/plugins/codemirror/cm/lib/codemirror-compressed.js +++ b/assets/plugins/codemirror/cm/lib/codemirror-compressed.js @@ -1,197 +1,8892 @@ -window.CodeMirror=function(){function m(a,b){if(!(this instanceof m))return new m(a,b);this.options=b=b||{};for(var c in Nb)!b.hasOwnProperty(c)&&Nb.hasOwnProperty(c)&&(b[c]=Nb[c]);Ob(b);c="string"==typeof b.value?0:b.value.first;var d={},e=d.input=p("textarea",null,null,"position: absolute; padding: 0; width: 1px; height: 1em; outline: none; font-size: 4px;");P?e.style.width="1000px":e.setAttribute("wrap","off");Fa&&(e.style.border="1px solid black");e.setAttribute("autocorrect","off");e.setAttribute("autocapitalize", -"off");e.setAttribute("spellcheck","false");d.inputDiv=p("div",[e],null,"overflow: hidden; position: relative; width: 3px; height: 0px;");d.scrollbarH=p("div",[p("div",null,null,"height: 1px")],"CodeMirror-hscrollbar");d.scrollbarV=p("div",[p("div",null,null,"width: 1px")],"CodeMirror-vscrollbar");d.scrollbarFiller=p("div",null,"CodeMirror-scrollbar-filler");d.gutterFiller=p("div",null,"CodeMirror-gutter-filler");d.lineDiv=p("div",null,"CodeMirror-code");d.selectionDiv=p("div",null,null,"position: relative; z-index: 1"); -d.cursor=p("div","\u00a0","CodeMirror-cursor");d.otherCursor=p("div","\u00a0","CodeMirror-cursor CodeMirror-secondarycursor");d.measure=p("div",null,"CodeMirror-measure");d.lineSpace=p("div",[d.measure,d.selectionDiv,d.lineDiv,d.cursor,d.otherCursor],null,"position: relative; outline: none");d.mover=p("div",[p("div",[d.lineSpace],"CodeMirror-lines")],null,"position: relative");d.sizer=p("div",[d.mover],"CodeMirror-sizer");d.heightForcer=p("div",null,null,"position: absolute; height: "+oa+"px; width: 1px;"); -d.gutters=p("div",null,"CodeMirror-gutters");d.lineGutter=null;d.scroller=p("div",[d.sizer,d.heightForcer,d.gutters],"CodeMirror-scroll");d.scroller.setAttribute("tabIndex","-1");d.wrapper=p("div",[d.inputDiv,d.scrollbarH,d.scrollbarV,d.scrollbarFiller,d.gutterFiller,d.scroller],"CodeMirror");pa&&(d.gutters.style.zIndex=-1,d.scroller.style.paddingRight=0);a.appendChild?a.appendChild(d.wrapper):a(d.wrapper);Fa&&(e.style.width="0px");P||(d.scroller.draggable=!0);Pb?(d.inputDiv.style.height="1px",d.inputDiv.style.position= -"absolute"):pa&&(d.scrollbarH.style.minWidth=d.scrollbarV.style.minWidth="18px");d.viewOffset=d.lastSizeC=0;d.showingFrom=d.showingTo=c;d.lineNumWidth=d.lineNumInnerWidth=d.lineNumChars=null;d.prevInput="";d.alignWidgets=!1;d.pollingFast=!1;d.poll=new Qb;d.cachedCharWidth=d.cachedTextHeight=null;d.measureLineCache=[];d.measureLineCachePos=0;d.inaccurateSelection=!1;d.maxLine=null;d.maxLineLength=0;d.maxLineChanged=!1;d.wheelDX=d.wheelDY=d.wheelStartX=d.wheelStartY=null;c=this.display=d;c.wrapper.CodeMirror= -this;Jc(this);b.autofocus&&!Rb&&M(this);this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,focused:!1,suppressEdits:!1,pasteIncoming:!1,draggingText:!1,highlight:new Qb};Kc(this);b.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap");d=b.value;"string"==typeof d&&(d=new L(b.value,b.mode));x(this,Lc)(this,d);F&&setTimeout(Q(aa,this,!0),20);var f=this,d=function(){f.state.focused&&setTimeout(Q(M,f),0)},g=function(){null==l&&(l=setTimeout(function(){l=null;j.cachedCharWidth=j.cachedTextHeight= -null;qa(f);Sb(f,Q(A,f))},100))},h=function(){for(var a=j.wrapper.parentNode;a&&a!=document.body;a=a.parentNode);a?setTimeout(h,5E3):Y(window,"resize",g)},e=function(a){(!f.options.onDragEvent||!f.options.onDragEvent(f,Ga(a)))&&Ha(a)},k=function(){j.inaccurateSelection&&(j.prevInput="",j.inaccurateSelection=!1,j.input.value=f.getSelection(),Mc(j.input))},j=f.display;q(j.scroller,"mousedown",x(f,Ud));F?q(j.scroller,"dblclick",x(f,function(a){var b=Ia(f,a);b&&(!Oc(f,a)&&!fa(f.display,a))&&(B(a),a=Tb(w(f.doc, -b.line).text,b),H(f.doc,a.from,a.to))})):q(j.scroller,"dblclick",B);q(j.lineSpace,"selectstart",function(a){fa(j,a)||B(a)});Ub||q(j.scroller,"contextmenu",function(a){Pc(f,a)});q(j.scroller,"scroll",function(){j.scroller.clientHeight&&(Ja(f,j.scroller.scrollTop),ra(f,j.scroller.scrollLeft,!0),J(f,"scroll",f))});q(j.scrollbarV,"scroll",function(){j.scroller.clientHeight&&Ja(f,j.scrollbarV.scrollTop)});q(j.scrollbarH,"scroll",function(){j.scroller.clientHeight&&ra(f,j.scrollbarH.scrollLeft)});q(j.scroller, -"mousewheel",function(a){Qc(f,a)});q(j.scroller,"DOMMouseScroll",function(a){Qc(f,a)});q(j.scrollbarH,"mousedown",d);q(j.scrollbarV,"mousedown",d);q(j.wrapper,"scroll",function(){j.wrapper.scrollTop=j.wrapper.scrollLeft=0});var l;q(window,"resize",g);setTimeout(h,5E3);q(j.input,"keyup",x(f,function(a){if((!f.options.onKeyEvent||!f.options.onKeyEvent(f,Ga(a)))&&16==a.keyCode)f.doc.sel.shift=!1}));q(j.input,"input",Q(Ka,f));q(j.input,"keydown",x(f,Rc));q(j.input,"keypress",x(f,Vd));q(j.input,"focus", -Q(ga,f));q(j.input,"blur",Q(Vb,f));f.options.dragDrop&&(q(j.scroller,"dragstart",function(a){if(F&&!f.state.draggingText)Ha(a);else if(!fa(f.display,a)){var b=f.getSelection();a.dataTransfer.setData("Text",b);a.dataTransfer.setDragImage&&(b=p("img",null,null,"position: fixed; left: 0; top: 0;"),T&&(b.width=b.height=1,f.display.wrapper.appendChild(b),b._top=b.offsetTop),Wb&&(f.display.dragImg?b=f.display.dragImg:(f.display.dragImg=b,b.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==", -f.display.wrapper.appendChild(b))),a.dataTransfer.setDragImage(b,0,0),T&&b.parentNode.removeChild(b))}}),q(j.scroller,"dragenter",e),q(j.scroller,"dragover",e),q(j.scroller,"drop",x(f,Wd)));q(j.scroller,"paste",function(a){fa(j,a)||(M(f),Ka(f))});q(j.input,"paste",function(){f.state.pasteIncoming=!0;Ka(f)});q(j.input,"cut",k);q(j.input,"copy",k);Pb&&q(j.sizer,"mouseup",function(){document.activeElement==j.input&&j.input.blur();M(f)});var u;try{u=document.activeElement==c.input}catch(t){}u||b.autofocus&& -!Rb?setTimeout(Q(ga,this),20):Vb(this);x(this,function(){for(var a in sa)if(sa.propertyIsEnumerable(a))sa[a](this,b[a],Sc);for(a=0;ab.maxLineLength&&(b.maxLineLength=e,b.maxLine=a)})}function Ob(a){for(var b=!1,c=0;cb.scroller.clientWidth,e=c>b.scroller.clientHeight;e?(b.scrollbarV.style.display="block",b.scrollbarV.style.bottom=d?Pa(b.measure)+"px":"0",b.scrollbarV.firstChild.style.height=c-b.scroller.clientHeight+b.scrollbarV.clientHeight+"px"):b.scrollbarV.style.display="";d?(b.scrollbarH.style.display="block",b.scrollbarH.style.right=e?Pa(b.measure)+"px":"0",b.scrollbarH.firstChild.style.width=b.scroller.scrollWidth-b.scroller.clientWidth+ -b.scrollbarH.clientWidth+"px"):b.scrollbarH.style.display="";d&&e?(b.scrollbarFiller.style.display="block",b.scrollbarFiller.style.height=b.scrollbarFiller.style.width=Pa(b.measure)+"px"):b.scrollbarFiller.style.display="";d&&a.options.coverGutterNextToScrollbar&&a.options.fixedGutter?(b.gutterFiller.style.display="block",b.gutterFiller.style.height=Pa(b.measure)+"px",b.gutterFiller.style.width=b.gutters.offsetWidth+"px"):b.gutterFiller.style.display="";Xd&&0===Pa(b.measure)&&(b.scrollbarV.style.minWidth= -b.scrollbarH.style.minHeight=Yd?"18px":"12px")}function ac(a,b,c){var d=a.scroller.scrollTop,e=a.wrapper.clientHeight;"number"==typeof c?d=c:c&&(d=c.top,e=c.bottom-c.top);d=Math.floor(d-a.lineSpace.offsetTop);a=Math.ceil(d+e);return{from:hb(b,d),to:hb(b,a)}}function Yb(a){var b=a.display;if(b.alignWidgets||b.gutters.firstChild&&a.options.fixedGutter){for(var c=bc(b)-b.scroller.scrollLeft+a.doc.scrollLeft,d=b.gutters.offsetWidth,e=c+"px",f=b.lineDiv.firstChild;f;f=f.nextSibling)if(f.alignable)for(var g= -0,h=f.alignable;g=a.display.showingFrom&&g.to<=a.display.showingTo)break;b=[]}f&&(U(a, -"update",a),(a.display.showingFrom!=d||a.display.showingTo!=e)&&U(a,"viewportChange",a,a.display.showingFrom,a.display.showingTo));return f}function Zd(a,b,c){var d=a.display,e=a.doc;if(d.wrapper.clientWidth){if(!(0==b.length&&c.from>d.showingFrom&&c.tof-d.showingFrom&&(f=Math.max(e.first,d.showingFrom));d.showingTo>c&&20>d.showingTo-c&&(c=Math.min(k,d.showingTo));if(Qa)for(f=N(ta(e,w(e,f)));c=h[0].to)h=[];else{for(var k=h,h=0,j=b.length||0;h=n.to?u.push(n):(l.from>n.from&&u.push({from:n.from,to:l.from}),l.tob.from)b.to=j;else{h.splice(k--,1);break}for(k=e=0;kc&&(b.to=c),b.from>=b.to?h.splice(k--,1):e+=b.to-b.from;if(e==c-f&&f==d.showingFrom&&c==d.showingTo)Wc(a);else{h.sort(function(a, -b){return a.from-b.from});try{var E=document.activeElement}catch(ue){}e<0.7*(c-f)&&(d.lineDiv.style.display="none");e=f;b=c;for(var r=h,x=g,dc=function(b){var c=b.nextSibling;P&&ua&&a.display.currentWheelTarget==b?(b.style.display="none",b.lineObj=null):b.parentNode.removeChild(b);return c},q,g=a.display,k={},h={},j=g.gutters.firstChild,l=0;j;j=j.nextSibling,++l)k[a.options.gutters[l]]=j.offsetLeft,h[a.options.gutters[l]]=j.offsetWidth;q={fixedPos:bc(g),gutterTotalWidth:g.gutters.offsetWidth,gutterLeft:k, -gutterWidth:h,wrapperWidth:g.wrapper.clientWidth};var g=a.display,G=a.options.lineNumbers;!r.length&&(!P||!a.display.currentWheelTarget)&&fb(g.lineDiv);var v=g.lineDiv,C=v.firstChild,z=r.shift(),y=e;for(a.doc.iter(e,b,function(b){z&&z.to==y&&(z=r.shift());if(ha(a.doc,b)){if(0!=b.height&&R(b,0),b.widgets&&C.previousSibling)for(var c=0;cy){for(;C.lineObj!=b;)C=dc(C);G&&(x<=y&&C.lineNumber)&&Yc(C.lineNumber,String(a.options.lineNumberFormatter(y+a.options.firstLineNumber)));C=C.nextSibling}else{if(b.widgets)for(var f=0,g=C;g&&20>f;++f,g=g.nextSibling)if(g.lineObj==b&&/div/i.test(g.nodeName)){c=g;break}var h=y,g=c,f=fc(a,b),j=b.gutterMarkers,k=a.display;if(!a.options.lineNumbers&&!j&&!b.bgClass&& -!b.wrapClass&&!b.widgets)d=f;else{if(g){g.alignable=null;for(var l=!0,u=0,t=g.firstChild,s;t;t=s)if(s=t.nextSibling,/\bCodeMirror-linewidget\b/.test(t.className)){for(var n=0,m=!0;ne&&(e=Ma(d)),0.001c))if(R(f.lineObj,e),e=f.lineObj.widgets)for(k=0;kb&&(b=0);h.appendChild(p("div",null,"CodeMirror-selected","position: absolute; left: "+a+"px; top: "+b+"px; width: "+(null==c?k-a:c)+"px; height: "+ -(d-b)+"px"))},d=function(b,c,d,e){var h=w(g,b),l=h.text.length,u=e?Infinity:-Infinity;var t=W(h),s=c||0,m=null==d?l:d,p=function(g,t,s){var m=jb(a,n(b,g),"div",h),p,r;g==t?(p=m,s=r=m.left):(p=jb(a,n(b,t-1),"div",h),"rtl"==s&&(s=m,m=p,p=s),s=m.left,r=p.right);3s||s==m&&r.to==s)p(Math.max(r.from,s),Math.min(r.to,m),1==r.level?"rtl":"ltr")}else p(s,m,"ltr");return u},c=a.display,g=a.doc,e=a.doc.sel,h=document.createDocumentFragment(),k=c.lineSpace.offsetWidth,j=X(a.display.measure,p("pre",null,null,"text-align: left")).appendChild(p("span","x")).offsetLeft;if(e.from.line==e.to.line)d(e.from.line,e.from.ch,e.to.ch);else{for(var l=w(g,e.from.line),u=l,t=[e.from.line,e.from.ch],s;u=Oa(u);){u=u.find();t.push(u.from.ch,u.to.line,u.to.ch); -if(u.to.line==e.to.line){t.push(e.to.ch);s=!0;break}u=w(g,u.to.line)}if(s)for(s=0;s=a.display.showingTo)){var c=+new Date+a.options.workTime,d=wa(b.mode,Ra(a,b.frontier)),e=[],f;b.iter(b.frontier,Math.min(b.first+b.size,a.display.showingTo+500),function(g){if(b.frontier>=a.display.showingFrom){var h=g.styles;g.styles=Zc(a,g,d);for(var k=!h||h.length!=g.styles.length,j=0;!k&&jc)return eb(a,a.options.workDelay),!0});e.length&&x(a,function(){for(var a=0;aj;--k){if(k<=h.first){e=h.first;break a}var l=w(h,k-1);if(l.stateAfter){e=k;break a}l=xa(l.text,null,a.options.tabSize);if(null==g||f>l)g=k-1,f=l}e= -g}var u=e>c.first&&w(c,e-1).stateAfter,u=u?wa(c.mode,u):ad(c.mode);c.iter(e,b,function(f){$c(a,f,u);f.stateAfter=e==b-1||0==e%5||e>=d.showingFrom&&ee&&0==a&&(e=1)}return{left:ac?f.left:f.right,top:f.top,bottom:f.bottom}}function ic(a,b){for(var c=a.display.measureLineCache,d=0;dl&&h;++l)j.appendChild(f.firstChild),--h;g.appendChild(j)}f.appendChild(g)}X(d.measure, -f);k=D(d.lineDiv);h=[];g=bd(b.text.length);j=f.offsetHeight;O&&d.measure.first!=f&&X(d.measure,f);for(c=0;ct||n=t||u<=s&&t>=n||Math.min(t,n)-Math.max(u,s)>=t-u>>1){h[l]=Math.min(u,s);h[l+1]=Math.max(t,n);break}}l==h.length&&h.push(u,t);u=f.right;d.measureRight&&(u=D(d.measureRight).left);g[c]={left:f.left-k.left,right:u-k.left,top:l}}for(c=0;c< -g.length;++c)if(d=g[c])e=d.top,d.top=h[e],d.bottom=h[e+1];c=a.display.measureLineCache;e={text:b.text,width:a.display.scroller.clientWidth,markedSpans:b.markedSpans,measure:g,classes:b.textClass+"|"+b.bgClass+"|"+b.wrapClass};16==c.length?c[++a.display.measureLineCachePos%16]=e:c.push(e);return g}function qa(a){a.display.measureLineCache.length=a.display.measureLineCachePos=0;a.display.cachedCharWidth=a.display.cachedTextHeight=null;a.options.lineWrapping||(a.display.maxLineChanged=!0);a.display.lineNumChars= -null}function cd(a,b,c,d){if(b.widgets)for(var e=0;ec.from?f(a-1):f(a,d)}d=d||w(a.doc,b.line);e||(e=hc(a,d));var h=W(d);b=b.ch;if(!h)return f(b); -var k=kc(h,b),k=g(b,k);null!=ya&&(k.other=g(b,ya));return k}function mb(a,b,c){a=new n(a,b);c&&(a.outside=!0);return a}function lc(a,b,c){var d=a.doc;c+=a.display.viewOffset;if(0>c)return mb(d.first,0,!0);var e=hb(d,c),f=d.first+d.size-1;if(e>f)return mb(d.first+d.size-1,w(d,f).text.length,!0);for(0>b&&(b=0);;){var f=w(d,e),e=ae(a,f,e,b,c),g=(f=Oa(f))&&f.find();if(f&&e.ch>=g.from.ch)e=g.to.line;else return e}}function ae(a,b,c,d,e){function f(d){d=V(a,n(c,d),"line",b,j);h=!0;if(g>d.bottom)return d.left- -k;if(gp)return mb(c,s,E);for(;;){if(l?s==t||s==mc(b,t,1):1>=s-t){for(t=(d=d-md){s=q;p=w;if(E=h)p+=1E3;u=r}else t=q,m=w,e=h,u-=r}}function Ma(a){if(null!=a.cachedTextHeight)return a.cachedTextHeight; -if(null==ja){ja=p("pre");for(var b=0;49>b;++b)ja.appendChild(document.createTextNode("x")),ja.appendChild(p("br"));ja.appendChild(document.createTextNode("x"))}X(a.measure,ja);b=ja.offsetHeight/50;3c.top+e+k.top)j=!0;else if(c.bottom+e+k.top> -(window.innerHeight||document.documentElement.clientHeight))j=!1;if(null!=j&&!ce){if(k="none"==d.cursor.style.display)d.cursor.style.display="",d.cursor.style.left=c.left+"px",d.cursor.style.top=c.top-d.viewOffset+"px";d.cursor.scrollIntoView(j);k&&(d.cursor.style.display="none")}}b.selectionChanged&&kb(a);a.state.focused&&b.updateInput&&aa(a,b.userSelChange);c=b.maybeHiddenMarkers;d=b.maybeUnhiddenMarkers;if(c)for(j=0;jE.bottom?20:0;k&&setTimeout(x(d,function(){v==c&&(e.scroller.scrollTop+=k,b(a))}),50)}else{d.state.focused||ga(d);u=g;if(!z(p,g))if(p=g,"single"==j)H(d.doc,r(f,h),g);else if(s= -r(f,s),m=r(f,m),"double"==j){var l=Tb(w(f,g.line).text,g);y(g,s)?H(d.doc,l.from,m):H(d.doc,s,l.to)}else"triple"==j&&(y(g,s)?H(d.doc,m,r(f,n(g.line,0))):H(d.doc,s,r(f,n(g.line+1,0))));l=ac(e,f);(g.line>=l.to||g.linek-400&&z(ub.pos,h)){j="triple";B(a);setTimeout(Q(M,d),20);var k=d,l=h.line;H(k.doc,n(l,0),r(k.doc,n(l+1,0)))}else vb&&vb.time>k-400&&z(vb.pos,h)?(j="double",ub={time:k,pos:h},B(a),k=Tb(w(f,h.line).text,h),H(d.doc,k.from,k.to)):vb={time:k,pos:h};var u=h;if(d.options.dragDrop&&pc&&!Ta(d)&&!z(g.from, -g.to)&&!y(h,g.from)&&!y(g.to,h)&&"single"==j){var t=x(d,function(b){P&&(e.scroller.draggable=!1);d.state.draggingText=!1;Y(document,"mouseup",t);Y(e.scroller,"drop",t);10>Math.abs(a.clientX-b.clientX)+Math.abs(a.clientY-b.clientY)&&(B(b),H(d.doc,h),M(d))});P&&(e.scroller.draggable=!0);d.state.draggingText=t;e.scroller.dragDrop&&e.scroller.dragDrop();q(document,"mouseup",t);q(e.scroller,"drop",t)}else{B(a);"single"==j&&H(d.doc,r(f,h));var s=g.from,m=g.to,p=h,E=D(e.wrapper),v=0,A=x(d,function(a){!F&& -!ed(a)?c(a):b(a)}),Xc=x(d,c);q(document,"mousemove",A);q(document,"mouseup",Xc)}}else(a.target||a.srcElement)==e.scroller&&B(a)}}function Wd(a){var b=this;if(!(fa(b.display,a)||b.options.onDragEvent&&b.options.onDragEvent(b,Ga(a)))){B(a);var c=Ia(b,a,!0),d=a.dataTransfer.files;if(c&&!Ta(b))if(d&&d.length&&window.FileReader&&window.File){var e=d.length,f=Array(e),g=0;a=function(a,d){var h=new FileReader;h.onload=function(){f[d]=h.result;++g==e&&(c=r(b.doc,c),Ba(b.doc,{from:c,to:c,text:ka(f.join("\n")), -origin:"paste"},"around"))};h.readAsText(a)};for(var h=0;h=Math.floor(D(c.gutters).right))return!1; -B(b);if(!ea(a,"gutterClick"))return!0;var g=D(c.lineDiv);if(e>g.bottom)return!0;e-=g.top-c.viewOffset;for(g=0;g=d){c=hb(a.doc,e);U(a,"gutterClick",a,c,a.options.gutters[g],b);break}}return!0}function Ja(a,b){2>Math.abs(a.doc.scrollTop-b)||(a.doc.scrollTop=b,Ca||ib(a,[],b),a.display.scroller.scrollTop!=b&&(a.display.scroller.scrollTop=b),a.display.scrollbarV.scrollTop!=b&&(a.display.scrollbarV.scrollTop=b),Ca&&ib(a,[]))} -function ra(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,Yb(a),a.display.scroller.scrollLeft!=b&&(a.display.scroller.scrollLeft=b),a.display.scrollbarH.scrollLeft!=b&&(a.display.scrollbarH.scrollLeft=b)}function Qc(a,b){var c=b.wheelDeltaX,d=b.wheelDeltaY;null==c&&(b.detail&&b.axis==b.HORIZONTAL_AXIS)&&(c=b.detail);null==d&&b.detail&&b.axis==b.VERTICAL_AXIS?d=b.detail:null==d&&(d=b.wheelDelta); -var e=a.display,f=e.scroller;if(c&&f.scrollWidth>f.clientWidth||d&&f.scrollHeight>f.clientHeight){if(d&&ua&&P)for(var g=b.target;g!=f;g=g.parentNode)if(g.lineObj){a.display.currentWheelTarget=g;break}if(c&&!Ca&&!T&&null!=S)d&&Ja(a,Math.max(0,Math.min(f.scrollTop+d*S,f.scrollHeight-f.clientHeight))),ra(a,Math.max(0,Math.min(f.scrollLeft+c*S,f.scrollWidth-f.clientWidth))),B(b),e.wheelStartX=null;else{if(d&&null!=S){var g=d*S,h=a.doc.scrollTop,k=h+e.wrapper.clientHeight;0>g?h=Math.max(0,h+g-50):k=Math.min(a.doc.height, -k+g+50);ib(a,[],{top:h,bottom:k})}20>wb&&(null==e.wheelStartX?(e.wheelStartX=f.scrollLeft,e.wheelStartY=f.scrollTop,e.wheelDX=c,e.wheelDY=d,setTimeout(function(){if(null!=e.wheelStartX){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;a&&(S=(S*wb+a)/(wb+1),++wb)}},200)):(e.wheelDX+=c,e.wheelDY+=d))}}}function xb(a,b,c){if("string"==typeof b&&(b=qc[b],!b))return!1;a.display.pollingFast&&oc(a)&&(a.display.pollingFast= -!1);var d=a.doc,e=d.sel.shift,f=!1;try{Ta(a)&&(a.state.suppressEdits=!0),c&&(d.sel.shift=!1),f=b(a)!=fd}finally{d.sel.shift=e,a.state.suppressEdits=!1}return f}function gd(a){var b=a.state.keyMaps.slice(0);a.options.extraKeys&&b.push(a.options.extraKeys);b.push(a.options.keyMap);return b}function hd(a,b){var c=rc(a.options.keyMap),d=c.auto;clearTimeout(id);d&&!jd(b)&&(id=setTimeout(function(){rc(a.options.keyMap)==c&&(a.options.keyMap=d.call?d.call(null,a):d)},50));var e=kd(b,!0),f=!1;if(!e)return!1; -f=gd(a);f=b.shiftKey?Ua("Shift-"+e,f,function(b){return xb(a,b,!0)})||Ua(e,f,function(b){if("string"==typeof b&&/^go[A-Z]/.test(b))return xb(a,b)}):Ua(e,f,function(b){return xb(a,b)});"stop"==f&&(f=!1);f&&(B(b),kb(a),O&&(b.oldKeyCode=b.keyCode,b.keyCode=0));return f}function Rc(a){this.state.focused||ga(this);F&&27==a.keyCode&&(a.returnValue=!1);if(!this.options.onKeyEvent||!this.options.onKeyEvent(this,Ga(a))){var b=a.keyCode;this.doc.sel.shift=16==b||a.shiftKey;var c=hd(this,a);T&&(sc=c?b:null, -!c&&(88==b&&!tb&&(ua?a.metaKey:a.ctrlKey))&&this.replaceSelection(""))}}function Vd(a){var b=this;if(!b.options.onKeyEvent||!b.options.onKeyEvent(b,Ga(a))){var c=a.keyCode,d=a.charCode;if(T&&c==sc)sc=null,B(a);else if(!(T&&(!a.which||10>a.which)||Pb)||!hd(b,a)){c=String.fromCharCode(null==d?c:d);this.options.electricChars&&(this.doc.mode.electricChars&&this.options.smartIndent&&!Ta(this)&&-1b++?tc=setTimeout(d,500):aa(a)};tc=setTimeout(d,200)}}var e=a.display,f=a.doc.sel;if(!fa(e,b)){var g=Ia(a,b),h=e.scroller.scrollTop;if(g&&!T){(z(f.from,f.to)||y(g,f.from)||!y(g,f.to))&&x(a,ca)(a.doc,g,g);var k=e.input.style.cssText;e.inputDiv.style.position="absolute";e.input.style.cssText="position: fixed; width: 30px; height: 30px; top: "+(b.clientY-5)+"px; left: "+(b.clientX-5)+"px; z-index: 1000; background: white; outline: none;border-width: 0; outline: none; overflow: hidden; opacity: .05; -ms-opacity: .05; filter: alpha(opacity=5);"; -M(a);aa(a,!0);z(f.from,f.to)&&(e.input.value=e.prevInput=" ");F&&!O&&c();if(Ub){Ha(b);var j=function(){Y(window,"mouseup",j);setTimeout(d,20)};q(window,"mouseup",j)}else setTimeout(d,50)}}}function uc(a){return!a.text?a.to:n(a.from.line+a.text.length-1,K(a.text).length+(1==a.text.length?a.from.ch:0))}function ld(a,b,c){if(!y(b.from,c))return r(a,c);var d=b.text.length-1-(b.to.line-b.from.line);if(c.line>b.to.line+d)return b=c.line-d,d=a.first+a.size-1,b>d?n(d,w(a,d).text.length):zb(c,w(a,b).text.length); -if(c.line==b.to.line+d)return zb(c,K(b.text).length+(1==b.text.length?b.from.ch:0)+w(a,b.to.line).text.length-b.to.ch);a=c.line-b.from.line;return zb(c,b.text[a].length+(a?0:b.from.ch))}function vc(a,b,c){if(c&&"object"==typeof c)return{anchor:ld(a,b,c.anchor),head:ld(a,b,c.head)};if("start"==c)return{anchor:b.from,head:b.from};var d=uc(b);if("around"==c)return{anchor:b.from,head:d};if("end"==c)return{anchor:d,head:d};c=function(a){if(y(a,b.from))return a;if(!y(b.to,a))return d;var c=a.line+b.text.length- -(b.to.line-b.from.line)-1,g=a.ch;a.line==b.to.line&&(g+=d.ch-b.to.ch);return n(c,g)};return{anchor:c(a.sel.anchor),head:c(a.sel.head)}}function md(a,b,c){b={canceled:!1,from:b.from,to:b.to,text:b.text,origin:b.origin,cancel:function(){this.canceled=!0}};c&&(b.update=function(b,c,f,g){b&&(this.from=r(a,b));c&&(this.to=r(a,c));f&&(this.text=f);void 0!==g&&(this.origin=g)});J(a,"beforeChange",a,b);a.cm&&J(a.cm,"beforeChange",a.cm,b);return b.canceled?null:{from:b.from,to:b.to,text:b.text,origin:b.origin}} -function Ba(a,b,c,d){if(a.cm){if(!a.cm.curOp)return x(a.cm,Ba)(a,b,c,d);if(a.cm.state.suppressEdits)return}if(ea(a,"beforeChange")||a.cm&&ea(a.cm,"beforeChange"))if(b=md(a,b,!0),!b)return;var e;if(e=nd){if(d=!d){d=b.from;e=b.to;var f=null;a.iter(d.line,e.line+1,function(a){if(a.markedSpans)for(var b=0;ba.lastLine())){if(b.from.linee&&(b={from:b.from,to:n(e,w(a,e).text.length),text:[b.text[0]],origin:b.origin});b.removed=zc(a,b.from,b.to);c||(c=vc(a,b,null));if(a.cm){a=a.cm;var f= -a.doc,g=a.display,e=b.from,h=b.to,k=!1,j=e.line;a.options.lineWrapping||(j=N(ta(f,w(f,e.line))),f.iter(j,h.line+1,function(a){if(a==g.maxLine)return k=!0}));!y(f.sel.head,b.from)&&!y(b.to,f.sel.head)&&(a.curOp.cursorActivity=!0);Ac(f,b,d,c,Tc(a));a.options.lineWrapping||(f.iter(j,e.line+b.text.length,function(a){var b=gb(f,a);b>g.maxLineLength&&(g.maxLine=a,g.maxLineLength=b,g.maxLineChanged=!0,k=!1)}),k&&(a.curOp.updateMaxLine=!0));f.frontier=Math.min(f.frontier,e.line);eb(a,400);A(a,e.line,h.line+ -1,b.text.length-(h.line-e.line)-1);if(ea(a,"change"))if(d={from:e,to:h,text:b.text,removed:b.removed,origin:b.origin},a.curOp.textChanged){for(a=a.curOp.textChanged;a.next;a=a.next);a.next=d}else a.curOp.textChanged=d}else Ac(a,b,d,c)}}function da(a,b,c,d,e){d||(d=c);if(y(d,c)){var f=d;d=c;c=f}"string"==typeof b&&(b=ka(b));Ba(a,{from:c,to:d,text:b,origin:e},null)}function n(a,b){if(!(this instanceof n))return new n(a,b);this.line=a;this.ch=b}function z(a,b){return a.line==b.line&&a.ch==b.ch}function y(a, -b){return a.linec?n(c,w(a,c).text.length):zb(b,w(a,b.line).text.length)}function zb(a,b){var c=a.ch;return null==c||c>b?n(a.line,b):0>c?n(a.line,0):a}function Ea(a,b){return b>=a.first&&b=f.ch:j.to>f.ch))){if(d&&(J(l,"beforeCursorEnter"), -l.explicitlyCleared))if(h.markedSpans){--k;continue}else break;if(l.atomic){k=l.find()[0>g?"from":"to"];if(z(k,f)&&(k.ch+=g,0>k.ch?k=k.line>a.first?r(a,n(k.line-1)):null:k.ch>h.text.length&&(k=k.linec&&(c=0);var h=f.scroller.clientHeight-oa,k=f.scroller.scrollTop,j={};a=a.doc.height+(f.mover.offsetHeight-f.lineSpace.offsetHeight);var l=ca-10;ck+h&&(c=Math.min(c,(g?a:e)-h),c!=k&&(j.scrollTop=c));k=f.scroller.clientWidth-oa;c=f.scroller.scrollLeft; -b+=f.gutters.offsetWidth;d+=f.gutters.offsetWidth;f=f.gutters.offsetWidth;e=bk+c-3&&(j.scrollLeft=d+10-k);return j}function Bb(a,b,c){a.curOp.updateScrollPos={scrollLeft:null==b?a.doc.scrollLeft:b,scrollTop:null==c?a.doc.scrollTop:c}}function ud(a,b,c){var d=a.curOp.updateScrollPos||(a.curOp.updateScrollPos={scrollLeft:a.doc.scrollLeft,scrollTop:a.doc.scrollTop});a=a.display.scroller;d.scrollTop=Math.max(0,Math.min(a.scrollHeight-a.clientHeight, -d.scrollTop+c));d.scrollLeft=Math.max(0,Math.min(a.scrollWidth-a.clientWidth,d.scrollLeft+b))}function yb(a,b,c,d){var e=a.doc;c||(c="add");if("smart"==c)if(a.doc.mode.indent)var f=Ra(a,b);else c="prev";var g=a.options.tabSize,h=w(e,b),k=xa(h.text,null,g),j=h.text.match(/^\s*/)[0],l;if("smart"==c&&(l=a.doc.mode.indent(f,h.text.slice(j.length),h.text),l==fd)){if(!d)return;c="prev"}"prev"==c?l=b>e.first?xa(w(e,b-1).text,null,g):0:"add"==c?l=k+a.options.indentUnit:"subtract"==c&&(l=k-a.options.indentUnit); -l=Math.max(0,l);c="";d=0;if(a.options.indentWithTabs)for(e=Math.floor(l/g);e;--e)d+=g,c+="\t";d=a.first+a.size?b=j=!1:(g=b,b=k=w(a,b));if(b)h= -e?(0>c?ob:nb)(k):0>c?k.text.length:0;else return j=!1}else h=d;return!0}var g=b.line,h=b.ch;b=c;var k=w(a,g),j=!0;if("char"==d)f();else if("column"==d)f(!0);else if("word"==d||"group"==d){var l=null;d="group"==d;for(var u=!0;!(0>c)||f(!u);u=!1){var t=k.text.charAt(h)||"\n",t=Db(t)?"w":!d?null:/\s/.test(t)?null:"p";if(l&&l!=t){0>c&&(c=1,f());break}t&&(l=t);if(0c?1.5:0.5)*Ma(a.display))):"line"==d&&(g=0c?0>=g:g>=e.height){h.hitSide=!0;break}g+=5*c}return h}function Tb(a,b){var c=b.ch,d=b.ch;if(a){!1===b.after||d==a.length?--c:++d;for(var e=a.charAt(c),e=Db(e)?Db:/\s/.test(e)?function(a){return/\s/.test(a)}:function(a){return!/\s/.test(a)&&!Db(a)};0=e:j.to>e);(k||(k=[])).push({from:j.from,to:n?null:j.to,marker:l})}}c=k;if(d)for(var h=0,m;h=f:k.to>f)||"bookmark"==j.type&&k.from==f&&(!g||k.marker.insertLeft))l= -null==k.from||(j.inclusiveLeft?k.from<=f:k.fromb)&&(!d||d.widtha.options.maxHighlightLength?(f=!1,k.pos=Math.min(b.length,k.start+5E4),j=null):j=c.token(k,d);var l=k.current();k.start=k.pos;!f||h!=j?(g&&e(g,h),g=l,h=j):g+=l}g&&e(g,h)}function Zc(a,b,c){var d=[a.state.modeGen];Cd(a,b.text,a.doc.mode,c,function(a,b){d.push(a,b)});for(c=0;cm)){if(null!=G.to&&q>G.to&&(q=G.to,x=""),B.className&&(v+=" "+B.className),B.startStyle&&G.from==m&&(z+=" "+B.startStyle),B.endStyle&&G.to==q&&(x+=" "+B.endStyle),B.collapsed&&(!y||y.marker.widthm&&q>G.from&&(q=G.from);"bookmark"==B.type&&(G.from==m&&B.replacedWith)&&(A=B.replacedWith)}if(y&&(y.from||0)==m)if(Gd(g, -(null==y.to?l:y.to)-m,null!=y.from&&y.marker.replacedWith),null==y.to){j=y.marker.find();break a}A&&!y&&Gd(g,0,A)}if(m>=l)break;for(A=Math.min(l,q);;){if(s){D=m+s.length;y||(G=D>A?s.slice(0,A-m):s,g.addToken(g,G,r?r+v:v,z,m+G.length==q?x:""));if(D>=A){s=s.slice(A-m);m=A;break}m=D;z=""}s=j[n++];r=Dd(j[n++])}}else for(var n=1;nh&&gf-a.cm.options.historyEventDelay||"*"==b.origin.charAt(0)))){var h=K(g.changes);z(b.from,b.to)&&z(b.from,h.to)?h.to=uc(b):g.changes.push(yc(a,b));g.anchorAfter=c.anchor;g.headAfter=c.head}else{g={changes:[yc(a,b)],anchorBefore:a.sel.anchor,headBefore:a.sel.head,anchorAfter:c.anchor,headAfter:c.head};for(e.done.push(g);e.done.length>e.undoDepth;)e.done.shift();0>e.dirtyCounter?e.dirtyCounter= -NaN:e.dirtyCounter++}e.lastTime=f;e.lastOp=d;e.lastOrigin=b.origin}function ee(a){if(!a)return null;for(var b=0,c;b=b.offsetWidth&&2b)return ya=null,c;if(e.from==b||e.to==b)if(null==d)d=c;else{var e=e.level,f=a[d].level,g=a[0].level,e=e==g?!0:f==g?!1:eg.from&&bb||b>a.text.length?null:b}var Ca= -/gecko\/\d/i.test(navigator.userAgent),F=/MSIE \d/.test(navigator.userAgent),pa=F&&(null==document.documentMode||8>document.documentMode),O=F&&(null==document.documentMode||9>document.documentMode),P=/WebKit\//.test(navigator.userAgent),le=P&&/Qt\/\d+\.\d+/.test(navigator.userAgent),me=/Chrome\//.test(navigator.userAgent),T=/Opera\//.test(navigator.userAgent),Wb=/Apple Computer/.test(navigator.vendor),Pb=/KHTML\//.test(navigator.userAgent),Xd=/Mac OS X 1\d\D([7-9]|\d\d)\D/.test(navigator.userAgent), -Yd=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(navigator.userAgent),ce=/PhantomJS/.test(navigator.userAgent),Fa=/AppleWebKit/.test(navigator.userAgent)&&/Mobile\/\w+/.test(navigator.userAgent),Rb=Fa||/Android|webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(navigator.userAgent),ua=Fa||/Mac/.test(navigator.platform),ne=/windows/i.test(navigator.platform),ab=T&&navigator.userAgent.match(/Version\/(\d*\.\d*)/);ab&&(ab=Number(ab[1]));var yd=ua&&(le||T&&(null==ab||12.11>ab)),Ub=Ca||F&&!O,nd=!1,Qa=!1,ja, -be=0,vb,ub,wb=0,S=null;F?S=-0.53:Ca?S=15:me?S=-0.7:Wb&&(S=-1/3);var id,sc=null,tc;m.Pos=n;m.prototype={constructor:m,focus:function(){window.focus();M(this);ga(this);Ka(this)},setOption:function(a,b){var c=this.options,d=c[a];c[a]==b&&"mode"!=a||(c[a]=b,sa.hasOwnProperty(a)&&x(this,sa[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"](a)},removeKeyMap:function(a){for(var b=this.state.keyMaps, -c=0;ck)&&a.top>b.offsetHeight?g=a.top-b.offsetHeight:a.bottom+b.offsetHeight<=k&&(g=a.bottom);h+b.offsetWidth>j&&(h=j-b.offsetWidth)}b.style.top= -g+f.lineSpace.offsetTop+"px";b.style.left=b.style.right="";"right"==e?(h=f.sizer.clientWidth-b.offsetWidth,b.style.right="0px"):("left"==e?h=0:"middle"==e&&(h=(f.sizer.clientWidth-b.offsetWidth)/2),b.style.left=h+"px");c&&(a=rb(this,h,g,h+b.offsetWidth,g+b.offsetHeight),null!=a.scrollTop&&Ja(this,a.scrollTop),null!=a.scrollLeft&&ra(this,a.scrollLeft))},triggerOnKeyDown:x(null,Rc),execCommand:function(a){return qc[a](this)},findPosH:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);var f=0;for(a=r(this.doc, -a);fa?c.from:c.to;H(this.doc,c,c,a)}),deleteH:x(null,function(a,b){var c=this.doc.sel;z(c.from,c.to)?da(this.doc,"",c.from,Bc(this.doc,c.head,a,b,!1),"+delete"):da(this.doc,"",c.from,c.to,"+delete");this.curOp.userSelChange=!0}),findPosV:function(a,b,c,d){var e=1;0>b&&(e=-1,b=-b);var f=0;for(a=r(this.doc,a);f< -b&&!(a=V(this,a,"div"),null==d?d=a.left:a.left=d,a=xd(this,a,e,c),a.hitSide);++f);return a},moveV:x(null,function(a,b){var c=this.doc.sel,d=V(this,c.head,"div");null!=c.goalColumn&&(d.left=c.goalColumn);var e=xd(this,d,a,b);"page"==b&&ud(this,0,jb(this,e,"div").top-d.top);H(this.doc,e,e,a);c.goalColumn=d.left}),toggleOverwrite:function(a){null!=a&&a==this.state.overwrite||(this.display.cursor.className=(this.state.overwrite=!this.state.overwrite)?this.display.cursor.className+" CodeMirror-overwrite": -this.display.cursor.className.replace(" CodeMirror-overwrite",""))},hasFocus:function(){return this.state.focused},scrollTo:x(null,function(a,b){Bb(this,a,b)}),getScrollInfo:function(){var a=this.display.scroller,b=oa;return{left:a.scrollLeft,top:a.scrollTop,height:a.scrollHeight-b,width:a.scrollWidth-b,clientHeight:a.clientHeight-b,clientWidth:a.clientWidth-b}},scrollIntoView:x(null,function(a,b){"number"==typeof a&&(a=n(a,0));b||(b=0);var c=a;if(!a||null!=a.line)this.curOp.scrollToPos=a?r(this.doc, -a):this.doc.sel.head,this.curOp.scrollToPosMargin=b,c=V(this,this.curOp.scrollToPos);c=rb(this,c.left,c.top-b,c.right,c.bottom+b);Bb(this,c.scrollLeft,c.scrollTop)}),setSize:function(a,b){function c(a){return"number"==typeof a||/^\d+$/.test(String(a))?a+"px":a}null!=a&&(this.display.wrapper.style.width=c(a));null!=b&&(this.display.wrapper.style.height=c(b));this.refresh()},on:function(a,b){q(this,a,b)},off:function(a,b){Y(this,a,b)},operation:function(a){return Sb(this,a)},refresh:x(null,function(){qa(this); -Bb(this,this.doc.scrollLeft,this.doc.scrollTop);A(this)}),swapDoc:x(null,function(a){var b=this.doc;b.cm=null;Lc(this,a);qa(this);aa(this,!0);Bb(this,a.scrollLeft,a.scrollTop);return b}),getInputField:function(){return this.display.input},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}};var sa=m.optionHandlers={},Nb=m.defaults={},Sc=m.Init={toString:function(){return"CodeMirror.Init"}}; -v("value","",function(a,b){a.setValue(b)},!0);v("mode",null,function(a,b){a.doc.modeOption=b;La(a)},!0);v("indentUnit",2,La,!0);v("indentWithTabs",!1);v("smartIndent",!0);v("tabSize",4,function(a){La(a);qa(a);A(a)},!0);v("electricChars",!0);v("rtlMoveVisually",!ne);v("theme","default",function(a){Kc(a);Na(a)},!0);v("keyMap","default",function(a){var b=$[a.options.keyMap].style;a.display.wrapper.className=a.display.wrapper.className.replace(/\s*cm-keymap-\S+/g,"")+(b?" cm-keymap-"+b:"")});v("extraKeys", -null);v("onKeyEvent",null);v("onDragEvent",null);v("lineWrapping",!1,function(a){a.options.lineWrapping?(a.display.wrapper.className+=" CodeMirror-wrap",a.display.sizer.style.minWidth=""):(a.display.wrapper.className=a.display.wrapper.className.replace(" CodeMirror-wrap",""),Zb(a));Vc(a);A(a);qa(a);setTimeout(function(){$b(a)},100)},!0);v("gutters",[],function(a){Ob(a.options);Na(a)},!0);v("fixedGutter",!0,function(a,b){a.display.gutters.style.left=b?bc(a.display)+"px":"0";a.refresh()},!0);v("coverGutterNextToScrollbar", -!1,$b,!0);v("lineNumbers",!1,function(a){Ob(a.options);Na(a)},!0);v("firstLineNumber",1,Na,!0);v("lineNumberFormatter",function(a){return a},Na,!0);v("showCursorWhenSelecting",!1,cc,!0);v("readOnly",!1,function(a,b){"nocursor"==b?(Vb(a),a.display.input.blur()):b||aa(a,!0)});v("dragDrop",!0);v("cursorBlinkRate",530);v("cursorScrollMargin",0);v("cursorHeight",1);v("workTime",100);v("workDelay",100);v("flattenSpans",!0);v("pollInterval",100);v("undoDepth",40,function(a,b){a.doc.history.undoDepth=b}); -v("historyEventDelay",500);v("viewportMargin",10,function(a){a.refresh()},!0);v("maxHighlightLength",1E4,function(a){La(a);a.refresh()},!0);v("moveInputWithCursor",!0,function(a,b){b||(a.display.inputDiv.style.top=a.display.inputDiv.style.left=0)});v("tabindex",null,function(a,b){a.display.input.tabIndex=b||""});v("autofocus",null);var Od=m.modes={},bb=m.mimeModes={};m.defineMode=function(a,b){!m.defaults.mode&&"null"!=a&&(m.defaults.mode=a);if(2=this.string.length},sol:function(){return 0==this.pos},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(-1a.display.maxLineLength&&(a.display.maxLine=f,a.display.maxLineLength= -g,a.display.maxLineChanged=!0);null!=c&&a&&A(a,c,d+1);this.lines.length=0;this.explicitlyCleared=!0;this.collapsed&&this.doc.cantEdit&&(this.doc.cantEdit=!1,a&&td(a));b&&Aa(a);U(this,"clear")}};na.prototype.find=function(){for(var a,b,c=0;c=b.display.showingFrom&&a.from.linethis.size-b&&(c=[],this.collapse(c),this.children=[new Hb(c)],this.children[0].parent=this)}, -collapse:function(a){for(var b=0,c=this.children.length;b= -this.children.length)){var a=this;do{var b=a.children.splice(a.children.length-5,5),b=new $a(b);if(a.parent){a.size-=b.size;a.height-=b.height;var c=Z(a.parent.children,a);a.parent.children.splice(c+1,0,b)}else c=new $a(a.children),c.parent=a,a.children=[c,b],a=c;b.parent=a.parent}while(10=a.ch))b.push(e.marker.parent||e.marker)}return b},getAllMarks:function(){var a=[];this.iter(function(b){if(b=b.markedSpans)for(var c=0;ca)return b=a,!0;a-=d;++c}); -return r(this,n(c,b))},indexFromPos:function(a){a=r(this,a);var b=a.ch;if(a.linea.ch)return 0;this.iter(this.first,a.line,function(a){b+=a.text.length+1});return b},copy:function(a){var b=new L(Ec(this,this.first,this.first+this.size),this.modeOption,this.first);b.scrollTop=this.scrollTop;b.scrollLeft=this.scrollLeft;b.sel={from:this.sel.from,to:this.sel.to,head:this.sel.head,anchor:this.sel.anchor,shift:this.sel.shift,extend:!1,goalColumn:this.sel.goalColumn};a&&(b.history.undoDepth= -this.history.undoDepth,b.setHistory(this.getHistory()));return b},linkedDoc:function(a){a||(a={});var b=this.first,c=this.first+this.size;null!=a.from&&a.from>b&&(b=a.from);null!=a.to&&a.toZ(pe,db)&&(m.prototype[db]=function(a){return function(){return a.apply(this.doc,arguments)}}(L.prototype[db]));m.e_stop=Ha;m.e_preventDefault=B;m.e_stopPropagation=Kd;var ba,pb=0;m.on=q;m.off=Y;m.signal=J;var oa=30,fd=m.Pass={toString:function(){return"CodeMirror.Pass"}};Qb.prototype={set:function(a,b){clearTimeout(this.id);this.id=setTimeout(b,a)}};m.countColumn=xa;var Lb=[""],je=/[\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/,nc=/[\u0300-\u036F\u0483-\u0487\u0488-\u0489\u0591-\u05BD\u05BF\u05C1-\u05C2\u05C4-\u05C5\u05C7\u0610-\u061A\u064B-\u065F\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7-\u06E8\u06EA-\u06ED\uA66F\uA670-\uA672\uA674-\uA67D\uA69F\udc00-\udfff]/; -m.replaceGetRect=function(a){D=a};var pc;if(O)pc=!1;else{var Pd=p("div");pc="draggable"in Pd||"dragDrop"in Pd}Ca?Gb=function(a,b){return 36==a.charCodeAt(b-1)&&39==a.charCodeAt(b)}:Wb&&!/Version\/([6-9]|\d\d)\b/.test(navigator.userAgent)?Gb=function(a,b){return/\-[^ \-?]|\?[^ !\'\"\),.\-\/:;\?\]\}]/.test(a.slice(b-1,b+1))}:P&&(Gb=function(a,b){return 1,:;][({[<]|-[^\-?\.\u2010-\u201f\u2026]|\?[\w~`@#$%\^&*(_=+{[|><]|\u2026[\w~`@#$%\^&*(_=+{[><]/.test(a.slice(b- -1,b+1))});var Mb,Fc,ka=3!="\n\nb".split(/\n/).length?function(a){for(var b=0,c=[],d=a.length;b<=d;){var e=a.indexOf("\n",b);-1==e&&(e=a.length);var f=a.slice(b,"\r"==a.charAt(e-1)?e-1:e),g=f.indexOf("\r");-1!=g?(c.push(f.slice(0,g)),b+=g+1):(c.push(f),b=e+1)}return c}:function(a){return a.split(/\r\n?|\n/)};m.splitLines=ka;var de=window.getSelection?function(a){try{return a.selectionStart!=a.selectionEnd}catch(b){return!1}}:function(a){try{var b=a.ownerDocument.selection.createRange()}catch(c){}return!b|| -b.parentElement()!=a?!1:0!=b.compareEndPoints("StartToEnd",b)},tb;var Ic=p("div");"oncopy"in Ic?tb=!0:(Ic.setAttribute("oncopy","return;"),tb="function"==typeof Ic.oncopy);var ma={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:";",91:"Mod",92:"Mod",93:"Mod",109:"-",107:"=",127:"Delete",186:";",187:"=",188:",", -189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",63276:"PageUp",63277:"PageDown",63275:"End",63273:"Home",63234:"Left",63232:"Up",63235:"Right",63233:"Down",63302:"Insert",63272:"Delete"};m.keyNames=ma;for(var I=0;10>I;I++)ma[I+48]=String(I);for(I=65;90>=I;I++)ma[I]=String.fromCharCode(I);for(I=1;12>=I;I++)ma[I+111]=ma[I+63235]="F"+I;var ya,Hd,se=function(a){return 255>=a?qe.charAt(a):1424<=a&&1524>=a?"R":1536<=a&&1791>=a?re.charAt(a-1536):1792<=a&&2220>=a?"r":"L"},qe="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLL", -re="rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmmrrrrrrrrrrrrrrrrrr",te=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,Qd=/[stwN]/,Rd=/[LRr]/,Sd=/[Lb1n]/,Td=/[1n]/;Hd=function(a){if(!te.test(a))return!1;for(var b=a.length,c=[],d=0,e;d= 15) { presto = false; webkit = true; } + // Some browsers use the wrong event properties to signal cmd/ctrl on OS X + var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11)); + var captureRightClick = gecko || (ie && ie_version >= 9); + + // Optimize some code when these features are not used. + var sawReadOnlySpans = false, sawCollapsedSpans = false; + + // EDITOR CONSTRUCTOR + + // A CodeMirror instance represents an editor. This is the object + // that user code is usually dealing with. + + function CodeMirror(place, options) { + if (!(this instanceof CodeMirror)) return new CodeMirror(place, options); + + this.options = options = options ? copyObj(options) : {}; + // Determine effective options based on given values and defaults. + copyObj(defaults, options, false); + setGuttersForLineNumbers(options); + + var doc = options.value; + if (typeof doc == "string") doc = new Doc(doc, options.mode, null, options.lineSeparator); + this.doc = doc; + + var input = new CodeMirror.inputStyles[options.inputStyle](this); + var display = this.display = new Display(place, doc, input); + display.wrapper.CodeMirror = this; + updateGutters(this); + themeChanged(this); + if (options.lineWrapping) + this.display.wrapper.className += " CodeMirror-wrap"; + if (options.autofocus && !mobile) display.input.focus(); + initScrollbars(this); + + this.state = { + keyMaps: [], // stores maps added by addKeyMap + overlays: [], // highlighting overlays, as added by addOverlay + modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info + overwrite: false, + delayingBlurEvent: false, + focused: false, + suppressEdits: false, // used to disable editing during key handlers when in readOnly mode + pasteIncoming: false, cutIncoming: false, // help recognize paste/cut edits in input.poll + selectingText: false, + draggingText: false, + highlight: new Delayed(), // stores highlight worker timeout + keySeq: null, // Unfinished key sequence + specialChars: null + }; + + var cm = this; + + // Override magic textarea content restore that IE sometimes does + // on our hidden textarea on reload + if (ie && ie_version < 11) setTimeout(function() { cm.display.input.reset(true); }, 20); + + registerEventHandlers(this); + ensureGlobalHandlers(); + + startOperation(this); + this.curOp.forceUpdate = true; + attachDoc(this, doc); + + if ((options.autofocus && !mobile) || cm.hasFocus()) + setTimeout(bind(onFocus, this), 20); + else + onBlur(this); + + for (var opt in optionHandlers) if (optionHandlers.hasOwnProperty(opt)) + optionHandlers[opt](this, options[opt], Init); + maybeUpdateLineNumberWidth(this); + if (options.finishInit) options.finishInit(this); + for (var i = 0; i < initHooks.length; ++i) initHooks[i](this); + endOperation(this); + // Suppress optimizelegibility in Webkit, since it breaks text + // measuring on line wrapping boundaries. + if (webkit && options.lineWrapping && + getComputedStyle(display.lineDiv).textRendering == "optimizelegibility") + display.lineDiv.style.textRendering = "auto"; + } + + // DISPLAY CONSTRUCTOR + + // The display handles the DOM integration, both for input reading + // and content drawing. It holds references to DOM nodes and + // display-related state. + + function Display(place, doc, input) { + var d = this; + this.input = input; + + // Covers bottom-right square when both scrollbars are present. + d.scrollbarFiller = elt("div", null, "CodeMirror-scrollbar-filler"); + d.scrollbarFiller.setAttribute("cm-not-content", "true"); + // Covers bottom of gutter when coverGutterNextToScrollbar is on + // and h scrollbar is present. + d.gutterFiller = elt("div", null, "CodeMirror-gutter-filler"); + d.gutterFiller.setAttribute("cm-not-content", "true"); + // Will contain the actual code, positioned to cover the viewport. + d.lineDiv = elt("div", null, "CodeMirror-code"); + // Elements are added to these to represent selection and cursors. + d.selectionDiv = elt("div", null, null, "position: relative; z-index: 1"); + d.cursorDiv = elt("div", null, "CodeMirror-cursors"); + // A visibility: hidden element used to find the size of things. + d.measure = elt("div", null, "CodeMirror-measure"); + // When lines outside of the viewport are measured, they are drawn in this. + d.lineMeasure = elt("div", null, "CodeMirror-measure"); + // Wraps everything that needs to exist inside the vertically-padded coordinate system + d.lineSpace = elt("div", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv], + null, "position: relative; outline: none"); + // Moved around its parent to cover visible view. + d.mover = elt("div", [elt("div", [d.lineSpace], "CodeMirror-lines")], null, "position: relative"); + // Set to the height of the document, allowing scrolling. + d.sizer = elt("div", [d.mover], "CodeMirror-sizer"); + d.sizerWidth = null; + // Behavior of elts with overflow: auto and padding is + // inconsistent across browsers. This is used to ensure the + // scrollable area is big enough. + d.heightForcer = elt("div", null, null, "position: absolute; height: " + scrollerGap + "px; width: 1px;"); + // Will contain the gutters, if any. + d.gutters = elt("div", null, "CodeMirror-gutters"); + d.lineGutter = null; + // Actual scrollable element. + d.scroller = elt("div", [d.sizer, d.heightForcer, d.gutters], "CodeMirror-scroll"); + d.scroller.setAttribute("tabIndex", "-1"); + // The element in which the editor lives. + d.wrapper = elt("div", [d.scrollbarFiller, d.gutterFiller, d.scroller], "CodeMirror"); + + // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported) + if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; } + if (!webkit && !(gecko && mobile)) d.scroller.draggable = true; + + if (place) { + if (place.appendChild) place.appendChild(d.wrapper); + else place(d.wrapper); + } + + // Current rendered range (may be bigger than the view window). + d.viewFrom = d.viewTo = doc.first; + d.reportedViewFrom = d.reportedViewTo = doc.first; + // Information about the rendered lines. + d.view = []; + d.renderedView = null; + // Holds info about a single rendered line when it was rendered + // for measurement, while not in view. + d.externalMeasured = null; + // Empty space (in pixels) above the view + d.viewOffset = 0; + d.lastWrapHeight = d.lastWrapWidth = 0; + d.updateLineNumbers = null; + + d.nativeBarWidth = d.barHeight = d.barWidth = 0; + d.scrollbarsClipped = false; + + // Used to only resize the line number gutter when necessary (when + // the amount of lines crosses a boundary that makes its width change) + d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null; + // Set to true when a non-horizontal-scrolling line widget is + // added. As an optimization, line widget aligning is skipped when + // this is false. + d.alignWidgets = false; + + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + + // Tracks the maximum line length so that the horizontal scrollbar + // can be kept static when scrolling. + d.maxLine = null; + d.maxLineLength = 0; + d.maxLineChanged = false; + + // Used for measuring wheel scrolling granularity + d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null; + + // True when shift is held down. + d.shift = false; + + // Used to track whether anything happened since the context menu + // was opened. + d.selForContextMenu = null; + + d.activeTouch = null; + + input.init(d); + } + + // STATE UPDATES + + // Used to get the editor into a consistent state again when options change. + + function loadMode(cm) { + cm.doc.mode = CodeMirror.getMode(cm.options, cm.doc.modeOption); + resetModeState(cm); + } + + function resetModeState(cm) { + cm.doc.iter(function(line) { + if (line.stateAfter) line.stateAfter = null; + if (line.styles) line.styles = null; + }); + cm.doc.frontier = cm.doc.first; + startWorker(cm, 100); + cm.state.modeGen++; + if (cm.curOp) regChange(cm); + } + + function wrappingChanged(cm) { + if (cm.options.lineWrapping) { + addClass(cm.display.wrapper, "CodeMirror-wrap"); + cm.display.sizer.style.minWidth = ""; + cm.display.sizerWidth = null; + } else { + rmClass(cm.display.wrapper, "CodeMirror-wrap"); + findMaxLine(cm); + } + estimateLineHeights(cm); + regChange(cm); + clearCaches(cm); + setTimeout(function(){updateScrollbars(cm);}, 100); + } + + // Returns a function that estimates the height of a line, to use as + // first approximation until the line becomes visible (and is thus + // properly measurable). + function estimateHeight(cm) { + var th = textHeight(cm.display), wrapping = cm.options.lineWrapping; + var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3); + return function(line) { + if (lineIsHidden(cm.doc, line)) return 0; + + var widgetsHeight = 0; + if (line.widgets) for (var i = 0; i < line.widgets.length; i++) { + if (line.widgets[i].height) widgetsHeight += line.widgets[i].height; + } + + if (wrapping) + return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th; + else + return widgetsHeight + th; + }; + } + + function estimateLineHeights(cm) { + var doc = cm.doc, est = estimateHeight(cm); + doc.iter(function(line) { + var estHeight = est(line); + if (estHeight != line.height) updateLineHeight(line, estHeight); + }); + } + + function themeChanged(cm) { + cm.display.wrapper.className = cm.display.wrapper.className.replace(/\s*cm-s-\S+/g, "") + + cm.options.theme.replace(/(^|\s)\s*/g, " cm-s-"); + clearCaches(cm); + } + + function guttersChanged(cm) { + updateGutters(cm); + regChange(cm); + setTimeout(function(){alignHorizontally(cm);}, 20); + } + + // Rebuild the gutter elements, ensure the margin to the left of the + // code matches their width. + function updateGutters(cm) { + var gutters = cm.display.gutters, specs = cm.options.gutters; + removeChildren(gutters); + for (var i = 0; i < specs.length; ++i) { + var gutterClass = specs[i]; + var gElt = gutters.appendChild(elt("div", null, "CodeMirror-gutter " + gutterClass)); + if (gutterClass == "CodeMirror-linenumbers") { + cm.display.lineGutter = gElt; + gElt.style.width = (cm.display.lineNumWidth || 1) + "px"; + } + } + gutters.style.display = i ? "" : "none"; + updateGutterSpace(cm); + } + + function updateGutterSpace(cm) { + var width = cm.display.gutters.offsetWidth; + cm.display.sizer.style.marginLeft = width + "px"; + } + + // Compute the character length of a line, taking into account + // collapsed ranges (see markText) that might hide parts, and join + // other lines onto it. + function lineLength(line) { + if (line.height == 0) return 0; + var len = line.text.length, merged, cur = line; + while (merged = collapsedSpanAtStart(cur)) { + var found = merged.find(0, true); + cur = found.from.line; + len += found.from.ch - found.to.ch; + } + cur = line; + while (merged = collapsedSpanAtEnd(cur)) { + var found = merged.find(0, true); + len -= cur.text.length - found.from.ch; + cur = found.to.line; + len += cur.text.length - found.to.ch; + } + return len; + } + + // Find the longest line in the document. + function findMaxLine(cm) { + var d = cm.display, doc = cm.doc; + d.maxLine = getLine(doc, doc.first); + d.maxLineLength = lineLength(d.maxLine); + d.maxLineChanged = true; + doc.iter(function(line) { + var len = lineLength(line); + if (len > d.maxLineLength) { + d.maxLineLength = len; + d.maxLine = line; + } + }); + } + + // Make sure the gutters options contains the element + // "CodeMirror-linenumbers" when the lineNumbers option is true. + function setGuttersForLineNumbers(options) { + var found = indexOf(options.gutters, "CodeMirror-linenumbers"); + if (found == -1 && options.lineNumbers) { + options.gutters = options.gutters.concat(["CodeMirror-linenumbers"]); + } else if (found > -1 && !options.lineNumbers) { + options.gutters = options.gutters.slice(0); + options.gutters.splice(found, 1); + } + } + + // SCROLLBARS + + // Prepare DOM reads needed to update the scrollbars. Done in one + // shot to minimize update/measure roundtrips. + function measureForScrollbars(cm) { + var d = cm.display, gutterW = d.gutters.offsetWidth; + var docH = Math.round(cm.doc.height + paddingVert(cm.display)); + return { + clientHeight: d.scroller.clientHeight, + viewHeight: d.wrapper.clientHeight, + scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth, + viewWidth: d.wrapper.clientWidth, + barLeft: cm.options.fixedGutter ? gutterW : 0, + docHeight: docH, + scrollHeight: docH + scrollGap(cm) + d.barHeight, + nativeBarWidth: d.nativeBarWidth, + gutterWidth: gutterW + }; + } + + function NativeScrollbars(place, scroll, cm) { + this.cm = cm; + var vert = this.vert = elt("div", [elt("div", null, null, "min-width: 1px")], "CodeMirror-vscrollbar"); + var horiz = this.horiz = elt("div", [elt("div", null, null, "height: 100%; min-height: 1px")], "CodeMirror-hscrollbar"); + place(vert); place(horiz); + + on(vert, "scroll", function() { + if (vert.clientHeight) scroll(vert.scrollTop, "vertical"); + }); + on(horiz, "scroll", function() { + if (horiz.clientWidth) scroll(horiz.scrollLeft, "horizontal"); + }); + + this.checkedZeroWidth = false; + // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8). + if (ie && ie_version < 8) this.horiz.style.minHeight = this.vert.style.minWidth = "18px"; + } + + NativeScrollbars.prototype = copyObj({ + update: function(measure) { + var needsH = measure.scrollWidth > measure.clientWidth + 1; + var needsV = measure.scrollHeight > measure.clientHeight + 1; + var sWidth = measure.nativeBarWidth; + + if (needsV) { + this.vert.style.display = "block"; + this.vert.style.bottom = needsH ? sWidth + "px" : "0"; + var totalHeight = measure.viewHeight - (needsH ? sWidth : 0); + // A bug in IE8 can cause this value to be negative, so guard it. + this.vert.firstChild.style.height = + Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + "px"; + } else { + this.vert.style.display = ""; + this.vert.firstChild.style.height = "0"; + } + + if (needsH) { + this.horiz.style.display = "block"; + this.horiz.style.right = needsV ? sWidth + "px" : "0"; + this.horiz.style.left = measure.barLeft + "px"; + var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0); + this.horiz.firstChild.style.width = + (measure.scrollWidth - measure.clientWidth + totalWidth) + "px"; + } else { + this.horiz.style.display = ""; + this.horiz.firstChild.style.width = "0"; + } + + if (!this.checkedZeroWidth && measure.clientHeight > 0) { + if (sWidth == 0) this.zeroWidthHack(); + this.checkedZeroWidth = true; + } + + return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}; + }, + setScrollLeft: function(pos) { + if (this.horiz.scrollLeft != pos) this.horiz.scrollLeft = pos; + if (this.disableHoriz) this.enableZeroWidthBar(this.horiz, this.disableHoriz); + }, + setScrollTop: function(pos) { + if (this.vert.scrollTop != pos) this.vert.scrollTop = pos; + if (this.disableVert) this.enableZeroWidthBar(this.vert, this.disableVert); + }, + zeroWidthHack: function() { + var w = mac && !mac_geMountainLion ? "12px" : "18px"; + this.horiz.style.height = this.vert.style.width = w; + this.horiz.style.pointerEvents = this.vert.style.pointerEvents = "none"; + this.disableHoriz = new Delayed; + this.disableVert = new Delayed; + }, + enableZeroWidthBar: function(bar, delay) { + bar.style.pointerEvents = "auto"; + function maybeDisable() { + // To find out whether the scrollbar is still visible, we + // check whether the element under the pixel in the bottom + // left corner of the scrollbar box is the scrollbar box + // itself (when the bar is still visible) or its filler child + // (when the bar is hidden). If it is still visible, we keep + // it enabled, if it's hidden, we disable pointer events. + var box = bar.getBoundingClientRect(); + var elt = document.elementFromPoint(box.left + 1, box.bottom - 1); + if (elt != bar) bar.style.pointerEvents = "none"; + else delay.set(1000, maybeDisable); + } + delay.set(1000, maybeDisable); + }, + clear: function() { + var parent = this.horiz.parentNode; + parent.removeChild(this.horiz); + parent.removeChild(this.vert); + } + }, NativeScrollbars.prototype); + + function NullScrollbars() {} + + NullScrollbars.prototype = copyObj({ + update: function() { return {bottom: 0, right: 0}; }, + setScrollLeft: function() {}, + setScrollTop: function() {}, + clear: function() {} + }, NullScrollbars.prototype); + + CodeMirror.scrollbarModel = {"native": NativeScrollbars, "null": NullScrollbars}; + + function initScrollbars(cm) { + if (cm.display.scrollbars) { + cm.display.scrollbars.clear(); + if (cm.display.scrollbars.addClass) + rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); + } + + cm.display.scrollbars = new CodeMirror.scrollbarModel[cm.options.scrollbarStyle](function(node) { + cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller); + // Prevent clicks in the scrollbars from killing focus + on(node, "mousedown", function() { + if (cm.state.focused) setTimeout(function() { cm.display.input.focus(); }, 0); + }); + node.setAttribute("cm-not-content", "true"); + }, function(pos, axis) { + if (axis == "horizontal") setScrollLeft(cm, pos); + else setScrollTop(cm, pos); + }, cm); + if (cm.display.scrollbars.addClass) + addClass(cm.display.wrapper, cm.display.scrollbars.addClass); + } + + function updateScrollbars(cm, measure) { + if (!measure) measure = measureForScrollbars(cm); + var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight; + updateScrollbarsInner(cm, measure); + for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) { + if (startWidth != cm.display.barWidth && cm.options.lineWrapping) + updateHeightsInViewport(cm); + updateScrollbarsInner(cm, measureForScrollbars(cm)); + startWidth = cm.display.barWidth; startHeight = cm.display.barHeight; + } + } + + // Re-synchronize the fake scrollbars with the actual size of the + // content. + function updateScrollbarsInner(cm, measure) { + var d = cm.display; + var sizes = d.scrollbars.update(measure); + + d.sizer.style.paddingRight = (d.barWidth = sizes.right) + "px"; + d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + "px"; + d.heightForcer.style.borderBottom = sizes.bottom + "px solid transparent" + + if (sizes.right && sizes.bottom) { + d.scrollbarFiller.style.display = "block"; + d.scrollbarFiller.style.height = sizes.bottom + "px"; + d.scrollbarFiller.style.width = sizes.right + "px"; + } else d.scrollbarFiller.style.display = ""; + if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) { + d.gutterFiller.style.display = "block"; + d.gutterFiller.style.height = sizes.bottom + "px"; + d.gutterFiller.style.width = measure.gutterWidth + "px"; + } else d.gutterFiller.style.display = ""; + } + + // Compute the lines that are visible in a given viewport (defaults + // the the current scroll position). viewport may contain top, + // height, and ensure (see op.scrollToPos) properties. + function visibleLines(display, doc, viewport) { + var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop; + top = Math.floor(top - paddingTop(display)); + var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight; + + var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom); + // Ensure is a {from: {line, ch}, to: {line, ch}} object, and + // forces those lines into the viewport (if possible). + if (viewport && viewport.ensure) { + var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line; + if (ensureFrom < from) { + from = ensureFrom; + to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight); + } else if (Math.min(ensureTo, doc.lastLine()) >= to) { + from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight); + to = ensureTo; + } + } + return {from: from, to: Math.max(to, from + 1)}; + } + + // LINE NUMBERS + + // Re-align line numbers and gutter marks to compensate for + // horizontal scrolling. + function alignHorizontally(cm) { + var display = cm.display, view = display.view; + if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) return; + var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft; + var gutterW = display.gutters.offsetWidth, left = comp + "px"; + for (var i = 0; i < view.length; i++) if (!view[i].hidden) { + if (cm.options.fixedGutter && view[i].gutter) + view[i].gutter.style.left = left; + var align = view[i].alignable; + if (align) for (var j = 0; j < align.length; j++) + align[j].style.left = left; + } + if (cm.options.fixedGutter) + display.gutters.style.left = (comp + gutterW) + "px"; + } + + // Used to ensure that the line number gutter is still the right + // size for the current document size. Returns true when an update + // is needed. + function maybeUpdateLineNumberWidth(cm) { + if (!cm.options.lineNumbers) return false; + var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display; + if (last.length != display.lineNumChars) { + var test = display.measure.appendChild(elt("div", [elt("div", last)], + "CodeMirror-linenumber CodeMirror-gutter-elt")); + var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW; + display.lineGutter.style.width = ""; + display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1; + display.lineNumWidth = display.lineNumInnerWidth + padding; + display.lineNumChars = display.lineNumInnerWidth ? last.length : -1; + display.lineGutter.style.width = display.lineNumWidth + "px"; + updateGutterSpace(cm); + return true; + } + return false; + } + + function lineNumberFor(options, i) { + return String(options.lineNumberFormatter(i + options.firstLineNumber)); + } + + // Computes display.scroller.scrollLeft + display.gutters.offsetWidth, + // but using getBoundingClientRect to get a sub-pixel-accurate + // result. + function compensateForHScroll(display) { + return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left; + } + + // DISPLAY DRAWING + + function DisplayUpdate(cm, viewport, force) { + var display = cm.display; + + this.viewport = viewport; + // Store some values that we'll need later (but don't want to force a relayout for) + this.visible = visibleLines(display, cm.doc, viewport); + this.editorIsHidden = !display.wrapper.offsetWidth; + this.wrapperHeight = display.wrapper.clientHeight; + this.wrapperWidth = display.wrapper.clientWidth; + this.oldDisplayWidth = displayWidth(cm); + this.force = force; + this.dims = getDimensions(cm); + this.events = []; + } + + DisplayUpdate.prototype.signal = function(emitter, type) { + if (hasHandler(emitter, type)) + this.events.push(arguments); + }; + DisplayUpdate.prototype.finish = function() { + for (var i = 0; i < this.events.length; i++) + signal.apply(null, this.events[i]); + }; + + function maybeClipScrollbars(cm) { + var display = cm.display; + if (!display.scrollbarsClipped && display.scroller.offsetWidth) { + display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth; + display.heightForcer.style.height = scrollGap(cm) + "px"; + display.sizer.style.marginBottom = -display.nativeBarWidth + "px"; + display.sizer.style.borderRightWidth = scrollGap(cm) + "px"; + display.scrollbarsClipped = true; + } + } + + // Does the actual updating of the line display. Bails out + // (returning false) when there is nothing to be done and forced is + // false. + function updateDisplayIfNeeded(cm, update) { + var display = cm.display, doc = cm.doc; + + if (update.editorIsHidden) { + resetView(cm); + return false; + } + + // Bail out if the visible area is already rendered and nothing changed. + if (!update.force && + update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) && + display.renderedView == display.view && countDirtyView(cm) == 0) + return false; + + if (maybeUpdateLineNumberWidth(cm)) { + resetView(cm); + update.dims = getDimensions(cm); + } + + // Compute a suitable new viewport (from & to) + var end = doc.first + doc.size; + var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first); + var to = Math.min(end, update.visible.to + cm.options.viewportMargin); + if (display.viewFrom < from && from - display.viewFrom < 20) from = Math.max(doc.first, display.viewFrom); + if (display.viewTo > to && display.viewTo - to < 20) to = Math.min(end, display.viewTo); + if (sawCollapsedSpans) { + from = visualLineNo(cm.doc, from); + to = visualLineEndNo(cm.doc, to); + } + + var different = from != display.viewFrom || to != display.viewTo || + display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth; + adjustView(cm, from, to); + + display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom)); + // Position the mover div to align with the current scroll position + cm.display.mover.style.top = display.viewOffset + "px"; + + var toUpdate = countDirtyView(cm); + if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view && + (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo)) + return false; + + // For big changes, we hide the enclosing element during the + // update, since that speeds up the operations on most browsers. + var focused = activeElt(); + if (toUpdate > 4) display.lineDiv.style.display = "none"; + patchDisplay(cm, display.updateLineNumbers, update.dims); + if (toUpdate > 4) display.lineDiv.style.display = ""; + display.renderedView = display.view; + // There might have been a widget with a focused element that got + // hidden or updated, if so re-focus it. + if (focused && activeElt() != focused && focused.offsetHeight) focused.focus(); + + // Prevent selection and cursors from interfering with the scroll + // width and height. + removeChildren(display.cursorDiv); + removeChildren(display.selectionDiv); + display.gutters.style.height = display.sizer.style.minHeight = 0; + + if (different) { + display.lastWrapHeight = update.wrapperHeight; + display.lastWrapWidth = update.wrapperWidth; + startWorker(cm, 400); + } + + display.updateLineNumbers = null; + + return true; + } + + function postUpdateDisplay(cm, update) { + var viewport = update.viewport; + for (var first = true;; first = false) { + if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) { + // Clip forced viewport to actual scrollable area. + if (viewport && viewport.top != null) + viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; + // Updated line heights might result in the drawn area not + // actually covering the viewport. Keep looping until it does. + update.visible = visibleLines(cm.display, cm.doc, viewport); + if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo) + break; + } + if (!updateDisplayIfNeeded(cm, update)) break; + updateHeightsInViewport(cm); + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + setDocumentHeight(cm, barMeasure); + updateScrollbars(cm, barMeasure); + } + + update.signal(cm, "update", cm); + if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) { + update.signal(cm, "viewportChange", cm, cm.display.viewFrom, cm.display.viewTo); + cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo; + } + } + + function updateDisplaySimple(cm, viewport) { + var update = new DisplayUpdate(cm, viewport); + if (updateDisplayIfNeeded(cm, update)) { + updateHeightsInViewport(cm); + postUpdateDisplay(cm, update); + var barMeasure = measureForScrollbars(cm); + updateSelection(cm); + setDocumentHeight(cm, barMeasure); + updateScrollbars(cm, barMeasure); + update.finish(); + } + } + + function setDocumentHeight(cm, measure) { + cm.display.sizer.style.minHeight = measure.docHeight + "px"; + cm.display.heightForcer.style.top = measure.docHeight + "px"; + cm.display.gutters.style.height = Math.max(measure.docHeight + cm.display.barHeight + scrollGap(cm), + measure.clientHeight) + "px"; + } + + // Read the actual heights of the rendered lines, and update their + // stored heights to match. + function updateHeightsInViewport(cm) { + var display = cm.display; + var prevBottom = display.lineDiv.offsetTop; + for (var i = 0; i < display.view.length; i++) { + var cur = display.view[i], height; + if (cur.hidden) continue; + if (ie && ie_version < 8) { + var bot = cur.node.offsetTop + cur.node.offsetHeight; + height = bot - prevBottom; + prevBottom = bot; + } else { + var box = cur.node.getBoundingClientRect(); + height = box.bottom - box.top; + } + var diff = cur.line.height - height; + if (height < 2) height = textHeight(display); + if (diff > .001 || diff < -.001) { + updateLineHeight(cur.line, height); + updateWidgetHeight(cur.line); + if (cur.rest) for (var j = 0; j < cur.rest.length; j++) + updateWidgetHeight(cur.rest[j]); + } + } + } + + // Read and store the height of line widgets associated with the + // given line. + function updateWidgetHeight(line) { + if (line.widgets) for (var i = 0; i < line.widgets.length; ++i) + line.widgets[i].height = line.widgets[i].node.parentNode.offsetHeight; + } + + // Do a bulk-read of the DOM positions and sizes needed to draw the + // view, so that we don't interleave reading and writing to the DOM. + function getDimensions(cm) { + var d = cm.display, left = {}, width = {}; + var gutterLeft = d.gutters.clientLeft; + for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) { + left[cm.options.gutters[i]] = n.offsetLeft + n.clientLeft + gutterLeft; + width[cm.options.gutters[i]] = n.clientWidth; + } + return {fixedPos: compensateForHScroll(d), + gutterTotalWidth: d.gutters.offsetWidth, + gutterLeft: left, + gutterWidth: width, + wrapperWidth: d.wrapper.clientWidth}; + } + + // Sync the actual display DOM structure with display.view, removing + // nodes for lines that are no longer in view, and creating the ones + // that are not there yet, and updating the ones that are out of + // date. + function patchDisplay(cm, updateNumbersFrom, dims) { + var display = cm.display, lineNumbers = cm.options.lineNumbers; + var container = display.lineDiv, cur = container.firstChild; + + function rm(node) { + var next = node.nextSibling; + // Works around a throw-scroll bug in OS X Webkit + if (webkit && mac && cm.display.currentWheelTarget == node) + node.style.display = "none"; + else + node.parentNode.removeChild(node); + return next; + } + + var view = display.view, lineN = display.viewFrom; + // Loop over the elements in the view, syncing cur (the DOM nodes + // in display.lineDiv) with the view as we go. + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (lineView.hidden) { + } else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet + var node = buildLineElement(cm, lineView, lineN, dims); + container.insertBefore(node, cur); + } else { // Already drawn + while (cur != lineView.node) cur = rm(cur); + var updateNumber = lineNumbers && updateNumbersFrom != null && + updateNumbersFrom <= lineN && lineView.lineNumber; + if (lineView.changes) { + if (indexOf(lineView.changes, "gutter") > -1) updateNumber = false; + updateLineForChanges(cm, lineView, lineN, dims); + } + if (updateNumber) { + removeChildren(lineView.lineNumber); + lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN))); + } + cur = lineView.node.nextSibling; + } + lineN += lineView.size; + } + while (cur) cur = rm(cur); + } + + // When an aspect of a line changes, a string is added to + // lineView.changes. This updates the relevant part of the line's + // DOM structure. + function updateLineForChanges(cm, lineView, lineN, dims) { + for (var j = 0; j < lineView.changes.length; j++) { + var type = lineView.changes[j]; + if (type == "text") updateLineText(cm, lineView); + else if (type == "gutter") updateLineGutter(cm, lineView, lineN, dims); + else if (type == "class") updateLineClasses(lineView); + else if (type == "widget") updateLineWidgets(cm, lineView, dims); + } + lineView.changes = null; + } + + // Lines with gutter elements, widgets or a background class need to + // be wrapped, and have the extra elements added to the wrapper div + function ensureLineWrapped(lineView) { + if (lineView.node == lineView.text) { + lineView.node = elt("div", null, null, "position: relative"); + if (lineView.text.parentNode) + lineView.text.parentNode.replaceChild(lineView.node, lineView.text); + lineView.node.appendChild(lineView.text); + if (ie && ie_version < 8) lineView.node.style.zIndex = 2; + } + return lineView.node; + } + + function updateLineBackground(lineView) { + var cls = lineView.bgClass ? lineView.bgClass + " " + (lineView.line.bgClass || "") : lineView.line.bgClass; + if (cls) cls += " CodeMirror-linebackground"; + if (lineView.background) { + if (cls) lineView.background.className = cls; + else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; } + } else if (cls) { + var wrap = ensureLineWrapped(lineView); + lineView.background = wrap.insertBefore(elt("div", null, cls), wrap.firstChild); + } + } + + // Wrapper around buildLineContent which will reuse the structure + // in display.externalMeasured when possible. + function getLineContent(cm, lineView) { + var ext = cm.display.externalMeasured; + if (ext && ext.line == lineView.line) { + cm.display.externalMeasured = null; + lineView.measure = ext.measure; + return ext.built; + } + return buildLineContent(cm, lineView); + } + + // Redraw the line's text. Interacts with the background and text + // classes because the mode may output tokens that influence these + // classes. + function updateLineText(cm, lineView) { + var cls = lineView.text.className; + var built = getLineContent(cm, lineView); + if (lineView.text == lineView.node) lineView.node = built.pre; + lineView.text.parentNode.replaceChild(built.pre, lineView.text); + lineView.text = built.pre; + if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) { + lineView.bgClass = built.bgClass; + lineView.textClass = built.textClass; + updateLineClasses(lineView); + } else if (cls) { + lineView.text.className = cls; + } + } + + function updateLineClasses(lineView) { + updateLineBackground(lineView); + if (lineView.line.wrapClass) + ensureLineWrapped(lineView).className = lineView.line.wrapClass; + else if (lineView.node != lineView.text) + lineView.node.className = ""; + var textClass = lineView.textClass ? lineView.textClass + " " + (lineView.line.textClass || "") : lineView.line.textClass; + lineView.text.className = textClass || ""; + } + + function updateLineGutter(cm, lineView, lineN, dims) { + if (lineView.gutter) { + lineView.node.removeChild(lineView.gutter); + lineView.gutter = null; + } + if (lineView.gutterBackground) { + lineView.node.removeChild(lineView.gutterBackground); + lineView.gutterBackground = null; + } + if (lineView.line.gutterClass) { + var wrap = ensureLineWrapped(lineView); + lineView.gutterBackground = elt("div", null, "CodeMirror-gutter-background " + lineView.line.gutterClass, + "left: " + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + + "px; width: " + dims.gutterTotalWidth + "px"); + wrap.insertBefore(lineView.gutterBackground, lineView.text); + } + var markers = lineView.line.gutterMarkers; + if (cm.options.lineNumbers || markers) { + var wrap = ensureLineWrapped(lineView); + var gutterWrap = lineView.gutter = elt("div", null, "CodeMirror-gutter-wrapper", "left: " + + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + "px"); + cm.display.input.setUneditable(gutterWrap); + wrap.insertBefore(gutterWrap, lineView.text); + if (lineView.line.gutterClass) + gutterWrap.className += " " + lineView.line.gutterClass; + if (cm.options.lineNumbers && (!markers || !markers["CodeMirror-linenumbers"])) + lineView.lineNumber = gutterWrap.appendChild( + elt("div", lineNumberFor(cm.options, lineN), + "CodeMirror-linenumber CodeMirror-gutter-elt", + "left: " + dims.gutterLeft["CodeMirror-linenumbers"] + "px; width: " + + cm.display.lineNumInnerWidth + "px")); + if (markers) for (var k = 0; k < cm.options.gutters.length; ++k) { + var id = cm.options.gutters[k], found = markers.hasOwnProperty(id) && markers[id]; + if (found) + gutterWrap.appendChild(elt("div", [found], "CodeMirror-gutter-elt", "left: " + + dims.gutterLeft[id] + "px; width: " + dims.gutterWidth[id] + "px")); + } + } + } + + function updateLineWidgets(cm, lineView, dims) { + if (lineView.alignable) lineView.alignable = null; + for (var node = lineView.node.firstChild, next; node; node = next) { + var next = node.nextSibling; + if (node.className == "CodeMirror-linewidget") + lineView.node.removeChild(node); + } + insertLineWidgets(cm, lineView, dims); + } + + // Build a line's DOM representation from scratch + function buildLineElement(cm, lineView, lineN, dims) { + var built = getLineContent(cm, lineView); + lineView.text = lineView.node = built.pre; + if (built.bgClass) lineView.bgClass = built.bgClass; + if (built.textClass) lineView.textClass = built.textClass; + + updateLineClasses(lineView); + updateLineGutter(cm, lineView, lineN, dims); + insertLineWidgets(cm, lineView, dims); + return lineView.node; + } + + // A lineView may contain multiple logical lines (when merged by + // collapsed spans). The widgets for all of them need to be drawn. + function insertLineWidgets(cm, lineView, dims) { + insertLineWidgetsFor(cm, lineView.line, lineView, dims, true); + if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) + insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); + } + + function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) { + if (!line.widgets) return; + var wrap = ensureLineWrapped(lineView); + for (var i = 0, ws = line.widgets; i < ws.length; ++i) { + var widget = ws[i], node = elt("div", [widget.node], "CodeMirror-linewidget"); + if (!widget.handleMouseEvents) node.setAttribute("cm-ignore-events", "true"); + positionLineWidget(widget, node, lineView, dims); + cm.display.input.setUneditable(node); + if (allowAbove && widget.above) + wrap.insertBefore(node, lineView.gutter || lineView.text); + else + wrap.appendChild(node); + signalLater(widget, "redraw"); + } + } + + function positionLineWidget(widget, node, lineView, dims) { + if (widget.noHScroll) { + (lineView.alignable || (lineView.alignable = [])).push(node); + var width = dims.wrapperWidth; + node.style.left = dims.fixedPos + "px"; + if (!widget.coverGutter) { + width -= dims.gutterTotalWidth; + node.style.paddingLeft = dims.gutterTotalWidth + "px"; + } + node.style.width = width + "px"; + } + if (widget.coverGutter) { + node.style.zIndex = 5; + node.style.position = "relative"; + if (!widget.noHScroll) node.style.marginLeft = -dims.gutterTotalWidth + "px"; + } + } + + // POSITION OBJECT + + // A Pos instance represents a position within the text. + var Pos = CodeMirror.Pos = function(line, ch) { + if (!(this instanceof Pos)) return new Pos(line, ch); + this.line = line; this.ch = ch; + }; + + // Compare two positions, return 0 if they are the same, a negative + // number when a is less, and a positive number otherwise. + var cmp = CodeMirror.cmpPos = function(a, b) { return a.line - b.line || a.ch - b.ch; }; + + function copyPos(x) {return Pos(x.line, x.ch);} + function maxPos(a, b) { return cmp(a, b) < 0 ? b : a; } + function minPos(a, b) { return cmp(a, b) < 0 ? a : b; } + + // INPUT HANDLING + + function ensureFocus(cm) { + if (!cm.state.focused) { cm.display.input.focus(); onFocus(cm); } + } + + // This will be set to an array of strings when copying, so that, + // when pasting, we know what kind of selections the copied text + // was made out of. + var lastCopied = null; + + function applyTextInput(cm, inserted, deleted, sel, origin) { + var doc = cm.doc; + cm.display.shift = false; + if (!sel) sel = doc.sel; + + var paste = cm.state.pasteIncoming || origin == "paste"; + var textLines = doc.splitLines(inserted), multiPaste = null; + // When pasing N lines into N selections, insert one line per selection + if (paste && sel.ranges.length > 1) { + if (lastCopied && lastCopied.join("\n") == inserted) { + if (sel.ranges.length % lastCopied.length == 0) { + multiPaste = []; + for (var i = 0; i < lastCopied.length; i++) + multiPaste.push(doc.splitLines(lastCopied[i])); + } + } else if (textLines.length == sel.ranges.length) { + multiPaste = map(textLines, function(l) { return [l]; }); + } + } + + // Normal behavior is to insert the new text into every selection + for (var i = sel.ranges.length - 1; i >= 0; i--) { + var range = sel.ranges[i]; + var from = range.from(), to = range.to(); + if (range.empty()) { + if (deleted && deleted > 0) // Handle deletion + from = Pos(from.line, from.ch - deleted); + else if (cm.state.overwrite && !paste) // Handle overwrite + to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); + } + var updateInput = cm.curOp.updateInput; + var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i % multiPaste.length] : textLines, + origin: origin || (paste ? "paste" : cm.state.cutIncoming ? "cut" : "+input")}; + makeChange(cm.doc, changeEvent); + signalLater(cm, "inputRead", cm, changeEvent); + } + if (inserted && !paste) + triggerElectric(cm, inserted); + + ensureCursorVisible(cm); + cm.curOp.updateInput = updateInput; + cm.curOp.typing = true; + cm.state.pasteIncoming = cm.state.cutIncoming = false; + } + + function handlePaste(e, cm) { + var pasted = e.clipboardData && e.clipboardData.getData("text/plain"); + if (pasted) { + e.preventDefault(); + if (!cm.isReadOnly() && !cm.options.disableInput) + runInOp(cm, function() { applyTextInput(cm, pasted, 0, null, "paste"); }); + return true; + } + } + + function triggerElectric(cm, inserted) { + // When an 'electric' character is inserted, immediately trigger a reindent + if (!cm.options.electricChars || !cm.options.smartIndent) return; + var sel = cm.doc.sel; + + for (var i = sel.ranges.length - 1; i >= 0; i--) { + var range = sel.ranges[i]; + if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) continue; + var mode = cm.getModeAt(range.head); + var indented = false; + if (mode.electricChars) { + for (var j = 0; j < mode.electricChars.length; j++) + if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) { + indented = indentLine(cm, range.head.line, "smart"); + break; + } + } else if (mode.electricInput) { + if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch))) + indented = indentLine(cm, range.head.line, "smart"); + } + if (indented) signalLater(cm, "electricInput", cm, range.head.line); + } + } + + function copyableRanges(cm) { + var text = [], ranges = []; + for (var i = 0; i < cm.doc.sel.ranges.length; i++) { + var line = cm.doc.sel.ranges[i].head.line; + var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)}; + ranges.push(lineRange); + text.push(cm.getRange(lineRange.anchor, lineRange.head)); + } + return {text: text, ranges: ranges}; + } + + function disableBrowserMagic(field) { + field.setAttribute("autocorrect", "off"); + field.setAttribute("autocapitalize", "off"); + field.setAttribute("spellcheck", "false"); + } + + // TEXTAREA INPUT STYLE + + function TextareaInput(cm) { + this.cm = cm; + // See input.poll and input.reset + this.prevInput = ""; + + // Flag that indicates whether we expect input to appear real soon + // now (after some event like 'keypress' or 'input') and are + // polling intensively. + this.pollingFast = false; + // Self-resetting timeout for the poller + this.polling = new Delayed(); + // Tracks when input.reset has punted to just putting a short + // string into the textarea instead of the full selection. + this.inaccurateSelection = false; + // Used to work around IE issue with selection being forgotten when focus moves away from textarea + this.hasSelection = false; + this.composing = null; + }; + + function hiddenTextarea() { + var te = elt("textarea", null, null, "position: absolute; padding: 0; width: 1px; height: 1em; outline: none"); + var div = elt("div", [te], null, "overflow: hidden; position: relative; width: 3px; height: 0px;"); + // The textarea is kept positioned near the cursor to prevent the + // fact that it'll be scrolled into view on input from scrolling + // our fake cursor out of view. On webkit, when wrap=off, paste is + // very slow. So make the area wide instead. + if (webkit) te.style.width = "1000px"; + else te.setAttribute("wrap", "off"); + // If border: 0; -- iOS fails to open keyboard (issue #1287) + if (ios) te.style.border = "1px solid black"; + disableBrowserMagic(te); + return div; + } + + TextareaInput.prototype = copyObj({ + init: function(display) { + var input = this, cm = this.cm; + + // Wraps and hides input textarea + var div = this.wrapper = hiddenTextarea(); + // The semihidden textarea that is focused when the editor is + // focused, and receives input. + var te = this.textarea = div.firstChild; + display.wrapper.insertBefore(div, display.wrapper.firstChild); + + // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore) + if (ios) te.style.width = "0px"; + + on(te, "input", function() { + if (ie && ie_version >= 9 && input.hasSelection) input.hasSelection = null; + input.poll(); + }); + + on(te, "paste", function(e) { + if (signalDOMEvent(cm, e) || handlePaste(e, cm)) return + + cm.state.pasteIncoming = true; + input.fastPoll(); + }); + + function prepareCopyCut(e) { + if (signalDOMEvent(cm, e)) return + if (cm.somethingSelected()) { + lastCopied = cm.getSelections(); + if (input.inaccurateSelection) { + input.prevInput = ""; + input.inaccurateSelection = false; + te.value = lastCopied.join("\n"); + selectInput(te); + } + } else if (!cm.options.lineWiseCopyCut) { + return; + } else { + var ranges = copyableRanges(cm); + lastCopied = ranges.text; + if (e.type == "cut") { + cm.setSelections(ranges.ranges, null, sel_dontScroll); + } else { + input.prevInput = ""; + te.value = ranges.text.join("\n"); + selectInput(te); + } + } + if (e.type == "cut") cm.state.cutIncoming = true; + } + on(te, "cut", prepareCopyCut); + on(te, "copy", prepareCopyCut); + + on(display.scroller, "paste", function(e) { + if (eventInWidget(display, e) || signalDOMEvent(cm, e)) return; + cm.state.pasteIncoming = true; + input.focus(); + }); + + // Prevent normal selection in the editor (we handle our own) + on(display.lineSpace, "selectstart", function(e) { + if (!eventInWidget(display, e)) e_preventDefault(e); + }); + + on(te, "compositionstart", function() { + var start = cm.getCursor("from"); + if (input.composing) input.composing.range.clear() + input.composing = { + start: start, + range: cm.markText(start, cm.getCursor("to"), {className: "CodeMirror-composing"}) + }; + }); + on(te, "compositionend", function() { + if (input.composing) { + input.poll(); + input.composing.range.clear(); + input.composing = null; + } + }); + }, + + prepareSelection: function() { + // Redraw the selection and/or cursor + var cm = this.cm, display = cm.display, doc = cm.doc; + var result = prepareSelection(cm); + + // Move the hidden textarea near the cursor to prevent scrolling artifacts + if (cm.options.moveInputWithCursor) { + var headPos = cursorCoords(cm, doc.sel.primary().head, "div"); + var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect(); + result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10, + headPos.top + lineOff.top - wrapOff.top)); + result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10, + headPos.left + lineOff.left - wrapOff.left)); + } + + return result; + }, + + showSelection: function(drawn) { + var cm = this.cm, display = cm.display; + removeChildrenAndAdd(display.cursorDiv, drawn.cursors); + removeChildrenAndAdd(display.selectionDiv, drawn.selection); + if (drawn.teTop != null) { + this.wrapper.style.top = drawn.teTop + "px"; + this.wrapper.style.left = drawn.teLeft + "px"; + } + }, + + // Reset the input to correspond to the selection (or to be empty, + // when not typing and nothing is selected) + reset: function(typing) { + if (this.contextMenuPending) return; + var minimal, selected, cm = this.cm, doc = cm.doc; + if (cm.somethingSelected()) { + this.prevInput = ""; + var range = doc.sel.primary(); + minimal = hasCopyEvent && + (range.to().line - range.from().line > 100 || (selected = cm.getSelection()).length > 1000); + var content = minimal ? "-" : selected || cm.getSelection(); + this.textarea.value = content; + if (cm.state.focused) selectInput(this.textarea); + if (ie && ie_version >= 9) this.hasSelection = content; + } else if (!typing) { + this.prevInput = this.textarea.value = ""; + if (ie && ie_version >= 9) this.hasSelection = null; + } + this.inaccurateSelection = minimal; + }, + + getField: function() { return this.textarea; }, + + supportsTouch: function() { return false; }, + + focus: function() { + if (this.cm.options.readOnly != "nocursor" && (!mobile || activeElt() != this.textarea)) { + try { this.textarea.focus(); } + catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM + } + }, + + blur: function() { this.textarea.blur(); }, + + resetPosition: function() { + this.wrapper.style.top = this.wrapper.style.left = 0; + }, + + receivedFocus: function() { this.slowPoll(); }, + + // Poll for input changes, using the normal rate of polling. This + // runs as long as the editor is focused. + slowPoll: function() { + var input = this; + if (input.pollingFast) return; + input.polling.set(this.cm.options.pollInterval, function() { + input.poll(); + if (input.cm.state.focused) input.slowPoll(); + }); + }, + + // When an event has just come in that is likely to add or change + // something in the input textarea, we poll faster, to ensure that + // the change appears on the screen quickly. + fastPoll: function() { + var missed = false, input = this; + input.pollingFast = true; + function p() { + var changed = input.poll(); + if (!changed && !missed) {missed = true; input.polling.set(60, p);} + else {input.pollingFast = false; input.slowPoll();} + } + input.polling.set(20, p); + }, + + // Read input from the textarea, and update the document to match. + // When something is selected, it is present in the textarea, and + // selected (unless it is huge, in which case a placeholder is + // used). When nothing is selected, the cursor sits after previously + // seen text (can be empty), which is stored in prevInput (we must + // not reset the textarea when typing, because that breaks IME). + poll: function() { + var cm = this.cm, input = this.textarea, prevInput = this.prevInput; + // Since this is called a *lot*, try to bail out as cheaply as + // possible when it is clear that nothing happened. hasSelection + // will be the case when there is a lot of text in the textarea, + // in which case reading its value would be expensive. + if (this.contextMenuPending || !cm.state.focused || + (hasSelection(input) && !prevInput && !this.composing) || + cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq) + return false; + + var text = input.value; + // If nothing changed, bail. + if (text == prevInput && !cm.somethingSelected()) return false; + // Work around nonsensical selection resetting in IE9/10, and + // inexplicable appearance of private area unicode characters on + // some key combos in Mac (#2689). + if (ie && ie_version >= 9 && this.hasSelection === text || + mac && /[\uf700-\uf7ff]/.test(text)) { + cm.display.input.reset(); + return false; + } + + if (cm.doc.sel == cm.display.selForContextMenu) { + var first = text.charCodeAt(0); + if (first == 0x200b && !prevInput) prevInput = "\u200b"; + if (first == 0x21da) { this.reset(); return this.cm.execCommand("undo"); } + } + // Find the part of the input that is actually new + var same = 0, l = Math.min(prevInput.length, text.length); + while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) ++same; + + var self = this; + runInOp(cm, function() { + applyTextInput(cm, text.slice(same), prevInput.length - same, + null, self.composing ? "*compose" : null); + + // Don't leave long text in the textarea, since it makes further polling slow + if (text.length > 1000 || text.indexOf("\n") > -1) input.value = self.prevInput = ""; + else self.prevInput = text; + + if (self.composing) { + self.composing.range.clear(); + self.composing.range = cm.markText(self.composing.start, cm.getCursor("to"), + {className: "CodeMirror-composing"}); + } + }); + return true; + }, + + ensurePolled: function() { + if (this.pollingFast && this.poll()) this.pollingFast = false; + }, + + onKeyPress: function() { + if (ie && ie_version >= 9) this.hasSelection = null; + this.fastPoll(); + }, + + onContextMenu: function(e) { + var input = this, cm = input.cm, display = cm.display, te = input.textarea; + var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop; + if (!pos || presto) return; // Opera is difficult. + + // Reset the current text selection only if the click is done outside of the selection + // and 'resetSelectionOnContextMenu' option is true. + var reset = cm.options.resetSelectionOnContextMenu; + if (reset && cm.doc.sel.contains(pos) == -1) + operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); + + var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText; + input.wrapper.style.cssText = "position: absolute" + var wrapperBox = input.wrapper.getBoundingClientRect() + te.style.cssText = "position: absolute; width: 30px; height: 30px; top: " + (e.clientY - wrapperBox.top - 5) + + "px; left: " + (e.clientX - wrapperBox.left - 5) + "px; z-index: 1000; background: " + + (ie ? "rgba(255, 255, 255, .05)" : "transparent") + + "; outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);"; + if (webkit) var oldScrollY = window.scrollY; // Work around Chrome issue (#2712) + display.input.focus(); + if (webkit) window.scrollTo(null, oldScrollY); + display.input.reset(); + // Adds "Select all" to context menu in FF + if (!cm.somethingSelected()) te.value = input.prevInput = " "; + input.contextMenuPending = true; + display.selForContextMenu = cm.doc.sel; + clearTimeout(display.detectingSelectAll); + + // Select-all will be greyed out if there's nothing to select, so + // this adds a zero-width space so that we can later check whether + // it got selected. + function prepareSelectAllHack() { + if (te.selectionStart != null) { + var selected = cm.somethingSelected(); + var extval = "\u200b" + (selected ? te.value : ""); + te.value = "\u21da"; // Used to catch context-menu undo + te.value = extval; + input.prevInput = selected ? "" : "\u200b"; + te.selectionStart = 1; te.selectionEnd = extval.length; + // Re-set this, in case some other handler touched the + // selection in the meantime. + display.selForContextMenu = cm.doc.sel; + } + } + function rehide() { + input.contextMenuPending = false; + input.wrapper.style.cssText = oldWrapperCSS + te.style.cssText = oldCSS; + if (ie && ie_version < 9) display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); + + // Try to detect the user choosing select-all + if (te.selectionStart != null) { + if (!ie || (ie && ie_version < 9)) prepareSelectAllHack(); + var i = 0, poll = function() { + if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 && + te.selectionEnd > 0 && input.prevInput == "\u200b") + operation(cm, commands.selectAll)(cm); + else if (i++ < 10) display.detectingSelectAll = setTimeout(poll, 500); + else display.input.reset(); + }; + display.detectingSelectAll = setTimeout(poll, 200); + } + } + + if (ie && ie_version >= 9) prepareSelectAllHack(); + if (captureRightClick) { + e_stop(e); + var mouseup = function() { + off(window, "mouseup", mouseup); + setTimeout(rehide, 20); + }; + on(window, "mouseup", mouseup); + } else { + setTimeout(rehide, 50); + } + }, + + readOnlyChanged: function(val) { + if (!val) this.reset(); + }, + + setUneditable: nothing, + + needsContentAttribute: false + }, TextareaInput.prototype); + + // CONTENTEDITABLE INPUT STYLE + + function ContentEditableInput(cm) { + this.cm = cm; + this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null; + this.polling = new Delayed(); + this.gracePeriod = false; + } + + ContentEditableInput.prototype = copyObj({ + init: function(display) { + var input = this, cm = input.cm; + var div = input.div = display.lineDiv; + disableBrowserMagic(div); + + on(div, "paste", function(e) { + if (!signalDOMEvent(cm, e)) handlePaste(e, cm); + }) + + on(div, "compositionstart", function(e) { + var data = e.data; + input.composing = {sel: cm.doc.sel, data: data, startData: data}; + if (!data) return; + var prim = cm.doc.sel.primary(); + var line = cm.getLine(prim.head.line); + var found = line.indexOf(data, Math.max(0, prim.head.ch - data.length)); + if (found > -1 && found <= prim.head.ch) + input.composing.sel = simpleSelection(Pos(prim.head.line, found), + Pos(prim.head.line, found + data.length)); + }); + on(div, "compositionupdate", function(e) { + input.composing.data = e.data; + }); + on(div, "compositionend", function(e) { + var ours = input.composing; + if (!ours) return; + if (e.data != ours.startData && !/\u200b/.test(e.data)) + ours.data = e.data; + // Need a small delay to prevent other code (input event, + // selection polling) from doing damage when fired right after + // compositionend. + setTimeout(function() { + if (!ours.handled) + input.applyComposition(ours); + if (input.composing == ours) + input.composing = null; + }, 50); + }); + + on(div, "touchstart", function() { + input.forceCompositionEnd(); + }); + + on(div, "input", function() { + if (input.composing) return; + if (cm.isReadOnly() || !input.pollContent()) + runInOp(input.cm, function() {regChange(cm);}); + }); + + function onCopyCut(e) { + if (signalDOMEvent(cm, e)) return + if (cm.somethingSelected()) { + lastCopied = cm.getSelections(); + if (e.type == "cut") cm.replaceSelection("", null, "cut"); + } else if (!cm.options.lineWiseCopyCut) { + return; + } else { + var ranges = copyableRanges(cm); + lastCopied = ranges.text; + if (e.type == "cut") { + cm.operation(function() { + cm.setSelections(ranges.ranges, 0, sel_dontScroll); + cm.replaceSelection("", null, "cut"); + }); + } + } + // iOS exposes the clipboard API, but seems to discard content inserted into it + if (e.clipboardData && !ios) { + e.preventDefault(); + e.clipboardData.clearData(); + e.clipboardData.setData("text/plain", lastCopied.join("\n")); + } else { + // Old-fashioned briefly-focus-a-textarea hack + var kludge = hiddenTextarea(), te = kludge.firstChild; + cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild); + te.value = lastCopied.join("\n"); + var hadFocus = document.activeElement; + selectInput(te); + setTimeout(function() { + cm.display.lineSpace.removeChild(kludge); + hadFocus.focus(); + }, 50); + } + } + on(div, "copy", onCopyCut); + on(div, "cut", onCopyCut); + }, + + prepareSelection: function() { + var result = prepareSelection(this.cm, false); + result.focus = this.cm.state.focused; + return result; + }, + + showSelection: function(info) { + if (!info || !this.cm.display.view.length) return; + if (info.focus) this.showPrimarySelection(); + this.showMultipleSelections(info); + }, + + showPrimarySelection: function() { + var sel = window.getSelection(), prim = this.cm.doc.sel.primary(); + var curAnchor = domToPos(this.cm, sel.anchorNode, sel.anchorOffset); + var curFocus = domToPos(this.cm, sel.focusNode, sel.focusOffset); + if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad && + cmp(minPos(curAnchor, curFocus), prim.from()) == 0 && + cmp(maxPos(curAnchor, curFocus), prim.to()) == 0) + return; + + var start = posToDOM(this.cm, prim.from()); + var end = posToDOM(this.cm, prim.to()); + if (!start && !end) return; + + var view = this.cm.display.view; + var old = sel.rangeCount && sel.getRangeAt(0); + if (!start) { + start = {node: view[0].measure.map[2], offset: 0}; + } else if (!end) { // FIXME dangerously hacky + var measure = view[view.length - 1].measure; + var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map; + end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]}; + } + + try { var rng = range(start.node, start.offset, end.offset, end.node); } + catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible + if (rng) { + if (!gecko && this.cm.state.focused) { + sel.collapse(start.node, start.offset); + if (!rng.collapsed) sel.addRange(rng); + } else { + sel.removeAllRanges(); + sel.addRange(rng); + } + if (old && sel.anchorNode == null) sel.addRange(old); + else if (gecko) this.startGracePeriod(); + } + this.rememberSelection(); + }, + + startGracePeriod: function() { + var input = this; + clearTimeout(this.gracePeriod); + this.gracePeriod = setTimeout(function() { + input.gracePeriod = false; + if (input.selectionChanged()) + input.cm.operation(function() { input.cm.curOp.selectionChanged = true; }); + }, 20); + }, + + showMultipleSelections: function(info) { + removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors); + removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection); + }, + + rememberSelection: function() { + var sel = window.getSelection(); + this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset; + this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset; + }, + + selectionInEditor: function() { + var sel = window.getSelection(); + if (!sel.rangeCount) return false; + var node = sel.getRangeAt(0).commonAncestorContainer; + return contains(this.div, node); + }, + + focus: function() { + if (this.cm.options.readOnly != "nocursor") this.div.focus(); + }, + blur: function() { this.div.blur(); }, + getField: function() { return this.div; }, + + supportsTouch: function() { return true; }, + + receivedFocus: function() { + var input = this; + if (this.selectionInEditor()) + this.pollSelection(); + else + runInOp(this.cm, function() { input.cm.curOp.selectionChanged = true; }); + + function poll() { + if (input.cm.state.focused) { + input.pollSelection(); + input.polling.set(input.cm.options.pollInterval, poll); + } + } + this.polling.set(this.cm.options.pollInterval, poll); + }, + + selectionChanged: function() { + var sel = window.getSelection(); + return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset || + sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset; + }, + + pollSelection: function() { + if (!this.composing && !this.gracePeriod && this.selectionChanged()) { + var sel = window.getSelection(), cm = this.cm; + this.rememberSelection(); + var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset); + var head = domToPos(cm, sel.focusNode, sel.focusOffset); + if (anchor && head) runInOp(cm, function() { + setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll); + if (anchor.bad || head.bad) cm.curOp.selectionChanged = true; + }); + } + }, + + pollContent: function() { + var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary(); + var from = sel.from(), to = sel.to(); + if (from.line < display.viewFrom || to.line > display.viewTo - 1) return false; + + var fromIndex; + if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) { + var fromLine = lineNo(display.view[0].line); + var fromNode = display.view[0].node; + } else { + var fromLine = lineNo(display.view[fromIndex].line); + var fromNode = display.view[fromIndex - 1].node.nextSibling; + } + var toIndex = findViewIndex(cm, to.line); + if (toIndex == display.view.length - 1) { + var toLine = display.viewTo - 1; + var toNode = display.lineDiv.lastChild; + } else { + var toLine = lineNo(display.view[toIndex + 1].line) - 1; + var toNode = display.view[toIndex + 1].node.previousSibling; + } + + var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine)); + var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length)); + while (newText.length > 1 && oldText.length > 1) { + if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; } + else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; } + else break; + } + + var cutFront = 0, cutEnd = 0; + var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length); + while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront)) + ++cutFront; + var newBot = lst(newText), oldBot = lst(oldText); + var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0), + oldBot.length - (oldText.length == 1 ? cutFront : 0)); + while (cutEnd < maxCutEnd && + newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) + ++cutEnd; + + newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd); + newText[0] = newText[0].slice(cutFront); + + var chFrom = Pos(fromLine, cutFront); + var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0); + if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) { + replaceRange(cm.doc, newText, chFrom, chTo, "+input"); + return true; + } + }, + + ensurePolled: function() { + this.forceCompositionEnd(); + }, + reset: function() { + this.forceCompositionEnd(); + }, + forceCompositionEnd: function() { + if (!this.composing || this.composing.handled) return; + this.applyComposition(this.composing); + this.composing.handled = true; + this.div.blur(); + this.div.focus(); + }, + applyComposition: function(composing) { + if (this.cm.isReadOnly()) + operation(this.cm, regChange)(this.cm) + else if (composing.data && composing.data != composing.startData) + operation(this.cm, applyTextInput)(this.cm, composing.data, 0, composing.sel); + }, + + setUneditable: function(node) { + node.contentEditable = "false" + }, + + onKeyPress: function(e) { + e.preventDefault(); + if (!this.cm.isReadOnly()) + operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); + }, + + readOnlyChanged: function(val) { + this.div.contentEditable = String(val != "nocursor") + }, + + onContextMenu: nothing, + resetPosition: nothing, + + needsContentAttribute: true + }, ContentEditableInput.prototype); + + function posToDOM(cm, pos) { + var view = findViewForLine(cm, pos.line); + if (!view || view.hidden) return null; + var line = getLine(cm.doc, pos.line); + var info = mapFromLineView(view, line, pos.line); + + var order = getOrder(line), side = "left"; + if (order) { + var partPos = getBidiPartAt(order, pos.ch); + side = partPos % 2 ? "right" : "left"; + } + var result = nodeAndOffsetInLineMap(info.map, pos.ch, side); + result.offset = result.collapse == "right" ? result.end : result.start; + return result; + } + + function badPos(pos, bad) { if (bad) pos.bad = true; return pos; } + + function domToPos(cm, node, offset) { + var lineNode; + if (node == cm.display.lineDiv) { + lineNode = cm.display.lineDiv.childNodes[offset]; + if (!lineNode) return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true); + node = null; offset = 0; + } else { + for (lineNode = node;; lineNode = lineNode.parentNode) { + if (!lineNode || lineNode == cm.display.lineDiv) return null; + if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) break; + } + } + for (var i = 0; i < cm.display.view.length; i++) { + var lineView = cm.display.view[i]; + if (lineView.node == lineNode) + return locateNodeInLineView(lineView, node, offset); + } + } + + function locateNodeInLineView(lineView, node, offset) { + var wrapper = lineView.text.firstChild, bad = false; + if (!node || !contains(wrapper, node)) return badPos(Pos(lineNo(lineView.line), 0), true); + if (node == wrapper) { + bad = true; + node = wrapper.childNodes[offset]; + offset = 0; + if (!node) { + var line = lineView.rest ? lst(lineView.rest) : lineView.line; + return badPos(Pos(lineNo(line), line.text.length), bad); + } + } + + var textNode = node.nodeType == 3 ? node : null, topNode = node; + if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) { + textNode = node.firstChild; + if (offset) offset = textNode.nodeValue.length; + } + while (topNode.parentNode != wrapper) topNode = topNode.parentNode; + var measure = lineView.measure, maps = measure.maps; + + function find(textNode, topNode, offset) { + for (var i = -1; i < (maps ? maps.length : 0); i++) { + var map = i < 0 ? measure.map : maps[i]; + for (var j = 0; j < map.length; j += 3) { + var curNode = map[j + 2]; + if (curNode == textNode || curNode == topNode) { + var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]); + var ch = map[j] + offset; + if (offset < 0 || curNode != textNode) ch = map[j + (offset ? 1 : 0)]; + return Pos(line, ch); + } + } + } + } + var found = find(textNode, topNode, offset); + if (found) return badPos(found, bad); + + // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems + for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) { + found = find(after, after.firstChild, 0); + if (found) + return badPos(Pos(found.line, found.ch - dist), bad); + else + dist += after.textContent.length; + } + for (var before = topNode.previousSibling, dist = offset; before; before = before.previousSibling) { + found = find(before, before.firstChild, -1); + if (found) + return badPos(Pos(found.line, found.ch + dist), bad); + else + dist += after.textContent.length; + } + } + + function domTextBetween(cm, from, to, fromLine, toLine) { + var text = "", closing = false, lineSep = cm.doc.lineSeparator(); + function recognizeMarker(id) { return function(marker) { return marker.id == id; }; } + function walk(node) { + if (node.nodeType == 1) { + var cmText = node.getAttribute("cm-text"); + if (cmText != null) { + if (cmText == "") cmText = node.textContent.replace(/\u200b/g, ""); + text += cmText; + return; + } + var markerID = node.getAttribute("cm-marker"), range; + if (markerID) { + var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID)); + if (found.length && (range = found[0].find())) + text += getBetween(cm.doc, range.from, range.to).join(lineSep); + return; + } + if (node.getAttribute("contenteditable") == "false") return; + for (var i = 0; i < node.childNodes.length; i++) + walk(node.childNodes[i]); + if (/^(pre|div|p)$/i.test(node.nodeName)) + closing = true; + } else if (node.nodeType == 3) { + var val = node.nodeValue; + if (!val) return; + if (closing) { + text += lineSep; + closing = false; + } + text += val; + } + } + for (;;) { + walk(from); + if (from == to) break; + from = from.nextSibling; + } + return text; + } + + CodeMirror.inputStyles = {"textarea": TextareaInput, "contenteditable": ContentEditableInput}; + + // SELECTION / CURSOR + + // Selection objects are immutable. A new one is created every time + // the selection changes. A selection is one or more non-overlapping + // (and non-touching) ranges, sorted, and an integer that indicates + // which one is the primary selection (the one that's scrolled into + // view, that getCursor returns, etc). + function Selection(ranges, primIndex) { + this.ranges = ranges; + this.primIndex = primIndex; + } + + Selection.prototype = { + primary: function() { return this.ranges[this.primIndex]; }, + equals: function(other) { + if (other == this) return true; + if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) return false; + for (var i = 0; i < this.ranges.length; i++) { + var here = this.ranges[i], there = other.ranges[i]; + if (cmp(here.anchor, there.anchor) != 0 || cmp(here.head, there.head) != 0) return false; + } + return true; + }, + deepCopy: function() { + for (var out = [], i = 0; i < this.ranges.length; i++) + out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); + return new Selection(out, this.primIndex); + }, + somethingSelected: function() { + for (var i = 0; i < this.ranges.length; i++) + if (!this.ranges[i].empty()) return true; + return false; + }, + contains: function(pos, end) { + if (!end) end = pos; + for (var i = 0; i < this.ranges.length; i++) { + var range = this.ranges[i]; + if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0) + return i; + } + return -1; + } + }; + + function Range(anchor, head) { + this.anchor = anchor; this.head = head; + } + + Range.prototype = { + from: function() { return minPos(this.anchor, this.head); }, + to: function() { return maxPos(this.anchor, this.head); }, + empty: function() { + return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch; + } + }; + + // Take an unsorted, potentially overlapping set of ranges, and + // build a selection out of it. 'Consumes' ranges array (modifying + // it). + function normalizeSelection(ranges, primIndex) { + var prim = ranges[primIndex]; + ranges.sort(function(a, b) { return cmp(a.from(), b.from()); }); + primIndex = indexOf(ranges, prim); + for (var i = 1; i < ranges.length; i++) { + var cur = ranges[i], prev = ranges[i - 1]; + if (cmp(prev.to(), cur.from()) >= 0) { + var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to()); + var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head; + if (i <= primIndex) --primIndex; + ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to)); + } + } + return new Selection(ranges, primIndex); + } + + function simpleSelection(anchor, head) { + return new Selection([new Range(anchor, head || anchor)], 0); + } + + // Most of the external API clips given positions to make sure they + // actually exist within the document. + function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1));} + function clipPos(doc, pos) { + if (pos.line < doc.first) return Pos(doc.first, 0); + var last = doc.first + doc.size - 1; + if (pos.line > last) return Pos(last, getLine(doc, last).text.length); + return clipToLen(pos, getLine(doc, pos.line).text.length); + } + function clipToLen(pos, linelen) { + var ch = pos.ch; + if (ch == null || ch > linelen) return Pos(pos.line, linelen); + else if (ch < 0) return Pos(pos.line, 0); + else return pos; + } + function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size;} + function clipPosArray(doc, array) { + for (var out = [], i = 0; i < array.length; i++) out[i] = clipPos(doc, array[i]); + return out; + } + + // SELECTION UPDATES + + // The 'scroll' parameter given to many of these indicated whether + // the new cursor position should be scrolled into view after + // modifying the selection. + + // If shift is held or the extend flag is set, extends a range to + // include a given position (and optionally a second position). + // Otherwise, simply returns the range between the given positions. + // Used for cursor motion and such. + function extendRange(doc, range, head, other) { + if (doc.cm && doc.cm.display.shift || doc.extend) { + var anchor = range.anchor; + if (other) { + var posBefore = cmp(head, anchor) < 0; + if (posBefore != (cmp(other, anchor) < 0)) { + anchor = head; + head = other; + } else if (posBefore != (cmp(head, other) < 0)) { + head = other; + } + } + return new Range(anchor, head); + } else { + return new Range(other || head, head); + } + } + + // Extend the primary selection range, discard the rest. + function extendSelection(doc, head, other, options) { + setSelection(doc, new Selection([extendRange(doc, doc.sel.primary(), head, other)], 0), options); + } + + // Extend all selections (pos is an array of selections with length + // equal the number of selections) + function extendSelections(doc, heads, options) { + for (var out = [], i = 0; i < doc.sel.ranges.length; i++) + out[i] = extendRange(doc, doc.sel.ranges[i], heads[i], null); + var newSel = normalizeSelection(out, doc.sel.primIndex); + setSelection(doc, newSel, options); + } + + // Updates a single range in the selection. + function replaceOneSelection(doc, i, range, options) { + var ranges = doc.sel.ranges.slice(0); + ranges[i] = range; + setSelection(doc, normalizeSelection(ranges, doc.sel.primIndex), options); + } + + // Reset the selection to a single range. + function setSimpleSelection(doc, anchor, head, options) { + setSelection(doc, simpleSelection(anchor, head), options); + } + + // Give beforeSelectionChange handlers a change to influence a + // selection update. + function filterSelectionChange(doc, sel, options) { + var obj = { + ranges: sel.ranges, + update: function(ranges) { + this.ranges = []; + for (var i = 0; i < ranges.length; i++) + this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor), + clipPos(doc, ranges[i].head)); + }, + origin: options && options.origin + }; + signal(doc, "beforeSelectionChange", doc, obj); + if (doc.cm) signal(doc.cm, "beforeSelectionChange", doc.cm, obj); + if (obj.ranges != sel.ranges) return normalizeSelection(obj.ranges, obj.ranges.length - 1); + else return sel; + } + + function setSelectionReplaceHistory(doc, sel, options) { + var done = doc.history.done, last = lst(done); + if (last && last.ranges) { + done[done.length - 1] = sel; + setSelectionNoUndo(doc, sel, options); + } else { + setSelection(doc, sel, options); + } + } + + // Set a new selection. + function setSelection(doc, sel, options) { + setSelectionNoUndo(doc, sel, options); + addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options); + } + + function setSelectionNoUndo(doc, sel, options) { + if (hasHandler(doc, "beforeSelectionChange") || doc.cm && hasHandler(doc.cm, "beforeSelectionChange")) + sel = filterSelectionChange(doc, sel, options); + + var bias = options && options.bias || + (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1); + setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true)); + + if (!(options && options.scroll === false) && doc.cm) + ensureCursorVisible(doc.cm); + } + + function setSelectionInner(doc, sel) { + if (sel.equals(doc.sel)) return; + + doc.sel = sel; + + if (doc.cm) { + doc.cm.curOp.updateInput = doc.cm.curOp.selectionChanged = true; + signalCursorActivity(doc.cm); + } + signalLater(doc, "cursorActivity", doc); + } + + // Verify that the selection does not partially select any atomic + // marked ranges. + function reCheckSelection(doc) { + setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false), sel_dontScroll); + } + + // Return a selection that does not partially select any atomic + // ranges. + function skipAtomicInSelection(doc, sel, bias, mayClear) { + var out; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i]; + var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear); + var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear); + if (out || newAnchor != range.anchor || newHead != range.head) { + if (!out) out = sel.ranges.slice(0, i); + out[i] = new Range(newAnchor, newHead); + } + } + return out ? normalizeSelection(out, sel.primIndex) : sel; + } + + function skipAtomicInner(doc, pos, oldPos, dir, mayClear) { + var line = getLine(doc, pos.line); + if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { + var sp = line.markedSpans[i], m = sp.marker; + if ((sp.from == null || (m.inclusiveLeft ? sp.from <= pos.ch : sp.from < pos.ch)) && + (sp.to == null || (m.inclusiveRight ? sp.to >= pos.ch : sp.to > pos.ch))) { + if (mayClear) { + signal(m, "beforeCursorEnter"); + if (m.explicitlyCleared) { + if (!line.markedSpans) break; + else {--i; continue;} + } + } + if (!m.atomic) continue; + + if (oldPos) { + var near = m.find(dir < 0 ? 1 : -1), diff; + if (dir < 0 ? m.inclusiveRight : m.inclusiveLeft) near = movePos(doc, near, -dir, line); + if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0)) + return skipAtomicInner(doc, near, pos, dir, mayClear); + } + + var far = m.find(dir < 0 ? -1 : 1); + if (dir < 0 ? m.inclusiveLeft : m.inclusiveRight) far = movePos(doc, far, dir, line); + return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null; + } + } + return pos; + } + + // Ensure a given position is not inside an atomic range. + function skipAtomic(doc, pos, oldPos, bias, mayClear) { + var dir = bias || 1; + var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) || + skipAtomicInner(doc, pos, oldPos, -dir, mayClear) || + (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true)); + if (!found) { + doc.cantEdit = true; + return Pos(doc.first, 0); + } + return found; + } + + function movePos(doc, pos, dir, line) { + if (dir < 0 && pos.ch == 0) { + if (pos.line > doc.first) return clipPos(doc, Pos(pos.line - 1)); + else return null; + } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) { + if (pos.line < doc.first + doc.size - 1) return Pos(pos.line + 1, 0); + else return null; + } else { + return new Pos(pos.line, pos.ch + dir); + } + } + + // SELECTION DRAWING + + function updateSelection(cm) { + cm.display.input.showSelection(cm.display.input.prepareSelection()); + } + + function prepareSelection(cm, primary) { + var doc = cm.doc, result = {}; + var curFragment = result.cursors = document.createDocumentFragment(); + var selFragment = result.selection = document.createDocumentFragment(); + + for (var i = 0; i < doc.sel.ranges.length; i++) { + if (primary === false && i == doc.sel.primIndex) continue; + var range = doc.sel.ranges[i]; + var collapsed = range.empty(); + if (collapsed || cm.options.showCursorWhenSelecting) + drawSelectionCursor(cm, range.head, curFragment); + if (!collapsed) + drawSelectionRange(cm, range, selFragment); + } + return result; + } + + // Draws a cursor for the given range + function drawSelectionCursor(cm, head, output) { + var pos = cursorCoords(cm, head, "div", null, null, !cm.options.singleCursorHeightPerLine); + + var cursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor")); + cursor.style.left = pos.left + "px"; + cursor.style.top = pos.top + "px"; + cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + "px"; + + if (pos.other) { + // Secondary cursor, shown when on a 'jump' in bi-directional text + var otherCursor = output.appendChild(elt("div", "\u00a0", "CodeMirror-cursor CodeMirror-secondarycursor")); + otherCursor.style.display = ""; + otherCursor.style.left = pos.other.left + "px"; + otherCursor.style.top = pos.other.top + "px"; + otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + "px"; + } + } + + // Draws the given range as a highlighted selection + function drawSelectionRange(cm, range, output) { + var display = cm.display, doc = cm.doc; + var fragment = document.createDocumentFragment(); + var padding = paddingH(cm.display), leftSide = padding.left; + var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right; + + function add(left, top, width, bottom) { + if (top < 0) top = 0; + top = Math.round(top); + bottom = Math.round(bottom); + fragment.appendChild(elt("div", null, "CodeMirror-selected", "position: absolute; left: " + left + + "px; top: " + top + "px; width: " + (width == null ? rightSide - left : width) + + "px; height: " + (bottom - top) + "px")); + } + + function drawForLine(line, fromArg, toArg) { + var lineObj = getLine(doc, line); + var lineLen = lineObj.text.length; + var start, end; + function coords(ch, bias) { + return charCoords(cm, Pos(line, ch), "div", lineObj, bias); + } + + iterateBidiSections(getOrder(lineObj), fromArg || 0, toArg == null ? lineLen : toArg, function(from, to, dir) { + var leftPos = coords(from, "left"), rightPos, left, right; + if (from == to) { + rightPos = leftPos; + left = right = leftPos.left; + } else { + rightPos = coords(to - 1, "right"); + if (dir == "rtl") { var tmp = leftPos; leftPos = rightPos; rightPos = tmp; } + left = leftPos.left; + right = rightPos.right; + } + if (fromArg == null && from == 0) left = leftSide; + if (rightPos.top - leftPos.top > 3) { // Different lines, draw top part + add(left, leftPos.top, null, leftPos.bottom); + left = leftSide; + if (leftPos.bottom < rightPos.top) add(left, leftPos.bottom, null, rightPos.top); + } + if (toArg == null && to == lineLen) right = rightSide; + if (!start || leftPos.top < start.top || leftPos.top == start.top && leftPos.left < start.left) + start = leftPos; + if (!end || rightPos.bottom > end.bottom || rightPos.bottom == end.bottom && rightPos.right > end.right) + end = rightPos; + if (left < leftSide + 1) left = leftSide; + add(left, rightPos.top, right - left, rightPos.bottom); + }); + return {start: start, end: end}; + } + + var sFrom = range.from(), sTo = range.to(); + if (sFrom.line == sTo.line) { + drawForLine(sFrom.line, sFrom.ch, sTo.ch); + } else { + var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line); + var singleVLine = visualLine(fromLine) == visualLine(toLine); + var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end; + var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start; + if (singleVLine) { + if (leftEnd.top < rightStart.top - 2) { + add(leftEnd.right, leftEnd.top, null, leftEnd.bottom); + add(leftSide, rightStart.top, rightStart.left, rightStart.bottom); + } else { + add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom); + } + } + if (leftEnd.bottom < rightStart.top) + add(leftSide, leftEnd.bottom, null, rightStart.top); + } + + output.appendChild(fragment); + } + + // Cursor-blinking + function restartBlink(cm) { + if (!cm.state.focused) return; + var display = cm.display; + clearInterval(display.blinker); + var on = true; + display.cursorDiv.style.visibility = ""; + if (cm.options.cursorBlinkRate > 0) + display.blinker = setInterval(function() { + display.cursorDiv.style.visibility = (on = !on) ? "" : "hidden"; + }, cm.options.cursorBlinkRate); + else if (cm.options.cursorBlinkRate < 0) + display.cursorDiv.style.visibility = "hidden"; + } + + // HIGHLIGHT WORKER + + function startWorker(cm, time) { + if (cm.doc.mode.startState && cm.doc.frontier < cm.display.viewTo) + cm.state.highlight.set(time, bind(highlightWorker, cm)); + } + + function highlightWorker(cm) { + var doc = cm.doc; + if (doc.frontier < doc.first) doc.frontier = doc.first; + if (doc.frontier >= cm.display.viewTo) return; + var end = +new Date + cm.options.workTime; + var state = copyState(doc.mode, getStateBefore(cm, doc.frontier)); + var changedLines = []; + + doc.iter(doc.frontier, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function(line) { + if (doc.frontier >= cm.display.viewFrom) { // Visible + var oldStyles = line.styles, tooLong = line.text.length > cm.options.maxHighlightLength; + var highlighted = highlightLine(cm, line, tooLong ? copyState(doc.mode, state) : state, true); + line.styles = highlighted.styles; + var oldCls = line.styleClasses, newCls = highlighted.classes; + if (newCls) line.styleClasses = newCls; + else if (oldCls) line.styleClasses = null; + var ischange = !oldStyles || oldStyles.length != line.styles.length || + oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass); + for (var i = 0; !ischange && i < oldStyles.length; ++i) ischange = oldStyles[i] != line.styles[i]; + if (ischange) changedLines.push(doc.frontier); + line.stateAfter = tooLong ? state : copyState(doc.mode, state); + } else { + if (line.text.length <= cm.options.maxHighlightLength) + processLine(cm, line.text, state); + line.stateAfter = doc.frontier % 5 == 0 ? copyState(doc.mode, state) : null; + } + ++doc.frontier; + if (+new Date > end) { + startWorker(cm, cm.options.workDelay); + return true; + } + }); + if (changedLines.length) runInOp(cm, function() { + for (var i = 0; i < changedLines.length; i++) + regLineChange(cm, changedLines[i], "text"); + }); + } + + // Finds the line to start with when starting a parse. Tries to + // find a line with a stateAfter, so that it can start with a + // valid state. If that fails, it returns the line with the + // smallest indentation, which tends to need the least context to + // parse correctly. + function findStartLine(cm, n, precise) { + var minindent, minline, doc = cm.doc; + var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100); + for (var search = n; search > lim; --search) { + if (search <= doc.first) return doc.first; + var line = getLine(doc, search - 1); + if (line.stateAfter && (!precise || search <= doc.frontier)) return search; + var indented = countColumn(line.text, null, cm.options.tabSize); + if (minline == null || minindent > indented) { + minline = search - 1; + minindent = indented; + } + } + return minline; + } + + function getStateBefore(cm, n, precise) { + var doc = cm.doc, display = cm.display; + if (!doc.mode.startState) return true; + var pos = findStartLine(cm, n, precise), state = pos > doc.first && getLine(doc, pos-1).stateAfter; + if (!state) state = startState(doc.mode); + else state = copyState(doc.mode, state); + doc.iter(pos, n, function(line) { + processLine(cm, line.text, state); + var save = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo; + line.stateAfter = save ? copyState(doc.mode, state) : null; + ++pos; + }); + if (precise) doc.frontier = pos; + return state; + } + + // POSITION MEASUREMENT + + function paddingTop(display) {return display.lineSpace.offsetTop;} + function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight;} + function paddingH(display) { + if (display.cachedPaddingH) return display.cachedPaddingH; + var e = removeChildrenAndAdd(display.measure, elt("pre", "x")); + var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle; + var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)}; + if (!isNaN(data.left) && !isNaN(data.right)) display.cachedPaddingH = data; + return data; + } + + function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth; } + function displayWidth(cm) { + return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth; + } + function displayHeight(cm) { + return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight; + } + + // Ensure the lineView.wrapping.heights array is populated. This is + // an array of bottom offsets for the lines that make up a drawn + // line. When lineWrapping is on, there might be more than one + // height. + function ensureLineHeights(cm, lineView, rect) { + var wrapping = cm.options.lineWrapping; + var curWidth = wrapping && displayWidth(cm); + if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) { + var heights = lineView.measure.heights = []; + if (wrapping) { + lineView.measure.width = curWidth; + var rects = lineView.text.firstChild.getClientRects(); + for (var i = 0; i < rects.length - 1; i++) { + var cur = rects[i], next = rects[i + 1]; + if (Math.abs(cur.bottom - next.bottom) > 2) + heights.push((cur.bottom + next.top) / 2 - rect.top); + } + } + heights.push(rect.bottom - rect.top); + } + } + + // Find a line map (mapping character offsets to text nodes) and a + // measurement cache for the given line number. (A line view might + // contain multiple lines when collapsed ranges are present.) + function mapFromLineView(lineView, line, lineN) { + if (lineView.line == line) + return {map: lineView.measure.map, cache: lineView.measure.cache}; + for (var i = 0; i < lineView.rest.length; i++) + if (lineView.rest[i] == line) + return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]}; + for (var i = 0; i < lineView.rest.length; i++) + if (lineNo(lineView.rest[i]) > lineN) + return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i], before: true}; + } + + // Render a line into the hidden node display.externalMeasured. Used + // when measurement is needed for a line that's not in the viewport. + function updateExternalMeasurement(cm, line) { + line = visualLine(line); + var lineN = lineNo(line); + var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN); + view.lineN = lineN; + var built = view.built = buildLineContent(cm, view); + view.text = built.pre; + removeChildrenAndAdd(cm.display.lineMeasure, built.pre); + return view; + } + + // Get a {top, bottom, left, right} box (in line-local coordinates) + // for a given character. + function measureChar(cm, line, ch, bias) { + return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias); + } + + // Find a line view that corresponds to the given line number. + function findViewForLine(cm, lineN) { + if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo) + return cm.display.view[findViewIndex(cm, lineN)]; + var ext = cm.display.externalMeasured; + if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size) + return ext; + } + + // Measurement can be split in two steps, the set-up work that + // applies to the whole line, and the measurement of the actual + // character. Functions like coordsChar, that need to do a lot of + // measurements in a row, can thus ensure that the set-up work is + // only done once. + function prepareMeasureForLine(cm, line) { + var lineN = lineNo(line); + var view = findViewForLine(cm, lineN); + if (view && !view.text) { + view = null; + } else if (view && view.changes) { + updateLineForChanges(cm, view, lineN, getDimensions(cm)); + cm.curOp.forceUpdate = true; + } + if (!view) + view = updateExternalMeasurement(cm, line); + + var info = mapFromLineView(view, line, lineN); + return { + line: line, view: view, rect: null, + map: info.map, cache: info.cache, before: info.before, + hasHeights: false + }; + } + + // Given a prepared measurement object, measures the position of an + // actual character (or fetches it from the cache). + function measureCharPrepared(cm, prepared, ch, bias, varHeight) { + if (prepared.before) ch = -1; + var key = ch + (bias || ""), found; + if (prepared.cache.hasOwnProperty(key)) { + found = prepared.cache[key]; + } else { + if (!prepared.rect) + prepared.rect = prepared.view.text.getBoundingClientRect(); + if (!prepared.hasHeights) { + ensureLineHeights(cm, prepared.view, prepared.rect); + prepared.hasHeights = true; + } + found = measureCharInner(cm, prepared, ch, bias); + if (!found.bogus) prepared.cache[key] = found; + } + return {left: found.left, right: found.right, + top: varHeight ? found.rtop : found.top, + bottom: varHeight ? found.rbottom : found.bottom}; + } + + var nullRect = {left: 0, right: 0, top: 0, bottom: 0}; + + function nodeAndOffsetInLineMap(map, ch, bias) { + var node, start, end, collapse; + // First, search the line map for the text node corresponding to, + // or closest to, the target character. + for (var i = 0; i < map.length; i += 3) { + var mStart = map[i], mEnd = map[i + 1]; + if (ch < mStart) { + start = 0; end = 1; + collapse = "left"; + } else if (ch < mEnd) { + start = ch - mStart; + end = start + 1; + } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) { + end = mEnd - mStart; + start = end - 1; + if (ch >= mEnd) collapse = "right"; + } + if (start != null) { + node = map[i + 2]; + if (mStart == mEnd && bias == (node.insertLeft ? "left" : "right")) + collapse = bias; + if (bias == "left" && start == 0) + while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) { + node = map[(i -= 3) + 2]; + collapse = "left"; + } + if (bias == "right" && start == mEnd - mStart) + while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) { + node = map[(i += 3) + 2]; + collapse = "right"; + } + break; + } + } + return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}; + } + + function measureCharInner(cm, prepared, ch, bias) { + var place = nodeAndOffsetInLineMap(prepared.map, ch, bias); + var node = place.node, start = place.start, end = place.end, collapse = place.collapse; + + var rect; + if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates. + for (var i = 0; i < 4; i++) { // Retry a maximum of 4 times when nonsense rectangles are returned + while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) --start; + while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) ++end; + if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart) { + rect = node.parentNode.getBoundingClientRect(); + } else if (ie && cm.options.lineWrapping) { + var rects = range(node, start, end).getClientRects(); + if (rects.length) + rect = rects[bias == "right" ? rects.length - 1 : 0]; + else + rect = nullRect; + } else { + rect = range(node, start, end).getBoundingClientRect() || nullRect; + } + if (rect.left || rect.right || start == 0) break; + end = start; + start = start - 1; + collapse = "right"; + } + if (ie && ie_version < 11) rect = maybeUpdateRectForZooming(cm.display.measure, rect); + } else { // If it is a widget, simply get the box for the whole widget. + if (start > 0) collapse = bias = "right"; + var rects; + if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1) + rect = rects[bias == "right" ? rects.length - 1 : 0]; + else + rect = node.getBoundingClientRect(); + } + if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) { + var rSpan = node.parentNode.getClientRects()[0]; + if (rSpan) + rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; + else + rect = nullRect; + } + + var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top; + var mid = (rtop + rbot) / 2; + var heights = prepared.view.measure.heights; + for (var i = 0; i < heights.length - 1; i++) + if (mid < heights[i]) break; + var top = i ? heights[i - 1] : 0, bot = heights[i]; + var result = {left: (collapse == "right" ? rect.right : rect.left) - prepared.rect.left, + right: (collapse == "left" ? rect.left : rect.right) - prepared.rect.left, + top: top, bottom: bot}; + if (!rect.left && !rect.right) result.bogus = true; + if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; } + + return result; + } + + // Work around problem with bounding client rects on ranges being + // returned incorrectly when zoomed on IE10 and below. + function maybeUpdateRectForZooming(measure, rect) { + if (!window.screen || screen.logicalXDPI == null || + screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure)) + return rect; + var scaleX = screen.logicalXDPI / screen.deviceXDPI; + var scaleY = screen.logicalYDPI / screen.deviceYDPI; + return {left: rect.left * scaleX, right: rect.right * scaleX, + top: rect.top * scaleY, bottom: rect.bottom * scaleY}; + } + + function clearLineMeasurementCacheFor(lineView) { + if (lineView.measure) { + lineView.measure.cache = {}; + lineView.measure.heights = null; + if (lineView.rest) for (var i = 0; i < lineView.rest.length; i++) + lineView.measure.caches[i] = {}; + } + } + + function clearLineMeasurementCache(cm) { + cm.display.externalMeasure = null; + removeChildren(cm.display.lineMeasure); + for (var i = 0; i < cm.display.view.length; i++) + clearLineMeasurementCacheFor(cm.display.view[i]); + } + + function clearCaches(cm) { + clearLineMeasurementCache(cm); + cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null; + if (!cm.options.lineWrapping) cm.display.maxLineChanged = true; + cm.display.lineNumChars = null; + } + + function pageScrollX() { return window.pageXOffset || (document.documentElement || document.body).scrollLeft; } + function pageScrollY() { return window.pageYOffset || (document.documentElement || document.body).scrollTop; } + + // Converts a {top, bottom, left, right} box from line-local + // coordinates into another coordinate system. Context may be one of + // "line", "div" (display.lineDiv), "local"/null (editor), "window", + // or "page". + function intoCoordSystem(cm, lineObj, rect, context) { + if (lineObj.widgets) for (var i = 0; i < lineObj.widgets.length; ++i) if (lineObj.widgets[i].above) { + var size = widgetHeight(lineObj.widgets[i]); + rect.top += size; rect.bottom += size; + } + if (context == "line") return rect; + if (!context) context = "local"; + var yOff = heightAtLine(lineObj); + if (context == "local") yOff += paddingTop(cm.display); + else yOff -= cm.display.viewOffset; + if (context == "page" || context == "window") { + var lOff = cm.display.lineSpace.getBoundingClientRect(); + yOff += lOff.top + (context == "window" ? 0 : pageScrollY()); + var xOff = lOff.left + (context == "window" ? 0 : pageScrollX()); + rect.left += xOff; rect.right += xOff; + } + rect.top += yOff; rect.bottom += yOff; + return rect; + } + + // Coverts a box from "div" coords to another coordinate system. + // Context may be "window", "page", "div", or "local"/null. + function fromCoordSystem(cm, coords, context) { + if (context == "div") return coords; + var left = coords.left, top = coords.top; + // First move into "page" coordinate system + if (context == "page") { + left -= pageScrollX(); + top -= pageScrollY(); + } else if (context == "local" || !context) { + var localBox = cm.display.sizer.getBoundingClientRect(); + left += localBox.left; + top += localBox.top; + } + + var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect(); + return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}; + } + + function charCoords(cm, pos, context, lineObj, bias) { + if (!lineObj) lineObj = getLine(cm.doc, pos.line); + return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context); + } + + // Returns a box for a given cursor position, which may have an + // 'other' property containing the position of the secondary cursor + // on a bidi boundary. + function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) { + lineObj = lineObj || getLine(cm.doc, pos.line); + if (!preparedMeasure) preparedMeasure = prepareMeasureForLine(cm, lineObj); + function get(ch, right) { + var m = measureCharPrepared(cm, preparedMeasure, ch, right ? "right" : "left", varHeight); + if (right) m.left = m.right; else m.right = m.left; + return intoCoordSystem(cm, lineObj, m, context); + } + function getBidi(ch, partPos) { + var part = order[partPos], right = part.level % 2; + if (ch == bidiLeft(part) && partPos && part.level < order[partPos - 1].level) { + part = order[--partPos]; + ch = bidiRight(part) - (part.level % 2 ? 0 : 1); + right = true; + } else if (ch == bidiRight(part) && partPos < order.length - 1 && part.level < order[partPos + 1].level) { + part = order[++partPos]; + ch = bidiLeft(part) - part.level % 2; + right = false; + } + if (right && ch == part.to && ch > part.from) return get(ch - 1); + return get(ch, right); + } + var order = getOrder(lineObj), ch = pos.ch; + if (!order) return get(ch); + var partPos = getBidiPartAt(order, ch); + var val = getBidi(ch, partPos); + if (bidiOther != null) val.other = getBidi(ch, bidiOther); + return val; + } + + // Used to cheaply estimate the coordinates for a position. Used for + // intermediate scroll updates. + function estimateCoords(cm, pos) { + var left = 0, pos = clipPos(cm.doc, pos); + if (!cm.options.lineWrapping) left = charWidth(cm.display) * pos.ch; + var lineObj = getLine(cm.doc, pos.line); + var top = heightAtLine(lineObj) + paddingTop(cm.display); + return {left: left, right: left, top: top, bottom: top + lineObj.height}; + } + + // Positions returned by coordsChar contain some extra information. + // xRel is the relative x position of the input coordinates compared + // to the found position (so xRel > 0 means the coordinates are to + // the right of the character position, for example). When outside + // is true, that means the coordinates lie outside the line's + // vertical range. + function PosWithInfo(line, ch, outside, xRel) { + var pos = Pos(line, ch); + pos.xRel = xRel; + if (outside) pos.outside = true; + return pos; + } + + // Compute the character position closest to the given coordinates. + // Input must be lineSpace-local ("div" coordinate system). + function coordsChar(cm, x, y) { + var doc = cm.doc; + y += cm.display.viewOffset; + if (y < 0) return PosWithInfo(doc.first, 0, true, -1); + var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1; + if (lineN > last) + return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, true, 1); + if (x < 0) x = 0; + + var lineObj = getLine(doc, lineN); + for (;;) { + var found = coordsCharInner(cm, lineObj, lineN, x, y); + var merged = collapsedSpanAtEnd(lineObj); + var mergedPos = merged && merged.find(0, true); + if (merged && (found.ch > mergedPos.from.ch || found.ch == mergedPos.from.ch && found.xRel > 0)) + lineN = lineNo(lineObj = mergedPos.to.line); + else + return found; + } + } + + function coordsCharInner(cm, lineObj, lineNo, x, y) { + var innerOff = y - heightAtLine(lineObj); + var wrongLine = false, adjust = 2 * cm.display.wrapper.clientWidth; + var preparedMeasure = prepareMeasureForLine(cm, lineObj); + + function getX(ch) { + var sp = cursorCoords(cm, Pos(lineNo, ch), "line", lineObj, preparedMeasure); + wrongLine = true; + if (innerOff > sp.bottom) return sp.left - adjust; + else if (innerOff < sp.top) return sp.left + adjust; + else wrongLine = false; + return sp.left; + } + + var bidi = getOrder(lineObj), dist = lineObj.text.length; + var from = lineLeft(lineObj), to = lineRight(lineObj); + var fromX = getX(from), fromOutside = wrongLine, toX = getX(to), toOutside = wrongLine; + + if (x > toX) return PosWithInfo(lineNo, to, toOutside, 1); + // Do a binary search between these bounds. + for (;;) { + if (bidi ? to == from || to == moveVisually(lineObj, from, 1) : to - from <= 1) { + var ch = x < fromX || x - fromX <= toX - x ? from : to; + var xDiff = x - (ch == from ? fromX : toX); + while (isExtendingChar(lineObj.text.charAt(ch))) ++ch; + var pos = PosWithInfo(lineNo, ch, ch == from ? fromOutside : toOutside, + xDiff < -1 ? -1 : xDiff > 1 ? 1 : 0); + return pos; + } + var step = Math.ceil(dist / 2), middle = from + step; + if (bidi) { + middle = from; + for (var i = 0; i < step; ++i) middle = moveVisually(lineObj, middle, 1); + } + var middleX = getX(middle); + if (middleX > x) {to = middle; toX = middleX; if (toOutside = wrongLine) toX += 1000; dist = step;} + else {from = middle; fromX = middleX; fromOutside = wrongLine; dist -= step;} + } + } + + var measureText; + // Compute the default text height. + function textHeight(display) { + if (display.cachedTextHeight != null) return display.cachedTextHeight; + if (measureText == null) { + measureText = elt("pre"); + // Measure a bunch of lines, for browsers that compute + // fractional heights. + for (var i = 0; i < 49; ++i) { + measureText.appendChild(document.createTextNode("x")); + measureText.appendChild(elt("br")); + } + measureText.appendChild(document.createTextNode("x")); + } + removeChildrenAndAdd(display.measure, measureText); + var height = measureText.offsetHeight / 50; + if (height > 3) display.cachedTextHeight = height; + removeChildren(display.measure); + return height || 1; + } + + // Compute the default character width. + function charWidth(display) { + if (display.cachedCharWidth != null) return display.cachedCharWidth; + var anchor = elt("span", "xxxxxxxxxx"); + var pre = elt("pre", [anchor]); + removeChildrenAndAdd(display.measure, pre); + var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10; + if (width > 2) display.cachedCharWidth = width; + return width || 10; + } + + // OPERATIONS + + // Operations are used to wrap a series of changes to the editor + // state in such a way that each change won't have to update the + // cursor and display (which would be awkward, slow, and + // error-prone). Instead, display updates are batched and then all + // combined and executed at once. + + var operationGroup = null; + + var nextOpId = 0; + // Start a new operation. + function startOperation(cm) { + cm.curOp = { + cm: cm, + viewChanged: false, // Flag that indicates that lines might need to be redrawn + startHeight: cm.doc.height, // Used to detect need to update scrollbar + forceUpdate: false, // Used to force a redraw + updateInput: null, // Whether to reset the input textarea + typing: false, // Whether this reset should be careful to leave existing text (for compositing) + changeObjs: null, // Accumulated changes, for firing change events + cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on + cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already + selectionChanged: false, // Whether the selection needs to be redrawn + updateMaxLine: false, // Set when the widest line needs to be determined anew + scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet + scrollToPos: null, // Used to scroll to a specific position + focus: false, + id: ++nextOpId // Unique ID + }; + if (operationGroup) { + operationGroup.ops.push(cm.curOp); + } else { + cm.curOp.ownsGroup = operationGroup = { + ops: [cm.curOp], + delayedCallbacks: [] + }; + } + } + + function fireCallbacksForOps(group) { + // Calls delayed callbacks and cursorActivity handlers until no + // new ones appear + var callbacks = group.delayedCallbacks, i = 0; + do { + for (; i < callbacks.length; i++) + callbacks[i].call(null); + for (var j = 0; j < group.ops.length; j++) { + var op = group.ops[j]; + if (op.cursorActivityHandlers) + while (op.cursorActivityCalled < op.cursorActivityHandlers.length) + op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); + } + } while (i < callbacks.length); + } + + // Finish an operation, updating the display and signalling delayed events + function endOperation(cm) { + var op = cm.curOp, group = op.ownsGroup; + if (!group) return; + + try { fireCallbacksForOps(group); } + finally { + operationGroup = null; + for (var i = 0; i < group.ops.length; i++) + group.ops[i].cm.curOp = null; + endOperations(group); + } + } + + // The DOM updates done when an operation finishes are batched so + // that the minimum number of relayouts are required. + function endOperations(group) { + var ops = group.ops; + for (var i = 0; i < ops.length; i++) // Read DOM + endOperation_R1(ops[i]); + for (var i = 0; i < ops.length; i++) // Write DOM (maybe) + endOperation_W1(ops[i]); + for (var i = 0; i < ops.length; i++) // Read DOM + endOperation_R2(ops[i]); + for (var i = 0; i < ops.length; i++) // Write DOM (maybe) + endOperation_W2(ops[i]); + for (var i = 0; i < ops.length; i++) // Read DOM + endOperation_finish(ops[i]); + } + + function endOperation_R1(op) { + var cm = op.cm, display = cm.display; + maybeClipScrollbars(cm); + if (op.updateMaxLine) findMaxLine(cm); + + op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null || + op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom || + op.scrollToPos.to.line >= display.viewTo) || + display.maxLineChanged && cm.options.lineWrapping; + op.update = op.mustUpdate && + new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate); + } + + function endOperation_W1(op) { + op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update); + } + + function endOperation_R2(op) { + var cm = op.cm, display = cm.display; + if (op.updatedDisplay) updateHeightsInViewport(cm); + + op.barMeasure = measureForScrollbars(cm); + + // If the max line changed since it was last measured, measure it, + // and ensure the document's width matches it. + // updateDisplay_W2 will use these properties to do the actual resizing + if (display.maxLineChanged && !cm.options.lineWrapping) { + op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3; + cm.display.sizerWidth = op.adjustWidthTo; + op.barMeasure.scrollWidth = + Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth); + op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm)); + } + + if (op.updatedDisplay || op.selectionChanged) + op.preparedSelection = display.input.prepareSelection(); + } + + function endOperation_W2(op) { + var cm = op.cm; + + if (op.adjustWidthTo != null) { + cm.display.sizer.style.minWidth = op.adjustWidthTo + "px"; + if (op.maxScrollLeft < cm.doc.scrollLeft) + setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); + cm.display.maxLineChanged = false; + } + + if (op.preparedSelection) + cm.display.input.showSelection(op.preparedSelection); + if (op.updatedDisplay) + setDocumentHeight(cm, op.barMeasure); + if (op.updatedDisplay || op.startHeight != cm.doc.height) + updateScrollbars(cm, op.barMeasure); + + if (op.selectionChanged) restartBlink(cm); + + if (cm.state.focused && op.updateInput) + cm.display.input.reset(op.typing); + if (op.focus && op.focus == activeElt() && (!document.hasFocus || document.hasFocus())) + ensureFocus(op.cm); + } + + function endOperation_finish(op) { + var cm = op.cm, display = cm.display, doc = cm.doc; + + if (op.updatedDisplay) postUpdateDisplay(cm, op.update); + + // Abort mouse wheel delta measurement, when scrolling explicitly + if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos)) + display.wheelStartX = display.wheelStartY = null; + + // Propagate the scroll position to the actual DOM scroller + if (op.scrollTop != null && (display.scroller.scrollTop != op.scrollTop || op.forceScroll)) { + doc.scrollTop = Math.max(0, Math.min(display.scroller.scrollHeight - display.scroller.clientHeight, op.scrollTop)); + display.scrollbars.setScrollTop(doc.scrollTop); + display.scroller.scrollTop = doc.scrollTop; + } + if (op.scrollLeft != null && (display.scroller.scrollLeft != op.scrollLeft || op.forceScroll)) { + doc.scrollLeft = Math.max(0, Math.min(display.scroller.scrollWidth - display.scroller.clientWidth, op.scrollLeft)); + display.scrollbars.setScrollLeft(doc.scrollLeft); + display.scroller.scrollLeft = doc.scrollLeft; + alignHorizontally(cm); + } + // If we need to scroll a specific position into view, do so. + if (op.scrollToPos) { + var coords = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from), + clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin); + if (op.scrollToPos.isCursor && cm.state.focused) maybeScrollWindow(cm, coords); + } + + // Fire events for markers that are hidden/unidden by editing or + // undoing + var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers; + if (hidden) for (var i = 0; i < hidden.length; ++i) + if (!hidden[i].lines.length) signal(hidden[i], "hide"); + if (unhidden) for (var i = 0; i < unhidden.length; ++i) + if (unhidden[i].lines.length) signal(unhidden[i], "unhide"); + + if (display.wrapper.offsetHeight) + doc.scrollTop = cm.display.scroller.scrollTop; + + // Fire change events, and delayed event handlers + if (op.changeObjs) + signal(cm, "changes", cm, op.changeObjs); + if (op.update) + op.update.finish(); + } + + // Run the given function in an operation + function runInOp(cm, f) { + if (cm.curOp) return f(); + startOperation(cm); + try { return f(); } + finally { endOperation(cm); } + } + // Wraps a function in an operation. Returns the wrapped function. + function operation(cm, f) { + return function() { + if (cm.curOp) return f.apply(cm, arguments); + startOperation(cm); + try { return f.apply(cm, arguments); } + finally { endOperation(cm); } + }; + } + // Used to add methods to editor and doc instances, wrapping them in + // operations. + function methodOp(f) { + return function() { + if (this.curOp) return f.apply(this, arguments); + startOperation(this); + try { return f.apply(this, arguments); } + finally { endOperation(this); } + }; + } + function docMethodOp(f) { + return function() { + var cm = this.cm; + if (!cm || cm.curOp) return f.apply(this, arguments); + startOperation(cm); + try { return f.apply(this, arguments); } + finally { endOperation(cm); } + }; + } + + // VIEW TRACKING + + // These objects are used to represent the visible (currently drawn) + // part of the document. A LineView may correspond to multiple + // logical lines, if those are connected by collapsed ranges. + function LineView(doc, line, lineN) { + // The starting line + this.line = line; + // Continuing lines, if any + this.rest = visualLineContinued(line); + // Number of logical lines in this visual line + this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1; + this.node = this.text = null; + this.hidden = lineIsHidden(doc, line); + } + + // Create a range of LineView objects for the given lines. + function buildViewArray(cm, from, to) { + var array = [], nextPos; + for (var pos = from; pos < to; pos = nextPos) { + var view = new LineView(cm.doc, getLine(cm.doc, pos), pos); + nextPos = pos + view.size; + array.push(view); + } + return array; + } + + // Updates the display.view data structure for a given change to the + // document. From and to are in pre-change coordinates. Lendiff is + // the amount of lines added or subtracted by the change. This is + // used for changes that span multiple lines, or change the way + // lines are divided into visual lines. regLineChange (below) + // registers single-line changes. + function regChange(cm, from, to, lendiff) { + if (from == null) from = cm.doc.first; + if (to == null) to = cm.doc.first + cm.doc.size; + if (!lendiff) lendiff = 0; + + var display = cm.display; + if (lendiff && to < display.viewTo && + (display.updateLineNumbers == null || display.updateLineNumbers > from)) + display.updateLineNumbers = from; + + cm.curOp.viewChanged = true; + + if (from >= display.viewTo) { // Change after + if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo) + resetView(cm); + } else if (to <= display.viewFrom) { // Change before + if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) { + resetView(cm); + } else { + display.viewFrom += lendiff; + display.viewTo += lendiff; + } + } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap + resetView(cm); + } else if (from <= display.viewFrom) { // Top overlap + var cut = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cut) { + display.view = display.view.slice(cut.index); + display.viewFrom = cut.lineN; + display.viewTo += lendiff; + } else { + resetView(cm); + } + } else if (to >= display.viewTo) { // Bottom overlap + var cut = viewCuttingPoint(cm, from, from, -1); + if (cut) { + display.view = display.view.slice(0, cut.index); + display.viewTo = cut.lineN; + } else { + resetView(cm); + } + } else { // Gap in the middle + var cutTop = viewCuttingPoint(cm, from, from, -1); + var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1); + if (cutTop && cutBot) { + display.view = display.view.slice(0, cutTop.index) + .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN)) + .concat(display.view.slice(cutBot.index)); + display.viewTo += lendiff; + } else { + resetView(cm); + } + } + + var ext = display.externalMeasured; + if (ext) { + if (to < ext.lineN) + ext.lineN += lendiff; + else if (from < ext.lineN + ext.size) + display.externalMeasured = null; + } + } + + // Register a change to a single line. Type must be one of "text", + // "gutter", "class", "widget" + function regLineChange(cm, line, type) { + cm.curOp.viewChanged = true; + var display = cm.display, ext = cm.display.externalMeasured; + if (ext && line >= ext.lineN && line < ext.lineN + ext.size) + display.externalMeasured = null; + + if (line < display.viewFrom || line >= display.viewTo) return; + var lineView = display.view[findViewIndex(cm, line)]; + if (lineView.node == null) return; + var arr = lineView.changes || (lineView.changes = []); + if (indexOf(arr, type) == -1) arr.push(type); + } + + // Clear the view. + function resetView(cm) { + cm.display.viewFrom = cm.display.viewTo = cm.doc.first; + cm.display.view = []; + cm.display.viewOffset = 0; + } + + // Find the view element corresponding to a given line. Return null + // when the line isn't visible. + function findViewIndex(cm, n) { + if (n >= cm.display.viewTo) return null; + n -= cm.display.viewFrom; + if (n < 0) return null; + var view = cm.display.view; + for (var i = 0; i < view.length; i++) { + n -= view[i].size; + if (n < 0) return i; + } + } + + function viewCuttingPoint(cm, oldN, newN, dir) { + var index = findViewIndex(cm, oldN), diff, view = cm.display.view; + if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size) + return {index: index, lineN: newN}; + for (var i = 0, n = cm.display.viewFrom; i < index; i++) + n += view[i].size; + if (n != oldN) { + if (dir > 0) { + if (index == view.length - 1) return null; + diff = (n + view[index].size) - oldN; + index++; + } else { + diff = n - oldN; + } + oldN += diff; newN += diff; + } + while (visualLineNo(cm.doc, newN) != newN) { + if (index == (dir < 0 ? 0 : view.length - 1)) return null; + newN += dir * view[index - (dir < 0 ? 1 : 0)].size; + index += dir; + } + return {index: index, lineN: newN}; + } + + // Force the view to cover a given range, adding empty view element + // or clipping off existing ones as needed. + function adjustView(cm, from, to) { + var display = cm.display, view = display.view; + if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) { + display.view = buildViewArray(cm, from, to); + display.viewFrom = from; + } else { + if (display.viewFrom > from) + display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); + else if (display.viewFrom < from) + display.view = display.view.slice(findViewIndex(cm, from)); + display.viewFrom = from; + if (display.viewTo < to) + display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); + else if (display.viewTo > to) + display.view = display.view.slice(0, findViewIndex(cm, to)); + } + display.viewTo = to; + } + + // Count the number of lines in the view whose DOM representation is + // out of date (or nonexistent). + function countDirtyView(cm) { + var view = cm.display.view, dirty = 0; + for (var i = 0; i < view.length; i++) { + var lineView = view[i]; + if (!lineView.hidden && (!lineView.node || lineView.changes)) ++dirty; + } + return dirty; + } + + // EVENT HANDLERS + + // Attach the necessary event handlers when initializing the editor + function registerEventHandlers(cm) { + var d = cm.display; + on(d.scroller, "mousedown", operation(cm, onMouseDown)); + // Older IE's will not fire a second mousedown for a double click + if (ie && ie_version < 11) + on(d.scroller, "dblclick", operation(cm, function(e) { + if (signalDOMEvent(cm, e)) return; + var pos = posFromMouse(cm, e); + if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) return; + e_preventDefault(e); + var word = cm.findWordAt(pos); + extendSelection(cm.doc, word.anchor, word.head); + })); + else + on(d.scroller, "dblclick", function(e) { signalDOMEvent(cm, e) || e_preventDefault(e); }); + // Some browsers fire contextmenu *after* opening the menu, at + // which point we can't mess with it anymore. Context menu is + // handled in onMouseDown for these browsers. + if (!captureRightClick) on(d.scroller, "contextmenu", function(e) {onContextMenu(cm, e);}); + + // Used to suppress mouse event handling when a touch happens + var touchFinished, prevTouch = {end: 0}; + function finishTouch() { + if (d.activeTouch) { + touchFinished = setTimeout(function() {d.activeTouch = null;}, 1000); + prevTouch = d.activeTouch; + prevTouch.end = +new Date; + } + }; + function isMouseLikeTouchEvent(e) { + if (e.touches.length != 1) return false; + var touch = e.touches[0]; + return touch.radiusX <= 1 && touch.radiusY <= 1; + } + function farAway(touch, other) { + if (other.left == null) return true; + var dx = other.left - touch.left, dy = other.top - touch.top; + return dx * dx + dy * dy > 20 * 20; + } + on(d.scroller, "touchstart", function(e) { + if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e)) { + clearTimeout(touchFinished); + var now = +new Date; + d.activeTouch = {start: now, moved: false, + prev: now - prevTouch.end <= 300 ? prevTouch : null}; + if (e.touches.length == 1) { + d.activeTouch.left = e.touches[0].pageX; + d.activeTouch.top = e.touches[0].pageY; + } + } + }); + on(d.scroller, "touchmove", function() { + if (d.activeTouch) d.activeTouch.moved = true; + }); + on(d.scroller, "touchend", function(e) { + var touch = d.activeTouch; + if (touch && !eventInWidget(d, e) && touch.left != null && + !touch.moved && new Date - touch.start < 300) { + var pos = cm.coordsChar(d.activeTouch, "page"), range; + if (!touch.prev || farAway(touch, touch.prev)) // Single tap + range = new Range(pos, pos); + else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap + range = cm.findWordAt(pos); + else // Triple tap + range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); + cm.setSelection(range.anchor, range.head); + cm.focus(); + e_preventDefault(e); + } + finishTouch(); + }); + on(d.scroller, "touchcancel", finishTouch); + + // Sync scrolling between fake scrollbars and real scrollable + // area, ensure viewport is updated when scrolling. + on(d.scroller, "scroll", function() { + if (d.scroller.clientHeight) { + setScrollTop(cm, d.scroller.scrollTop); + setScrollLeft(cm, d.scroller.scrollLeft, true); + signal(cm, "scroll", cm); + } + }); + + // Listen to wheel events in order to try and update the viewport on time. + on(d.scroller, "mousewheel", function(e){onScrollWheel(cm, e);}); + on(d.scroller, "DOMMouseScroll", function(e){onScrollWheel(cm, e);}); + + // Prevent wrapper from ever scrolling + on(d.wrapper, "scroll", function() { d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; }); + + d.dragFunctions = { + enter: function(e) {if (!signalDOMEvent(cm, e)) e_stop(e);}, + over: function(e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }}, + start: function(e){onDragStart(cm, e);}, + drop: operation(cm, onDrop), + leave: function() {clearDragCursor(cm);} + }; + + var inp = d.input.getField(); + on(inp, "keyup", function(e) { onKeyUp.call(cm, e); }); + on(inp, "keydown", operation(cm, onKeyDown)); + on(inp, "keypress", operation(cm, onKeyPress)); + on(inp, "focus", bind(onFocus, cm)); + on(inp, "blur", bind(onBlur, cm)); + } + + function dragDropChanged(cm, value, old) { + var wasOn = old && old != CodeMirror.Init; + if (!value != !wasOn) { + var funcs = cm.display.dragFunctions; + var toggle = value ? on : off; + toggle(cm.display.scroller, "dragstart", funcs.start); + toggle(cm.display.scroller, "dragenter", funcs.enter); + toggle(cm.display.scroller, "dragover", funcs.over); + toggle(cm.display.scroller, "dragleave", funcs.leave); + toggle(cm.display.scroller, "drop", funcs.drop); + } + } + + // Called when the window resizes + function onResize(cm) { + var d = cm.display; + if (d.lastWrapHeight == d.wrapper.clientHeight && d.lastWrapWidth == d.wrapper.clientWidth) + return; + // Might be a text scaling operation, clear size caches. + d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null; + d.scrollbarsClipped = false; + cm.setSize(); + } + + // MOUSE EVENTS + + // Return true when the given mouse event happened in a widget + function eventInWidget(display, e) { + for (var n = e_target(e); n != display.wrapper; n = n.parentNode) { + if (!n || (n.nodeType == 1 && n.getAttribute("cm-ignore-events") == "true") || + (n.parentNode == display.sizer && n != display.mover)) + return true; + } + } + + // Given a mouse event, find the corresponding position. If liberal + // is false, it checks whether a gutter or scrollbar was clicked, + // and returns null if it was. forRect is used by rectangular + // selections, and tries to estimate a character position even for + // coordinates beyond the right of the text. + function posFromMouse(cm, e, liberal, forRect) { + var display = cm.display; + if (!liberal && e_target(e).getAttribute("cm-not-content") == "true") return null; + + var x, y, space = display.lineSpace.getBoundingClientRect(); + // Fails unpredictably on IE[67] when mouse is dragged around quickly. + try { x = e.clientX - space.left; y = e.clientY - space.top; } + catch (e) { return null; } + var coords = coordsChar(cm, x, y), line; + if (forRect && coords.xRel == 1 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) { + var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length; + coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff)); + } + return coords; + } + + // A mouse down can be a single click, double click, triple click, + // start of selection drag, start of text drag, new cursor + // (ctrl-click), rectangle drag (alt-drag), or xwin + // middle-click-paste. Or it might be a click on something we should + // not interfere with, such as a scrollbar or widget. + function onMouseDown(e) { + var cm = this, display = cm.display; + if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) return; + display.shift = e.shiftKey; + + if (eventInWidget(display, e)) { + if (!webkit) { + // Briefly turn off draggability, to allow widgets to do + // normal dragging things. + display.scroller.draggable = false; + setTimeout(function(){display.scroller.draggable = true;}, 100); + } + return; + } + if (clickInGutter(cm, e)) return; + var start = posFromMouse(cm, e); + window.focus(); + + switch (e_button(e)) { + case 1: + // #3261: make sure, that we're not starting a second selection + if (cm.state.selectingText) + cm.state.selectingText(e); + else if (start) + leftButtonDown(cm, e, start); + else if (e_target(e) == display.scroller) + e_preventDefault(e); + break; + case 2: + if (webkit) cm.state.lastMiddleDown = +new Date; + if (start) extendSelection(cm.doc, start); + setTimeout(function() {display.input.focus();}, 20); + e_preventDefault(e); + break; + case 3: + if (captureRightClick) onContextMenu(cm, e); + else delayBlurEvent(cm); + break; + } + } + + var lastClick, lastDoubleClick; + function leftButtonDown(cm, e, start) { + if (ie) setTimeout(bind(ensureFocus, cm), 0); + else cm.curOp.focus = activeElt(); + + var now = +new Date, type; + if (lastDoubleClick && lastDoubleClick.time > now - 400 && cmp(lastDoubleClick.pos, start) == 0) { + type = "triple"; + } else if (lastClick && lastClick.time > now - 400 && cmp(lastClick.pos, start) == 0) { + type = "double"; + lastDoubleClick = {time: now, pos: start}; + } else { + type = "single"; + lastClick = {time: now, pos: start}; + } + + var sel = cm.doc.sel, modifier = mac ? e.metaKey : e.ctrlKey, contained; + if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() && + type == "single" && (contained = sel.contains(start)) > -1 && + (cmp((contained = sel.ranges[contained]).from(), start) < 0 || start.xRel > 0) && + (cmp(contained.to(), start) > 0 || start.xRel < 0)) + leftButtonStartDrag(cm, e, start, modifier); + else + leftButtonSelect(cm, e, start, type, modifier); + } + + // Start a text drag. When it ends, see if any dragging actually + // happen, and treat as a click if it didn't. + function leftButtonStartDrag(cm, e, start, modifier) { + var display = cm.display, startTime = +new Date; + var dragEnd = operation(cm, function(e2) { + if (webkit) display.scroller.draggable = false; + cm.state.draggingText = false; + off(document, "mouseup", dragEnd); + off(display.scroller, "drop", dragEnd); + if (Math.abs(e.clientX - e2.clientX) + Math.abs(e.clientY - e2.clientY) < 10) { + e_preventDefault(e2); + if (!modifier && +new Date - 200 < startTime) + extendSelection(cm.doc, start); + // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081) + if (webkit || ie && ie_version == 9) + setTimeout(function() {document.body.focus(); display.input.focus();}, 20); + else + display.input.focus(); + } + }); + // Let the drag handler handle this. + if (webkit) display.scroller.draggable = true; + cm.state.draggingText = dragEnd; + // IE's approach to draggable + if (display.scroller.dragDrop) display.scroller.dragDrop(); + on(document, "mouseup", dragEnd); + on(display.scroller, "drop", dragEnd); + } + + // Normal selection, as opposed to text dragging. + function leftButtonSelect(cm, e, start, type, addNew) { + var display = cm.display, doc = cm.doc; + e_preventDefault(e); + + var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges; + if (addNew && !e.shiftKey) { + ourIndex = doc.sel.contains(start); + if (ourIndex > -1) + ourRange = ranges[ourIndex]; + else + ourRange = new Range(start, start); + } else { + ourRange = doc.sel.primary(); + ourIndex = doc.sel.primIndex; + } + + if (e.altKey) { + type = "rect"; + if (!addNew) ourRange = new Range(start, start); + start = posFromMouse(cm, e, true, true); + ourIndex = -1; + } else if (type == "double") { + var word = cm.findWordAt(start); + if (cm.display.shift || doc.extend) + ourRange = extendRange(doc, ourRange, word.anchor, word.head); + else + ourRange = word; + } else if (type == "triple") { + var line = new Range(Pos(start.line, 0), clipPos(doc, Pos(start.line + 1, 0))); + if (cm.display.shift || doc.extend) + ourRange = extendRange(doc, ourRange, line.anchor, line.head); + else + ourRange = line; + } else { + ourRange = extendRange(doc, ourRange, start); + } + + if (!addNew) { + ourIndex = 0; + setSelection(doc, new Selection([ourRange], 0), sel_mouse); + startSel = doc.sel; + } else if (ourIndex == -1) { + ourIndex = ranges.length; + setSelection(doc, normalizeSelection(ranges.concat([ourRange]), ourIndex), + {scroll: false, origin: "*mouse"}); + } else if (ranges.length > 1 && ranges[ourIndex].empty() && type == "single" && !e.shiftKey) { + setSelection(doc, normalizeSelection(ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0), + {scroll: false, origin: "*mouse"}); + startSel = doc.sel; + } else { + replaceOneSelection(doc, ourIndex, ourRange, sel_mouse); + } + + var lastPos = start; + function extendTo(pos) { + if (cmp(lastPos, pos) == 0) return; + lastPos = pos; + + if (type == "rect") { + var ranges = [], tabSize = cm.options.tabSize; + var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize); + var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize); + var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol); + for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line)); + line <= end; line++) { + var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize); + if (left == right) + ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); + else if (text.length > leftPos) + ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); + } + if (!ranges.length) ranges.push(new Range(start, start)); + setSelection(doc, normalizeSelection(startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex), + {origin: "*mouse", scroll: false}); + cm.scrollIntoView(pos); + } else { + var oldRange = ourRange; + var anchor = oldRange.anchor, head = pos; + if (type != "single") { + if (type == "double") + var range = cm.findWordAt(pos); + else + var range = new Range(Pos(pos.line, 0), clipPos(doc, Pos(pos.line + 1, 0))); + if (cmp(range.anchor, anchor) > 0) { + head = range.head; + anchor = minPos(oldRange.from(), range.anchor); + } else { + head = range.anchor; + anchor = maxPos(oldRange.to(), range.head); + } + } + var ranges = startSel.ranges.slice(0); + ranges[ourIndex] = new Range(clipPos(doc, anchor), head); + setSelection(doc, normalizeSelection(ranges, ourIndex), sel_mouse); + } + } + + var editorSize = display.wrapper.getBoundingClientRect(); + // Used to ensure timeout re-tries don't fire when another extend + // happened in the meantime (clearTimeout isn't reliable -- at + // least on Chrome, the timeouts still happen even when cleared, + // if the clear happens after their scheduled firing time). + var counter = 0; + + function extend(e) { + var curCount = ++counter; + var cur = posFromMouse(cm, e, true, type == "rect"); + if (!cur) return; + if (cmp(cur, lastPos) != 0) { + cm.curOp.focus = activeElt(); + extendTo(cur); + var visible = visibleLines(display, doc); + if (cur.line >= visible.to || cur.line < visible.from) + setTimeout(operation(cm, function(){if (counter == curCount) extend(e);}), 150); + } else { + var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0; + if (outside) setTimeout(operation(cm, function() { + if (counter != curCount) return; + display.scroller.scrollTop += outside; + extend(e); + }), 50); + } + } + + function done(e) { + cm.state.selectingText = false; + counter = Infinity; + e_preventDefault(e); + display.input.focus(); + off(document, "mousemove", move); + off(document, "mouseup", up); + doc.history.lastSelOrigin = null; + } + + var move = operation(cm, function(e) { + if (!e_button(e)) done(e); + else extend(e); + }); + var up = operation(cm, done); + cm.state.selectingText = up; + on(document, "mousemove", move); + on(document, "mouseup", up); + } + + // Determines whether an event happened in the gutter, and fires the + // handlers for the corresponding event. + function gutterEvent(cm, e, type, prevent) { + try { var mX = e.clientX, mY = e.clientY; } + catch(e) { return false; } + if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) return false; + if (prevent) e_preventDefault(e); + + var display = cm.display; + var lineBox = display.lineDiv.getBoundingClientRect(); + + if (mY > lineBox.bottom || !hasHandler(cm, type)) return e_defaultPrevented(e); + mY -= lineBox.top - display.viewOffset; + + for (var i = 0; i < cm.options.gutters.length; ++i) { + var g = display.gutters.childNodes[i]; + if (g && g.getBoundingClientRect().right >= mX) { + var line = lineAtHeight(cm.doc, mY); + var gutter = cm.options.gutters[i]; + signal(cm, type, cm, line, gutter, e); + return e_defaultPrevented(e); + } + } + } + + function clickInGutter(cm, e) { + return gutterEvent(cm, e, "gutterClick", true); + } + + // Kludge to work around strange IE behavior where it'll sometimes + // re-fire a series of drag-related events right after the drop (#1551) + var lastDrop = 0; + + function onDrop(e) { + var cm = this; + clearDragCursor(cm); + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) + return; + e_preventDefault(e); + if (ie) lastDrop = +new Date; + var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files; + if (!pos || cm.isReadOnly()) return; + // Might be a file drop, in which case we simply extract the text + // and insert it. + if (files && files.length && window.FileReader && window.File) { + var n = files.length, text = Array(n), read = 0; + var loadFile = function(file, i) { + if (cm.options.allowDropFileTypes && + indexOf(cm.options.allowDropFileTypes, file.type) == -1) + return; + + var reader = new FileReader; + reader.onload = operation(cm, function() { + var content = reader.result; + if (/[\x00-\x08\x0e-\x1f]{2}/.test(content)) content = ""; + text[i] = content; + if (++read == n) { + pos = clipPos(cm.doc, pos); + var change = {from: pos, to: pos, + text: cm.doc.splitLines(text.join(cm.doc.lineSeparator())), + origin: "paste"}; + makeChange(cm.doc, change); + setSelectionReplaceHistory(cm.doc, simpleSelection(pos, changeEnd(change))); + } + }); + reader.readAsText(file); + }; + for (var i = 0; i < n; ++i) loadFile(files[i], i); + } else { // Normal drop + // Don't do a replace if the drop happened inside of the selected text. + if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) { + cm.state.draggingText(e); + // Ensure the editor is re-focused + setTimeout(function() {cm.display.input.focus();}, 20); + return; + } + try { + var text = e.dataTransfer.getData("Text"); + if (text) { + if (cm.state.draggingText && !(mac ? e.altKey : e.ctrlKey)) + var selected = cm.listSelections(); + setSelectionNoUndo(cm.doc, simpleSelection(pos, pos)); + if (selected) for (var i = 0; i < selected.length; ++i) + replaceRange(cm.doc, "", selected[i].anchor, selected[i].head, "drag"); + cm.replaceSelection(text, "around", "paste"); + cm.display.input.focus(); + } + } + catch(e){} + } + } + + function onDragStart(cm, e) { + if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return; } + if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) return; + + e.dataTransfer.setData("Text", cm.getSelection()); + + // Use dummy image instead of default browsers image. + // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there. + if (e.dataTransfer.setDragImage && !safari) { + var img = elt("img", null, null, "position: fixed; left: 0; top: 0;"); + img.src = "data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="; + if (presto) { + img.width = img.height = 1; + cm.display.wrapper.appendChild(img); + // Force a relayout, or Opera won't use our image for some obscure reason + img._top = img.offsetTop; + } + e.dataTransfer.setDragImage(img, 0, 0); + if (presto) img.parentNode.removeChild(img); + } + } + + function onDragOver(cm, e) { + var pos = posFromMouse(cm, e); + if (!pos) return; + var frag = document.createDocumentFragment(); + drawSelectionCursor(cm, pos, frag); + if (!cm.display.dragCursor) { + cm.display.dragCursor = elt("div", null, "CodeMirror-cursors CodeMirror-dragcursors"); + cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv); + } + removeChildrenAndAdd(cm.display.dragCursor, frag); + } + + function clearDragCursor(cm) { + if (cm.display.dragCursor) { + cm.display.lineSpace.removeChild(cm.display.dragCursor); + cm.display.dragCursor = null; + } + } + + // SCROLL EVENTS + + // Sync the scrollable area and scrollbars, ensure the viewport + // covers the visible area. + function setScrollTop(cm, val) { + if (Math.abs(cm.doc.scrollTop - val) < 2) return; + cm.doc.scrollTop = val; + if (!gecko) updateDisplaySimple(cm, {top: val}); + if (cm.display.scroller.scrollTop != val) cm.display.scroller.scrollTop = val; + cm.display.scrollbars.setScrollTop(val); + if (gecko) updateDisplaySimple(cm); + startWorker(cm, 100); + } + // Sync scroller and scrollbar, ensure the gutter elements are + // aligned. + function setScrollLeft(cm, val, isScroller) { + if (isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) return; + val = Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth); + cm.doc.scrollLeft = val; + alignHorizontally(cm); + if (cm.display.scroller.scrollLeft != val) cm.display.scroller.scrollLeft = val; + cm.display.scrollbars.setScrollLeft(val); + } + + // Since the delta values reported on mouse wheel events are + // unstandardized between browsers and even browser versions, and + // generally horribly unpredictable, this code starts by measuring + // the scroll effect that the first few mouse wheel events have, + // and, from that, detects the way it can convert deltas to pixel + // offsets afterwards. + // + // The reason we want to know the amount a wheel event will scroll + // is that it gives us a chance to update the display before the + // actual scrolling happens, reducing flickering. + + var wheelSamples = 0, wheelPixelsPerUnit = null; + // Fill in a browser-detected starting value on browsers where we + // know one. These don't have to be accurate -- the result of them + // being wrong would just be a slight flicker on the first wheel + // scroll (if it is large enough). + if (ie) wheelPixelsPerUnit = -.53; + else if (gecko) wheelPixelsPerUnit = 15; + else if (chrome) wheelPixelsPerUnit = -.7; + else if (safari) wheelPixelsPerUnit = -1/3; + + var wheelEventDelta = function(e) { + var dx = e.wheelDeltaX, dy = e.wheelDeltaY; + if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) dx = e.detail; + if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) dy = e.detail; + else if (dy == null) dy = e.wheelDelta; + return {x: dx, y: dy}; + }; + CodeMirror.wheelEventPixels = function(e) { + var delta = wheelEventDelta(e); + delta.x *= wheelPixelsPerUnit; + delta.y *= wheelPixelsPerUnit; + return delta; + }; + + function onScrollWheel(cm, e) { + var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y; + + var display = cm.display, scroll = display.scroller; + // Quit if there's nothing to scroll here + var canScrollX = scroll.scrollWidth > scroll.clientWidth; + var canScrollY = scroll.scrollHeight > scroll.clientHeight; + if (!(dx && canScrollX || dy && canScrollY)) return; + + // Webkit browsers on OS X abort momentum scrolls when the target + // of the scroll event is removed from the scrollable element. + // This hack (see related code in patchDisplay) makes sure the + // element is kept around. + if (dy && mac && webkit) { + outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) { + for (var i = 0; i < view.length; i++) { + if (view[i].node == cur) { + cm.display.currentWheelTarget = cur; + break outer; + } + } + } + } + + // On some browsers, horizontal scrolling will cause redraws to + // happen before the gutter has been realigned, causing it to + // wriggle around in a most unseemly way. When we have an + // estimated pixels/delta value, we just handle horizontal + // scrolling entirely here. It'll be slightly off from native, but + // better than glitching out. + if (dx && !gecko && !presto && wheelPixelsPerUnit != null) { + if (dy && canScrollY) + setScrollTop(cm, Math.max(0, Math.min(scroll.scrollTop + dy * wheelPixelsPerUnit, scroll.scrollHeight - scroll.clientHeight))); + setScrollLeft(cm, Math.max(0, Math.min(scroll.scrollLeft + dx * wheelPixelsPerUnit, scroll.scrollWidth - scroll.clientWidth))); + // Only prevent default scrolling if vertical scrolling is + // actually possible. Otherwise, it causes vertical scroll + // jitter on OSX trackpads when deltaX is small and deltaY + // is large (issue #3579) + if (!dy || (dy && canScrollY)) + e_preventDefault(e); + display.wheelStartX = null; // Abort measurement, if in progress + return; + } + + // 'Project' the visible viewport to cover the area that is being + // scrolled into view (if we know enough to estimate it). + if (dy && wheelPixelsPerUnit != null) { + var pixels = dy * wheelPixelsPerUnit; + var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight; + if (pixels < 0) top = Math.max(0, top + pixels - 50); + else bot = Math.min(cm.doc.height, bot + pixels + 50); + updateDisplaySimple(cm, {top: top, bottom: bot}); + } + + if (wheelSamples < 20) { + if (display.wheelStartX == null) { + display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop; + display.wheelDX = dx; display.wheelDY = dy; + setTimeout(function() { + if (display.wheelStartX == null) return; + var movedX = scroll.scrollLeft - display.wheelStartX; + var movedY = scroll.scrollTop - display.wheelStartY; + var sample = (movedY && display.wheelDY && movedY / display.wheelDY) || + (movedX && display.wheelDX && movedX / display.wheelDX); + display.wheelStartX = display.wheelStartY = null; + if (!sample) return; + wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1); + ++wheelSamples; + }, 200); + } else { + display.wheelDX += dx; display.wheelDY += dy; + } + } + } + + // KEY EVENTS + + // Run a handler that was bound to a key. + function doHandleBinding(cm, bound, dropShift) { + if (typeof bound == "string") { + bound = commands[bound]; + if (!bound) return false; + } + // Ensure previous input has been read, so that the handler sees a + // consistent view of the document + cm.display.input.ensurePolled(); + var prevShift = cm.display.shift, done = false; + try { + if (cm.isReadOnly()) cm.state.suppressEdits = true; + if (dropShift) cm.display.shift = false; + done = bound(cm) != Pass; + } finally { + cm.display.shift = prevShift; + cm.state.suppressEdits = false; + } + return done; + } + + function lookupKeyForEditor(cm, name, handle) { + for (var i = 0; i < cm.state.keyMaps.length; i++) { + var result = lookupKey(name, cm.state.keyMaps[i], handle, cm); + if (result) return result; + } + return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm)) + || lookupKey(name, cm.options.keyMap, handle, cm); + } + + var stopSeq = new Delayed; + function dispatchKey(cm, name, e, handle) { + var seq = cm.state.keySeq; + if (seq) { + if (isModifierKey(name)) return "handled"; + stopSeq.set(50, function() { + if (cm.state.keySeq == seq) { + cm.state.keySeq = null; + cm.display.input.reset(); + } + }); + name = seq + " " + name; + } + var result = lookupKeyForEditor(cm, name, handle); + + if (result == "multi") + cm.state.keySeq = name; + if (result == "handled") + signalLater(cm, "keyHandled", cm, name, e); + + if (result == "handled" || result == "multi") { + e_preventDefault(e); + restartBlink(cm); + } + + if (seq && !result && /\'$/.test(name)) { + e_preventDefault(e); + return true; + } + return !!result; + } + + // Handle a key from the keydown event. + function handleKeyBinding(cm, e) { + var name = keyName(e, true); + if (!name) return false; + + if (e.shiftKey && !cm.state.keySeq) { + // First try to resolve full name (including 'Shift-'). Failing + // that, see if there is a cursor-motion command (starting with + // 'go') bound to the keyname without 'Shift-'. + return dispatchKey(cm, "Shift-" + name, e, function(b) {return doHandleBinding(cm, b, true);}) + || dispatchKey(cm, name, e, function(b) { + if (typeof b == "string" ? /^go[A-Z]/.test(b) : b.motion) + return doHandleBinding(cm, b); + }); + } else { + return dispatchKey(cm, name, e, function(b) { return doHandleBinding(cm, b); }); + } + } + + // Handle a key from the keypress event + function handleCharBinding(cm, e, ch) { + return dispatchKey(cm, "'" + ch + "'", e, + function(b) { return doHandleBinding(cm, b, true); }); + } + + var lastStoppedKey = null; + function onKeyDown(e) { + var cm = this; + cm.curOp.focus = activeElt(); + if (signalDOMEvent(cm, e)) return; + // IE does strange things with escape. + if (ie && ie_version < 11 && e.keyCode == 27) e.returnValue = false; + var code = e.keyCode; + cm.display.shift = code == 16 || e.shiftKey; + var handled = handleKeyBinding(cm, e); + if (presto) { + lastStoppedKey = handled ? code : null; + // Opera has no cut event... we try to at least catch the key combo + if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey)) + cm.replaceSelection("", null, "cut"); + } + + // Turn mouse into crosshair when Alt is held on Mac. + if (code == 18 && !/\bCodeMirror-crosshair\b/.test(cm.display.lineDiv.className)) + showCrossHair(cm); + } + + function showCrossHair(cm) { + var lineDiv = cm.display.lineDiv; + addClass(lineDiv, "CodeMirror-crosshair"); + + function up(e) { + if (e.keyCode == 18 || !e.altKey) { + rmClass(lineDiv, "CodeMirror-crosshair"); + off(document, "keyup", up); + off(document, "mouseover", up); + } + } + on(document, "keyup", up); + on(document, "mouseover", up); + } + + function onKeyUp(e) { + if (e.keyCode == 16) this.doc.sel.shift = false; + signalDOMEvent(this, e); + } + + function onKeyPress(e) { + var cm = this; + if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) return; + var keyCode = e.keyCode, charCode = e.charCode; + if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return;} + if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) return; + var ch = String.fromCharCode(charCode == null ? keyCode : charCode); + if (handleCharBinding(cm, e, ch)) return; + cm.display.input.onKeyPress(e); + } + + // FOCUS/BLUR EVENTS + + function delayBlurEvent(cm) { + cm.state.delayingBlurEvent = true; + setTimeout(function() { + if (cm.state.delayingBlurEvent) { + cm.state.delayingBlurEvent = false; + onBlur(cm); + } + }, 100); + } + + function onFocus(cm) { + if (cm.state.delayingBlurEvent) cm.state.delayingBlurEvent = false; + + if (cm.options.readOnly == "nocursor") return; + if (!cm.state.focused) { + signal(cm, "focus", cm); + cm.state.focused = true; + addClass(cm.display.wrapper, "CodeMirror-focused"); + // This test prevents this from firing when a context + // menu is closed (since the input reset would kill the + // select-all detection hack) + if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) { + cm.display.input.reset(); + if (webkit) setTimeout(function() { cm.display.input.reset(true); }, 20); // Issue #1730 + } + cm.display.input.receivedFocus(); + } + restartBlink(cm); + } + function onBlur(cm) { + if (cm.state.delayingBlurEvent) return; + + if (cm.state.focused) { + signal(cm, "blur", cm); + cm.state.focused = false; + rmClass(cm.display.wrapper, "CodeMirror-focused"); + } + clearInterval(cm.display.blinker); + setTimeout(function() {if (!cm.state.focused) cm.display.shift = false;}, 150); + } + + // CONTEXT MENU HANDLING + + // To make the context menu work, we need to briefly unhide the + // textarea (making it as unobtrusive as possible) to let the + // right-click take effect on it. + function onContextMenu(cm, e) { + if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) return; + if (signalDOMEvent(cm, e, "contextmenu")) return; + cm.display.input.onContextMenu(e); + } + + function contextMenuInGutter(cm, e) { + if (!hasHandler(cm, "gutterContextMenu")) return false; + return gutterEvent(cm, e, "gutterContextMenu", false); + } + + // UPDATING + + // Compute the position of the end of a change (its 'to' property + // refers to the pre-change end). + var changeEnd = CodeMirror.changeEnd = function(change) { + if (!change.text) return change.to; + return Pos(change.from.line + change.text.length - 1, + lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0)); + }; + + // Adjust a position to refer to the post-change position of the + // same text, or the end of the change if the change covers it. + function adjustForChange(pos, change) { + if (cmp(pos, change.from) < 0) return pos; + if (cmp(pos, change.to) <= 0) return changeEnd(change); + + var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch; + if (pos.line == change.to.line) ch += changeEnd(change).ch - change.to.ch; + return Pos(line, ch); + } + + function computeSelAfterChange(doc, change) { + var out = []; + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + out.push(new Range(adjustForChange(range.anchor, change), + adjustForChange(range.head, change))); + } + return normalizeSelection(out, doc.sel.primIndex); + } + + function offsetPos(pos, old, nw) { + if (pos.line == old.line) + return Pos(nw.line, pos.ch - old.ch + nw.ch); + else + return Pos(nw.line + (pos.line - old.line), pos.ch); + } + + // Used by replaceSelections to allow moving the selection to the + // start or around the replaced test. Hint may be "start" or "around". + function computeReplacedSel(doc, changes, hint) { + var out = []; + var oldPrev = Pos(doc.first, 0), newPrev = oldPrev; + for (var i = 0; i < changes.length; i++) { + var change = changes[i]; + var from = offsetPos(change.from, oldPrev, newPrev); + var to = offsetPos(changeEnd(change), oldPrev, newPrev); + oldPrev = change.to; + newPrev = to; + if (hint == "around") { + var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0; + out[i] = new Range(inv ? to : from, inv ? from : to); + } else { + out[i] = new Range(from, from); + } + } + return new Selection(out, doc.sel.primIndex); + } + + // Allow "beforeChange" event handlers to influence a change + function filterChange(doc, change, update) { + var obj = { + canceled: false, + from: change.from, + to: change.to, + text: change.text, + origin: change.origin, + cancel: function() { this.canceled = true; } + }; + if (update) obj.update = function(from, to, text, origin) { + if (from) this.from = clipPos(doc, from); + if (to) this.to = clipPos(doc, to); + if (text) this.text = text; + if (origin !== undefined) this.origin = origin; + }; + signal(doc, "beforeChange", doc, obj); + if (doc.cm) signal(doc.cm, "beforeChange", doc.cm, obj); + + if (obj.canceled) return null; + return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}; + } + + // Apply a change to a document, and add it to the document's + // history, and propagating it to all linked documents. + function makeChange(doc, change, ignoreReadOnly) { + if (doc.cm) { + if (!doc.cm.curOp) return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly); + if (doc.cm.state.suppressEdits) return; + } + + if (hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange")) { + change = filterChange(doc, change, true); + if (!change) return; + } + + // Possibly split or suppress the update based on the presence + // of read-only spans in its range. + var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to); + if (split) { + for (var i = split.length - 1; i >= 0; --i) + makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [""] : change.text}); + } else { + makeChangeInner(doc, change); + } + } + + function makeChangeInner(doc, change) { + if (change.text.length == 1 && change.text[0] == "" && cmp(change.from, change.to) == 0) return; + var selAfter = computeSelAfterChange(doc, change); + addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN); + + makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change)); + var rebased = []; + + linkedDocs(doc, function(doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change)); + }); + } + + // Revert a change stored in a document's history. + function makeChangeFromHistory(doc, type, allowSelectionOnly) { + if (doc.cm && doc.cm.state.suppressEdits) return; + + var hist = doc.history, event, selAfter = doc.sel; + var source = type == "undo" ? hist.done : hist.undone, dest = type == "undo" ? hist.undone : hist.done; + + // Verify that there is a useable event (so that ctrl-z won't + // needlessly clear selection events) + for (var i = 0; i < source.length; i++) { + event = source[i]; + if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges) + break; + } + if (i == source.length) return; + hist.lastOrigin = hist.lastSelOrigin = null; + + for (;;) { + event = source.pop(); + if (event.ranges) { + pushSelectionToHistory(event, dest); + if (allowSelectionOnly && !event.equals(doc.sel)) { + setSelection(doc, event, {clearRedo: false}); + return; + } + selAfter = event; + } + else break; + } + + // Build up a reverse change object to add to the opposite history + // stack (redo when undoing, and vice versa). + var antiChanges = []; + pushSelectionToHistory(selAfter, dest); + dest.push({changes: antiChanges, generation: hist.generation}); + hist.generation = event.generation || ++hist.maxGeneration; + + var filter = hasHandler(doc, "beforeChange") || doc.cm && hasHandler(doc.cm, "beforeChange"); + + for (var i = event.changes.length - 1; i >= 0; --i) { + var change = event.changes[i]; + change.origin = type; + if (filter && !filterChange(doc, change, false)) { + source.length = 0; + return; + } + + antiChanges.push(historyChangeFromChange(doc, change)); + + var after = i ? computeSelAfterChange(doc, change) : lst(source); + makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change)); + if (!i && doc.cm) doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); + var rebased = []; + + // Propagate to the linked documents + linkedDocs(doc, function(doc, sharedHist) { + if (!sharedHist && indexOf(rebased, doc.history) == -1) { + rebaseHist(doc.history, change); + rebased.push(doc.history); + } + makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change)); + }); + } + } + + // Sub-views need their line numbers shifted when text is added + // above or below them in the parent document. + function shiftDoc(doc, distance) { + if (distance == 0) return; + doc.first += distance; + doc.sel = new Selection(map(doc.sel.ranges, function(range) { + return new Range(Pos(range.anchor.line + distance, range.anchor.ch), + Pos(range.head.line + distance, range.head.ch)); + }), doc.sel.primIndex); + if (doc.cm) { + regChange(doc.cm, doc.first, doc.first - distance, distance); + for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++) + regLineChange(doc.cm, l, "gutter"); + } + } + + // More lower-level change function, handling only a single document + // (not linked ones). + function makeChangeSingleDoc(doc, change, selAfter, spans) { + if (doc.cm && !doc.cm.curOp) + return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans); + + if (change.to.line < doc.first) { + shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line)); + return; + } + if (change.from.line > doc.lastLine()) return; + + // Clip the change to the size of this doc + if (change.from.line < doc.first) { + var shift = change.text.length - 1 - (doc.first - change.from.line); + shiftDoc(doc, shift); + change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch), + text: [lst(change.text)], origin: change.origin}; + } + var last = doc.lastLine(); + if (change.to.line > last) { + change = {from: change.from, to: Pos(last, getLine(doc, last).text.length), + text: [change.text[0]], origin: change.origin}; + } + + change.removed = getBetween(doc, change.from, change.to); + + if (!selAfter) selAfter = computeSelAfterChange(doc, change); + if (doc.cm) makeChangeSingleDocInEditor(doc.cm, change, spans); + else updateDoc(doc, change, spans); + setSelectionNoUndo(doc, selAfter, sel_dontScroll); + } + + // Handle the interaction of a change to a document with the editor + // that this document is part of. + function makeChangeSingleDocInEditor(cm, change, spans) { + var doc = cm.doc, display = cm.display, from = change.from, to = change.to; + + var recomputeMaxLength = false, checkWidthStart = from.line; + if (!cm.options.lineWrapping) { + checkWidthStart = lineNo(visualLine(getLine(doc, from.line))); + doc.iter(checkWidthStart, to.line + 1, function(line) { + if (line == display.maxLine) { + recomputeMaxLength = true; + return true; + } + }); + } + + if (doc.sel.contains(change.from, change.to) > -1) + signalCursorActivity(cm); + + updateDoc(doc, change, spans, estimateHeight(cm)); + + if (!cm.options.lineWrapping) { + doc.iter(checkWidthStart, from.line + change.text.length, function(line) { + var len = lineLength(line); + if (len > display.maxLineLength) { + display.maxLine = line; + display.maxLineLength = len; + display.maxLineChanged = true; + recomputeMaxLength = false; + } + }); + if (recomputeMaxLength) cm.curOp.updateMaxLine = true; + } + + // Adjust frontier, schedule worker + doc.frontier = Math.min(doc.frontier, from.line); + startWorker(cm, 400); + + var lendiff = change.text.length - (to.line - from.line) - 1; + // Remember that these lines changed, for updating the display + if (change.full) + regChange(cm); + else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change)) + regLineChange(cm, from.line, "text"); + else + regChange(cm, from.line, to.line + 1, lendiff); + + var changesHandler = hasHandler(cm, "changes"), changeHandler = hasHandler(cm, "change"); + if (changeHandler || changesHandler) { + var obj = { + from: from, to: to, + text: change.text, + removed: change.removed, + origin: change.origin + }; + if (changeHandler) signalLater(cm, "change", cm, obj); + if (changesHandler) (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); + } + cm.display.selForContextMenu = null; + } + + function replaceRange(doc, code, from, to, origin) { + if (!to) to = from; + if (cmp(to, from) < 0) { var tmp = to; to = from; from = tmp; } + if (typeof code == "string") code = doc.splitLines(code); + makeChange(doc, {from: from, to: to, text: code, origin: origin}); + } + + // SCROLLING THINGS INTO VIEW + + // If an editor sits on the top or bottom of the window, partially + // scrolled out of view, this ensures that the cursor is visible. + function maybeScrollWindow(cm, coords) { + if (signalDOMEvent(cm, "scrollCursorIntoView")) return; + + var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null; + if (coords.top + box.top < 0) doScroll = true; + else if (coords.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) doScroll = false; + if (doScroll != null && !phantom) { + var scrollNode = elt("div", "\u200b", null, "position: absolute; top: " + + (coords.top - display.viewOffset - paddingTop(cm.display)) + "px; height: " + + (coords.bottom - coords.top + scrollGap(cm) + display.barHeight) + "px; left: " + + coords.left + "px; width: 2px;"); + cm.display.lineSpace.appendChild(scrollNode); + scrollNode.scrollIntoView(doScroll); + cm.display.lineSpace.removeChild(scrollNode); + } + } + + // Scroll a given position into view (immediately), verifying that + // it actually became visible (as line heights are accurately + // measured, the position of something may 'drift' during drawing). + function scrollPosIntoView(cm, pos, end, margin) { + if (margin == null) margin = 0; + for (var limit = 0; limit < 5; limit++) { + var changed = false, coords = cursorCoords(cm, pos); + var endCoords = !end || end == pos ? coords : cursorCoords(cm, end); + var scrollPos = calculateScrollPos(cm, Math.min(coords.left, endCoords.left), + Math.min(coords.top, endCoords.top) - margin, + Math.max(coords.left, endCoords.left), + Math.max(coords.bottom, endCoords.bottom) + margin); + var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft; + if (scrollPos.scrollTop != null) { + setScrollTop(cm, scrollPos.scrollTop); + if (Math.abs(cm.doc.scrollTop - startTop) > 1) changed = true; + } + if (scrollPos.scrollLeft != null) { + setScrollLeft(cm, scrollPos.scrollLeft); + if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) changed = true; + } + if (!changed) break; + } + return coords; + } + + // Scroll a given set of coordinates into view (immediately). + function scrollIntoView(cm, x1, y1, x2, y2) { + var scrollPos = calculateScrollPos(cm, x1, y1, x2, y2); + if (scrollPos.scrollTop != null) setScrollTop(cm, scrollPos.scrollTop); + if (scrollPos.scrollLeft != null) setScrollLeft(cm, scrollPos.scrollLeft); + } + + // Calculate a new scroll position needed to scroll the given + // rectangle into view. Returns an object with scrollTop and + // scrollLeft properties. When these are undefined, the + // vertical/horizontal position does not need to be adjusted. + function calculateScrollPos(cm, x1, y1, x2, y2) { + var display = cm.display, snapMargin = textHeight(cm.display); + if (y1 < 0) y1 = 0; + var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop; + var screen = displayHeight(cm), result = {}; + if (y2 - y1 > screen) y2 = y1 + screen; + var docBottom = cm.doc.height + paddingVert(display); + var atTop = y1 < snapMargin, atBottom = y2 > docBottom - snapMargin; + if (y1 < screentop) { + result.scrollTop = atTop ? 0 : y1; + } else if (y2 > screentop + screen) { + var newTop = Math.min(y1, (atBottom ? docBottom : y2) - screen); + if (newTop != screentop) result.scrollTop = newTop; + } + + var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft; + var screenw = displayWidth(cm) - (cm.options.fixedGutter ? display.gutters.offsetWidth : 0); + var tooWide = x2 - x1 > screenw; + if (tooWide) x2 = x1 + screenw; + if (x1 < 10) + result.scrollLeft = 0; + else if (x1 < screenleft) + result.scrollLeft = Math.max(0, x1 - (tooWide ? 0 : 10)); + else if (x2 > screenw + screenleft - 3) + result.scrollLeft = x2 + (tooWide ? 0 : 10) - screenw; + return result; + } + + // Store a relative adjustment to the scroll position in the current + // operation (to be applied when the operation finishes). + function addToScrollPos(cm, left, top) { + if (left != null || top != null) resolveScrollToPos(cm); + if (left != null) + cm.curOp.scrollLeft = (cm.curOp.scrollLeft == null ? cm.doc.scrollLeft : cm.curOp.scrollLeft) + left; + if (top != null) + cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top; + } + + // Make sure that at the end of the operation the current cursor is + // shown. + function ensureCursorVisible(cm) { + resolveScrollToPos(cm); + var cur = cm.getCursor(), from = cur, to = cur; + if (!cm.options.lineWrapping) { + from = cur.ch ? Pos(cur.line, cur.ch - 1) : cur; + to = Pos(cur.line, cur.ch + 1); + } + cm.curOp.scrollToPos = {from: from, to: to, margin: cm.options.cursorScrollMargin, isCursor: true}; + } + + // When an operation has its scrollToPos property set, and another + // scroll action is applied before the end of the operation, this + // 'simulates' scrolling that position into view in a cheap way, so + // that the effect of intermediate scroll commands is not ignored. + function resolveScrollToPos(cm) { + var range = cm.curOp.scrollToPos; + if (range) { + cm.curOp.scrollToPos = null; + var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to); + var sPos = calculateScrollPos(cm, Math.min(from.left, to.left), + Math.min(from.top, to.top) - range.margin, + Math.max(from.right, to.right), + Math.max(from.bottom, to.bottom) + range.margin); + cm.scrollTo(sPos.scrollLeft, sPos.scrollTop); + } + } + + // API UTILITIES + + // Indent the given line. The how parameter can be "smart", + // "add"/null, "subtract", or "prev". When aggressive is false + // (typically set to true for forced single-line indents), empty + // lines are not indented, and places where the mode returns Pass + // are left alone. + function indentLine(cm, n, how, aggressive) { + var doc = cm.doc, state; + if (how == null) how = "add"; + if (how == "smart") { + // Fall back to "prev" when the mode doesn't have an indentation + // method. + if (!doc.mode.indent) how = "prev"; + else state = getStateBefore(cm, n); + } + + var tabSize = cm.options.tabSize; + var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize); + if (line.stateAfter) line.stateAfter = null; + var curSpaceString = line.text.match(/^\s*/)[0], indentation; + if (!aggressive && !/\S/.test(line.text)) { + indentation = 0; + how = "not"; + } else if (how == "smart") { + indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text); + if (indentation == Pass || indentation > 150) { + if (!aggressive) return; + how = "prev"; + } + } + if (how == "prev") { + if (n > doc.first) indentation = countColumn(getLine(doc, n-1).text, null, tabSize); + else indentation = 0; + } else if (how == "add") { + indentation = curSpace + cm.options.indentUnit; + } else if (how == "subtract") { + indentation = curSpace - cm.options.indentUnit; + } else if (typeof how == "number") { + indentation = curSpace + how; + } + indentation = Math.max(0, indentation); + + var indentString = "", pos = 0; + if (cm.options.indentWithTabs) + for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += "\t";} + if (pos < indentation) indentString += spaceStr(indentation - pos); + + if (indentString != curSpaceString) { + replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), "+input"); + line.stateAfter = null; + return true; + } else { + // Ensure that, if the cursor was in the whitespace at the start + // of the line, it is moved to the end of that space. + for (var i = 0; i < doc.sel.ranges.length; i++) { + var range = doc.sel.ranges[i]; + if (range.head.line == n && range.head.ch < curSpaceString.length) { + var pos = Pos(n, curSpaceString.length); + replaceOneSelection(doc, i, new Range(pos, pos)); + break; + } + } + } + } + + // Utility for applying a change to a line by handle or number, + // returning the number and optionally registering the line as + // changed. + function changeLine(doc, handle, changeType, op) { + var no = handle, line = handle; + if (typeof handle == "number") line = getLine(doc, clipLine(doc, handle)); + else no = lineNo(handle); + if (no == null) return null; + if (op(line, no) && doc.cm) regLineChange(doc.cm, no, changeType); + return line; + } + + // Helper for deleting text near the selection(s), used to implement + // backspace, delete, and similar functionality. + function deleteNearSelection(cm, compute) { + var ranges = cm.doc.sel.ranges, kill = []; + // Build up a set of ranges to kill first, merging overlapping + // ranges. + for (var i = 0; i < ranges.length; i++) { + var toKill = compute(ranges[i]); + while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) { + var replaced = kill.pop(); + if (cmp(replaced.from, toKill.from) < 0) { + toKill.from = replaced.from; + break; + } + } + kill.push(toKill); + } + // Next, remove those actual ranges. + runInOp(cm, function() { + for (var i = kill.length - 1; i >= 0; i--) + replaceRange(cm.doc, "", kill[i].from, kill[i].to, "+delete"); + ensureCursorVisible(cm); + }); + } + + // Used for horizontal relative motion. Dir is -1 or 1 (left or + // right), unit can be "char", "column" (like char, but doesn't + // cross line boundaries), "word" (across next word), or "group" (to + // the start of next group of word or non-word-non-whitespace + // chars). The visually param controls whether, in right-to-left + // text, direction 1 means to move towards the next index in the + // string, or towards the character to the right of the current + // position. The resulting position will have a hitSide=true + // property if it reached the end of the document. + function findPosH(doc, pos, dir, unit, visually) { + var line = pos.line, ch = pos.ch, origDir = dir; + var lineObj = getLine(doc, line); + function findNextLine() { + var l = line + dir; + if (l < doc.first || l >= doc.first + doc.size) return false + line = l; + return lineObj = getLine(doc, l); + } + function moveOnce(boundToLine) { + var next = (visually ? moveVisually : moveLogically)(lineObj, ch, dir, true); + if (next == null) { + if (!boundToLine && findNextLine()) { + if (visually) ch = (dir < 0 ? lineRight : lineLeft)(lineObj); + else ch = dir < 0 ? lineObj.text.length : 0; + } else return false + } else ch = next; + return true; + } + + if (unit == "char") { + moveOnce() + } else if (unit == "column") { + moveOnce(true) + } else if (unit == "word" || unit == "group") { + var sawType = null, group = unit == "group"; + var helper = doc.cm && doc.cm.getHelper(pos, "wordChars"); + for (var first = true;; first = false) { + if (dir < 0 && !moveOnce(!first)) break; + var cur = lineObj.text.charAt(ch) || "\n"; + var type = isWordChar(cur, helper) ? "w" + : group && cur == "\n" ? "n" + : !group || /\s/.test(cur) ? null + : "p"; + if (group && !first && !type) type = "s"; + if (sawType && sawType != type) { + if (dir < 0) {dir = 1; moveOnce();} + break; + } + + if (type) sawType = type; + if (dir > 0 && !moveOnce(!first)) break; + } + } + var result = skipAtomic(doc, Pos(line, ch), pos, origDir, true); + if (!cmp(pos, result)) result.hitSide = true; + return result; + } + + // For relative vertical movement. Dir may be -1 or 1. Unit can be + // "page" or "line". The resulting position will have a hitSide=true + // property if it reached the end of the document. + function findPosV(cm, pos, dir, unit) { + var doc = cm.doc, x = pos.left, y; + if (unit == "page") { + var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight); + y = pos.top + dir * (pageSize - (dir < 0 ? 1.5 : .5) * textHeight(cm.display)); + } else if (unit == "line") { + y = dir > 0 ? pos.bottom + 3 : pos.top - 3; + } + for (;;) { + var target = coordsChar(cm, x, y); + if (!target.outside) break; + if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break; } + y += dir * 5; + } + return target; + } + + // EDITOR METHODS + + // The publicly visible API. Note that methodOp(f) means + // 'wrap f in an operation, performed on its `this` parameter'. + + // This is not the complete set of editor methods. Most of the + // methods defined on the Doc type are also injected into + // CodeMirror.prototype, for backwards compatibility and + // convenience. + + CodeMirror.prototype = { + constructor: CodeMirror, + focus: function(){window.focus(); this.display.input.focus();}, + + setOption: function(option, value) { + var options = this.options, old = options[option]; + if (options[option] == value && option != "mode") return; + options[option] = value; + if (optionHandlers.hasOwnProperty(option)) + operation(this, optionHandlers[option])(this, value, old); + }, + + getOption: function(option) {return this.options[option];}, + getDoc: function() {return this.doc;}, + + addKeyMap: function(map, bottom) { + this.state.keyMaps[bottom ? "push" : "unshift"](getKeyMap(map)); + }, + removeKeyMap: function(map) { + var maps = this.state.keyMaps; + for (var i = 0; i < maps.length; ++i) + if (maps[i] == map || maps[i].name == map) { + maps.splice(i, 1); + return true; + } + }, + + addOverlay: methodOp(function(spec, options) { + var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec); + if (mode.startState) throw new Error("Overlays may not be stateful."); + this.state.overlays.push({mode: mode, modeSpec: spec, opaque: options && options.opaque}); + this.state.modeGen++; + regChange(this); + }), + removeOverlay: methodOp(function(spec) { + var overlays = this.state.overlays; + for (var i = 0; i < overlays.length; ++i) { + var cur = overlays[i].modeSpec; + if (cur == spec || typeof spec == "string" && cur.name == spec) { + overlays.splice(i, 1); + this.state.modeGen++; + regChange(this); + return; + } + } + }), + + indentLine: methodOp(function(n, dir, aggressive) { + if (typeof dir != "string" && typeof dir != "number") { + if (dir == null) dir = this.options.smartIndent ? "smart" : "prev"; + else dir = dir ? "add" : "subtract"; + } + if (isLine(this.doc, n)) indentLine(this, n, dir, aggressive); + }), + indentSelection: methodOp(function(how) { + var ranges = this.doc.sel.ranges, end = -1; + for (var i = 0; i < ranges.length; i++) { + var range = ranges[i]; + if (!range.empty()) { + var from = range.from(), to = range.to(); + var start = Math.max(end, from.line); + end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1; + for (var j = start; j < end; ++j) + indentLine(this, j, how); + var newRanges = this.doc.sel.ranges; + if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0) + replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); + } else if (range.head.line > end) { + indentLine(this, range.head.line, how, true); + end = range.head.line; + if (i == this.doc.sel.primIndex) ensureCursorVisible(this); + } + } + }), + + // Fetch the parser token for a given character. Useful for hacks + // that want to inspect the mode state (say, for completion). + getTokenAt: function(pos, precise) { + return takeToken(this, pos, precise); + }, + + getLineTokens: function(line, precise) { + return takeToken(this, Pos(line), precise, true); + }, + + getTokenTypeAt: function(pos) { + pos = clipPos(this.doc, pos); + var styles = getLineStyles(this, getLine(this.doc, pos.line)); + var before = 0, after = (styles.length - 1) / 2, ch = pos.ch; + var type; + if (ch == 0) type = styles[2]; + else for (;;) { + var mid = (before + after) >> 1; + if ((mid ? styles[mid * 2 - 1] : 0) >= ch) after = mid; + else if (styles[mid * 2 + 1] < ch) before = mid + 1; + else { type = styles[mid * 2 + 2]; break; } + } + var cut = type ? type.indexOf("cm-overlay ") : -1; + return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1); + }, + + getModeAt: function(pos) { + var mode = this.doc.mode; + if (!mode.innerMode) return mode; + return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode; + }, + + getHelper: function(pos, type) { + return this.getHelpers(pos, type)[0]; + }, + + getHelpers: function(pos, type) { + var found = []; + if (!helpers.hasOwnProperty(type)) return found; + var help = helpers[type], mode = this.getModeAt(pos); + if (typeof mode[type] == "string") { + if (help[mode[type]]) found.push(help[mode[type]]); + } else if (mode[type]) { + for (var i = 0; i < mode[type].length; i++) { + var val = help[mode[type][i]]; + if (val) found.push(val); + } + } else if (mode.helperType && help[mode.helperType]) { + found.push(help[mode.helperType]); + } else if (help[mode.name]) { + found.push(help[mode.name]); + } + for (var i = 0; i < help._global.length; i++) { + var cur = help._global[i]; + if (cur.pred(mode, this) && indexOf(found, cur.val) == -1) + found.push(cur.val); + } + return found; + }, + + getStateAfter: function(line, precise) { + var doc = this.doc; + line = clipLine(doc, line == null ? doc.first + doc.size - 1: line); + return getStateBefore(this, line + 1, precise); + }, + + cursorCoords: function(start, mode) { + var pos, range = this.doc.sel.primary(); + if (start == null) pos = range.head; + else if (typeof start == "object") pos = clipPos(this.doc, start); + else pos = start ? range.from() : range.to(); + return cursorCoords(this, pos, mode || "page"); + }, + + charCoords: function(pos, mode) { + return charCoords(this, clipPos(this.doc, pos), mode || "page"); + }, + + coordsChar: function(coords, mode) { + coords = fromCoordSystem(this, coords, mode || "page"); + return coordsChar(this, coords.left, coords.top); + }, + + lineAtHeight: function(height, mode) { + height = fromCoordSystem(this, {top: height, left: 0}, mode || "page").top; + return lineAtHeight(this.doc, height + this.display.viewOffset); + }, + heightAtLine: function(line, mode) { + var end = false, lineObj; + if (typeof line == "number") { + var last = this.doc.first + this.doc.size - 1; + if (line < this.doc.first) line = this.doc.first; + else if (line > last) { line = last; end = true; } + lineObj = getLine(this.doc, line); + } else { + lineObj = line; + } + return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || "page").top + + (end ? this.doc.height - heightAtLine(lineObj) : 0); + }, + + defaultTextHeight: function() { return textHeight(this.display); }, + defaultCharWidth: function() { return charWidth(this.display); }, + + setGutterMarker: methodOp(function(line, gutterID, value) { + return changeLine(this.doc, line, "gutter", function(line) { + var markers = line.gutterMarkers || (line.gutterMarkers = {}); + markers[gutterID] = value; + if (!value && isEmpty(markers)) line.gutterMarkers = null; + return true; + }); + }), + + clearGutter: methodOp(function(gutterID) { + var cm = this, doc = cm.doc, i = doc.first; + doc.iter(function(line) { + if (line.gutterMarkers && line.gutterMarkers[gutterID]) { + line.gutterMarkers[gutterID] = null; + regLineChange(cm, i, "gutter"); + if (isEmpty(line.gutterMarkers)) line.gutterMarkers = null; + } + ++i; + }); + }), + + lineInfo: function(line) { + if (typeof line == "number") { + if (!isLine(this.doc, line)) return null; + var n = line; + line = getLine(this.doc, line); + if (!line) return null; + } else { + var n = lineNo(line); + if (n == null) return null; + } + return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers, + textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass, + widgets: line.widgets}; + }, + + getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo};}, + + addWidget: function(pos, node, scroll, vert, horiz) { + var display = this.display; + pos = cursorCoords(this, clipPos(this.doc, pos)); + var top = pos.bottom, left = pos.left; + node.style.position = "absolute"; + node.setAttribute("cm-ignore-events", "true"); + this.display.input.setUneditable(node); + display.sizer.appendChild(node); + if (vert == "over") { + top = pos.top; + } else if (vert == "above" || vert == "near") { + var vspace = Math.max(display.wrapper.clientHeight, this.doc.height), + hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth); + // Default to positioning above (if specified and possible); otherwise default to positioning below + if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight) + top = pos.top - node.offsetHeight; + else if (pos.bottom + node.offsetHeight <= vspace) + top = pos.bottom; + if (left + node.offsetWidth > hspace) + left = hspace - node.offsetWidth; + } + node.style.top = top + "px"; + node.style.left = node.style.right = ""; + if (horiz == "right") { + left = display.sizer.clientWidth - node.offsetWidth; + node.style.right = "0px"; + } else { + if (horiz == "left") left = 0; + else if (horiz == "middle") left = (display.sizer.clientWidth - node.offsetWidth) / 2; + node.style.left = left + "px"; + } + if (scroll) + scrollIntoView(this, left, top, left + node.offsetWidth, top + node.offsetHeight); + }, + + triggerOnKeyDown: methodOp(onKeyDown), + triggerOnKeyPress: methodOp(onKeyPress), + triggerOnKeyUp: onKeyUp, + + execCommand: function(cmd) { + if (commands.hasOwnProperty(cmd)) + return commands[cmd].call(null, this); + }, + + triggerElectric: methodOp(function(text) { triggerElectric(this, text); }), + + findPosH: function(from, amount, unit, visually) { + var dir = 1; + if (amount < 0) { dir = -1; amount = -amount; } + for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { + cur = findPosH(this.doc, cur, dir, unit, visually); + if (cur.hitSide) break; + } + return cur; + }, + + moveH: methodOp(function(dir, unit) { + var cm = this; + cm.extendSelectionsBy(function(range) { + if (cm.display.shift || cm.doc.extend || range.empty()) + return findPosH(cm.doc, range.head, dir, unit, cm.options.rtlMoveVisually); + else + return dir < 0 ? range.from() : range.to(); + }, sel_move); + }), + + deleteH: methodOp(function(dir, unit) { + var sel = this.doc.sel, doc = this.doc; + if (sel.somethingSelected()) + doc.replaceSelection("", null, "+delete"); + else + deleteNearSelection(this, function(range) { + var other = findPosH(doc, range.head, dir, unit, false); + return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}; + }); + }), + + findPosV: function(from, amount, unit, goalColumn) { + var dir = 1, x = goalColumn; + if (amount < 0) { dir = -1; amount = -amount; } + for (var i = 0, cur = clipPos(this.doc, from); i < amount; ++i) { + var coords = cursorCoords(this, cur, "div"); + if (x == null) x = coords.left; + else coords.left = x; + cur = findPosV(this, coords, dir, unit); + if (cur.hitSide) break; + } + return cur; + }, + + moveV: methodOp(function(dir, unit) { + var cm = this, doc = this.doc, goals = []; + var collapse = !cm.display.shift && !doc.extend && doc.sel.somethingSelected(); + doc.extendSelectionsBy(function(range) { + if (collapse) + return dir < 0 ? range.from() : range.to(); + var headPos = cursorCoords(cm, range.head, "div"); + if (range.goalColumn != null) headPos.left = range.goalColumn; + goals.push(headPos.left); + var pos = findPosV(cm, headPos, dir, unit); + if (unit == "page" && range == doc.sel.primary()) + addToScrollPos(cm, null, charCoords(cm, pos, "div").top - headPos.top); + return pos; + }, sel_move); + if (goals.length) for (var i = 0; i < doc.sel.ranges.length; i++) + doc.sel.ranges[i].goalColumn = goals[i]; + }), + + // Find the word at the given position (as returned by coordsChar). + findWordAt: function(pos) { + var doc = this.doc, line = getLine(doc, pos.line).text; + var start = pos.ch, end = pos.ch; + if (line) { + var helper = this.getHelper(pos, "wordChars"); + if ((pos.xRel < 0 || end == line.length) && start) --start; else ++end; + var startChar = line.charAt(start); + var check = isWordChar(startChar, helper) + ? function(ch) { return isWordChar(ch, helper); } + : /\s/.test(startChar) ? function(ch) {return /\s/.test(ch);} + : function(ch) {return !/\s/.test(ch) && !isWordChar(ch);}; + while (start > 0 && check(line.charAt(start - 1))) --start; + while (end < line.length && check(line.charAt(end))) ++end; + } + return new Range(Pos(pos.line, start), Pos(pos.line, end)); + }, + + toggleOverwrite: function(value) { + if (value != null && value == this.state.overwrite) return; + if (this.state.overwrite = !this.state.overwrite) + addClass(this.display.cursorDiv, "CodeMirror-overwrite"); + else + rmClass(this.display.cursorDiv, "CodeMirror-overwrite"); + + signal(this, "overwriteToggle", this, this.state.overwrite); + }, + hasFocus: function() { return this.display.input.getField() == activeElt(); }, + isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit); }, + + scrollTo: methodOp(function(x, y) { + if (x != null || y != null) resolveScrollToPos(this); + if (x != null) this.curOp.scrollLeft = x; + if (y != null) this.curOp.scrollTop = y; + }), + getScrollInfo: function() { + var scroller = this.display.scroller; + return {left: scroller.scrollLeft, top: scroller.scrollTop, + height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight, + width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth, + clientHeight: displayHeight(this), clientWidth: displayWidth(this)}; + }, + + scrollIntoView: methodOp(function(range, margin) { + if (range == null) { + range = {from: this.doc.sel.primary().head, to: null}; + if (margin == null) margin = this.options.cursorScrollMargin; + } else if (typeof range == "number") { + range = {from: Pos(range, 0), to: null}; + } else if (range.from == null) { + range = {from: range, to: null}; + } + if (!range.to) range.to = range.from; + range.margin = margin || 0; + + if (range.from.line != null) { + resolveScrollToPos(this); + this.curOp.scrollToPos = range; + } else { + var sPos = calculateScrollPos(this, Math.min(range.from.left, range.to.left), + Math.min(range.from.top, range.to.top) - range.margin, + Math.max(range.from.right, range.to.right), + Math.max(range.from.bottom, range.to.bottom) + range.margin); + this.scrollTo(sPos.scrollLeft, sPos.scrollTop); + } + }), + + setSize: methodOp(function(width, height) { + var cm = this; + function interpret(val) { + return typeof val == "number" || /^\d+$/.test(String(val)) ? val + "px" : val; + } + if (width != null) cm.display.wrapper.style.width = interpret(width); + if (height != null) cm.display.wrapper.style.height = interpret(height); + if (cm.options.lineWrapping) clearLineMeasurementCache(this); + var lineNo = cm.display.viewFrom; + cm.doc.iter(lineNo, cm.display.viewTo, function(line) { + if (line.widgets) for (var i = 0; i < line.widgets.length; i++) + if (line.widgets[i].noHScroll) { regLineChange(cm, lineNo, "widget"); break; } + ++lineNo; + }); + cm.curOp.forceUpdate = true; + signal(cm, "refresh", this); + }), + + operation: function(f){return runInOp(this, f);}, + + refresh: methodOp(function() { + var oldHeight = this.display.cachedTextHeight; + regChange(this); + this.curOp.forceUpdate = true; + clearCaches(this); + this.scrollTo(this.doc.scrollLeft, this.doc.scrollTop); + updateGutterSpace(this); + if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5) + estimateLineHeights(this); + signal(this, "refresh", this); + }), + + swapDoc: methodOp(function(doc) { + var old = this.doc; + old.cm = null; + attachDoc(this, doc); + clearCaches(this); + this.display.input.reset(); + this.scrollTo(doc.scrollLeft, doc.scrollTop); + this.curOp.forceScroll = true; + signalLater(this, "swapDoc", this, old); + return old; + }), + + 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;} + }; + eventMixin(CodeMirror); + + // OPTION DEFAULTS + + // The default configuration options. + var defaults = CodeMirror.defaults = {}; + // Functions to run when options are changed. + var optionHandlers = CodeMirror.optionHandlers = {}; + + function option(name, deflt, handle, notOnInit) { + CodeMirror.defaults[name] = deflt; + if (handle) optionHandlers[name] = + notOnInit ? function(cm, val, old) {if (old != Init) handle(cm, val, old);} : handle; + } + + // Passed to option handlers when there is no old value. + var Init = CodeMirror.Init = {toString: function(){return "CodeMirror.Init";}}; + + // These two are, on init, called from the constructor because they + // have to be initialized before the editor can start at all. + option("value", "", function(cm, val) { + cm.setValue(val); + }, true); + option("mode", null, function(cm, val) { + cm.doc.modeOption = val; + loadMode(cm); + }, true); + + option("indentUnit", 2, loadMode, true); + option("indentWithTabs", false); + option("smartIndent", true); + option("tabSize", 4, function(cm) { + resetModeState(cm); + clearCaches(cm); + regChange(cm); + }, true); + option("lineSeparator", null, function(cm, val) { + cm.doc.lineSep = val; + if (!val) return; + var newBreaks = [], lineNo = cm.doc.first; + cm.doc.iter(function(line) { + for (var pos = 0;;) { + var found = line.text.indexOf(val, pos); + if (found == -1) break; + pos = found + val.length; + newBreaks.push(Pos(lineNo, found)); + } + lineNo++; + }); + for (var i = newBreaks.length - 1; i >= 0; i--) + replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)) + }); + option("specialChars", /[\t\u0000-\u0019\u00ad\u200b-\u200f\u2028\u2029\ufeff]/g, function(cm, val, old) { + cm.state.specialChars = new RegExp(val.source + (val.test("\t") ? "" : "|\t"), "g"); + if (old != CodeMirror.Init) cm.refresh(); + }); + option("specialCharPlaceholder", defaultSpecialCharPlaceholder, function(cm) {cm.refresh();}, true); + option("electricChars", true); + option("inputStyle", mobile ? "contenteditable" : "textarea", function() { + throw new Error("inputStyle can not (yet) be changed in a running editor"); // FIXME + }, true); + option("rtlMoveVisually", !windows); + option("wholeLineUpdateBefore", true); + + option("theme", "default", function(cm) { + themeChanged(cm); + guttersChanged(cm); + }, true); + option("keyMap", "default", function(cm, val, old) { + var next = getKeyMap(val); + var prev = old != CodeMirror.Init && getKeyMap(old); + if (prev && prev.detach) prev.detach(cm, next); + if (next.attach) next.attach(cm, prev || null); + }); + option("extraKeys", null); + + option("lineWrapping", false, wrappingChanged, true); + option("gutters", [], function(cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("fixedGutter", true, function(cm, val) { + cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + "px" : "0"; + cm.refresh(); + }, true); + option("coverGutterNextToScrollbar", false, function(cm) {updateScrollbars(cm);}, true); + option("scrollbarStyle", "native", function(cm) { + initScrollbars(cm); + updateScrollbars(cm); + cm.display.scrollbars.setScrollTop(cm.doc.scrollTop); + cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft); + }, true); + option("lineNumbers", false, function(cm) { + setGuttersForLineNumbers(cm.options); + guttersChanged(cm); + }, true); + option("firstLineNumber", 1, guttersChanged, true); + option("lineNumberFormatter", function(integer) {return integer;}, guttersChanged, true); + option("showCursorWhenSelecting", false, updateSelection, true); + + option("resetSelectionOnContextMenu", true); + option("lineWiseCopyCut", true); + + option("readOnly", false, function(cm, val) { + if (val == "nocursor") { + onBlur(cm); + cm.display.input.blur(); + cm.display.disabled = true; + } else { + cm.display.disabled = false; + } + cm.display.input.readOnlyChanged(val) + }); + option("disableInput", false, function(cm, val) {if (!val) cm.display.input.reset();}, true); + option("dragDrop", true, dragDropChanged); + option("allowDropFileTypes", null); + + option("cursorBlinkRate", 530); + option("cursorScrollMargin", 0); + option("cursorHeight", 1, updateSelection, true); + option("singleCursorHeightPerLine", true, updateSelection, true); + option("workTime", 100); + option("workDelay", 100); + option("flattenSpans", true, resetModeState, true); + option("addModeClass", false, resetModeState, true); + option("pollInterval", 100); + option("undoDepth", 200, function(cm, val){cm.doc.history.undoDepth = val;}); + option("historyEventDelay", 1250); + option("viewportMargin", 10, function(cm){cm.refresh();}, true); + option("maxHighlightLength", 10000, resetModeState, true); + option("moveInputWithCursor", true, function(cm, val) { + if (!val) cm.display.input.resetPosition(); + }); + + option("tabindex", null, function(cm, val) { + cm.display.input.getField().tabIndex = val || ""; + }); + option("autofocus", null); + + // MODE DEFINITION AND QUERYING + + // Known modes, by name and by MIME + var modes = CodeMirror.modes = {}, mimeModes = CodeMirror.mimeModes = {}; + + // Extra arguments are stored as the mode's dependencies, which is + // used by (legacy) mechanisms like loadmode.js to automatically + // load a mode. (Preferred mechanism is the require/define calls.) + CodeMirror.defineMode = function(name, mode) { + if (!CodeMirror.defaults.mode && name != "null") CodeMirror.defaults.mode = name; + if (arguments.length > 2) + mode.dependencies = Array.prototype.slice.call(arguments, 2); + modes[name] = mode; + }; + + CodeMirror.defineMIME = function(mime, spec) { + mimeModes[mime] = spec; + }; + + // Given a MIME type, a {name, ...options} config object, or a name + // string, return a mode config object. + CodeMirror.resolveMode = function(spec) { + if (typeof spec == "string" && mimeModes.hasOwnProperty(spec)) { + spec = mimeModes[spec]; + } else if (spec && typeof spec.name == "string" && mimeModes.hasOwnProperty(spec.name)) { + var found = mimeModes[spec.name]; + if (typeof found == "string") found = {name: found}; + spec = createObj(found, spec); + spec.name = found.name; + } else if (typeof spec == "string" && /^[\w\-]+\/[\w\-]+\+xml$/.test(spec)) { + return CodeMirror.resolveMode("application/xml"); + } + if (typeof spec == "string") return {name: spec}; + else return spec || {name: "null"}; + }; + + // Given a mode spec (anything that resolveMode accepts), find and + // initialize an actual mode object. + CodeMirror.getMode = function(options, spec) { + var spec = CodeMirror.resolveMode(spec); + var mfactory = modes[spec.name]; + if (!mfactory) return CodeMirror.getMode(options, "text/plain"); + var modeObj = mfactory(options, spec); + if (modeExtensions.hasOwnProperty(spec.name)) { + var exts = modeExtensions[spec.name]; + for (var prop in exts) { + if (!exts.hasOwnProperty(prop)) continue; + if (modeObj.hasOwnProperty(prop)) modeObj["_" + prop] = modeObj[prop]; + modeObj[prop] = exts[prop]; + } + } + modeObj.name = spec.name; + if (spec.helperType) modeObj.helperType = spec.helperType; + if (spec.modeProps) for (var prop in spec.modeProps) + modeObj[prop] = spec.modeProps[prop]; + + return modeObj; + }; + + // Minimal default mode. + CodeMirror.defineMode("null", function() { + return {token: function(stream) {stream.skipToEnd();}}; + }); + CodeMirror.defineMIME("text/plain", "null"); + + // This can be used to attach properties to mode objects from + // outside the actual mode definition. + var modeExtensions = CodeMirror.modeExtensions = {}; + CodeMirror.extendMode = function(mode, properties) { + var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {}); + copyObj(properties, exts); + }; + + // EXTENSIONS + + CodeMirror.defineExtension = function(name, func) { + CodeMirror.prototype[name] = func; + }; + CodeMirror.defineDocExtension = function(name, func) { + Doc.prototype[name] = func; + }; + CodeMirror.defineOption = option; + + var initHooks = []; + CodeMirror.defineInitHook = function(f) {initHooks.push(f);}; + + var helpers = CodeMirror.helpers = {}; + CodeMirror.registerHelper = function(type, name, value) { + if (!helpers.hasOwnProperty(type)) helpers[type] = CodeMirror[type] = {_global: []}; + helpers[type][name] = value; + }; + CodeMirror.registerGlobalHelper = function(type, name, predicate, value) { + CodeMirror.registerHelper(type, name, value); + helpers[type]._global.push({pred: predicate, val: value}); + }; + + // MODE STATE HANDLING + + // Utility functions for working with state. Exported because nested + // modes need to do this for their inner modes. + + var copyState = CodeMirror.copyState = function(mode, state) { + if (state === true) return state; + if (mode.copyState) return mode.copyState(state); + var nstate = {}; + for (var n in state) { + var val = state[n]; + if (val instanceof Array) val = val.concat([]); + nstate[n] = val; + } + return nstate; + }; + + var startState = CodeMirror.startState = function(mode, a1, a2) { + return mode.startState ? mode.startState(a1, a2) : true; + }; + + // Given a mode and a state (for that mode), find the inner mode and + // state at the position that the state refers to. + CodeMirror.innerMode = function(mode, state) { + while (mode.innerMode) { + var info = mode.innerMode(state); + if (!info || info.mode == mode) break; + state = info.state; + mode = info.mode; + } + return info || {mode: mode, state: state}; + }; + + // STANDARD COMMANDS + + // Commands are parameter-less actions that can be performed on an + // editor, mostly used for keybindings. + var commands = CodeMirror.commands = { + selectAll: function(cm) {cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);}, + singleSelection: function(cm) { + cm.setSelection(cm.getCursor("anchor"), cm.getCursor("head"), sel_dontScroll); + }, + killLine: function(cm) { + deleteNearSelection(cm, function(range) { + if (range.empty()) { + var len = getLine(cm.doc, range.head.line).text.length; + if (range.head.ch == len && range.head.line < cm.lastLine()) + return {from: range.head, to: Pos(range.head.line + 1, 0)}; + else + return {from: range.head, to: Pos(range.head.line, len)}; + } else { + return {from: range.from(), to: range.to()}; + } + }); + }, + deleteLine: function(cm) { + deleteNearSelection(cm, function(range) { + return {from: Pos(range.from().line, 0), + to: clipPos(cm.doc, Pos(range.to().line + 1, 0))}; + }); + }, + delLineLeft: function(cm) { + deleteNearSelection(cm, function(range) { + return {from: Pos(range.from().line, 0), to: range.from()}; + }); + }, + delWrappedLineLeft: function(cm) { + deleteNearSelection(cm, function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + var leftPos = cm.coordsChar({left: 0, top: top}, "div"); + return {from: leftPos, to: range.from()}; + }); + }, + delWrappedLineRight: function(cm) { + deleteNearSelection(cm, function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + return {from: range.from(), to: rightPos }; + }); + }, + undo: function(cm) {cm.undo();}, + redo: function(cm) {cm.redo();}, + undoSelection: function(cm) {cm.undoSelection();}, + redoSelection: function(cm) {cm.redoSelection();}, + goDocStart: function(cm) {cm.extendSelection(Pos(cm.firstLine(), 0));}, + goDocEnd: function(cm) {cm.extendSelection(Pos(cm.lastLine()));}, + goLineStart: function(cm) { + cm.extendSelectionsBy(function(range) { return lineStart(cm, range.head.line); }, + {origin: "+move", bias: 1}); + }, + goLineStartSmart: function(cm) { + cm.extendSelectionsBy(function(range) { + return lineStartSmart(cm, range.head); + }, {origin: "+move", bias: 1}); + }, + goLineEnd: function(cm) { + cm.extendSelectionsBy(function(range) { return lineEnd(cm, range.head.line); }, + {origin: "+move", bias: -1}); + }, + goLineRight: function(cm) { + cm.extendSelectionsBy(function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, "div"); + }, sel_move); + }, + goLineLeft: function(cm) { + cm.extendSelectionsBy(function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + return cm.coordsChar({left: 0, top: top}, "div"); + }, sel_move); + }, + goLineLeftSmart: function(cm) { + cm.extendSelectionsBy(function(range) { + var top = cm.charCoords(range.head, "div").top + 5; + var pos = cm.coordsChar({left: 0, top: top}, "div"); + if (pos.ch < cm.getLine(pos.line).search(/\S/)) return lineStartSmart(cm, range.head); + return pos; + }, sel_move); + }, + goLineUp: function(cm) {cm.moveV(-1, "line");}, + goLineDown: function(cm) {cm.moveV(1, "line");}, + goPageUp: function(cm) {cm.moveV(-1, "page");}, + goPageDown: function(cm) {cm.moveV(1, "page");}, + goCharLeft: function(cm) {cm.moveH(-1, "char");}, + goCharRight: function(cm) {cm.moveH(1, "char");}, + goColumnLeft: function(cm) {cm.moveH(-1, "column");}, + goColumnRight: function(cm) {cm.moveH(1, "column");}, + goWordLeft: function(cm) {cm.moveH(-1, "word");}, + goGroupRight: function(cm) {cm.moveH(1, "group");}, + goGroupLeft: function(cm) {cm.moveH(-1, "group");}, + goWordRight: function(cm) {cm.moveH(1, "word");}, + delCharBefore: function(cm) {cm.deleteH(-1, "char");}, + delCharAfter: function(cm) {cm.deleteH(1, "char");}, + delWordBefore: function(cm) {cm.deleteH(-1, "word");}, + delWordAfter: function(cm) {cm.deleteH(1, "word");}, + delGroupBefore: function(cm) {cm.deleteH(-1, "group");}, + delGroupAfter: function(cm) {cm.deleteH(1, "group");}, + indentAuto: function(cm) {cm.indentSelection("smart");}, + indentMore: function(cm) {cm.indentSelection("add");}, + indentLess: function(cm) {cm.indentSelection("subtract");}, + insertTab: function(cm) {cm.replaceSelection("\t");}, + insertSoftTab: function(cm) { + var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize; + for (var i = 0; i < ranges.length; i++) { + var pos = ranges[i].from(); + var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize); + spaces.push(new Array(tabSize - col % tabSize + 1).join(" ")); + } + cm.replaceSelections(spaces); + }, + defaultTab: function(cm) { + if (cm.somethingSelected()) cm.indentSelection("add"); + else cm.execCommand("insertTab"); + }, + transposeChars: function(cm) { + runInOp(cm, function() { + var ranges = cm.listSelections(), newSel = []; + for (var i = 0; i < ranges.length; i++) { + var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text; + if (line) { + if (cur.ch == line.length) cur = new Pos(cur.line, cur.ch - 1); + if (cur.ch > 0) { + cur = new Pos(cur.line, cur.ch + 1); + cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2), + Pos(cur.line, cur.ch - 2), cur, "+transpose"); + } else if (cur.line > cm.doc.first) { + var prev = getLine(cm.doc, cur.line - 1).text; + if (prev) + cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() + + prev.charAt(prev.length - 1), + Pos(cur.line - 1, prev.length - 1), Pos(cur.line, 1), "+transpose"); + } + } + newSel.push(new Range(cur, cur)); + } + cm.setSelections(newSel); + }); + }, + newlineAndIndent: function(cm) { + runInOp(cm, function() { + var len = cm.listSelections().length; + for (var i = 0; i < len; i++) { + var range = cm.listSelections()[i]; + cm.replaceRange(cm.doc.lineSeparator(), range.anchor, range.head, "+input"); + cm.indentLine(range.from().line + 1, null, true); + } + ensureCursorVisible(cm); + }); + }, + toggleOverwrite: function(cm) {cm.toggleOverwrite();} + }; + + + // STANDARD KEYMAPS + + var keyMap = CodeMirror.keyMap = {}; + + keyMap.basic = { + "Left": "goCharLeft", "Right": "goCharRight", "Up": "goLineUp", "Down": "goLineDown", + "End": "goLineEnd", "Home": "goLineStartSmart", "PageUp": "goPageUp", "PageDown": "goPageDown", + "Delete": "delCharAfter", "Backspace": "delCharBefore", "Shift-Backspace": "delCharBefore", + "Tab": "defaultTab", "Shift-Tab": "indentAuto", + "Enter": "newlineAndIndent", "Insert": "toggleOverwrite", + "Esc": "singleSelection" + }; + // Note that the save and find-related commands aren't defined by + // default. User code or addons can define them. Unknown commands + // are simply ignored. + keyMap.pcDefault = { + "Ctrl-A": "selectAll", "Ctrl-D": "deleteLine", "Ctrl-Z": "undo", "Shift-Ctrl-Z": "redo", "Ctrl-Y": "redo", + "Ctrl-Home": "goDocStart", "Ctrl-End": "goDocEnd", "Ctrl-Up": "goLineUp", "Ctrl-Down": "goLineDown", + "Ctrl-Left": "goGroupLeft", "Ctrl-Right": "goGroupRight", "Alt-Left": "goLineStart", "Alt-Right": "goLineEnd", + "Ctrl-Backspace": "delGroupBefore", "Ctrl-Delete": "delGroupAfter", "Ctrl-S": "save", "Ctrl-F": "find", + "Ctrl-G": "findNext", "Shift-Ctrl-G": "findPrev", "Shift-Ctrl-F": "replace", "Shift-Ctrl-R": "replaceAll", + "Ctrl-[": "indentLess", "Ctrl-]": "indentMore", + "Ctrl-U": "undoSelection", "Shift-Ctrl-U": "redoSelection", "Alt-U": "redoSelection", + fallthrough: "basic" + }; + // Very basic readline/emacs-style bindings, which are standard on Mac. + keyMap.emacsy = { + "Ctrl-F": "goCharRight", "Ctrl-B": "goCharLeft", "Ctrl-P": "goLineUp", "Ctrl-N": "goLineDown", + "Alt-F": "goWordRight", "Alt-B": "goWordLeft", "Ctrl-A": "goLineStart", "Ctrl-E": "goLineEnd", + "Ctrl-V": "goPageDown", "Shift-Ctrl-V": "goPageUp", "Ctrl-D": "delCharAfter", "Ctrl-H": "delCharBefore", + "Alt-D": "delWordAfter", "Alt-Backspace": "delWordBefore", "Ctrl-K": "killLine", "Ctrl-T": "transposeChars" + }; + keyMap.macDefault = { + "Cmd-A": "selectAll", "Cmd-D": "deleteLine", "Cmd-Z": "undo", "Shift-Cmd-Z": "redo", "Cmd-Y": "redo", + "Cmd-Home": "goDocStart", "Cmd-Up": "goDocStart", "Cmd-End": "goDocEnd", "Cmd-Down": "goDocEnd", "Alt-Left": "goGroupLeft", + "Alt-Right": "goGroupRight", "Cmd-Left": "goLineLeft", "Cmd-Right": "goLineRight", "Alt-Backspace": "delGroupBefore", + "Ctrl-Alt-Backspace": "delGroupAfter", "Alt-Delete": "delGroupAfter", "Cmd-S": "save", "Cmd-F": "find", + "Cmd-G": "findNext", "Shift-Cmd-G": "findPrev", "Cmd-Alt-F": "replace", "Shift-Cmd-Alt-F": "replaceAll", + "Cmd-[": "indentLess", "Cmd-]": "indentMore", "Cmd-Backspace": "delWrappedLineLeft", "Cmd-Delete": "delWrappedLineRight", + "Cmd-U": "undoSelection", "Shift-Cmd-U": "redoSelection", "Ctrl-Up": "goDocStart", "Ctrl-Down": "goDocEnd", + fallthrough: ["basic", "emacsy"] + }; + keyMap["default"] = mac ? keyMap.macDefault : keyMap.pcDefault; + + // KEYMAP DISPATCH + + function normalizeKeyName(name) { + var parts = name.split(/-(?!$)/), name = parts[parts.length - 1]; + var alt, ctrl, shift, cmd; + for (var i = 0; i < parts.length - 1; i++) { + var mod = parts[i]; + if (/^(cmd|meta|m)$/i.test(mod)) cmd = true; + else if (/^a(lt)?$/i.test(mod)) alt = true; + else if (/^(c|ctrl|control)$/i.test(mod)) ctrl = true; + else if (/^s(hift)$/i.test(mod)) shift = true; + else throw new Error("Unrecognized modifier name: " + mod); + } + if (alt) name = "Alt-" + name; + if (ctrl) name = "Ctrl-" + name; + if (cmd) name = "Cmd-" + name; + if (shift) name = "Shift-" + name; + return name; + } + + // This is a kludge to keep keymaps mostly working as raw objects + // (backwards compatibility) while at the same time support features + // like normalization and multi-stroke key bindings. It compiles a + // new normalized keymap, and then updates the old object to reflect + // this. + CodeMirror.normalizeKeyMap = function(keymap) { + var copy = {}; + for (var keyname in keymap) if (keymap.hasOwnProperty(keyname)) { + var value = keymap[keyname]; + if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) continue; + if (value == "...") { delete keymap[keyname]; continue; } + + var keys = map(keyname.split(" "), normalizeKeyName); + for (var i = 0; i < keys.length; i++) { + var val, name; + if (i == keys.length - 1) { + name = keys.join(" "); + val = value; + } else { + name = keys.slice(0, i + 1).join(" "); + val = "..."; + } + var prev = copy[name]; + if (!prev) copy[name] = val; + else if (prev != val) throw new Error("Inconsistent bindings for " + name); + } + delete keymap[keyname]; + } + for (var prop in copy) keymap[prop] = copy[prop]; + return keymap; + }; + + var lookupKey = CodeMirror.lookupKey = function(key, map, handle, context) { + map = getKeyMap(map); + var found = map.call ? map.call(key, context) : map[key]; + if (found === false) return "nothing"; + if (found === "...") return "multi"; + if (found != null && handle(found)) return "handled"; + + if (map.fallthrough) { + if (Object.prototype.toString.call(map.fallthrough) != "[object Array]") + return lookupKey(key, map.fallthrough, handle, context); + for (var i = 0; i < map.fallthrough.length; i++) { + var result = lookupKey(key, map.fallthrough[i], handle, context); + if (result) return result; + } + } + }; + + // Modifier key presses don't count as 'real' key presses for the + // purpose of keymap fallthrough. + var isModifierKey = CodeMirror.isModifierKey = function(value) { + var name = typeof value == "string" ? value : keyNames[value.keyCode]; + return name == "Ctrl" || name == "Alt" || name == "Shift" || name == "Mod"; + }; + + // Look up the name of a key as indicated by an event object. + var keyName = CodeMirror.keyName = function(event, noShift) { + if (presto && event.keyCode == 34 && event["char"]) return false; + var base = keyNames[event.keyCode], name = base; + if (name == null || event.altGraphKey) return false; + if (event.altKey && base != "Alt") name = "Alt-" + name; + if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != "Ctrl") name = "Ctrl-" + name; + if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != "Cmd") name = "Cmd-" + name; + if (!noShift && event.shiftKey && base != "Shift") name = "Shift-" + name; + return name; + }; + + function getKeyMap(val) { + return typeof val == "string" ? keyMap[val] : val; + } + + // FROMTEXTAREA + + CodeMirror.fromTextArea = function(textarea, options) { + options = options ? copyObj(options) : {}; + options.value = textarea.value; + if (!options.tabindex && textarea.tabIndex) + options.tabindex = textarea.tabIndex; + if (!options.placeholder && textarea.placeholder) + options.placeholder = textarea.placeholder; + // Set autofocus to true if this textarea is focused, or if it has + // autofocus and no other element is focused. + if (options.autofocus == null) { + var hasFocus = activeElt(); + options.autofocus = hasFocus == textarea || + textarea.getAttribute("autofocus") != null && hasFocus == document.body; + } + + function save() {textarea.value = cm.getValue();} + if (textarea.form) { + on(textarea.form, "submit", save); + // Deplorable hack to make the submit method do the right thing. + if (!options.leaveSubmitMethodAlone) { + var form = textarea.form, realSubmit = form.submit; + try { + var wrappedSubmit = form.submit = function() { + save(); + form.submit = realSubmit; + form.submit(); + form.submit = wrappedSubmit; + }; + } catch(e) {} + } + } + + options.finishInit = function(cm) { + cm.save = save; + cm.getTextArea = function() { return textarea; }; + cm.toTextArea = function() { + cm.toTextArea = isNaN; // Prevent this from being ran twice + save(); + textarea.parentNode.removeChild(cm.getWrapperElement()); + textarea.style.display = ""; + if (textarea.form) { + off(textarea.form, "submit", save); + if (typeof textarea.form.submit == "function") + textarea.form.submit = realSubmit; + } + }; + }; + + textarea.style.display = "none"; + var cm = CodeMirror(function(node) { + textarea.parentNode.insertBefore(node, textarea.nextSibling); + }, options); + return cm; + }; + + // STRING STREAM + + // Fed to the mode parsers, provides helper functions to make + // parsers more succinct. + + var StringStream = CodeMirror.StringStream = function(string, tabSize) { + this.pos = this.start = 0; + this.string = string; + this.tabSize = tabSize || 8; + this.lastColumnPos = this.lastColumnValue = 0; + this.lineStart = 0; + }; + + StringStream.prototype = { + eol: function() {return this.pos >= this.string.length;}, + sol: function() {return this.pos == this.lineStart;}, + peek: function() {return this.string.charAt(this.pos) || undefined;}, + next: function() { + if (this.pos < this.string.length) + return this.string.charAt(this.pos++); + }, + eat: function(match) { + var ch = this.string.charAt(this.pos); + if (typeof match == "string") var ok = ch == match; + else var ok = ch && (match.test ? match.test(ch) : match(ch)); + if (ok) {++this.pos; return ch;} + }, + eatWhile: function(match) { + var start = this.pos; + while (this.eat(match)){} + return this.pos > start; + }, + eatSpace: function() { + var start = this.pos; + while (/[\s\u00a0]/.test(this.string.charAt(this.pos))) ++this.pos; + return this.pos > start; + }, + skipToEnd: function() {this.pos = this.string.length;}, + skipTo: function(ch) { + var found = this.string.indexOf(ch, this.pos); + if (found > -1) {this.pos = found; return true;} + }, + backUp: function(n) {this.pos -= n;}, + column: function() { + if (this.lastColumnPos < this.start) { + this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue); + this.lastColumnPos = this.start; + } + return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); + }, + indentation: function() { + return countColumn(this.string, null, this.tabSize) - + (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0); + }, + match: function(pattern, consume, caseInsensitive) { + if (typeof pattern == "string") { + var cased = function(str) {return caseInsensitive ? str.toLowerCase() : str;}; + var substr = this.string.substr(this.pos, pattern.length); + if (cased(substr) == cased(pattern)) { + if (consume !== false) this.pos += pattern.length; + return true; + } + } else { + var match = this.string.slice(this.pos).match(pattern); + if (match && match.index > 0) return null; + if (match && consume !== false) this.pos += match[0].length; + return match; + } + }, + current: function(){return this.string.slice(this.start, this.pos);}, + hideFirstChars: function(n, inner) { + this.lineStart += n; + try { return inner(); } + finally { this.lineStart -= n; } + } + }; + + // TEXTMARKERS + + // Created with markText and setBookmark methods. A TextMarker is a + // handle that can be used to clear or find a marked position in the + // document. Line objects hold arrays (markedSpans) containing + // {from, to, marker} object pointing to such marker objects, and + // indicating that such a marker is present on that line. Multiple + // lines may point to the same marker when it spans across lines. + // The spans will have null for their from/to properties when the + // marker continues beyond the start/end of the line. Markers have + // links back to the lines they currently touch. + + var nextMarkerId = 0; + + var TextMarker = CodeMirror.TextMarker = function(doc, type) { + this.lines = []; + this.type = type; + this.doc = doc; + this.id = ++nextMarkerId; + }; + eventMixin(TextMarker); + + // Clear the marker. + TextMarker.prototype.clear = function() { + if (this.explicitlyCleared) return; + var cm = this.doc.cm, withOp = cm && !cm.curOp; + if (withOp) startOperation(cm); + if (hasHandler(this, "clear")) { + var found = this.find(); + if (found) signalLater(this, "clear", found.from, found.to); + } + var min = null, max = null; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (cm && !this.collapsed) regLineChange(cm, lineNo(line), "text"); + else if (cm) { + if (span.to != null) max = lineNo(line); + if (span.from != null) min = lineNo(line); + } + line.markedSpans = removeMarkedSpan(line.markedSpans, span); + if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm) + updateLineHeight(line, textHeight(cm.display)); + } + if (cm && this.collapsed && !cm.options.lineWrapping) for (var i = 0; i < this.lines.length; ++i) { + var visual = visualLine(this.lines[i]), len = lineLength(visual); + if (len > cm.display.maxLineLength) { + cm.display.maxLine = visual; + cm.display.maxLineLength = len; + cm.display.maxLineChanged = true; + } + } + + if (min != null && cm && this.collapsed) regChange(cm, min, max + 1); + this.lines.length = 0; + this.explicitlyCleared = true; + if (this.atomic && this.doc.cantEdit) { + this.doc.cantEdit = false; + if (cm) reCheckSelection(cm.doc); + } + if (cm) signalLater(cm, "markerCleared", cm, this); + if (withOp) endOperation(cm); + if (this.parent) this.parent.clear(); + }; + + // Find the position of the marker in the document. Returns a {from, + // to} object by default. Side can be passed to get a specific side + // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the + // Pos objects returned contain a line object, rather than a line + // number (used to prevent looking up the same line twice). + TextMarker.prototype.find = function(side, lineObj) { + if (side == null && this.type == "bookmark") side = 1; + var from, to; + for (var i = 0; i < this.lines.length; ++i) { + var line = this.lines[i]; + var span = getMarkedSpanFor(line.markedSpans, this); + if (span.from != null) { + from = Pos(lineObj ? line : lineNo(line), span.from); + if (side == -1) return from; + } + if (span.to != null) { + to = Pos(lineObj ? line : lineNo(line), span.to); + if (side == 1) return to; + } + } + return from && {from: from, to: to}; + }; + + // Signals that the marker's widget changed, and surrounding layout + // should be recomputed. + TextMarker.prototype.changed = function() { + var pos = this.find(-1, true), widget = this, cm = this.doc.cm; + if (!pos || !cm) return; + runInOp(cm, function() { + var line = pos.line, lineN = lineNo(pos.line); + var view = findViewForLine(cm, lineN); + if (view) { + clearLineMeasurementCacheFor(view); + cm.curOp.selectionChanged = cm.curOp.forceUpdate = true; + } + cm.curOp.updateMaxLine = true; + if (!lineIsHidden(widget.doc, line) && widget.height != null) { + var oldHeight = widget.height; + widget.height = null; + var dHeight = widgetHeight(widget) - oldHeight; + if (dHeight) + updateLineHeight(line, line.height + dHeight); + } + }); + }; + + TextMarker.prototype.attachLine = function(line) { + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1) + (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); + } + this.lines.push(line); + }; + TextMarker.prototype.detachLine = function(line) { + this.lines.splice(indexOf(this.lines, line), 1); + if (!this.lines.length && this.doc.cm) { + var op = this.doc.cm.curOp; + (op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this); + } + }; + + // Collapsed markers have unique ids, in order to be able to order + // them, which is needed for uniquely determining an outer marker + // when they overlap (they may nest, but not partially overlap). + var nextMarkerId = 0; + + // Create a marker, wire it up to the right lines, and + function markText(doc, from, to, options, type) { + // Shared markers (across linked documents) are handled separately + // (markTextShared will call out to this again, once per + // document). + if (options && options.shared) return markTextShared(doc, from, to, options, type); + // Ensure we are in an operation. + if (doc.cm && !doc.cm.curOp) return operation(doc.cm, markText)(doc, from, to, options, type); + + var marker = new TextMarker(doc, type), diff = cmp(from, to); + if (options) copyObj(options, marker, false); + // Don't connect empty markers unless clearWhenEmpty is false + if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false) + return marker; + if (marker.replacedWith) { + // Showing up as a widget implies collapsed (widget replaces text) + marker.collapsed = true; + marker.widgetNode = elt("span", [marker.replacedWith], "CodeMirror-widget"); + if (!options.handleMouseEvents) marker.widgetNode.setAttribute("cm-ignore-events", "true"); + if (options.insertLeft) marker.widgetNode.insertLeft = true; + } + if (marker.collapsed) { + if (conflictingCollapsedRange(doc, from.line, from, to, marker) || + from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker)) + throw new Error("Inserting collapsed marker partially overlapping an existing one"); + sawCollapsedSpans = true; + } + + if (marker.addToHistory) + addChangeToHistory(doc, {from: from, to: to, origin: "markText"}, doc.sel, NaN); + + var curLine = from.line, cm = doc.cm, updateMaxLine; + doc.iter(curLine, to.line + 1, function(line) { + if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine) + updateMaxLine = true; + if (marker.collapsed && curLine != from.line) updateLineHeight(line, 0); + addMarkedSpan(line, new MarkedSpan(marker, + curLine == from.line ? from.ch : null, + curLine == to.line ? to.ch : null)); + ++curLine; + }); + // lineIsHidden depends on the presence of the spans, so needs a second pass + if (marker.collapsed) doc.iter(from.line, to.line + 1, function(line) { + if (lineIsHidden(doc, line)) updateLineHeight(line, 0); + }); + + if (marker.clearOnEnter) on(marker, "beforeCursorEnter", function() { marker.clear(); }); + + if (marker.readOnly) { + sawReadOnlySpans = true; + if (doc.history.done.length || doc.history.undone.length) + doc.clearHistory(); + } + if (marker.collapsed) { + marker.id = ++nextMarkerId; + marker.atomic = true; + } + if (cm) { + // Sync editor state + if (updateMaxLine) cm.curOp.updateMaxLine = true; + if (marker.collapsed) + regChange(cm, from.line, to.line + 1); + else if (marker.className || marker.title || marker.startStyle || marker.endStyle || marker.css) + for (var i = from.line; i <= to.line; i++) regLineChange(cm, i, "text"); + if (marker.atomic) reCheckSelection(cm.doc); + signalLater(cm, "markerAdded", cm, marker); + } + return marker; + } + + // SHARED TEXTMARKERS + + // A shared marker spans multiple linked documents. It is + // implemented as a meta-marker-object controlling multiple normal + // markers. + var SharedTextMarker = CodeMirror.SharedTextMarker = function(markers, primary) { + this.markers = markers; + this.primary = primary; + for (var i = 0; i < markers.length; ++i) + markers[i].parent = this; + }; + eventMixin(SharedTextMarker); + + SharedTextMarker.prototype.clear = function() { + if (this.explicitlyCleared) return; + this.explicitlyCleared = true; + for (var i = 0; i < this.markers.length; ++i) + this.markers[i].clear(); + signalLater(this, "clear"); + }; + SharedTextMarker.prototype.find = function(side, lineObj) { + return this.primary.find(side, lineObj); + }; + + function markTextShared(doc, from, to, options, type) { + options = copyObj(options); + options.shared = false; + var markers = [markText(doc, from, to, options, type)], primary = markers[0]; + var widget = options.widgetNode; + linkedDocs(doc, function(doc) { + if (widget) options.widgetNode = widget.cloneNode(true); + markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type)); + for (var i = 0; i < doc.linked.length; ++i) + if (doc.linked[i].isParent) return; + primary = lst(markers); + }); + return new SharedTextMarker(markers, primary); + } + + function findSharedMarkers(doc) { + return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), + function(m) { return m.parent; }); + } + + function copySharedMarkers(doc, markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], pos = marker.find(); + var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to); + if (cmp(mFrom, mTo)) { + var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type); + marker.markers.push(subMark); + subMark.parent = marker; + } + } + } + + function detachSharedMarkers(markers) { + for (var i = 0; i < markers.length; i++) { + var marker = markers[i], linked = [marker.primary.doc];; + linkedDocs(marker.primary.doc, function(d) { linked.push(d); }); + for (var j = 0; j < marker.markers.length; j++) { + var subMarker = marker.markers[j]; + if (indexOf(linked, subMarker.doc) == -1) { + subMarker.parent = null; + marker.markers.splice(j--, 1); + } + } + } + } + + // TEXTMARKER SPANS + + function MarkedSpan(marker, from, to) { + this.marker = marker; + this.from = from; this.to = to; + } + + // Search an array of spans for a span matching the given marker. + function getMarkedSpanFor(spans, marker) { + if (spans) for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.marker == marker) return span; + } + } + // Remove a span from an array, returning undefined if no spans are + // left (we don't store arrays for lines without spans). + function removeMarkedSpan(spans, span) { + for (var r, i = 0; i < spans.length; ++i) + if (spans[i] != span) (r || (r = [])).push(spans[i]); + return r; + } + // Add a span to a line. + function addMarkedSpan(line, span) { + line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span]; + span.marker.attachLine(line); + } + + // Used for the algorithm that adjusts markers for a change in the + // document. These functions cut an array of spans at a given + // character position, returning an array of remaining chunks (or + // undefined if nothing remains). + function markedSpansBefore(old, startCh, isInsert) { + if (old) for (var i = 0, nw; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh); + if (startsBefore || span.from == startCh && marker.type == "bookmark" && (!isInsert || !span.marker.insertLeft)) { + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh); + (nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to)); + } + } + return nw; + } + function markedSpansAfter(old, endCh, isInsert) { + if (old) for (var i = 0, nw; i < old.length; ++i) { + var span = old[i], marker = span.marker; + var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh); + if (endsAfter || span.from == endCh && marker.type == "bookmark" && (!isInsert || span.marker.insertLeft)) { + var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh); + (nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh, + span.to == null ? null : span.to - endCh)); + } + } + return nw; + } + + // Given a change object, compute the new set of marker spans that + // cover the line in which the change took place. Removes spans + // entirely within the change, reconnects spans belonging to the + // same marker that appear on both sides of the change, and cuts off + // spans partially within the change. Returns an array of span + // arrays with one element for each line in (after) the change. + function stretchSpansOverChange(doc, change) { + if (change.full) return null; + var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans; + var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans; + if (!oldFirst && !oldLast) return null; + + var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0; + // Get the spans that 'stick out' on both sides + var first = markedSpansBefore(oldFirst, startCh, isInsert); + var last = markedSpansAfter(oldLast, endCh, isInsert); + + // Next, merge those two ends + var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0); + if (first) { + // Fix up .to properties of first + for (var i = 0; i < first.length; ++i) { + var span = first[i]; + if (span.to == null) { + var found = getMarkedSpanFor(last, span.marker); + if (!found) span.to = startCh; + else if (sameLine) span.to = found.to == null ? null : found.to + offset; + } + } + } + if (last) { + // Fix up .from in last (or move them into first in case of sameLine) + for (var i = 0; i < last.length; ++i) { + var span = last[i]; + if (span.to != null) span.to += offset; + if (span.from == null) { + var found = getMarkedSpanFor(first, span.marker); + if (!found) { + span.from = offset; + if (sameLine) (first || (first = [])).push(span); + } + } else { + span.from += offset; + if (sameLine) (first || (first = [])).push(span); + } + } + } + // Make sure we didn't create any zero-length spans + if (first) first = clearEmptySpans(first); + if (last && last != first) last = clearEmptySpans(last); + + var newMarkers = [first]; + if (!sameLine) { + // Fill gap with whole-line-spans + var gap = change.text.length - 2, gapMarkers; + if (gap > 0 && first) + for (var i = 0; i < first.length; ++i) + if (first[i].to == null) + (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i].marker, null, null)); + for (var i = 0; i < gap; ++i) + newMarkers.push(gapMarkers); + newMarkers.push(last); + } + return newMarkers; + } + + // Remove spans that are empty and don't have a clearWhenEmpty + // option of false. + function clearEmptySpans(spans) { + for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false) + spans.splice(i--, 1); + } + if (!spans.length) return null; + return spans; + } + + // Used for un/re-doing changes from the history. Combines the + // result of computing the existing spans with the set of spans that + // existed in the history (so that deleting around a span and then + // undoing brings back the span). + function mergeOldSpans(doc, change) { + var old = getOldSpans(doc, change); + var stretched = stretchSpansOverChange(doc, change); + if (!old) return stretched; + if (!stretched) return old; + + for (var i = 0; i < old.length; ++i) { + var oldCur = old[i], stretchCur = stretched[i]; + if (oldCur && stretchCur) { + spans: for (var j = 0; j < stretchCur.length; ++j) { + var span = stretchCur[j]; + for (var k = 0; k < oldCur.length; ++k) + if (oldCur[k].marker == span.marker) continue spans; + oldCur.push(span); + } + } else if (stretchCur) { + old[i] = stretchCur; + } + } + return old; + } + + // Used to 'clip' out readOnly ranges when making a change. + function removeReadOnlyRanges(doc, from, to) { + var markers = null; + doc.iter(from.line, to.line + 1, function(line) { + if (line.markedSpans) for (var i = 0; i < line.markedSpans.length; ++i) { + var mark = line.markedSpans[i].marker; + if (mark.readOnly && (!markers || indexOf(markers, mark) == -1)) + (markers || (markers = [])).push(mark); + } + }); + if (!markers) return null; + var parts = [{from: from, to: to}]; + for (var i = 0; i < markers.length; ++i) { + var mk = markers[i], m = mk.find(0); + for (var j = 0; j < parts.length; ++j) { + var p = parts[j]; + if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) continue; + var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to); + if (dfrom < 0 || !mk.inclusiveLeft && !dfrom) + newParts.push({from: p.from, to: m.from}); + if (dto > 0 || !mk.inclusiveRight && !dto) + newParts.push({from: m.to, to: p.to}); + parts.splice.apply(parts, newParts); + j += newParts.length - 1; + } + } + return parts; + } + + // Connect or disconnect spans from a line. + function detachMarkedSpans(line) { + var spans = line.markedSpans; + if (!spans) return; + for (var i = 0; i < spans.length; ++i) + spans[i].marker.detachLine(line); + line.markedSpans = null; + } + function attachMarkedSpans(line, spans) { + if (!spans) return; + for (var i = 0; i < spans.length; ++i) + spans[i].marker.attachLine(line); + line.markedSpans = spans; + } + + // Helpers used when computing which overlapping collapsed span + // counts as the larger one. + function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0; } + function extraRight(marker) { return marker.inclusiveRight ? 1 : 0; } + + // Returns a number indicating which of two overlapping collapsed + // spans is larger (and thus includes the other). Falls back to + // comparing ids when the spans cover exactly the same range. + function compareCollapsedMarkers(a, b) { + var lenDiff = a.lines.length - b.lines.length; + if (lenDiff != 0) return lenDiff; + var aPos = a.find(), bPos = b.find(); + var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b); + if (fromCmp) return -fromCmp; + var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b); + if (toCmp) return toCmp; + return b.id - a.id; + } + + // Find out whether a line ends or starts in a collapsed span. If + // so, return the marker for that span. + function collapsedSpanAtSide(line, start) { + var sps = sawCollapsedSpans && line.markedSpans, found; + if (sps) for (var sp, i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (sp.marker.collapsed && (start ? sp.from : sp.to) == null && + (!found || compareCollapsedMarkers(found, sp.marker) < 0)) + found = sp.marker; + } + return found; + } + function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true); } + function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false); } + + // Test whether there exists a collapsed span that partially + // overlaps (covers the start or end, but not both) of a new span. + // Such overlap is not allowed. + function conflictingCollapsedRange(doc, lineNo, from, to, marker) { + var line = getLine(doc, lineNo); + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) for (var i = 0; i < sps.length; ++i) { + var sp = sps[i]; + if (!sp.marker.collapsed) continue; + var found = sp.marker.find(0); + var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker); + var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker); + if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) continue; + if (fromCmp <= 0 && (cmp(found.to, from) > 0 || (sp.marker.inclusiveRight && marker.inclusiveLeft)) || + fromCmp >= 0 && (cmp(found.from, to) < 0 || (sp.marker.inclusiveLeft && marker.inclusiveRight))) + return true; + } + } + + // A visual line is a line as drawn on the screen. Folding, for + // example, can cause multiple logical lines to appear on the same + // visual line. This finds the start of the visual line that the + // given line is part of (usually that is the line itself). + function visualLine(line) { + var merged; + while (merged = collapsedSpanAtStart(line)) + line = merged.find(-1, true).line; + return line; + } + + // Returns an array of logical lines that continue the visual line + // started by the argument, or undefined if there are no such lines. + function visualLineContinued(line) { + var merged, lines; + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line; + (lines || (lines = [])).push(line); + } + return lines; + } + + // Get the line number of the start of the visual line that the + // given line number is part of. + function visualLineNo(doc, lineN) { + var line = getLine(doc, lineN), vis = visualLine(line); + if (line == vis) return lineN; + return lineNo(vis); + } + // Get the line number of the start of the next visual line after + // the given line. + function visualLineEndNo(doc, lineN) { + if (lineN > doc.lastLine()) return lineN; + var line = getLine(doc, lineN), merged; + if (!lineIsHidden(doc, line)) return lineN; + while (merged = collapsedSpanAtEnd(line)) + line = merged.find(1, true).line; + return lineNo(line) + 1; + } + + // Compute whether a line is hidden. Lines count as hidden when they + // are part of a visual line that starts with another line, or when + // they are entirely covered by collapsed, non-widget span. + function lineIsHidden(doc, line) { + var sps = sawCollapsedSpans && line.markedSpans; + if (sps) for (var sp, i = 0; i < sps.length; ++i) { + sp = sps[i]; + if (!sp.marker.collapsed) continue; + if (sp.from == null) return true; + if (sp.marker.widgetNode) continue; + if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp)) + return true; + } + } + function lineIsHiddenInner(doc, line, span) { + if (span.to == null) { + var end = span.marker.find(1, true); + return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker)); + } + if (span.marker.inclusiveRight && span.to == line.text.length) + return true; + for (var sp, i = 0; i < line.markedSpans.length; ++i) { + sp = line.markedSpans[i]; + if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to && + (sp.to == null || sp.to != span.from) && + (sp.marker.inclusiveLeft || span.marker.inclusiveRight) && + lineIsHiddenInner(doc, line, sp)) return true; + } + } + + // LINE WIDGETS + + // Line widgets are block elements displayed above or below a line. + + var LineWidget = CodeMirror.LineWidget = function(doc, node, options) { + if (options) for (var opt in options) if (options.hasOwnProperty(opt)) + this[opt] = options[opt]; + this.doc = doc; + this.node = node; + }; + eventMixin(LineWidget); + + function adjustScrollWhenAboveVisible(cm, line, diff) { + if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop)) + addToScrollPos(cm, null, diff); + } + + LineWidget.prototype.clear = function() { + var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line); + if (no == null || !ws) return; + for (var i = 0; i < ws.length; ++i) if (ws[i] == this) ws.splice(i--, 1); + if (!ws.length) line.widgets = null; + var height = widgetHeight(this); + updateLineHeight(line, Math.max(0, line.height - height)); + if (cm) runInOp(cm, function() { + adjustScrollWhenAboveVisible(cm, line, -height); + regLineChange(cm, no, "widget"); + }); + }; + LineWidget.prototype.changed = function() { + var oldH = this.height, cm = this.doc.cm, line = this.line; + this.height = null; + var diff = widgetHeight(this) - oldH; + if (!diff) return; + updateLineHeight(line, line.height + diff); + if (cm) runInOp(cm, function() { + cm.curOp.forceUpdate = true; + adjustScrollWhenAboveVisible(cm, line, diff); + }); + }; + + function widgetHeight(widget) { + if (widget.height != null) return widget.height; + var cm = widget.doc.cm; + if (!cm) return 0; + if (!contains(document.body, widget.node)) { + var parentStyle = "position: relative;"; + if (widget.coverGutter) + parentStyle += "margin-left: -" + cm.display.gutters.offsetWidth + "px;"; + if (widget.noHScroll) + parentStyle += "width: " + cm.display.wrapper.clientWidth + "px;"; + removeChildrenAndAdd(cm.display.measure, elt("div", [widget.node], null, parentStyle)); + } + return widget.height = widget.node.parentNode.offsetHeight; + } + + function addLineWidget(doc, handle, node, options) { + var widget = new LineWidget(doc, node, options); + var cm = doc.cm; + if (cm && widget.noHScroll) cm.display.alignWidgets = true; + changeLine(doc, handle, "widget", function(line) { + var widgets = line.widgets || (line.widgets = []); + if (widget.insertAt == null) widgets.push(widget); + else widgets.splice(Math.min(widgets.length - 1, Math.max(0, widget.insertAt)), 0, widget); + widget.line = line; + if (cm && !lineIsHidden(doc, line)) { + var aboveVisible = heightAtLine(line) < doc.scrollTop; + updateLineHeight(line, line.height + widgetHeight(widget)); + if (aboveVisible) addToScrollPos(cm, null, widget.height); + cm.curOp.forceUpdate = true; + } + return true; + }); + return widget; + } + + // LINE DATA STRUCTURE + + // Line objects. These hold state related to a line, including + // highlighting info (the styles array). + var Line = CodeMirror.Line = function(text, markedSpans, estimateHeight) { + this.text = text; + attachMarkedSpans(this, markedSpans); + this.height = estimateHeight ? estimateHeight(this) : 1; + }; + eventMixin(Line); + Line.prototype.lineNo = function() { return lineNo(this); }; + + // Change the content (text, markers) of a line. Automatically + // invalidates cached information and tries to re-estimate the + // line's height. + function updateLine(line, text, markedSpans, estimateHeight) { + line.text = text; + if (line.stateAfter) line.stateAfter = null; + if (line.styles) line.styles = null; + if (line.order != null) line.order = null; + detachMarkedSpans(line); + attachMarkedSpans(line, markedSpans); + var estHeight = estimateHeight ? estimateHeight(line) : 1; + if (estHeight != line.height) updateLineHeight(line, estHeight); + } + + // Detach a line from the document tree and its markers. + function cleanUpLine(line) { + line.parent = null; + detachMarkedSpans(line); + } + + function extractLineClasses(type, output) { + if (type) for (;;) { + var lineClass = type.match(/(?:^|\s+)line-(background-)?(\S+)/); + if (!lineClass) break; + type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length); + var prop = lineClass[1] ? "bgClass" : "textClass"; + if (output[prop] == null) + output[prop] = lineClass[2]; + else if (!(new RegExp("(?:^|\s)" + lineClass[2] + "(?:$|\s)")).test(output[prop])) + output[prop] += " " + lineClass[2]; + } + return type; + } + + function callBlankLine(mode, state) { + if (mode.blankLine) return mode.blankLine(state); + if (!mode.innerMode) return; + var inner = CodeMirror.innerMode(mode, state); + if (inner.mode.blankLine) return inner.mode.blankLine(inner.state); + } + + function readToken(mode, stream, state, inner) { + for (var i = 0; i < 10; i++) { + if (inner) inner[0] = CodeMirror.innerMode(mode, state).mode; + var style = mode.token(stream, state); + if (stream.pos > stream.start) return style; + } + throw new Error("Mode " + mode.name + " failed to advance stream."); + } + + // Utility for getTokenAt and getLineTokens + function takeToken(cm, pos, precise, asArray) { + function getObj(copy) { + return {start: stream.start, end: stream.pos, + string: stream.current(), + type: style || null, + state: copy ? copyState(doc.mode, state) : state}; + } + + var doc = cm.doc, mode = doc.mode, style; + pos = clipPos(doc, pos); + var line = getLine(doc, pos.line), state = getStateBefore(cm, pos.line, precise); + var stream = new StringStream(line.text, cm.options.tabSize), tokens; + if (asArray) tokens = []; + while ((asArray || stream.pos < pos.ch) && !stream.eol()) { + stream.start = stream.pos; + style = readToken(mode, stream, state); + if (asArray) tokens.push(getObj(true)); + } + return asArray ? tokens : getObj(); + } + + // Run the given mode's parser over a line, calling f for each token. + function runMode(cm, text, mode, state, f, lineClasses, forceToEnd) { + var flattenSpans = mode.flattenSpans; + if (flattenSpans == null) flattenSpans = cm.options.flattenSpans; + var curStart = 0, curStyle = null; + var stream = new StringStream(text, cm.options.tabSize), style; + var inner = cm.options.addModeClass && [null]; + if (text == "") extractLineClasses(callBlankLine(mode, state), lineClasses); + while (!stream.eol()) { + if (stream.pos > cm.options.maxHighlightLength) { + flattenSpans = false; + if (forceToEnd) processLine(cm, text, state, stream.pos); + stream.pos = text.length; + style = null; + } else { + style = extractLineClasses(readToken(mode, stream, state, inner), lineClasses); + } + if (inner) { + var mName = inner[0].name; + if (mName) style = "m-" + (style ? mName + " " + style : mName); + } + if (!flattenSpans || curStyle != style) { + while (curStart < stream.start) { + curStart = Math.min(stream.start, curStart + 50000); + f(curStart, curStyle); + } + curStyle = style; + } + stream.start = stream.pos; + } + while (curStart < stream.pos) { + // Webkit seems to refuse to render text nodes longer than 57444 characters + var pos = Math.min(stream.pos, curStart + 50000); + f(pos, curStyle); + curStart = pos; + } + } + + // Compute a style array (an array starting with a mode generation + // -- for invalidation -- followed by pairs of end positions and + // style strings), which is used to highlight the tokens on the + // line. + function highlightLine(cm, line, state, forceToEnd) { + // A styles array always starts with a number identifying the + // mode/overlays that it is based on (for easy invalidation). + var st = [cm.state.modeGen], lineClasses = {}; + // Compute the base array of styles + runMode(cm, line.text, cm.doc.mode, state, function(end, style) { + st.push(end, style); + }, lineClasses, forceToEnd); + + // Run overlays, adjust style array. + for (var o = 0; o < cm.state.overlays.length; ++o) { + var overlay = cm.state.overlays[o], i = 1, at = 0; + runMode(cm, line.text, overlay.mode, true, function(end, style) { + var start = i; + // Ensure there's a token end at the current position, and that i points at it + while (at < end) { + var i_end = st[i]; + if (i_end > end) + st.splice(i, 1, end, st[i+1], i_end); + i += 2; + at = Math.min(end, i_end); + } + if (!style) return; + if (overlay.opaque) { + st.splice(start, i - start, end, "cm-overlay " + style); + i = start + 2; + } else { + for (; start < i; start += 2) { + var cur = st[start+1]; + st[start+1] = (cur ? cur + " " : "") + "cm-overlay " + style; + } + } + }, lineClasses); + } + + return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}; + } + + function getLineStyles(cm, line, updateFrontier) { + if (!line.styles || line.styles[0] != cm.state.modeGen) { + var state = getStateBefore(cm, lineNo(line)); + var result = highlightLine(cm, line, line.text.length > cm.options.maxHighlightLength ? copyState(cm.doc.mode, state) : state); + line.stateAfter = state; + line.styles = result.styles; + if (result.classes) line.styleClasses = result.classes; + else if (line.styleClasses) line.styleClasses = null; + if (updateFrontier === cm.doc.frontier) cm.doc.frontier++; + } + return line.styles; + } + + // Lightweight form of highlight -- proceed over this line and + // update state, but don't save a style array. Used for lines that + // aren't currently visible. + function processLine(cm, text, state, startAt) { + var mode = cm.doc.mode; + var stream = new StringStream(text, cm.options.tabSize); + stream.start = stream.pos = startAt || 0; + if (text == "") callBlankLine(mode, state); + while (!stream.eol()) { + readToken(mode, stream, state); + stream.start = stream.pos; + } + } + + // Convert a style as returned by a mode (either null, or a string + // containing one or more styles) to a CSS style. This is cached, + // and also looks for line-wide styles. + var styleToClassCache = {}, styleToClassCacheWithMode = {}; + function interpretTokenStyle(style, options) { + if (!style || /^\s*$/.test(style)) return null; + var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache; + return cache[style] || + (cache[style] = style.replace(/\S+/g, "cm-$&")); + } + + // Render the DOM representation of the text of a line. Also builds + // up a 'line map', which points at the DOM nodes that represent + // specific stretches of text, and is used by the measuring code. + // The returned object contains the DOM node, this map, and + // information about line-wide styles that were set by the mode. + function buildLineContent(cm, lineView) { + // The padding-right forces the element to have a 'border', which + // is needed on Webkit to be able to get line-level bounding + // rectangles for it (in measureChar). + var content = elt("span", null, null, webkit ? "padding-right: .1px" : null); + var builder = {pre: elt("pre", [content], "CodeMirror-line"), content: content, + col: 0, pos: 0, cm: cm, + splitSpaces: (ie || webkit) && cm.getOption("lineWrapping")}; + lineView.measure = {}; + + // Iterate over the logical lines that make up this visual line. + for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) { + var line = i ? lineView.rest[i - 1] : lineView.line, order; + builder.pos = 0; + builder.addToken = buildToken; + // Optionally wire in some hacks into the token-rendering + // algorithm, to deal with browser quirks. + if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line))) + builder.addToken = buildTokenBadBidi(builder.addToken, order); + builder.map = []; + var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line); + insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate)); + if (line.styleClasses) { + if (line.styleClasses.bgClass) + builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || ""); + if (line.styleClasses.textClass) + builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || ""); + } + + // Ensure at least a single node is present, for measuring. + if (builder.map.length == 0) + builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); + + // Store the map and a cache object for the current logical line + if (i == 0) { + lineView.measure.map = builder.map; + lineView.measure.cache = {}; + } else { + (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map); + (lineView.measure.caches || (lineView.measure.caches = [])).push({}); + } + } + + // See issue #2901 + if (webkit && /\bcm-tab\b/.test(builder.content.lastChild.className)) + builder.content.className = "cm-tab-wrap-hack"; + + signal(cm, "renderLine", cm, lineView.line, builder.pre); + if (builder.pre.className) + builder.textClass = joinClasses(builder.pre.className, builder.textClass || ""); + + return builder; + } + + function defaultSpecialCharPlaceholder(ch) { + var token = elt("span", "\u2022", "cm-invalidchar"); + token.title = "\\u" + ch.charCodeAt(0).toString(16); + token.setAttribute("aria-label", token.title); + return token; + } + + // Build up the DOM representation for a single token, and add it to + // the line map. Takes care to render special characters separately. + function buildToken(builder, text, style, startStyle, endStyle, title, css) { + if (!text) return; + var displayText = builder.splitSpaces ? text.replace(/ {3,}/g, splitSpaces) : text; + var special = builder.cm.state.specialChars, mustWrap = false; + if (!special.test(text)) { + builder.col += text.length; + var content = document.createTextNode(displayText); + builder.map.push(builder.pos, builder.pos + text.length, content); + if (ie && ie_version < 9) mustWrap = true; + builder.pos += text.length; + } else { + var content = document.createDocumentFragment(), pos = 0; + while (true) { + special.lastIndex = pos; + var m = special.exec(text); + var skipped = m ? m.index - pos : text.length - pos; + if (skipped) { + var txt = document.createTextNode(displayText.slice(pos, pos + skipped)); + if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); + else content.appendChild(txt); + builder.map.push(builder.pos, builder.pos + skipped, txt); + builder.col += skipped; + builder.pos += skipped; + } + if (!m) break; + pos += skipped + 1; + if (m[0] == "\t") { + var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize; + var txt = content.appendChild(elt("span", spaceStr(tabWidth), "cm-tab")); + txt.setAttribute("role", "presentation"); + txt.setAttribute("cm-text", "\t"); + builder.col += tabWidth; + } else if (m[0] == "\r" || m[0] == "\n") { + var txt = content.appendChild(elt("span", m[0] == "\r" ? "\u240d" : "\u2424", "cm-invalidchar")); + txt.setAttribute("cm-text", m[0]); + builder.col += 1; + } else { + var txt = builder.cm.options.specialCharPlaceholder(m[0]); + txt.setAttribute("cm-text", m[0]); + if (ie && ie_version < 9) content.appendChild(elt("span", [txt])); + else content.appendChild(txt); + builder.col += 1; + } + builder.map.push(builder.pos, builder.pos + 1, txt); + builder.pos++; + } + } + if (style || startStyle || endStyle || mustWrap || css) { + var fullStyle = style || ""; + if (startStyle) fullStyle += startStyle; + if (endStyle) fullStyle += endStyle; + var token = elt("span", [content], fullStyle, css); + if (title) token.title = title; + return builder.content.appendChild(token); + } + builder.content.appendChild(content); + } + + function splitSpaces(old) { + var out = " "; + for (var i = 0; i < old.length - 2; ++i) out += i % 2 ? " " : "\u00a0"; + out += " "; + return out; + } + + // Work around nonsense dimensions being reported for stretches of + // right-to-left text. + function buildTokenBadBidi(inner, order) { + return function(builder, text, style, startStyle, endStyle, title, css) { + style = style ? style + " cm-force-border" : "cm-force-border"; + var start = builder.pos, end = start + text.length; + for (;;) { + // Find the part that overlaps with the start of this text + for (var i = 0; i < order.length; i++) { + var part = order[i]; + if (part.to > start && part.from <= start) break; + } + if (part.to >= end) return inner(builder, text, style, startStyle, endStyle, title, css); + inner(builder, text.slice(0, part.to - start), style, startStyle, null, title, css); + startStyle = null; + text = text.slice(part.to - start); + start = part.to; + } + }; + } + + function buildCollapsedSpan(builder, size, marker, ignoreWidget) { + var widget = !ignoreWidget && marker.widgetNode; + if (widget) builder.map.push(builder.pos, builder.pos + size, widget); + if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) { + if (!widget) + widget = builder.content.appendChild(document.createElement("span")); + widget.setAttribute("cm-marker", marker.id); + } + if (widget) { + builder.cm.display.input.setUneditable(widget); + builder.content.appendChild(widget); + } + builder.pos += size; + } + + // Outputs a number of spans to make up a line, taking highlighting + // and marked text into account. + function insertLineContent(line, builder, styles) { + var spans = line.markedSpans, allText = line.text, at = 0; + if (!spans) { + for (var i = 1; i < styles.length; i+=2) + builder.addToken(builder, allText.slice(at, at = styles[i]), interpretTokenStyle(styles[i+1], builder.cm.options)); + return; + } + + var len = allText.length, pos = 0, i = 1, text = "", style, css; + var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, title, collapsed; + for (;;) { + if (nextChange == pos) { // Update current marker set + spanStyle = spanEndStyle = spanStartStyle = title = css = ""; + collapsed = null; nextChange = Infinity; + var foundBookmarks = [], endStyles + for (var j = 0; j < spans.length; ++j) { + var sp = spans[j], m = sp.marker; + if (m.type == "bookmark" && sp.from == pos && m.widgetNode) { + foundBookmarks.push(m); + } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) { + if (sp.to != null && sp.to != pos && nextChange > sp.to) { + nextChange = sp.to; + spanEndStyle = ""; + } + if (m.className) spanStyle += " " + m.className; + if (m.css) css = (css ? css + ";" : "") + m.css; + if (m.startStyle && sp.from == pos) spanStartStyle += " " + m.startStyle; + if (m.endStyle && sp.to == nextChange) (endStyles || (endStyles = [])).push(m.endStyle, sp.to) + if (m.title && !title) title = m.title; + if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0)) + collapsed = sp; + } else if (sp.from > pos && nextChange > sp.from) { + nextChange = sp.from; + } + } + if (endStyles) for (var j = 0; j < endStyles.length; j += 2) + if (endStyles[j + 1] == nextChange) spanEndStyle += " " + endStyles[j] + + if (!collapsed || collapsed.from == pos) for (var j = 0; j < foundBookmarks.length; ++j) + buildCollapsedSpan(builder, 0, foundBookmarks[j]); + if (collapsed && (collapsed.from || 0) == pos) { + buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos, + collapsed.marker, collapsed.from == null); + if (collapsed.to == null) return; + if (collapsed.to == pos) collapsed = false; + } + } + if (pos >= len) break; + + var upto = Math.min(len, nextChange); + while (true) { + if (text) { + var end = pos + text.length; + if (!collapsed) { + var tokenText = end > upto ? text.slice(0, upto - pos) : text; + builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle, + spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : "", title, css); + } + if (end >= upto) {text = text.slice(upto - pos); pos = upto; break;} + pos = end; + spanStartStyle = ""; + } + text = allText.slice(at, at = styles[i++]); + style = interpretTokenStyle(styles[i++], builder.cm.options); + } + } + } + + // DOCUMENT DATA STRUCTURE + + // By default, updates that start and end at the beginning of a line + // are treated specially, in order to make the association of line + // widgets and marker elements with the text behave more intuitive. + function isWholeLineUpdate(doc, change) { + return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == "" && + (!doc.cm || doc.cm.options.wholeLineUpdateBefore); + } + + // Perform a change on the document data structure. + function updateDoc(doc, change, markedSpans, estimateHeight) { + function spansFor(n) {return markedSpans ? markedSpans[n] : null;} + function update(line, text, spans) { + updateLine(line, text, spans, estimateHeight); + signalLater(line, "change", line, change); + } + function linesFor(start, end) { + for (var i = start, result = []; i < end; ++i) + result.push(new Line(text[i], spansFor(i), estimateHeight)); + return result; + } + + var from = change.from, to = change.to, text = change.text; + var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line); + var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line; + + // Adjust the line structure + if (change.full) { + doc.insert(0, linesFor(0, text.length)); + doc.remove(text.length, doc.size - text.length); + } else if (isWholeLineUpdate(doc, change)) { + // This is a whole-line replace. Treated specially to make + // sure line objects move the way they are supposed to. + var added = linesFor(0, text.length - 1); + update(lastLine, lastLine.text, lastSpans); + if (nlines) doc.remove(from.line, nlines); + if (added.length) doc.insert(from.line, added); + } else if (firstLine == lastLine) { + if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans); + } else { + var added = linesFor(1, text.length - 1); + added.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight)); + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + doc.insert(from.line + 1, added); + } + } else if (text.length == 1) { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0)); + doc.remove(from.line + 1, nlines); + } else { + update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0)); + update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans); + var added = linesFor(1, text.length - 1); + if (nlines > 1) doc.remove(from.line + 1, nlines - 1); + doc.insert(from.line + 1, added); + } + + signalLater(doc, "change", doc, change); + } + + // The document is represented as a BTree consisting of leaves, with + // chunk of lines in them, and branches, with up to ten leaves or + // other branch nodes below them. The top node is always a branch + // node, and is the document object itself (meaning it has + // additional methods and properties). + // + // All nodes have parent links. The tree is used both to go from + // line numbers to line objects, and to go from objects to numbers. + // It also indexes by height, and is used to convert between height + // and line object, and to find the total height of the document. + // + // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html + + function LeafChunk(lines) { + this.lines = lines; + this.parent = null; + for (var i = 0, height = 0; i < lines.length; ++i) { + lines[i].parent = this; + height += lines[i].height; + } + this.height = height; + } + + LeafChunk.prototype = { + chunkSize: function() { return this.lines.length; }, + // Remove the n lines at offset 'at'. + removeInner: function(at, n) { + for (var i = at, e = at + n; i < e; ++i) { + var line = this.lines[i]; + this.height -= line.height; + cleanUpLine(line); + signalLater(line, "delete"); + } + this.lines.splice(at, n); + }, + // Helper used to collapse a small branch into a single leaf. + collapse: function(lines) { + lines.push.apply(lines, this.lines); + }, + // Insert the given array of lines at offset 'at', count them as + // having the given height. + insertInner: function(at, lines, height) { + this.height += height; + this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at)); + for (var i = 0; i < lines.length; ++i) lines[i].parent = this; + }, + // Used to iterate over a part of the tree. + iterN: function(at, n, op) { + for (var e = at + n; at < e; ++at) + if (op(this.lines[at])) return true; + } + }; + + function BranchChunk(children) { + this.children = children; + var size = 0, height = 0; + for (var i = 0; i < children.length; ++i) { + var ch = children[i]; + size += ch.chunkSize(); height += ch.height; + ch.parent = this; + } + this.size = size; + this.height = height; + this.parent = null; + } + + BranchChunk.prototype = { + chunkSize: function() { return this.size; }, + removeInner: function(at, n) { + this.size -= n; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var rm = Math.min(n, sz - at), oldHeight = child.height; + child.removeInner(at, rm); + this.height -= oldHeight - child.height; + if (sz == rm) { this.children.splice(i--, 1); child.parent = null; } + if ((n -= rm) == 0) break; + at = 0; + } else at -= sz; + } + // If the result is smaller than 25 lines, ensure that it is a + // single leaf node. + if (this.size - n < 25 && + (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) { + var lines = []; + this.collapse(lines); + this.children = [new LeafChunk(lines)]; + this.children[0].parent = this; + } + }, + collapse: function(lines) { + for (var i = 0; i < this.children.length; ++i) this.children[i].collapse(lines); + }, + insertInner: function(at, lines, height) { + this.size += lines.length; + this.height += height; + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at <= sz) { + child.insertInner(at, lines, height); + if (child.lines && child.lines.length > 50) { + while (child.lines.length > 50) { + var spilled = child.lines.splice(child.lines.length - 25, 25); + var newleaf = new LeafChunk(spilled); + child.height -= newleaf.height; + this.children.splice(i + 1, 0, newleaf); + newleaf.parent = this; + } + this.maybeSpill(); + } + break; + } + at -= sz; + } + }, + // When a node has grown, check whether it should be split. + maybeSpill: function() { + if (this.children.length <= 10) return; + var me = this; + do { + var spilled = me.children.splice(me.children.length - 5, 5); + var sibling = new BranchChunk(spilled); + if (!me.parent) { // Become the parent node + var copy = new BranchChunk(me.children); + copy.parent = me; + me.children = [copy, sibling]; + me = copy; + } else { + me.size -= sibling.size; + me.height -= sibling.height; + var myIndex = indexOf(me.parent.children, me); + me.parent.children.splice(myIndex + 1, 0, sibling); + } + sibling.parent = me.parent; + } while (me.children.length > 10); + me.parent.maybeSpill(); + }, + iterN: function(at, n, op) { + for (var i = 0; i < this.children.length; ++i) { + var child = this.children[i], sz = child.chunkSize(); + if (at < sz) { + var used = Math.min(n, sz - at); + if (child.iterN(at, used, op)) return true; + if ((n -= used) == 0) break; + at = 0; + } else at -= sz; + } + } + }; + + var nextDocId = 0; + var Doc = CodeMirror.Doc = function(text, mode, firstLine, lineSep) { + if (!(this instanceof Doc)) return new Doc(text, mode, firstLine, lineSep); + if (firstLine == null) firstLine = 0; + + BranchChunk.call(this, [new LeafChunk([new Line("", null)])]); + this.first = firstLine; + this.scrollTop = this.scrollLeft = 0; + this.cantEdit = false; + this.cleanGeneration = 1; + this.frontier = firstLine; + var start = Pos(firstLine, 0); + this.sel = simpleSelection(start); + this.history = new History(null); + this.id = ++nextDocId; + this.modeOption = mode; + this.lineSep = lineSep; + this.extend = false; + + if (typeof text == "string") text = this.splitLines(text); + updateDoc(this, {from: start, to: start, text: text}); + setSelection(this, simpleSelection(start), sel_dontScroll); + }; + + Doc.prototype = createObj(BranchChunk.prototype, { + constructor: Doc, + // Iterate over the document. Supports two forms -- with only one + // argument, it calls that for each line in the document. With + // three, it iterates over the range given by the first two (with + // the second being non-inclusive). + iter: function(from, to, op) { + if (op) this.iterN(from - this.first, to - from, op); + else this.iterN(this.first, this.first + this.size, from); + }, + + // Non-public interface for adding and removing lines. + insert: function(at, lines) { + var height = 0; + for (var i = 0; i < lines.length; ++i) height += lines[i].height; + this.insertInner(at - this.first, lines, height); + }, + remove: function(at, n) { this.removeInner(at - this.first, n); }, + + // From here, the methods are part of the public interface. Most + // are also available from CodeMirror (editor) instances. + + getValue: function(lineSep) { + var lines = getLines(this, this.first, this.first + this.size); + if (lineSep === false) return lines; + return lines.join(lineSep || this.lineSeparator()); + }, + setValue: docMethodOp(function(code) { + var top = Pos(this.first, 0), last = this.first + this.size - 1; + makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length), + text: this.splitLines(code), origin: "setValue", full: true}, true); + setSelection(this, simpleSelection(top)); + }), + replaceRange: function(code, from, to, origin) { + from = clipPos(this, from); + to = to ? clipPos(this, to) : from; + replaceRange(this, code, from, to, origin); + }, + getRange: function(from, to, lineSep) { + var lines = getBetween(this, clipPos(this, from), clipPos(this, to)); + if (lineSep === false) return lines; + return lines.join(lineSep || this.lineSeparator()); + }, + + getLine: function(line) {var l = this.getLineHandle(line); return l && l.text;}, + + getLineHandle: function(line) {if (isLine(this, line)) return getLine(this, line);}, + getLineNumber: function(line) {return lineNo(line);}, + + getLineHandleVisualStart: function(line) { + if (typeof line == "number") line = getLine(this, line); + return visualLine(line); + }, + + lineCount: function() {return this.size;}, + firstLine: function() {return this.first;}, + lastLine: function() {return this.first + this.size - 1;}, + + clipPos: function(pos) {return clipPos(this, pos);}, + + getCursor: function(start) { + var range = this.sel.primary(), pos; + if (start == null || start == "head") pos = range.head; + else if (start == "anchor") pos = range.anchor; + else if (start == "end" || start == "to" || start === false) pos = range.to(); + else pos = range.from(); + return pos; + }, + listSelections: function() { return this.sel.ranges; }, + somethingSelected: function() {return this.sel.somethingSelected();}, + + setCursor: docMethodOp(function(line, ch, options) { + setSimpleSelection(this, clipPos(this, typeof line == "number" ? Pos(line, ch || 0) : line), null, options); + }), + setSelection: docMethodOp(function(anchor, head, options) { + setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options); + }), + extendSelection: docMethodOp(function(head, other, options) { + extendSelection(this, clipPos(this, head), other && clipPos(this, other), options); + }), + extendSelections: docMethodOp(function(heads, options) { + extendSelections(this, clipPosArray(this, heads), options); + }), + extendSelectionsBy: docMethodOp(function(f, options) { + var heads = map(this.sel.ranges, f); + extendSelections(this, clipPosArray(this, heads), options); + }), + setSelections: docMethodOp(function(ranges, primary, options) { + if (!ranges.length) return; + for (var i = 0, out = []; i < ranges.length; i++) + out[i] = new Range(clipPos(this, ranges[i].anchor), + clipPos(this, ranges[i].head)); + if (primary == null) primary = Math.min(ranges.length - 1, this.sel.primIndex); + setSelection(this, normalizeSelection(out, primary), options); + }), + addSelection: docMethodOp(function(anchor, head, options) { + var ranges = this.sel.ranges.slice(0); + ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor))); + setSelection(this, normalizeSelection(ranges, ranges.length - 1), options); + }), + + getSelection: function(lineSep) { + var ranges = this.sel.ranges, lines; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + lines = lines ? lines.concat(sel) : sel; + } + if (lineSep === false) return lines; + else return lines.join(lineSep || this.lineSeparator()); + }, + getSelections: function(lineSep) { + var parts = [], ranges = this.sel.ranges; + for (var i = 0; i < ranges.length; i++) { + var sel = getBetween(this, ranges[i].from(), ranges[i].to()); + if (lineSep !== false) sel = sel.join(lineSep || this.lineSeparator()); + parts[i] = sel; + } + return parts; + }, + replaceSelection: function(code, collapse, origin) { + var dup = []; + for (var i = 0; i < this.sel.ranges.length; i++) + dup[i] = code; + this.replaceSelections(dup, collapse, origin || "+input"); + }, + replaceSelections: docMethodOp(function(code, collapse, origin) { + var changes = [], sel = this.sel; + for (var i = 0; i < sel.ranges.length; i++) { + var range = sel.ranges[i]; + changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin}; + } + var newSel = collapse && collapse != "end" && computeReplacedSel(this, changes, collapse); + for (var i = changes.length - 1; i >= 0; i--) + makeChange(this, changes[i]); + if (newSel) setSelectionReplaceHistory(this, newSel); + else if (this.cm) ensureCursorVisible(this.cm); + }), + undo: docMethodOp(function() {makeChangeFromHistory(this, "undo");}), + redo: docMethodOp(function() {makeChangeFromHistory(this, "redo");}), + undoSelection: docMethodOp(function() {makeChangeFromHistory(this, "undo", true);}), + redoSelection: docMethodOp(function() {makeChangeFromHistory(this, "redo", true);}), + + setExtending: function(val) {this.extend = val;}, + getExtending: function() {return this.extend;}, + + historySize: function() { + var hist = this.history, done = 0, undone = 0; + for (var i = 0; i < hist.done.length; i++) if (!hist.done[i].ranges) ++done; + for (var i = 0; i < hist.undone.length; i++) if (!hist.undone[i].ranges) ++undone; + return {undo: done, redo: undone}; + }, + clearHistory: function() {this.history = new History(this.history.maxGeneration);}, + + markClean: function() { + this.cleanGeneration = this.changeGeneration(true); + }, + changeGeneration: function(forceSplit) { + if (forceSplit) + this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; + return this.history.generation; + }, + isClean: function (gen) { + return this.history.generation == (gen || this.cleanGeneration); + }, + + getHistory: function() { + return {done: copyHistoryArray(this.history.done), + undone: copyHistoryArray(this.history.undone)}; + }, + setHistory: function(histData) { + var hist = this.history = new History(this.history.maxGeneration); + hist.done = copyHistoryArray(histData.done.slice(0), null, true); + hist.undone = copyHistoryArray(histData.undone.slice(0), null, true); + }, + + addLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + if (!line[prop]) line[prop] = cls; + else if (classTest(cls).test(line[prop])) return false; + else line[prop] += " " + cls; + return true; + }); + }), + removeLineClass: docMethodOp(function(handle, where, cls) { + return changeLine(this, handle, where == "gutter" ? "gutter" : "class", function(line) { + var prop = where == "text" ? "textClass" + : where == "background" ? "bgClass" + : where == "gutter" ? "gutterClass" : "wrapClass"; + var cur = line[prop]; + if (!cur) return false; + else if (cls == null) line[prop] = null; + else { + var found = cur.match(classTest(cls)); + if (!found) return false; + var end = found.index + found[0].length; + line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? "" : " ") + cur.slice(end) || null; + } + return true; + }); + }), + + addLineWidget: docMethodOp(function(handle, node, options) { + return addLineWidget(this, handle, node, options); + }), + removeLineWidget: function(widget) { widget.clear(); }, + + markText: function(from, to, options) { + return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || "range"); + }, + setBookmark: function(pos, options) { + var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options), + insertLeft: options && options.insertLeft, + clearWhenEmpty: false, shared: options && options.shared, + handleMouseEvents: options && options.handleMouseEvents}; + pos = clipPos(this, pos); + return markText(this, pos, pos, realOpts, "bookmark"); + }, + findMarksAt: function(pos) { + pos = clipPos(this, pos); + var markers = [], spans = getLine(this, pos.line).markedSpans; + if (spans) for (var i = 0; i < spans.length; ++i) { + var span = spans[i]; + if ((span.from == null || span.from <= pos.ch) && + (span.to == null || span.to >= pos.ch)) + markers.push(span.marker.parent || span.marker); + } + return markers; + }, + findMarks: function(from, to, filter) { + from = clipPos(this, from); to = clipPos(this, to); + var found = [], lineNo = from.line; + this.iter(from.line, to.line + 1, function(line) { + var spans = line.markedSpans; + if (spans) for (var i = 0; i < spans.length; i++) { + var span = spans[i]; + if (!(lineNo == from.line && from.ch > span.to || + span.from == null && lineNo != from.line|| + lineNo == to.line && span.from > to.ch) && + (!filter || filter(span.marker))) + found.push(span.marker.parent || span.marker); + } + ++lineNo; + }); + return found; + }, + getAllMarks: function() { + var markers = []; + this.iter(function(line) { + var sps = line.markedSpans; + if (sps) for (var i = 0; i < sps.length; ++i) + if (sps[i].from != null) markers.push(sps[i].marker); + }); + return markers; + }, + + posFromIndex: function(off) { + var ch, lineNo = this.first; + this.iter(function(line) { + var sz = line.text.length + 1; + if (sz > off) { ch = off; return true; } + off -= sz; + ++lineNo; + }); + return clipPos(this, Pos(lineNo, ch)); + }, + indexFromPos: function (coords) { + coords = clipPos(this, coords); + var index = coords.ch; + if (coords.line < this.first || coords.ch < 0) return 0; + this.iter(this.first, coords.line, function (line) { + index += line.text.length + 1; + }); + return index; + }, + + copy: function(copyHistory) { + var doc = new Doc(getLines(this, this.first, this.first + this.size), + this.modeOption, this.first, this.lineSep); + doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft; + doc.sel = this.sel; + doc.extend = false; + if (copyHistory) { + doc.history.undoDepth = this.history.undoDepth; + doc.setHistory(this.getHistory()); + } + return doc; + }, + + linkedDoc: function(options) { + if (!options) options = {}; + var from = this.first, to = this.first + this.size; + if (options.from != null && options.from > from) from = options.from; + if (options.to != null && options.to < to) to = options.to; + var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep); + if (options.sharedHist) copy.history = this.history; + (this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist}); + copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}]; + copySharedMarkers(copy, findSharedMarkers(this)); + return copy; + }, + unlinkDoc: function(other) { + if (other instanceof CodeMirror) other = other.doc; + if (this.linked) for (var i = 0; i < this.linked.length; ++i) { + var link = this.linked[i]; + if (link.doc != other) continue; + this.linked.splice(i, 1); + other.unlinkDoc(this); + detachSharedMarkers(findSharedMarkers(this)); + break; + } + // If the histories were shared, split them again + if (other.history == this.history) { + var splitIds = [other.id]; + linkedDocs(other, function(doc) {splitIds.push(doc.id);}, true); + other.history = new History(null); + other.history.done = copyHistoryArray(this.history.done, splitIds); + other.history.undone = copyHistoryArray(this.history.undone, splitIds); + } + }, + iterLinkedDocs: function(f) {linkedDocs(this, f);}, + + getMode: function() {return this.mode;}, + getEditor: function() {return this.cm;}, + + splitLines: function(str) { + if (this.lineSep) return str.split(this.lineSep); + return splitLinesAuto(str); + }, + lineSeparator: function() { return this.lineSep || "\n"; } + }); + + // Public alias. + Doc.prototype.eachLine = Doc.prototype.iter; + + // Set up methods on CodeMirror's prototype to redirect to the editor's document. + var dontDelegate = "iter insert remove copy getEditor constructor".split(" "); + for (var prop in Doc.prototype) if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0) + CodeMirror.prototype[prop] = (function(method) { + return function() {return method.apply(this.doc, arguments);}; + })(Doc.prototype[prop]); + + eventMixin(Doc); + + // Call f for all linked documents. + function linkedDocs(doc, f, sharedHistOnly) { + function propagate(doc, skip, sharedHist) { + if (doc.linked) for (var i = 0; i < doc.linked.length; ++i) { + var rel = doc.linked[i]; + if (rel.doc == skip) continue; + var shared = sharedHist && rel.sharedHist; + if (sharedHistOnly && !shared) continue; + f(rel.doc, shared); + propagate(rel.doc, doc, shared); + } + } + propagate(doc, null, true); + } + + // Attach a document to an editor. + function attachDoc(cm, doc) { + if (doc.cm) throw new Error("This document is already in use."); + cm.doc = doc; + doc.cm = cm; + estimateLineHeights(cm); + loadMode(cm); + if (!cm.options.lineWrapping) findMaxLine(cm); + cm.options.mode = doc.modeOption; + regChange(cm); + } + + // LINE UTILITIES + + // Find the line object corresponding to the given line number. + function getLine(doc, n) { + n -= doc.first; + if (n < 0 || n >= doc.size) throw new Error("There is no line " + (n + doc.first) + " in the document."); + for (var chunk = doc; !chunk.lines;) { + for (var i = 0;; ++i) { + var child = chunk.children[i], sz = child.chunkSize(); + if (n < sz) { chunk = child; break; } + n -= sz; + } + } + return chunk.lines[n]; + } + + // Get the part of a document between two positions, as an array of + // strings. + function getBetween(doc, start, end) { + var out = [], n = start.line; + doc.iter(start.line, end.line + 1, function(line) { + var text = line.text; + if (n == end.line) text = text.slice(0, end.ch); + if (n == start.line) text = text.slice(start.ch); + out.push(text); + ++n; + }); + return out; + } + // Get the lines between from and to, as array of strings. + function getLines(doc, from, to) { + var out = []; + doc.iter(from, to, function(line) { out.push(line.text); }); + return out; + } + + // Update the height of a line, propagating the height change + // upwards to parent nodes. + function updateLineHeight(line, height) { + var diff = height - line.height; + if (diff) for (var n = line; n; n = n.parent) n.height += diff; + } + + // Given a line object, find its line number by walking up through + // its parent links. + function lineNo(line) { + if (line.parent == null) return null; + var cur = line.parent, no = indexOf(cur.lines, line); + for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) { + for (var i = 0;; ++i) { + if (chunk.children[i] == cur) break; + no += chunk.children[i].chunkSize(); + } + } + return no + cur.first; + } + + // Find the line at the given vertical position, using the height + // information in the document tree. + function lineAtHeight(chunk, h) { + var n = chunk.first; + outer: do { + for (var i = 0; i < chunk.children.length; ++i) { + var child = chunk.children[i], ch = child.height; + if (h < ch) { chunk = child; continue outer; } + h -= ch; + n += child.chunkSize(); + } + return n; + } while (!chunk.lines); + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i], lh = line.height; + if (h < lh) break; + h -= lh; + } + return n + i; + } + + + // Find the height above the given line. + function heightAtLine(lineObj) { + lineObj = visualLine(lineObj); + + var h = 0, chunk = lineObj.parent; + for (var i = 0; i < chunk.lines.length; ++i) { + var line = chunk.lines[i]; + if (line == lineObj) break; + else h += line.height; + } + for (var p = chunk.parent; p; chunk = p, p = chunk.parent) { + for (var i = 0; i < p.children.length; ++i) { + var cur = p.children[i]; + if (cur == chunk) break; + else h += cur.height; + } + } + return h; + } + + // Get the bidi ordering for the given line (and cache it). Returns + // false for lines that are fully left-to-right, and an array of + // BidiSpan objects otherwise. + function getOrder(line) { + var order = line.order; + if (order == null) order = line.order = bidiOrdering(line.text); + return order; + } + + // HISTORY + + function History(startGen) { + // Arrays of change events and selections. Doing something adds an + // event to done and clears undo. Undoing moves events from done + // to undone, redoing moves them in the other direction. + this.done = []; this.undone = []; + this.undoDepth = Infinity; + // Used to track when changes can be merged into a single undo + // event + this.lastModTime = this.lastSelTime = 0; + this.lastOp = this.lastSelOp = null; + this.lastOrigin = this.lastSelOrigin = null; + // Used by the isClean() method + this.generation = this.maxGeneration = startGen || 1; + } + + // Create a history change event from an updateDoc-style change + // object. + function historyChangeFromChange(doc, change) { + var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)}; + attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); + linkedDocs(doc, function(doc) {attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);}, true); + return histChange; + } + + // Pop all selection events off the end of a history array. Stop at + // a change event. + function clearSelectionEvents(array) { + while (array.length) { + var last = lst(array); + if (last.ranges) array.pop(); + else break; + } + } + + // Find the top change event in the history. Pop off selection + // events that are in the way. + function lastChangeEvent(hist, force) { + if (force) { + clearSelectionEvents(hist.done); + return lst(hist.done); + } else if (hist.done.length && !lst(hist.done).ranges) { + return lst(hist.done); + } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) { + hist.done.pop(); + return lst(hist.done); + } + } + + // Register a change in the history. Merges changes that are within + // a single operation, ore are close together with an origin that + // allows merging (starting with "+") into a single event. + function addChangeToHistory(doc, change, selAfter, opId) { + var hist = doc.history; + hist.undone.length = 0; + var time = +new Date, cur; + + if ((hist.lastOp == opId || + hist.lastOrigin == change.origin && change.origin && + ((change.origin.charAt(0) == "+" && doc.cm && hist.lastModTime > time - doc.cm.options.historyEventDelay) || + change.origin.charAt(0) == "*")) && + (cur = lastChangeEvent(hist, hist.lastOp == opId))) { + // Merge this change into the last event + var last = lst(cur.changes); + if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) { + // Optimized case for simple insertion -- don't want to add + // new changesets for every character typed + last.to = changeEnd(change); + } else { + // Add new sub-event + cur.changes.push(historyChangeFromChange(doc, change)); + } + } else { + // Can not be merged, start a new event. + var before = lst(hist.done); + if (!before || !before.ranges) + pushSelectionToHistory(doc.sel, hist.done); + cur = {changes: [historyChangeFromChange(doc, change)], + generation: hist.generation}; + hist.done.push(cur); + while (hist.done.length > hist.undoDepth) { + hist.done.shift(); + if (!hist.done[0].ranges) hist.done.shift(); + } + } + hist.done.push(selAfter); + hist.generation = ++hist.maxGeneration; + hist.lastModTime = hist.lastSelTime = time; + hist.lastOp = hist.lastSelOp = opId; + hist.lastOrigin = hist.lastSelOrigin = change.origin; + + if (!last) signal(doc, "historyAdded"); + } + + function selectionEventCanBeMerged(doc, origin, prev, sel) { + var ch = origin.charAt(0); + return ch == "*" || + ch == "+" && + prev.ranges.length == sel.ranges.length && + prev.somethingSelected() == sel.somethingSelected() && + new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500); + } + + // Called whenever the selection changes, sets the new selection as + // the pending selection in the history, and pushes the old pending + // selection into the 'done' array when it was significantly + // different (in number of selected ranges, emptiness, or time). + function addSelectionToHistory(doc, sel, opId, options) { + var hist = doc.history, origin = options && options.origin; + + // A new event is started when the previous origin does not match + // the current, or the origins don't allow matching. Origins + // starting with * are always merged, those starting with + are + // merged when similar and close together in time. + if (opId == hist.lastSelOp || + (origin && hist.lastSelOrigin == origin && + (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin || + selectionEventCanBeMerged(doc, origin, lst(hist.done), sel)))) + hist.done[hist.done.length - 1] = sel; + else + pushSelectionToHistory(sel, hist.done); + + hist.lastSelTime = +new Date; + hist.lastSelOrigin = origin; + hist.lastSelOp = opId; + if (options && options.clearRedo !== false) + clearSelectionEvents(hist.undone); + } + + function pushSelectionToHistory(sel, dest) { + var top = lst(dest); + if (!(top && top.ranges && top.equals(sel))) + dest.push(sel); + } + + // Used to store marked span information in the history. + function attachLocalSpans(doc, change, from, to) { + var existing = change["spans_" + doc.id], n = 0; + doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function(line) { + if (line.markedSpans) + (existing || (existing = change["spans_" + doc.id] = {}))[n] = line.markedSpans; + ++n; + }); + } + + // When un/re-doing restores text containing marked spans, those + // that have been explicitly cleared should not be restored. + function removeClearedSpans(spans) { + if (!spans) return null; + for (var i = 0, out; i < spans.length; ++i) { + if (spans[i].marker.explicitlyCleared) { if (!out) out = spans.slice(0, i); } + else if (out) out.push(spans[i]); + } + return !out ? spans : out.length ? out : null; + } + + // Retrieve and filter the old marked spans stored in a change event. + function getOldSpans(doc, change) { + var found = change["spans_" + doc.id]; + if (!found) return null; + for (var i = 0, nw = []; i < change.text.length; ++i) + nw.push(removeClearedSpans(found[i])); + return nw; + } + + // Used both to provide a JSON-safe object in .getHistory, and, when + // detaching a document, to split the history in two + function copyHistoryArray(events, newGroup, instantiateSel) { + for (var i = 0, copy = []; i < events.length; ++i) { + var event = events[i]; + if (event.ranges) { + copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event); + continue; + } + var changes = event.changes, newChanges = []; + copy.push({changes: newChanges}); + for (var j = 0; j < changes.length; ++j) { + var change = changes[j], m; + newChanges.push({from: change.from, to: change.to, text: change.text}); + if (newGroup) for (var prop in change) if (m = prop.match(/^spans_(\d+)$/)) { + if (indexOf(newGroup, Number(m[1])) > -1) { + lst(newChanges)[prop] = change[prop]; + delete change[prop]; + } + } + } + } + return copy; + } + + // Rebasing/resetting history to deal with externally-sourced changes + + function rebaseHistSelSingle(pos, from, to, diff) { + if (to < pos.line) { + pos.line += diff; + } else if (from < pos.line) { + pos.line = from; + pos.ch = 0; + } + } + + // Tries to rebase an array of history events given a change in the + // document. If the change touches the same lines as the event, the + // event, and everything 'behind' it, is discarded. If the change is + // before the event, the event's positions are updated. Uses a + // copy-on-write scheme for the positions, to avoid having to + // reallocate them all on every rebase, but also avoid problems with + // shared position objects being unsafely updated. + function rebaseHistArray(array, from, to, diff) { + for (var i = 0; i < array.length; ++i) { + var sub = array[i], ok = true; + if (sub.ranges) { + if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; } + for (var j = 0; j < sub.ranges.length; j++) { + rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff); + rebaseHistSelSingle(sub.ranges[j].head, from, to, diff); + } + continue; + } + for (var j = 0; j < sub.changes.length; ++j) { + var cur = sub.changes[j]; + if (to < cur.from.line) { + cur.from = Pos(cur.from.line + diff, cur.from.ch); + cur.to = Pos(cur.to.line + diff, cur.to.ch); + } else if (from <= cur.to.line) { + ok = false; + break; + } + } + if (!ok) { + array.splice(0, i + 1); + i = 0; + } + } + } + + function rebaseHist(hist, change) { + var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1; + rebaseHistArray(hist.done, from, to, diff); + rebaseHistArray(hist.undone, from, to, diff); + } + + // EVENT UTILITIES + + // Due to the fact that we still support jurassic IE versions, some + // compatibility wrappers are needed. + + var e_preventDefault = CodeMirror.e_preventDefault = function(e) { + if (e.preventDefault) e.preventDefault(); + else e.returnValue = false; + }; + var e_stopPropagation = CodeMirror.e_stopPropagation = function(e) { + if (e.stopPropagation) e.stopPropagation(); + else e.cancelBubble = true; + }; + function e_defaultPrevented(e) { + return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false; + } + var e_stop = CodeMirror.e_stop = function(e) {e_preventDefault(e); e_stopPropagation(e);}; + + function e_target(e) {return e.target || e.srcElement;} + function e_button(e) { + var b = e.which; + if (b == null) { + if (e.button & 1) b = 1; + else if (e.button & 2) b = 3; + else if (e.button & 4) b = 2; + } + if (mac && e.ctrlKey && b == 1) b = 3; + return b; + } + + // EVENT HANDLING + + // Lightweight event framework. on/off also work on DOM nodes, + // registering native DOM handlers. + + var on = CodeMirror.on = function(emitter, type, f) { + if (emitter.addEventListener) + emitter.addEventListener(type, f, false); + else if (emitter.attachEvent) + emitter.attachEvent("on" + type, f); + else { + var map = emitter._handlers || (emitter._handlers = {}); + var arr = map[type] || (map[type] = []); + arr.push(f); + } + }; + + var noHandlers = [] + function getHandlers(emitter, type, copy) { + var arr = emitter._handlers && emitter._handlers[type] + if (copy) return arr && arr.length > 0 ? arr.slice() : noHandlers + else return arr || noHandlers + } + + var off = CodeMirror.off = function(emitter, type, f) { + if (emitter.removeEventListener) + emitter.removeEventListener(type, f, false); + else if (emitter.detachEvent) + emitter.detachEvent("on" + type, f); + else { + var handlers = getHandlers(emitter, type, false) + for (var i = 0; i < handlers.length; ++i) + if (handlers[i] == f) { handlers.splice(i, 1); break; } + } + }; + + var signal = CodeMirror.signal = function(emitter, type /*, values...*/) { + var handlers = getHandlers(emitter, type, true) + if (!handlers.length) return; + var args = Array.prototype.slice.call(arguments, 2); + for (var i = 0; i < handlers.length; ++i) handlers[i].apply(null, args); + }; + + var orphanDelayedCallbacks = null; + + // Often, we want to signal events at a point where we are in the + // middle of some work, but don't want the handler to start calling + // other methods on the editor, which might be in an inconsistent + // state or simply not expect any other events to happen. + // signalLater looks whether there are any handlers, and schedules + // them to be executed when the last operation ends, or, if no + // operation is active, when a timeout fires. + function signalLater(emitter, type /*, values...*/) { + var arr = getHandlers(emitter, type, false) + if (!arr.length) return; + var args = Array.prototype.slice.call(arguments, 2), list; + if (operationGroup) { + list = operationGroup.delayedCallbacks; + } else if (orphanDelayedCallbacks) { + list = orphanDelayedCallbacks; + } else { + list = orphanDelayedCallbacks = []; + setTimeout(fireOrphanDelayed, 0); + } + function bnd(f) {return function(){f.apply(null, args);};}; + for (var i = 0; i < arr.length; ++i) + list.push(bnd(arr[i])); + } + + function fireOrphanDelayed() { + var delayed = orphanDelayedCallbacks; + orphanDelayedCallbacks = null; + for (var i = 0; i < delayed.length; ++i) delayed[i](); + } + + // The DOM events that CodeMirror handles can be overridden by + // registering a (non-DOM) handler on the editor for the event name, + // and preventDefault-ing the event in that handler. + function signalDOMEvent(cm, e, override) { + if (typeof e == "string") + e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; + signal(cm, override || e.type, cm, e); + return e_defaultPrevented(e) || e.codemirrorIgnore; + } + + function signalCursorActivity(cm) { + var arr = cm._handlers && cm._handlers.cursorActivity; + if (!arr) return; + var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []); + for (var i = 0; i < arr.length; ++i) if (indexOf(set, arr[i]) == -1) + set.push(arr[i]); + } + + function hasHandler(emitter, type) { + return getHandlers(emitter, type).length > 0 + } + + // Add on and off methods to a constructor's prototype, to make + // registering events on such objects more convenient. + function eventMixin(ctor) { + ctor.prototype.on = function(type, f) {on(this, type, f);}; + ctor.prototype.off = function(type, f) {off(this, type, f);}; + } + + // MISC UTILITIES + + // Number of pixels added to scroller and sizer to hide scrollbar + var scrollerGap = 30; + + // Returned or thrown by various protocols to signal 'I'm not + // handling this'. + var Pass = CodeMirror.Pass = {toString: function(){return "CodeMirror.Pass";}}; + + // Reused option objects for setSelection & friends + var sel_dontScroll = {scroll: false}, sel_mouse = {origin: "*mouse"}, sel_move = {origin: "+move"}; + + function Delayed() {this.id = null;} + Delayed.prototype.set = function(ms, f) { + clearTimeout(this.id); + this.id = setTimeout(f, ms); + }; + + // Counts the column offset in a string, taking tabs into account. + // Used mostly to find indentation. + var countColumn = CodeMirror.countColumn = function(string, end, tabSize, startIndex, startValue) { + if (end == null) { + end = string.search(/[^\s\u00a0]/); + if (end == -1) end = string.length; + } + for (var i = startIndex || 0, n = startValue || 0;;) { + var nextTab = string.indexOf("\t", i); + if (nextTab < 0 || nextTab >= end) + return n + (end - i); + n += nextTab - i; + n += tabSize - (n % tabSize); + i = nextTab + 1; + } + }; + + // The inverse of countColumn -- find the offset that corresponds to + // a particular column. + var findColumn = CodeMirror.findColumn = function(string, goal, tabSize) { + for (var pos = 0, col = 0;;) { + var nextTab = string.indexOf("\t", pos); + if (nextTab == -1) nextTab = string.length; + var skipped = nextTab - pos; + if (nextTab == string.length || col + skipped >= goal) + return pos + Math.min(skipped, goal - col); + col += nextTab - pos; + col += tabSize - (col % tabSize); + pos = nextTab + 1; + if (col >= goal) return pos; + } + } + + var spaceStrs = [""]; + function spaceStr(n) { + while (spaceStrs.length <= n) + spaceStrs.push(lst(spaceStrs) + " "); + return spaceStrs[n]; + } + + function lst(arr) { return arr[arr.length-1]; } + + var selectInput = function(node) { node.select(); }; + if (ios) // Mobile Safari apparently has a bug where select() is broken. + selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; + else if (ie) // Suppress mysterious IE10 errors + selectInput = function(node) { try { node.select(); } catch(_e) {} }; + + function indexOf(array, elt) { + for (var i = 0; i < array.length; ++i) + if (array[i] == elt) return i; + return -1; + } + function map(array, f) { + var out = []; + for (var i = 0; i < array.length; i++) out[i] = f(array[i], i); + return out; + } + + function nothing() {} + + function createObj(base, props) { + var inst; + if (Object.create) { + inst = Object.create(base); + } else { + nothing.prototype = base; + inst = new nothing(); + } + if (props) copyObj(props, inst); + return inst; + }; + + function copyObj(obj, target, overwrite) { + if (!target) target = {}; + for (var prop in obj) + if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop))) + target[prop] = obj[prop]; + return target; + } + + function bind(f) { + var args = Array.prototype.slice.call(arguments, 1); + return function(){return f.apply(null, args);}; + } + + var nonASCIISingleCaseWordChar = /[\u00df\u0587\u0590-\u05f4\u0600-\u06ff\u3040-\u309f\u30a0-\u30ff\u3400-\u4db5\u4e00-\u9fcc\uac00-\ud7af]/; + var isWordCharBasic = CodeMirror.isWordChar = function(ch) { + return /\w/.test(ch) || ch > "\x80" && + (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch)); + }; + function isWordChar(ch, helper) { + if (!helper) return isWordCharBasic(ch); + if (helper.source.indexOf("\\w") > -1 && isWordCharBasic(ch)) return true; + return helper.test(ch); + } + + function isEmpty(obj) { + for (var n in obj) if (obj.hasOwnProperty(n) && obj[n]) return false; + return true; + } + + // Extending unicode characters. A series of a non-extending char + + // any number of extending chars is treated as a single unit as far + // as editing and measuring is concerned. This is not fully correct, + // since some scripts/fonts/browsers also treat other configurations + // of code points as a group. + var extendingChars = /[\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]/; + function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch); } + + // DOM UTILITIES + + function elt(tag, content, className, style) { + var e = document.createElement(tag); + if (className) e.className = className; + if (style) e.style.cssText = style; + if (typeof content == "string") e.appendChild(document.createTextNode(content)); + else if (content) for (var i = 0; i < content.length; ++i) e.appendChild(content[i]); + return e; + } + + var range; + if (document.createRange) range = function(node, start, end, endNode) { + var r = document.createRange(); + r.setEnd(endNode || node, end); + r.setStart(node, start); + return r; + }; + else range = function(node, start, end) { + var r = document.body.createTextRange(); + try { r.moveToElementText(node.parentNode); } + catch(e) { return r; } + r.collapse(true); + r.moveEnd("character", end); + r.moveStart("character", start); + return r; + }; + + function removeChildren(e) { + for (var count = e.childNodes.length; count > 0; --count) + e.removeChild(e.firstChild); + return e; + } + + function removeChildrenAndAdd(parent, e) { + return removeChildren(parent).appendChild(e); + } + + var contains = CodeMirror.contains = function(parent, child) { + if (child.nodeType == 3) // Android browser always returns false when child is a textnode + child = child.parentNode; + if (parent.contains) + return parent.contains(child); + do { + if (child.nodeType == 11) child = child.host; + if (child == parent) return true; + } while (child = child.parentNode); + }; + + function activeElt() { + var activeElement = document.activeElement; + while (activeElement && activeElement.root && activeElement.root.activeElement) + activeElement = activeElement.root.activeElement; + return activeElement; + } + // Older versions of IE throws unspecified error when touching + // document.activeElement in some cases (during loading, in iframe) + if (ie && ie_version < 11) activeElt = function() { + try { return document.activeElement; } + catch(e) { return document.body; } + }; + + function classTest(cls) { return new RegExp("(^|\\s)" + cls + "(?:$|\\s)\\s*"); } + var rmClass = CodeMirror.rmClass = function(node, cls) { + var current = node.className; + var match = classTest(cls).exec(current); + if (match) { + var after = current.slice(match.index + match[0].length); + node.className = current.slice(0, match.index) + (after ? match[1] + after : ""); + } + }; + var addClass = CodeMirror.addClass = function(node, cls) { + var current = node.className; + if (!classTest(cls).test(current)) node.className += (current ? " " : "") + cls; + }; + function joinClasses(a, b) { + var as = a.split(" "); + for (var i = 0; i < as.length; i++) + if (as[i] && !classTest(as[i]).test(b)) b += " " + as[i]; + return b; + } + + // WINDOW-WIDE EVENTS + + // These must be handled carefully, because naively registering a + // handler for each editor will cause the editors to never be + // garbage collected. + + function forEachCodeMirror(f) { + if (!document.body.getElementsByClassName) return; + var byClass = document.body.getElementsByClassName("CodeMirror"); + for (var i = 0; i < byClass.length; i++) { + var cm = byClass[i].CodeMirror; + if (cm) f(cm); + } + } + + var globalsRegistered = false; + function ensureGlobalHandlers() { + if (globalsRegistered) return; + registerGlobalHandlers(); + globalsRegistered = true; + } + function registerGlobalHandlers() { + // When the window resizes, we need to refresh active editors. + var resizeTimer; + on(window, "resize", function() { + if (resizeTimer == null) resizeTimer = setTimeout(function() { + resizeTimer = null; + forEachCodeMirror(onResize); + }, 100); + }); + // When the window loses focus, we want to show the editor as blurred + on(window, "blur", function() { + forEachCodeMirror(onBlur); + }); + } + + // FEATURE DETECTION + + // Detect drag-and-drop + var dragAndDrop = function() { + // There is *some* kind of drag-and-drop support in IE6-8, but I + // couldn't get it to work yet. + if (ie && ie_version < 9) return false; + var div = elt('div'); + return "draggable" in div || "dragDrop" in div; + }(); + + var zwspSupported; + function zeroWidthElement(measure) { + if (zwspSupported == null) { + var test = elt("span", "\u200b"); + removeChildrenAndAdd(measure, elt("span", [test, document.createTextNode("x")])); + if (measure.firstChild.offsetHeight != 0) + zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); + } + var node = zwspSupported ? elt("span", "\u200b") : + elt("span", "\u00a0", null, "display: inline-block; width: 1px; margin-right: -1px"); + node.setAttribute("cm-text", ""); + return node; + } + + // Feature-detect IE's crummy client rect reporting for bidi text + var badBidiRects; + function hasBadBidiRects(measure) { + if (badBidiRects != null) return badBidiRects; + var txt = removeChildrenAndAdd(measure, document.createTextNode("A\u062eA")); + var r0 = range(txt, 0, 1).getBoundingClientRect(); + if (!r0 || r0.left == r0.right) return false; // Safari returns null in some cases (#2780) + var r1 = range(txt, 1, 2).getBoundingClientRect(); + return badBidiRects = (r1.right - r0.right < 3); + } + + // See if "".split is the broken IE version, if so, provide an + // alternative way to split lines. + var splitLinesAuto = CodeMirror.splitLines = "\n\nb".split(/\n/).length != 3 ? function(string) { + var pos = 0, result = [], l = string.length; + while (pos <= l) { + var nl = string.indexOf("\n", pos); + if (nl == -1) nl = string.length; + var line = string.slice(pos, string.charAt(nl - 1) == "\r" ? nl - 1 : nl); + var rt = line.indexOf("\r"); + if (rt != -1) { + result.push(line.slice(0, rt)); + pos += rt + 1; + } else { + result.push(line); + pos = nl + 1; + } + } + return result; + } : function(string){return string.split(/\r\n?|\n/);}; + + var hasSelection = window.getSelection ? function(te) { + try { return te.selectionStart != te.selectionEnd; } + catch(e) { return false; } + } : function(te) { + try {var range = te.ownerDocument.selection.createRange();} + catch(e) {} + if (!range || range.parentElement() != te) return false; + return range.compareEndPoints("StartToEnd", range) != 0; + }; + + var hasCopyEvent = (function() { + var e = elt("div"); + if ("oncopy" in e) return true; + e.setAttribute("oncopy", "return;"); + return typeof e.oncopy == "function"; + })(); + + var badZoomedRects = null; + function hasBadZoomedRects(measure) { + if (badZoomedRects != null) return badZoomedRects; + var node = removeChildrenAndAdd(measure, elt("span", "x")); + var normal = node.getBoundingClientRect(); + var fromRange = range(node, 0, 1).getBoundingClientRect(); + return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1; + } + + // KEY NAMES + + var keyNames = CodeMirror.keyNames = { + 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", + 106: "*", 107: "=", 109: "-", 110: ".", 111: "/", 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" + }; + (function() { + // Number keys + for (var i = 0; i < 10; i++) keyNames[i + 48] = keyNames[i + 96] = String(i); + // Alphabetic keys + for (var i = 65; i <= 90; i++) keyNames[i] = String.fromCharCode(i); + // Function keys + for (var i = 1; i <= 12; i++) keyNames[i + 111] = keyNames[i + 63235] = "F" + i; + })(); + + // BIDI HELPERS + + function iterateBidiSections(order, from, to, f) { + if (!order) return f(from, to, "ltr"); + var found = false; + for (var i = 0; i < order.length; ++i) { + var part = order[i]; + if (part.from < to && part.to > from || from == to && part.to == from) { + f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? "rtl" : "ltr"); + found = true; + } + } + if (!found) f(from, to, "ltr"); + } + + function bidiLeft(part) { return part.level % 2 ? part.to : part.from; } + function bidiRight(part) { return part.level % 2 ? part.from : part.to; } + + function lineLeft(line) { var order = getOrder(line); return order ? bidiLeft(order[0]) : 0; } + function lineRight(line) { + var order = getOrder(line); + if (!order) return line.text.length; + return bidiRight(lst(order)); + } + + function lineStart(cm, lineN) { + var line = getLine(cm.doc, lineN); + var visual = visualLine(line); + if (visual != line) lineN = lineNo(visual); + var order = getOrder(visual); + var ch = !order ? 0 : order[0].level % 2 ? lineRight(visual) : lineLeft(visual); + return Pos(lineN, ch); + } + function lineEnd(cm, lineN) { + var merged, line = getLine(cm.doc, lineN); + while (merged = collapsedSpanAtEnd(line)) { + line = merged.find(1, true).line; + lineN = null; + } + var order = getOrder(line); + var ch = !order ? line.text.length : order[0].level % 2 ? lineLeft(line) : lineRight(line); + return Pos(lineN == null ? lineNo(line) : lineN, ch); + } + function lineStartSmart(cm, pos) { + var start = lineStart(cm, pos.line); + var line = getLine(cm.doc, start.line); + var order = getOrder(line); + if (!order || order[0].level == 0) { + var firstNonWS = Math.max(0, line.text.search(/\S/)); + var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch; + return Pos(start.line, inWS ? 0 : firstNonWS); + } + return start; + } + + function compareBidiLevel(order, a, b) { + var linedir = order[0].level; + if (a == linedir) return true; + if (b == linedir) return false; + return a < b; + } + var bidiOther; + function getBidiPartAt(order, pos) { + bidiOther = null; + for (var i = 0, found; i < order.length; ++i) { + var cur = order[i]; + if (cur.from < pos && cur.to > pos) return i; + if ((cur.from == pos || cur.to == pos)) { + if (found == null) { + found = i; + } else if (compareBidiLevel(order, cur.level, order[found].level)) { + if (cur.from != cur.to) bidiOther = found; + return i; + } else { + if (cur.from != cur.to) bidiOther = i; + return found; + } + } + } + return found; + } + + function moveInLine(line, pos, dir, byUnit) { + if (!byUnit) return pos + dir; + do pos += dir; + while (pos > 0 && isExtendingChar(line.text.charAt(pos))); + return pos; + } + + // This is needed in order to move 'visually' through bi-directional + // text -- i.e., pressing left should make the cursor go left, even + // when in RTL text. The tricky part is the 'jumps', where RTL and + // LTR text touch each other. This often requires the cursor offset + // to move more than one unit, in order to visually move one unit. + function moveVisually(line, start, dir, byUnit) { + var bidi = getOrder(line); + if (!bidi) return moveLogically(line, start, dir, byUnit); + var pos = getBidiPartAt(bidi, start), part = bidi[pos]; + var target = moveInLine(line, start, part.level % 2 ? -dir : dir, byUnit); + + for (;;) { + if (target > part.from && target < part.to) return target; + if (target == part.from || target == part.to) { + if (getBidiPartAt(bidi, target) == pos) return target; + part = bidi[pos += dir]; + return (dir > 0) == part.level % 2 ? part.to : part.from; + } else { + part = bidi[pos += dir]; + if (!part) return null; + if ((dir > 0) == part.level % 2) + target = moveInLine(line, part.to, -1, byUnit); + else + target = moveInLine(line, part.from, 1, byUnit); + } + } + } + + function moveLogically(line, start, dir, byUnit) { + var target = start + dir; + if (byUnit) while (target > 0 && isExtendingChar(line.text.charAt(target))) target += dir; + return target < 0 || target > line.text.length ? null : target; + } + + // Bidirectional ordering algorithm + // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm + // that this (partially) implements. + + // One-char codes used for character types: + // L (L): Left-to-Right + // R (R): Right-to-Left + // r (AL): Right-to-Left Arabic + // 1 (EN): European Number + // + (ES): European Number Separator + // % (ET): European Number Terminator + // n (AN): Arabic Number + // , (CS): Common Number Separator + // m (NSM): Non-Spacing Mark + // b (BN): Boundary Neutral + // s (B): Paragraph Separator + // t (S): Segment Separator + // w (WS): Whitespace + // N (ON): Other Neutrals + + // Returns null if characters are ordered as they appear + // (left-to-right), or an array of sections ({from, to, level} + // objects) in the order in which they occur visually. + var bidiOrdering = (function() { + // Character types for codepoints 0 to 0xff + var lowTypes = "bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN"; + // Character types for codepoints 0x600 to 0x6ff + var arabicTypes = "rrrrrrrrrrrr,rNNmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmrrrrrrrnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmNmmmm"; + function charType(code) { + if (code <= 0xf7) return lowTypes.charAt(code); + else if (0x590 <= code && code <= 0x5f4) return "R"; + else if (0x600 <= code && code <= 0x6ed) return arabicTypes.charAt(code - 0x600); + else if (0x6ee <= code && code <= 0x8ac) return "r"; + else if (0x2000 <= code && code <= 0x200b) return "w"; + else if (code == 0x200c) return "b"; + else return "L"; + } + + var bidiRE = /[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/; + var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/; + // Browsers seem to always treat the boundaries of block elements as being L. + var outerType = "L"; + + function BidiSpan(level, from, to) { + this.level = level; + this.from = from; this.to = to; + } + + return function(str) { + if (!bidiRE.test(str)) return false; + var len = str.length, types = []; + for (var i = 0, type; i < len; ++i) + types.push(type = charType(str.charCodeAt(i))); + + // W1. Examine each non-spacing mark (NSM) in the level run, and + // change the type of the NSM to the type of the previous + // character. If the NSM is at the start of the level run, it will + // get the type of sor. + for (var i = 0, prev = outerType; i < len; ++i) { + var type = types[i]; + if (type == "m") types[i] = prev; + else prev = type; + } + + // W2. Search backwards from each instance of a European number + // until the first strong type (R, L, AL, or sor) is found. If an + // AL is found, change the type of the European number to Arabic + // number. + // W3. Change all ALs to R. + for (var i = 0, cur = outerType; i < len; ++i) { + var type = types[i]; + if (type == "1" && cur == "r") types[i] = "n"; + else if (isStrong.test(type)) { cur = type; if (type == "r") types[i] = "R"; } + } + + // W4. A single European separator between two European numbers + // changes to a European number. A single common separator between + // two numbers of the same type changes to that type. + for (var i = 1, prev = types[0]; i < len - 1; ++i) { + var type = types[i]; + if (type == "+" && prev == "1" && types[i+1] == "1") types[i] = "1"; + else if (type == "," && prev == types[i+1] && + (prev == "1" || prev == "n")) types[i] = prev; + prev = type; + } + + // W5. A sequence of European terminators adjacent to European + // numbers changes to all European numbers. + // W6. Otherwise, separators and terminators change to Other + // Neutral. + for (var i = 0; i < len; ++i) { + var type = types[i]; + if (type == ",") types[i] = "N"; + else if (type == "%") { + for (var end = i + 1; end < len && types[end] == "%"; ++end) {} + var replace = (i && types[i-1] == "!") || (end < len && types[end] == "1") ? "1" : "N"; + for (var j = i; j < end; ++j) types[j] = replace; + i = end - 1; + } + } + + // W7. Search backwards from each instance of a European number + // until the first strong type (R, L, or sor) is found. If an L is + // found, then change the type of the European number to L. + for (var i = 0, cur = outerType; i < len; ++i) { + var type = types[i]; + if (cur == "L" && type == "1") types[i] = "L"; + else if (isStrong.test(type)) cur = type; + } + + // N1. A sequence of neutrals takes the direction of the + // surrounding strong text if the text on both sides has the same + // direction. European and Arabic numbers act as if they were R in + // terms of their influence on neutrals. Start-of-level-run (sor) + // and end-of-level-run (eor) are used at level run boundaries. + // N2. Any remaining neutrals take the embedding direction. + for (var i = 0; i < len; ++i) { + if (isNeutral.test(types[i])) { + for (var end = i + 1; end < len && isNeutral.test(types[end]); ++end) {} + var before = (i ? types[i-1] : outerType) == "L"; + var after = (end < len ? types[end] : outerType) == "L"; + var replace = before || after ? "L" : "R"; + for (var j = i; j < end; ++j) types[j] = replace; + i = end - 1; + } + } + + // Here we depart from the documented algorithm, in order to avoid + // building up an actual levels array. Since there are only three + // levels (0, 1, 2) in an implementation that doesn't take + // explicit embedding into account, we can build up the order on + // the fly, without following the level-based algorithm. + var order = [], m; + for (var i = 0; i < len;) { + if (countsAsLeft.test(types[i])) { + var start = i; + for (++i; i < len && countsAsLeft.test(types[i]); ++i) {} + order.push(new BidiSpan(0, start, i)); + } else { + var pos = i, at = order.length; + for (++i; i < len && types[i] != "L"; ++i) {} + for (var j = pos; j < i;) { + if (countsAsNum.test(types[j])) { + if (pos < j) order.splice(at, 0, new BidiSpan(1, pos, j)); + var nstart = j; + for (++j; j < i && countsAsNum.test(types[j]); ++j) {} + order.splice(at, 0, new BidiSpan(2, nstart, j)); + pos = j; + } else ++j; + } + if (pos < i) order.splice(at, 0, new BidiSpan(1, pos, i)); + } + } + if (order[0].level == 1 && (m = str.match(/^\s+/))) { + order[0].from = m[0].length; + order.unshift(new BidiSpan(0, 0, m[0].length)); + } + if (lst(order).level == 1 && (m = str.match(/\s+$/))) { + lst(order).to -= m[0].length; + order.push(new BidiSpan(0, len - m[0].length, len)); + } + if (order[0].level == 2) + order.unshift(new BidiSpan(1, order[0].to, order[0].to)); + if (order[0].level != lst(order).level) + order.push(new BidiSpan(order[0].level, len, len)); + + return order; + }; + })(); + + // THE END + + CodeMirror.version = "5.12.0"; + + return CodeMirror; +}); diff --git a/assets/plugins/codemirror/cm/lib/codemirror.css b/assets/plugins/codemirror/cm/lib/codemirror.css old mode 100755 new mode 100644 index 49c1415537..9ce72ff007 --- a/assets/plugins/codemirror/cm/lib/codemirror.css +++ b/assets/plugins/codemirror/cm/lib/codemirror.css @@ -2,8 +2,9 @@ .CodeMirror { /* Set height, width, borders, and global font properties here */ - font-family: monospace; + font-family: monospace, Consolas, 'Courier New', 'Courier'; height: 300px; + color: #000; } .CodeMirror-scroll { /* Set scrolling behaviour here */ @@ -36,65 +37,110 @@ 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 { +.CodeMirror-cursor { border-left: 1px solid black; - z-index: 3; + border-right: none; + width: 0; } /* Shown when moving in bi-directional text */ .CodeMirror div.CodeMirror-secondarycursor { border-left: 1px solid silver; } -.CodeMirror.cm-keymap-fat-cursor div.CodeMirror-cursor { +.cm-fat-cursor .CodeMirror-cursor { width: auto; border: 0; background: #7e7; +} +.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; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + /* Can style cursor different in overwrite (non-insert) mode */ -.CodeMirror div.CodeMirror-cursor.CodeMirror-overwrite {} +.CodeMirror-overwrite .CodeMirror-cursor {} -.cm-tab { display: inline-block; } +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-ruler { + border-left: 1px solid #ccc; + position: absolute; +} /* DEFAULT THEME */ +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.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-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 {color: black;} +.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-property {color: black;} -.cm-s-default .cm-operator {color: black;} .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-error {color: #f00;} .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-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 */ @@ -102,28 +148,28 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} the editor. You probably shouldn't touch them. */ .CodeMirror { - line-height: 1; position: relative; overflow: hidden; background: white; - color: black; } .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; padding-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 + before actual scrolling happens, thus preventing shaking and flickering artifacts. */ .CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { position: absolute; @@ -149,27 +195,43 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} .CodeMirror-gutters { position: absolute; left: 0; top: 0; - padding-bottom: 30px; z-index: 3; } .CodeMirror-gutter { white-space: normal; height: 100%; - padding-bottom: 30px; - margin-bottom: -32px; display: inline-block; + vertical-align: top; + margin-bottom: -30px; /* Hack to make IE7 behave */ *zoom:1; *display:inline; } +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} .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 */ @@ -186,12 +248,14 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} 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; @@ -204,34 +268,51 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} overflow: auto; } -.CodeMirror-widget { - display: inline-block; +.CodeMirror-widget {} + +.CodeMirror-code { + outline: none; } -.CodeMirror-wrap .CodeMirror-scroll { - overflow-x: hidden; +/* 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: 0px; + width: 100%; + height: 0; overflow: hidden; visibility: hidden; } + +.CodeMirror-cursor { position: absolute; } .CodeMirror-measure pre { position: static; } -.CodeMirror div.CodeMirror-cursor { - position: absolute; +div.CodeMirror-cursors { visibility: hidden; - border-right: none; - width: 0; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; } -.CodeMirror-focused div.CodeMirror-cursor { + +.CodeMirror-focused div.CodeMirror-cursors { visibility: visible; } .CodeMirror-selected { background: #d9d9d9; } .CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } .cm-searching { background: #ffa; @@ -241,19 +322,28 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} /* 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-cursor { + .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; } .breakpoints {width: .8em;} .breakpoint { color: #822; } .CodeMirror { clear: both; border: 1px solid #E3E3E3; margin-bottom: 8px; - font-size: 12px; + font-size: 1em; } .CodeMirror { border: 1px solid #eee; @@ -280,7 +370,25 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} border: none; padding: 0; margin: 0; - font-family: monospace; + font-family: Consolas, 'Courier New', 'Courier', monospace; +} +/* Issue #619 */ +.CodeMirror-dialog { + background-color:#fff; +} +.CodeMirror-dialog-top { + position:absolute; + top:0; + left:0; + right:0; + z-index:99999; +} +.CodeMirror-dialog-bottom { + position:absolute; + bottom:0; + left:0; + right:0; + z-index:99999; } /* * PHP STYLES @@ -290,37 +398,49 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} } .CodeMirror-activeline-background {background: #e8f2ff !important;} .CodeMirror-focused .cm-matchhighlight { - background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==); - background-position: bottom; - background-repeat: repeat-x; + background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAYAAABytg0kAAAAFklEQVQI12NgYGBgkKzc8x9CMDAwAAAmhwSbidEoSQAAAABJRU5ErkJggg==); + background-position: bottom; + background-repeat: repeat-x; } .CodeMirror-foldmarker { - color: blue; - text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; - font-family: arial; - line-height: .3; - cursor: pointer; + color: blue; + text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; + font-family: arial; + line-height: .3; + cursor: pointer; } .CodeMirror-fullscreen { - display: block; - position: fixed; - top: 0; left: 0; - width: 100%; - z-index: 999; + display: block; + position: fixed; + top: 0; left: 0; + width: 100%; + z-index: 999; } .action-opacity{ - filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); - -moz-opacity: 0.3; - -khtml-opacity: 0.3; - opacity: 0.3; + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=30); + -moz-opacity: 0.3; + -khtml-opacity: 0.3; + opacity: 0.3; } .action-opacity:hover{ - filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100); - -moz-opacity: 1; - -khtml-opacity: 1; - opacity: 1; + filter:progid:DXImageTransform.Microsoft.Alpha(opacity=100); + -moz-opacity: 1; + -khtml-opacity: 1; + opacity: 1; } .cm-modxChunk, .cm-modxSnippet, .cm-modxTv, .cm-modxPlaceholder,.cm-modxSnippetNoCache, .cm-modxVariable, .cm-modxUrl, .cm-modxConfig { color: #000; - text-shadow:1px 1px 10px rgba(106, 177, 0, 0.68); -} \ No newline at end of file + background-color: rgba(0, 0, 0, 0.05); + font-weight:bold; +} +.cm-modxAttribute, .cm-modxAttributeValue { + color: #00c; + background-color: rgba(0, 0, 0, 0.05); +} +.cm-modxAttributeValue { + font-weight:bold; +} +.cm-modxBinding { + color: #bc00cc; + font-weight:900; +} diff --git a/assets/plugins/codemirror/cm/mode/clike-compressed.js b/assets/plugins/codemirror/cm/mode/clike-compressed.js new file mode 100644 index 0000000000..c5af357cdd --- /dev/null +++ b/assets/plugins/codemirror/cm/mode/clike-compressed.js @@ -0,0 +1,9 @@ +/* CodeMirror - Minified & Bundled + Generated on 14.3.2016 with http://codemirror.net/doc/compress.html + Version: HEAD + + Modes: + - clike.js + */ + +!function(a){"object"==typeof exports&&"object"==typeof module?a(require("../../lib/codemirror")):"function"==typeof define&&define.amd?define(["../../lib/codemirror"],a):a(CodeMirror)}(function(a){"use strict";function b(a,b,c,d,e){this.indented=a,this.column=b,this.type=c,this.align=d,this.prev=e}function c(a){return"statement"==a||"switchstatement"==a||"namespace"==a}function d(a,d,e){var f=a.indented;return a.context&&c(a.context.type)&&!c(e)&&(f=a.context.indented),a.context=new b(f,d,e,null,a.context)}function e(a){var b=a.context.type;return(")"==b||"]"==b||"}"==b)&&(a.indented=a.context.indented),a.context=a.context.prev}function f(a,b){return"variable"==b.prevToken||"variable-3"==b.prevToken?!0:/\S(?:[^- ]>|[*\]])\s*$|\*$/.test(a.string.slice(0,a.start))?!0:void 0}function g(a){for(;;){if(!a||"top"==a.type)return!0;if("}"==a.type&&"namespace"!=a.prev.type)return!1;a=a.prev}}function h(a){for(var b={},c=a.split(" "),d=0;d!?|\/]/,C=j.endStatement||/^[;:,]$/;return{startState:function(a){return{tokenize:null,context:new b((a||0)-k,0,"top",!1),indented:0,startOfLine:!0,prevToken:null}},token:function(a,b){var h=b.context;if(a.sol()&&(null==h.align&&(h.align=!1),b.indented=a.indentation(),b.startOfLine=!0),a.eatSpace())return null;D=E=null;var i=(b.tokenize||F)(a,b);if("comment"==i||"meta"==i)return i;if(null==h.align&&(h.align=!0),C.test(D))for(;c(b.context.type);)e(b);else if("{"==D)d(b,a.column(),"}");else if("["==D)d(b,a.column(),"]");else if("("==D)d(b,a.column(),")");else if("}"==D){for(;c(h.type);)h=e(b);for("}"==h.type&&(h=e(b));c(h.type);)h=e(b)}else if(D==h.type)e(b);else if(v&&(("}"==h.type||"top"==h.type)&&";"!=D||c(h.type)&&"newstatement"==D)){var k="statement";"newstatement"==D&&w&&"switch"==a.current()?k="switchstatement":"keyword"==i&&"namespace"==a.current()&&(k="namespace"),d(b,a.column(),k)}if("variable"==i&&("def"==b.prevToken||j.typeFirstDefinitions&&f(a,b)&&g(b.context)&&a.match(/^\s*\(/,!1))&&(i="def"),t.token){var l=t.token(a,b,i);void 0!==l&&(i=l)}return"def"==i&&j.styleDefs===!1&&(i="variable"),b.startOfLine=!1,b.prevToken=E?"def":i||D,i},indent:function(b,d){if(b.tokenize!=F&&null!=b.tokenize)return a.Pass;var e=b.context,f=d&&d.charAt(0);if(c(e.type)&&"}"==f&&(e=e.prev),t.indent){var g=t.indent(b,e,d);if("number"==typeof g)return g}var h=f==e.type,i=e.prev&&"switchstatement"==e.prev.type;if(j.allmanIndentation&&/[{(]/.test(f)){for(;"top"!=e.type&&"}"!=e.type;)e=e.prev;return e.indented}return c(e.type)?e.indented+("{"==f?0:l):!e.align||m&&")"==e.type?")"!=e.type||h?e.indented+(h?0:k)+(h||!i||/^(?:case|default)\b/.test(d)?0:k):e.indented+l:e.column+(h?0:1)},electricInput:w?/^\s*(?:case .*?:|default:|\{\}?|\})$/:/^\s*[{}]$/,blockCommentStart:"/*",blockCommentEnd:"*/",lineComment:"//",fold:"brace"}});var j="auto if break case register continue return default do sizeof static else struct switch extern typedef union for goto while enum const volatile",k="int long char short double float unsigned signed void size_t ptrdiff_t";s(["text/x-csrc","text/x-c","text/x-chdr"],{name:"clike",keywords:h(j),types:h(k+" bool _Complex _Bool float_t double_t intptr_t intmax_t int8_t int16_t int32_t int64_t uintptr_t uintmax_t uint8_t uint16_t uint32_t uint64_t"),blockKeywords:h("case do else for if switch while struct"),defKeywords:h("struct"),typeFirstDefinitions:!0,atoms:h("null true false"),hooks:{"#":l,"*":m},modeProps:{fold:["brace","include"]}}),s(["text/x-c++src","text/x-c++hdr"],{name:"clike",keywords:h(j+" asm dynamic_cast namespace reinterpret_cast try explicit new static_cast typeid catch operator template typename class friend private this using const_cast inline public throw virtual delete mutable protected alignas alignof constexpr decltype nullptr noexcept thread_local final static_assert override"),types:h(k+" bool wchar_t"),blockKeywords:h("catch class do else finally for if struct switch try while"),defKeywords:h("class namespace struct enum union"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"#":l,"*":m,u:o,U:o,L:o,R:o,0:n,1:n,2:n,3:n,4:n,5:n,6:n,7:n,8:n,9:n,token:function(a,b,c){return"variable"!=c||"("!=a.peek()||";"!=b.prevToken&&null!=b.prevToken&&"}"!=b.prevToken||!p(a.current())?void 0:"def"}},namespaceSeparator:"::",modeProps:{fold:["brace","include"]}}),s("text/x-java",{name:"clike",keywords:h("abstract assert break case catch class const continue default do else enum extends final finally float for goto if implements import instanceof interface native new package private protected public return static strictfp super switch synchronized this throw throws transient try volatile while"),types:h("byte short int long float double boolean char void Boolean Byte Character Double Float Integer Long Number Object Short String StringBuffer StringBuilder Void"),blockKeywords:h("catch class do else finally for if switch try while"),defKeywords:h("class interface package enum"),typeFirstDefinitions:!0,atoms:h("true false null"),endStatement:/^[;:]$/,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"}},modeProps:{fold:["brace","import"]}}),s("text/x-csharp",{name:"clike",keywords:h("abstract as async await base break case catch checked class const continue default delegate do else enum event explicit extern finally fixed for foreach goto if implicit in interface internal is lock namespace new operator out override params private protected public readonly ref return sealed sizeof stackalloc static struct switch this throw try typeof unchecked unsafe using virtual void volatile while add alias ascending descending dynamic from get global group into join let orderby partial remove select set value var yield"),types:h("Action Boolean Byte Char DateTime DateTimeOffset Decimal Double Func Guid Int16 Int32 Int64 Object SByte Single String Task TimeSpan UInt16 UInt32 UInt64 bool byte char decimal double short int long object sbyte float string ushort uint ulong"),blockKeywords:h("catch class do else finally for foreach if struct switch try while"),defKeywords:h("class interface namespace struct var"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"@":function(a,b){return a.eat('"')?(b.tokenize=q,q(a,b)):(a.eatWhile(/[\w\$_]/),"meta")}}}),s("text/x-scala",{name:"clike",keywords:h("abstract case catch class def do else extends final finally for forSome if implicit import lazy match new null object override package private protected return sealed super this throw trait try type val var while with yield _ : = => <- <: <% >: # @ assert assume require print println printf readLine readBoolean readByte readShort readChar readInt readLong readFloat readDouble :: #:: "),types:h("AnyVal App Application Array BufferedIterator BigDecimal BigInt Char Console Either Enumeration Equiv Error Exception Fractional Function IndexedSeq Int Integral Iterable Iterator List Map Numeric Nil NotNull Option Ordered Ordering PartialFunction PartialOrdering Product Proxy Range Responder Seq Serializable Set Specializable Stream StringBuilder StringContext Symbol Throwable Traversable TraversableOnce Tuple Unit Vector Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),multiLineStrings:!0,blockKeywords:h("catch class do else finally for forSome if match switch try while"),defKeywords:h("class def object package trait type val var"),atoms:h("true false null"),indentStatements:!1,indentSwitch:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return a.match('""')?(b.tokenize=t,b.tokenize(a,b)):!1},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},"=":function(a,c){var d=c.context;return"}"==d.type&&d.align&&a.eat(">")?(c.context=new b(d.indented,d.column,d.type,null,d.prev),"operator"):!1}},modeProps:{closeBrackets:{triples:'"'}}}),s("text/x-kotlin",{name:"clike",keywords:h("package as typealias class interface this super val var fun for is in This throw return break continue object if else while do try when !in !is as? file import where by get set abstract enum open inner override private public internal protected catch finally out final vararg reified dynamic companion constructor init sealed field property receiver param sparam lateinit data inline noinline tailrec external annotation crossinline const operator infix"),types:h("Boolean Byte Character CharSequence Class ClassLoader Cloneable Comparable Compiler Double Exception Float Integer Long Math Number Object Package Pair Process Runtime Runnable SecurityManager Short StackTraceElement StrictMath String StringBuffer System Thread ThreadGroup ThreadLocal Throwable Triple Void"),intendSwitch:!1,indentStatements:!1,multiLineStrings:!0,blockKeywords:h("catch class do else finally for if where try while enum"),defKeywords:h("class val var object package interface fun"),atoms:h("true false null this"),hooks:{'"':function(a,b){return b.tokenize=u(a.match('""')),b.tokenize(a,b)}},modeProps:{closeBrackets:{triples:'"'}}}),s(["x-shader/x-vertex","x-shader/x-fragment"],{name:"clike",keywords:h("sampler1D sampler2D sampler3D samplerCube sampler1DShadow sampler2DShadow const attribute uniform varying break continue discard return for while do if else struct in out inout"),types:h("float int bool void vec2 vec3 vec4 ivec2 ivec3 ivec4 bvec2 bvec3 bvec4 mat2 mat3 mat4"),blockKeywords:h("for while do if else struct"),builtin:h("radians degrees sin cos tan asin acos atan pow exp log exp2 sqrt inversesqrt abs sign floor ceil fract mod min max clamp mix step smoothstep length distance dot cross normalize ftransform faceforward reflect refract matrixCompMult lessThan lessThanEqual greaterThan greaterThanEqual equal notEqual any all not texture1D texture1DProj texture1DLod texture1DProjLod texture2D texture2DProj texture2DLod texture2DProjLod texture3D texture3DProj texture3DLod texture3DProjLod textureCube textureCubeLod shadow1D shadow2D shadow1DProj shadow2DProj shadow1DLod shadow2DLod shadow1DProjLod shadow2DProjLod dFdx dFdy fwidth noise1 noise2 noise3 noise4"),atoms:h("true false gl_FragColor gl_SecondaryColor gl_Normal gl_Vertex gl_MultiTexCoord0 gl_MultiTexCoord1 gl_MultiTexCoord2 gl_MultiTexCoord3 gl_MultiTexCoord4 gl_MultiTexCoord5 gl_MultiTexCoord6 gl_MultiTexCoord7 gl_FogCoord gl_PointCoord gl_Position gl_PointSize gl_ClipVertex gl_FrontColor gl_BackColor gl_FrontSecondaryColor gl_BackSecondaryColor gl_TexCoord gl_FogFragCoord gl_FragCoord gl_FrontFacing gl_FragData gl_FragDepth gl_ModelViewMatrix gl_ProjectionMatrix gl_ModelViewProjectionMatrix gl_TextureMatrix gl_NormalMatrix gl_ModelViewMatrixInverse gl_ProjectionMatrixInverse gl_ModelViewProjectionMatrixInverse gl_TexureMatrixTranspose gl_ModelViewMatrixInverseTranspose gl_ProjectionMatrixInverseTranspose gl_ModelViewProjectionMatrixInverseTranspose gl_TextureMatrixInverseTranspose gl_NormalScale gl_DepthRange gl_ClipPlane gl_Point gl_FrontMaterial gl_BackMaterial gl_LightSource gl_LightModel gl_FrontLightModelProduct gl_BackLightModelProduct gl_TextureColor gl_EyePlaneS gl_EyePlaneT gl_EyePlaneR gl_EyePlaneQ gl_FogParameters gl_MaxLights gl_MaxClipPlanes gl_MaxTextureUnits gl_MaxTextureCoords gl_MaxVertexAttribs gl_MaxVertexUniformComponents gl_MaxVaryingFloats gl_MaxVertexTextureImageUnits gl_MaxTextureImageUnits gl_MaxFragmentUniformComponents gl_MaxCombineTextureImageUnits gl_MaxDrawBuffers"),indentSwitch:!1,hooks:{"#":l},modeProps:{fold:["brace","include"]}}),s("text/x-nesc",{name:"clike",keywords:h(j+"as atomic async call command component components configuration event generic implementation includes interface module new norace nx_struct nx_union post provides signal task uses abstract extends"),types:h(k),blockKeywords:h("case do else for if switch while struct"),atoms:h("null true false"),hooks:{"#":l},modeProps:{fold:["brace","include"]}}),s("text/x-objectivec",{name:"clike",keywords:h(j+"inline restrict _Bool _Complex _Imaginery BOOL Class bycopy byref id IMP in inout nil oneway out Protocol SEL self super atomic nonatomic retain copy readwrite readonly"),types:h(k),atoms:h("YES NO NULL NILL ON OFF true false"),hooks:{"@":function(a){return a.eatWhile(/[\w\$]/),"keyword"},"#":l,indent:function(a,b,c){return"statement"==b.type&&/^@\w/.test(c)?b.indented:void 0}},modeProps:{fold:"brace"}}),s("text/x-squirrel",{name:"clike",keywords:h("base break clone continue const default delete enum extends function in class foreach local resume return this throw typeof yield constructor instanceof static"),types:h(k),blockKeywords:h("case catch class else for foreach if switch try while"),defKeywords:h("function local class"),typeFirstDefinitions:!0,atoms:h("true false null"),hooks:{"#":l},modeProps:{fold:["brace","include"]}});var v=null;s("text/x-ceylon",{name:"clike",keywords:h("abstracts alias assembly assert assign break case catch class continue dynamic else exists extends finally for function given if import in interface is let module new nonempty object of out outer package return satisfies super switch then this throw try value void while"),types:function(a){var b=a.charAt(0);return b===b.toUpperCase()&&b!==b.toLowerCase()},blockKeywords:h("case catch class dynamic else finally for function if interface module new object switch try while"),defKeywords:h("class dynamic function interface module object package value"),builtin:h("abstract actual aliased annotation by default deprecated doc final formal late license native optional sealed see serializable shared suppressWarnings tagged throws variable"),isPunctuationChar:/[\[\]{}\(\),;\:\.`]/,isOperatorChar:/[+\-*&%=<>!?|^~:\/]/,numberStart:/[\d#$]/,number:/^(?:#[\da-fA-F_]+|\$[01_]+|[\d_]+[kMGTPmunpf]?|[\d_]+\.[\d_]+(?:[eE][-+]?\d+|[kMGTPmunpf]|)|)/i,multiLineStrings:!0,typeFirstDefinitions:!0,atoms:h("true false null larger smaller equal empty finished"),indentSwitch:!1,styleDefs:!1,hooks:{"@":function(a){return a.eatWhile(/[\w\$_]/),"meta"},'"':function(a,b){return b.tokenize=w(a.match('""')?"triple":"single"),b.tokenize(a,b)},"`":function(a,b){return v&&a.match("`")?(b.tokenize=v,v=null,b.tokenize(a,b)):!1},"'":function(a){return a.eatWhile(/[\w\$_\xa1-\uffff]/),"atom"},token:function(a,b,c){return"variable"!=c&&"variable-3"!=c||"."!=b.prevToken?void 0:"variable-2"}},modeProps:{fold:["brace","import"],closeBrackets:{triples:'"'}}})}); \ No newline at end of file diff --git a/assets/plugins/codemirror/cm/mode/css-compressed.js b/assets/plugins/codemirror/cm/mode/css-compressed.js index 065ad7dfd5..8fe82dc292 100755 --- a/assets/plugins/codemirror/cm/mode/css-compressed.js +++ b/assets/plugins/codemirror/cm/mode/css-compressed.js @@ -1,14 +1,9 @@ -CodeMirror.defineMode("css",function(h){return CodeMirror.getMode(h,"text/css")}); -CodeMirror.defineMode("css-base",function(h,g){function d(e,c){k=c;return e}function l(e,c){var a=e.next();if(b[a]){var f=b[a](e,c);if(!1!==f)return f}if("@"==a)return e.eatWhile(/[\w\\\-]/),d("def",e.current());if("="==a)d(null,"compare");else{if(("~"==a||"|"==a)&&e.eat("="))return d(null,"compare");if('"'==a||"'"==a)return c.tokenize=m(a),c.tokenize(e,c);if("#"==a)return e.eatWhile(/[\w\\\-]/),d("atom","hash");if("!"==a)return e.match(/^\s*\w*/),d("keyword","important");if(/\d/.test(a))return e.eatWhile(/[\w.%]/), -d("number","unit");if("-"===a){if(/\d/.test(e.peek()))return e.eatWhile(/[\w.%]/),d("number","unit");if(e.match(/^[^-]+-/))return d("meta","meta")}else{if(/[,+>*\/]/.test(a))return d(null,"select-op");if("."==a&&e.match(/^-?[_a-z][_a-z0-9-]*/i))return d("qualifier","qualifier");if(":"==a)return d("operator",a);if(/[;{}\[\]\(\)]/.test(a))return d(null,a);"u"==a&&e.match("rl(")?(e.backUp(1),c.tokenize=n):e.eatWhile(/[\w\\\-]/);return d("property","variable")}}}function m(e,c){return function(a,f){for(var b= -!1,j;null!=(j=a.next())&&(j!=e||b);)b=!b&&"\\"==j;b||(c&&a.backUp(1),f.tokenize=l);return d("string","string")}}function n(e,c){e.next();c.tokenize=e.match(/\s*[\"\']/,!1)?l:m(")",!0);return d(null,"(")}var p=h.indentUnit,b=g.hooks||{},j=g.atMediaTypes||{},t=g.atMediaFeatures||{},q=g.propertyKeywords||{},r=g.colorKeywords||{},s=g.valueKeywords||{},u=!!g.allowNested,k=null;return{startState:function(e){return{tokenize:l,baseIndent:e||0,stack:[]}},token:function(e,c){c.tokenize=c.tokenize||l;if(c.tokenize== -l&&e.eatSpace())return null;var a=c.tokenize(e,c);a&&"string"!=typeof a&&(a=d(a[0],a[1]));var f=c.stack[c.stack.length-1];if("variable"==a)return"variable-definition"==k&&c.stack.push("propertyValue"),"variable-2";if("property"==a){var b=e.current().toLowerCase();"propertyValue"==f?a=s.hasOwnProperty(b)?"string-2":r.hasOwnProperty(b)?"keyword":"variable-2":"rule"==f?q.hasOwnProperty(b)||(a+=" error"):"block"==f?a=q.hasOwnProperty(b)?"property":r.hasOwnProperty(b)?"keyword":s.hasOwnProperty(b)?"string-2": -"tag":!f||"@media{"==f?a="tag":"@media"==f?a=j[e.current()]?"attribute":/^(only|not)$/.test(b)?"keyword":"and"==b?"error":t.hasOwnProperty(b)?"error":"attribute error":"@mediaType"==f?j.hasOwnProperty(b)?a="attribute":"and"==b?a="operator":(/^(only|not)$/.test(b),a="error"):"@mediaType("==f?q.hasOwnProperty(b)||(a=j.hasOwnProperty(b)?"error":"and"==b?"operator":/^(only|not)$/.test(b)?"error":a+" error"):a="@import"==f?"tag":"error"}else"atom"==a?!f||"@media{"==f||"block"==f?a="builtin":"propertyValue"== -f?/^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/.test(e.current())||(a+=" error"):a="error":"@media"==f&&"{"==k&&(a="error");"{"==k?"@media"==f||"@mediaType"==f?(c.stack.pop(),c.stack[c.stack.length-1]="@media{"):c.stack.push(u?"block":"rule"):"}"==k?("interpolation"==c.stack[c.stack.length-1]&&(a="operator"),c.stack.pop(),"propertyValue"==f&&c.stack.pop()):"interpolation"==k?c.stack.push("interpolation"):"@media"==k?c.stack.push("@media"):"@import"==k?c.stack.push("@import"):"@media"==f&&/\b(keyword|attribute)\b/.test(a)? -c.stack.push("@mediaType"):"@mediaType"==f&&","==e.current()?c.stack.pop():"@mediaType"==f&&"("==k?c.stack.push("@mediaType("):"@mediaType("==f&&")"==k?c.stack.pop():("rule"==f||"block"==f)&&":"==k?c.stack.push("propertyValue"):"propertyValue"==f&&";"==k?c.stack.pop():"@import"==f&&";"==k&&c.stack.pop();return a},indent:function(b,c){var a=b.stack.length;/^\}/.test(c)&&(a-="propertyValue"==b.stack[b.stack.length-1]?2:1);return b.baseIndent+a*p},electricChars:"}",blockCommentStart:"/*",blockCommentEnd:"*/"}}); -(function(){function h(b){for(var j={},d=0;d +<@ENDIF> + +<@IF:[!#hasPermission?permission=edit_template!] > +
                      +

                      [+tabLabel_tv+]

                      + + [+tmplvars+] + +
                      +<@ENDIF> + +<@IF:[!#hasPermission?permission=edit_chunk!] > +
                      +

                      [+tabLabel_chunk+]

                      + + [+chunk+] + +
                      +<@ENDIF> + +<@IF:[!#hasPermission?permission=edit_snippet!] > +
                      +

                      [+tabLabel_snippet+]

                      + + [+snippet+] + +
                      +<@ENDIF> + +<@IF:[!#hasPermission?permission=edit_plugin!] > +
                      +

                      [+tabLabel_plugin+]

                      + + [+plugin+] + +
                      +<@ENDIF> + +<@IF:[!#hasPermission?permission=exec_module!] > +
                      +

                      [+tabLabel_module+]

                      + + [+module+] + +
                      +<@ENDIF> + +<@IF:[[#hasAnyPermission]]> + +<@ENDIF> +
                      diff --git a/assets/plugins/elementsintree/assets/txt_content.tpl b/assets/plugins/elementsintree/assets/txt_content.tpl new file mode 100644 index 0000000000..1550a51a87 --- /dev/null +++ b/assets/plugins/elementsintree/assets/txt_content.tpl @@ -0,0 +1,754 @@ + + + + +
                      + + + + + +
                      +

                      [+tabTreeTitle+]

                      + diff --git a/assets/plugins/elementsintree/includes/functions.inc.php b/assets/plugins/elementsintree/includes/functions.inc.php new file mode 100644 index 0000000000..91fc0452ef --- /dev/null +++ b/assets/plugins/elementsintree/includes/functions.inc.php @@ -0,0 +1,214 @@ +elementIsLocked($lockType, $id, true); + $lockedByUser = ''; + + if($rowLock && $modx->hasPermission('display_locks')) { + $lockedByUser = getLockedByUser($lockType,$rowLock,$id); + } + return sprintf('%s', $lockType, $id, $lockedByUser); +} + +function getLockedByUser($lockType,$rowLock,$id) { + global $modx,$_lang,$_style; + + $ph = array(); + $ph['element_type'] = $_lang['lock_element_type_'.$lockType]; + $ph['lasthit_df'] = $rowLock['lasthit_df']; + + if($rowLock['sid'] == $modx->sid) { + $title = $modx->parseText($_lang['lock_element_editing'], $ph); + $tpl = ' '; + $params = array($title, $_style['icons_preview_resource']); + return vsprintf($tpl, $params); + } else { + $ph['username'] = $rowLock['username']; + $title = $modx->parseText($_lang['lock_element_locked_by'], $ph); + if($modx->hasPermission('remove_locks')) { + $tpl = ''; + $params = array($lockType, $id, $title, $_style['icons_secured']); + return vsprintf($tpl, $params); + } else { + $tpl = ''; + $params = array($title, $_style['icons_secured']); + return vsprintf($tpl, $params); + } + } + } + +// create elements list function +function createElementsList($elmTable,$action,$nameField = 'name') { + global $modx, $_lang, $modx_textdir; + + $field = array(); + if ($elmTable == 'site_plugins') $field['disabled'] = '[+prefix+]site_plugins.disabled'; + elseif($elmTable == 'site_tmplvars') $field['caption'] = '[+prefix+]site_tmplvars.caption'; + + $field['name'] = "[+prefix+]{$elmTable}.{$nameField}"; + $field['id'] = "[+prefix+]{$elmTable}.id"; + $field['description'] = "[+prefix+]{$elmTable}.description"; + $field['locked'] = "[+prefix+]{$elmTable}.locked"; + $field['category'] = sprintf("if(isnull([+prefix+]categories.category),'%s',[+prefix+]categories.category)", $_lang['no_category']); + $field['catid'] = '[+prefix+]categories.id'; + + $from[] = "[+prefix+]{$elmTable}"; + $from[] = "left join [+prefix+]categories on [+prefix+]{$elmTable}.category=[+prefix+]categories.id"; + + $orderby = in_array($elmTable, array('site_plugins','site_tmplvars')) ? '6,2' : '5,1'; + + $rs = $modx->db->select($field,$from,'',$orderby); + + if($modx->db->getRecordCount($rs)<1) return ''; + + $output = ' +
                      + + '; + + $output .= '
                      '; + + $preCat = ''; + $insideUl = 0; + + while($row = $modx->db->getRow($rs)) { + $row['category'] = stripslashes($row['category']); + if ($preCat !== $row['category']) { + $output .= $insideUl? '
                      ': ''; + $row['catid'] = intval($row['catid']); + $output .= '
                        '; + $insideUl = 1; + } + if ($elmTable == 'site_plugins') $class = $row['disabled'] ? ' class="disabledPlugin"' : ''; + $lockIcon = renderLockIcon($elmTable, $row['id']); + $output .= '
                      • '.$lockIcon.''.$row['name'].' (' . $row['id'] . ') + '.($modx_textdir ? '‏' : '').''; + + $output .= $row['locked'] ? ' ('.$_lang['locked'].')' : "" ; + $output .= '
                      • '; + $preCat = $row['category']; + } + $output .= $insideUl? '
                      ': ''; + $output .= '
                      '; + $output .= ' + +'; + return $output; +} + +// end createElementsList function + +// createModulesList function + +function createModulesList($action) { + + global $modx, $_lang, $modx_textdir; + + $output = ' +
                      + + '; + + $output .= '
                      '; + + if ($_SESSION['mgrRole'] != 1) { + $field = 'sm.id, sm.name, sm.description, sm.category, sm.disabled, cats.category as catname, cats.id as catid, mg.member'; + $from = array(); + $from[] = '[+prefix+]site_modules as sm'; + $from[] = 'LEFT JOIN [+prefix+]site_module_access as sma ON sma.module=sm.id'; + $from[] = 'LEFT JOIN [+prefix+]member_groups as mg ON sma.usergroup = mg.user_group'; + $from[] = 'LEFT JOIN [+prefix+]categories as cats ON sm.category = cats.id'; + $where = sprintf( '(mg.member IS NULL OR mg.member=%s) AND sm.disabled!=1 AND sm.locked!=1', $modx->getLoginUserID() ); + $rs = $modx->db->select($field,$from,$where,'5,1'); + } + + else { + $field = 'sm.id, sm.name, sm.description, sm.category, sm.disabled, cats.category as catname, cats.id as catid'; + $from = array(); + $from[] = '[+prefix+]site_modules as sm'; + $from[] = 'LEFT JOIN [+prefix+]categories as cats ON sm.category=cats.id'; + $rs = $modx->db->select($field,$from,'sm.disabled!=1','5,1'); + } + + if($modx->db->getRecordCount($rs)<1){ + return ''; + } + + $preCat = ''; + $insideUl = 0; + + while($row = $modx->db->getRow($rs)) { + + if($row['catid'] > 0) $row['catid'] = stripslashes($row['catid']); + else $row['catname'] = $_lang['no_category']; + $row['action'] = $action; + + if ($preCat !== $row['category']) { + $output .= $insideUl? '
                      ': ''; + $row['catid'] = intval($row['catid']); + $output .= $modx->parseText('
                        ', $row); + $insideUl = 1; + } + $row['window.open'] = $modx->parseText("'index.php?id=[+id+]&a=[+action+]','gener','width=800,height=600,top='+((screen.height-600)/2)+',left='+((screen.width-800)/2)+',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no'", $row); + $row['textdir'] = $modx_textdir ? '‏' : ''; + $row['description'] = strip_tags($row['description']); + $row['locked'] = $row['locked'] ? ' ('.$_lang['locked'].')' : ''; + $output .= $modx->parseText('
                      • [+name+] ([+id+]) + [+textdir+][+locked+]
                      • ', $row); + $preCat = $row['category']; + } + $output .= $insideUl? '
                      ': ''; + $output .= '
                      '; + $output .= " + +"; + return $output; +} + +// end createModulesList function + +function hasAnyPermission() { + global $modx; + $_ = explode(',', 'edit_template,edit_snippet,edit_chunk,edit_plugin,exec_module'); + foreach($_ as $v) { + if($modx->hasPermission($v)) return true; + } + return false; +} \ No newline at end of file diff --git a/assets/plugins/elementsintree/includes/on_manager_main_frame_header_html_block.inc.php b/assets/plugins/elementsintree/includes/on_manager_main_frame_header_html_block.inc.php new file mode 100644 index 0000000000..54190bcbb4 --- /dev/null +++ b/assets/plugins/elementsintree/includes/on_manager_main_frame_header_html_block.inc.php @@ -0,0 +1,19 @@ +\n"; + $html .= "\n"; + $html .= "\n"; + $e->output($html); +} diff --git a/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php b/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php new file mode 100644 index 0000000000..762912e9c7 --- /dev/null +++ b/assets/plugins/elementsintree/includes/on_manager_tree_prerender.inc.php @@ -0,0 +1,31 @@ +parseText($output,$ph); +$e->output($output); diff --git a/assets/plugins/elementsintree/includes/on_manager_tree_render.inc.php b/assets/plugins/elementsintree/includes/on_manager_tree_render.inc.php new file mode 100644 index 0000000000..f7ff57871b --- /dev/null +++ b/assets/plugins/elementsintree/includes/on_manager_tree_render.inc.php @@ -0,0 +1,50 @@ +'; + $tabLabel_tv = ''; + $tabLabel_chunk = ''; + $tabLabel_snippet = ''; + $tabLabel_plugin = ''; + $tabLabel_module = ''; + $tabLabel_create = ''; + $tabLabel_refresh = ''; +} +else { + $tabLabel_template = 'TPL'; + $tabLabel_tv = 'TV'; + $tabLabel_chunk = 'CH'; + $tabLabel_snippet = 'SN'; + $tabLabel_plugin = 'PL'; + $tabLabel_module = 'MD'; + $tabLabel_create = 'Create'; + $tabLabel_refresh = 'Refresh'; +} + +$text_reload_title = 'Click here to reload elements list.'; + +$templates = createElementsList('site_templates',16,'templatename'); +$tmplvars = createElementsList('site_tmplvars',301); +$chunk = createElementsList('site_htmlsnippets',78); +$snippet = createElementsList('site_snippets',22); +$plugin = createElementsList('site_plugins',102); +$module = createModulesList(112); + +$ph = compact('tabLabel_template','tabLabel_tv','tabLabel_chunk','tabLabel_snippet','tabLabel_plugin','tabLabel_module','tabLabel_create','tabLabel_refresh','text_reload_title','templates','tmplvars','chunk','snippet','plugin','module'); + +if ( hasAnyPermission() ) $output = ''; + +$modx->addSnippet('hasPermission','return $modx->hasPermission($permission);'); +$modx->addSnippet('hasAnyPermission','return (int)hasAnyPermission();'); + +$output .= file_get_contents($eit_base_path . 'assets/on_manager_tree_render.tpl'); + +$_ = $modx->config['enable_filter']; +$modx->config['enable_filter'] = 1; +$output = $modx->mergeConditionalTagsContent($output); +$output = $modx->parseText($output,$ph); +$output = $modx->parseText($output,$_lang,'[%','%]'); +$modx->config['enable_filter'] = $_; +$e->output($output); diff --git a/assets/plugins/elementsintree/plugin.elementsintree.php b/assets/plugins/elementsintree/plugin.elementsintree.php new file mode 100644 index 0000000000..4216ecf5ef --- /dev/null +++ b/assets/plugins/elementsintree/plugin.elementsintree.php @@ -0,0 +1,44 @@ +event; + +if(!isset($_SESSION['elementsInTree'])) $_SESSION['elementsInTree'] = array(); + +switch($e->name) { + case 'OnManagerMainFrameHeaderHTMLBlock': // Trigger reloading tree for relevant actions + include_once($eit_base_path.'includes/on_manager_main_frame_header_html_block.inc.php'); break; + case 'OnManagerTreePrerender': // Main elementsInTree-part + include_once($eit_base_path.'includes/on_manager_tree_prerender.inc.php'); break; + case 'OnManagerTreeRender': + if(hasAnyPermission()) include_once($eit_base_path.'includes/on_manager_tree_render.inc.php'); break; + case 'OnTempFormSave': + case 'OnTVFormSave': + case 'OnChunkFormSave': + case 'OnSnipFormSave': + case 'OnPluginFormSave': + case 'OnModFormSave': + case 'OnTempFormDelete': + case 'OnTVFormDelete': + case 'OnChunkFormDelete': + case 'OnSnipFormDelete': + case 'OnPluginFormDelete': + case 'OnModFormDelete': + // Set reloadTree = true for this events + $_SESSION['elementsInTree']['reloadTree'] = true; break; + default: + if($_GET['r'] == 2) $_SESSION['elementsInTree']['reloadTree'] = true; + return; +} +return; \ No newline at end of file diff --git a/assets/plugins/filesource/plugin.filesource.php b/assets/plugins/filesource/plugin.filesource.php index 09ba105054..abd94a91c6 100644 --- a/assets/plugins/filesource/plugin.filesource.php +++ b/assets/plugins/filesource/plugin.filesource.php @@ -1,18 +1,21 @@ db->escape("{$include} MODX_BASE_PATH.'{$elm_path}';"); + $pInfo = pathinfo(MODX_BASE_PATH.$elm_path); + if(is_dir($pInfo['dirname'])) { + $has_filebinding = '1'; + $insert_code = $modx->db->escape("{$include} MODX_BASE_PATH.'{$elm_path}';"); + }; } else $has_filebinding = '0'; } @@ -70,7 +76,7 @@ { $content['file_binding'] = str_replace(array(';','\''),'',trim(substr(trim($content[$vals]),$count,250))); $elm_path = "assets/{$elm_name}/" . $content['file_binding']; - $content[$vals] = file_get_contents(MODX_BASE_PATH . $elm_path); + $content[$vals] = is_readable(MODX_BASE_PATH . $elm_path) ? file_get_contents(MODX_BASE_PATH . $elm_path) : 'File not found: '.$elm_path; // strip out PHP tags (from save_snippet.processor.php) if ( strncmp($content[$vals], 'errors = array(); $this->checkLang(); } @@ -23,7 +23,7 @@ function getForm() { $form = <<{$_lang['account_email']}: - + EOD; return $form; @@ -39,30 +39,28 @@ function getUser($user_id=false, $username='', $email='', $hash='') { $hash = $modx->db->escape($hash); $tbl_manager_users = $modx->getFullTableName('manager_users'); $tbl_user_attributes = $modx->getFullTableName('user_attributes'); - $tbl_active_users = $modx->getFullTableName('active_users'); - $site_id = $modx->config['site_id']; + // $site_id = $modx->config['site_id']; $today = date('Yz'); // Year and day of the year $wheres = array(); - $where = ''; $user = null; if($user_id !== false) { $wheres[] = "usr.id='{$user_id}'"; } if(!empty($username)) { $wheres[] = "usr.username='{$username}'"; } if(!empty($email)) { $wheres[] = "attr.email='{$email}'"; } - if(!empty($hash)) { $wheres[] = "MD5(CONCAT(auser.lasthit,usr.password))='{$hash}'"; } - + if(!empty($hash)) { $wheres[] = "MD5(CONCAT('{$today}',attr.lastlogin,usr.password))='{$hash}'"; } + $wheres[] = "attr.lastlogin > 0"; + if($wheres) { $result = $modx->db->select( - "usr.id, usr.username, attr.email, MD5(CONCAT(auser.lasthit,usr.password)) AS hash", + "usr.id, usr.username, attr.email, MD5(CONCAT('{$today}',attr.lastlogin,usr.password)) AS hash", "{$tbl_manager_users} usr - INNER JOIN {$tbl_user_attributes} attr ON usr.id=attr.internalKey - INNER JOIN {$tbl_active_users} auser ON usr.username=auser.username", + INNER JOIN {$tbl_user_attributes} attr ON usr.id=attr.internalKey", implode(' AND ',$wheres), "", 1 - ); - $user = $modx->db->getRow($result); + ); + $user = $modx->db->getRow($result); } if($user == null) { $this->errors[] = $_lang['could_not_find_user']; } @@ -159,7 +157,7 @@ function getErrorOutput() { $output = $forgot->getForm(); break; case 'send_email': - if($forgot->sendEmail($to)) { $output = $_lang['email_sent']; } + if($forgot->sendEmail($to)) { $output = '

                      '.$_lang['email_sent'].'

                      '; } break; default: $output = $forgot->getLink(); @@ -182,6 +180,7 @@ function getErrorOutput() { if(isset($_REQUEST['captcha_code']) && !empty($_REQUEST['captcha_code'])) $_SESSION['veriword'] = $_REQUEST['captcha_code']; $output = true; + $_SESSION['onLoginForwardToAction'] = 28; // action "change password" } else $output = false; } diff --git a/assets/plugins/managermanager/js/jquery.ddMM.js b/assets/plugins/managermanager/js/jquery.ddMM.js old mode 100755 new mode 100644 index b43ea51414..cce9088270 --- a/assets/plugins/managermanager/js/jquery.ddMM.js +++ b/assets/plugins/managermanager/js/jquery.ddMM.js @@ -16,6 +16,7 @@ $.ddMM = { datepicker_offset: 0 }, urls: { + manager: 'manager/', mm: 'assets/plugins/managermanager/' }, /** @@ -30,7 +31,7 @@ $.ddMM = { fields: {}, lang: {}, $mutate: $(), - + /** * makeArray * @version 1.1 (2013-10-24) @@ -47,20 +48,20 @@ $.ddMM = { if ($.isArray(csv)){ return csv; } - + // Else if we have an empty string if ($.trim(csv) == ''){ return new Array(); } - + if ($.type(splitter) != 'string' || splitter.length == 0){ splitter = ','; } - + // Otherwise, turn it into an array return csv.split(new RegExp('\\s*' + splitter + '\\s*')); }, - + /** * moveFields * @version 1.1 (2014-05-28) @@ -73,26 +74,26 @@ $.ddMM = { moveFields: function(fields, targetId){ var _this = this, $target = $('#' + targetId); - + fields = _this.makeArray(fields); - + if ($target.length > 0 && fields.length > 0){ var ruleHtml = '
                      '; - + $('select[id$=_prefix]').each(function(){ $(this).parents('tr:first').addClass('urltv'); }); - + $.each(fields, function(){ if (this == 'content'){ //Если перемещаем в секцию if ($target.hasClass('sectionBody')){ var $row = $(''); - + $('#content_header').removeClass('sectionHeader').wrapInner('').appendTo($row.find('td:first')); - + $('#content_body').removeClass('sectionBody').appendTo($row.find('td:last')); - + $row.appendTo($target.find('> table:first')).after(ruleHtml); }else{ $('#content_body').appendTo($target); @@ -102,33 +103,34 @@ $.ddMM = { }else if ( this == 'keywords' || this == 'metatags' || - this == 'which_editor' || - this == 'hidemenu' || - this == 'show_in_menu' || - this == 'menuindex' + this == 'which_editor' + //|| + //this == 'hidemenu' || + //this == 'show_in_menu' || + //this == 'menuindex' ){ //Do nothing return; }else if (this == 'pub_date' || this == 'unpub_date'){ var $helpline = $('input[name="' + this + '"]').parents('tr').next('tr').appendTo($target.find('> table:first')); - + $helpline.before($('input[name="' + this + '"]').parents('tr')); $helpline.after(ruleHtml); }else{ if ($.isPlainObject(_this.fields[this])){ // Identify the table row to move var $toMove = _this.fields[this].$elem.parents('tr:not(.urltv)'); - + $toMove.find('script').remove(); // Get rid of line after, if there is one $toMove.next('tr').find('td[colspan="2"]').parents('tr').remove(); - + // Move the table row var $movedTV = $toMove.appendTo($target.find('> table:first')); - + // Insert a rule after $movedTV.after(ruleHtml); - + // Remove widths from label column //movedTV.find("td[width]").attr("width",""); // This prevents an IE6/7 bug where the moved field would not be visible until you switched tabs @@ -143,10 +145,10 @@ $.ddMM = { //On document.ready $(function(){ $.ddMM.$mutate = $('#mutate'); - + //Initialization of the corresponding jQuery element for each document field for (var field in $.ddMM.fields){ - $.ddMM.fields[field].$elem = $($.ddMM.fields[field].fieldtype + '[name="' + $.ddMM.fields[field].fieldname + '"]'); + $.ddMM.fields[field].$elem = $('[name="' + $.ddMM.fields[field].fieldname + '"]'); } }); })(jQuery); \ No newline at end of file diff --git a/assets/plugins/managermanager/js/jquery.min.map b/assets/plugins/managermanager/js/jquery.min.map new file mode 100755 index 0000000000..7068cde4d1 --- /dev/null +++ b/assets/plugins/managermanager/js/jquery.min.map @@ -0,0 +1 @@ +/**/ \ No newline at end of file diff --git a/assets/plugins/managermanager/mm.inc.php b/assets/plugins/managermanager/mm.inc.php index 990b70545d..0c0645694b 100755 --- a/assets/plugins/managermanager/mm.inc.php +++ b/assets/plugins/managermanager/mm.inc.php @@ -18,6 +18,7 @@ * @copyright 2014 */ +global $mm_version; $mm_version = '0.6.2'; // Bring in some preferences which have been set on the configuration tab of the plugin, and normalise them @@ -30,7 +31,7 @@ $jsUrls = array( 'jq' => array( - 'url' => $modx->config['site_url'].'assets/plugins/managermanager/js/jquery-1.9.1.min.js', + 'url' => $modx->config['site_url'].'assets/plugins/managermanager/js/jquery.min.js', 'name' => 'jquery', 'version' => '1.9.1' ), @@ -81,7 +82,9 @@ $mm_current_page = array(); //Get page template -if (isset($_POST['template'])){ +if (isset($e->params['template'])){ + $mm_current_page['template'] = $e->params['template']; +}else if (isset($_POST['template'])){ $mm_current_page['template'] = $_POST['template']; }else if (isset($content['template'])){ $mm_current_page['template'] = $content['template']; @@ -138,7 +141,8 @@ $fieldname_suffix = ''; // What fieldtype is this TV type? - switch ($thisTv['type']){ + $thisTvI = explode(":", $thisTv['type']); + switch ($thisTvI['0']){ case 'textarea': case 'rawtextarea': case 'textareamini': @@ -207,6 +211,8 @@ function initJQddManagerManager(){ $j.ddMM.config.datetime_format = "'.$modx->config['datetime_format'].'"; $j.ddMM.config.datepicker_offset = '.$modx->config['datepicker_offset'].'; +$j.ddMM.urls.manager = "'.MODX_MANAGER_URL.'"; + $j.ddMM.fields = $j.parseJSON(\''.json_encode($mm_fields).'\'); '; @@ -280,7 +286,8 @@ function initJQddManagerManager(){ // Load the jquery library $output = ''."\n"; - $output .= includeJsCss($jsUrls['jq']['url'], 'html', $jsUrls['jq']['name'], $jsUrls['jq']['version']); + if(!isset($modx->config['mgr_jquery_path']) || empty($modx->config['mgr_jquery_path'])) + $output .= includeJsCss($jsUrls['jq']['url'], 'html', $jsUrls['jq']['name'], $jsUrls['jq']['version']); $output .= includeJsCss($jsUrls['mm']['url'], 'html', $jsUrls['mm']['name'], $jsUrls['mm']['version']); $output .= ' + [+tinyMCE+] diff --git a/assets/plugins/managermanager/widgets/ddresizeimage/ddresizeimage.php b/assets/plugins/managermanager/widgets/ddresizeimage/ddresizeimage.php index 0b6cce8f75..dc0e211f1c 100755 --- a/assets/plugins/managermanager/widgets/ddresizeimage/ddresizeimage.php +++ b/assets/plugins/managermanager/widgets/ddresizeimage/ddresizeimage.php @@ -1,7 +1,7 @@ 0){ @@ -143,10 +143,8 @@ function ddCreateThumb($thumbData){ $replaceFieldVal = ($replaceFieldVal == '1') ? true : false; $multipleField = ($multipleField == '1') ? true : false; - $base_path = $modx->config['base_path']; - //Подключаем phpThumb - require_once $base_path.'assets/plugins/managermanager/widgets/ddresizeimage/phpthumb.class.php'; + require_once $modx->config['base_path'].'assets/plugins/managermanager/widgets/ddresizeimage/phpthumb.class.php'; //Перебираем их foreach ($tvs as $tv){ @@ -193,9 +191,9 @@ function ddCreateThumb($thumbData){ if (strpos($image, '/') === 0) $image = substr($image, 1); //На всякий случай проверим, что файл существует - if (file_exists($base_path.$image)){ + if (file_exists($modx->config['base_path'].$image)){ //Полный путь изображения - $imageFullPath = pathinfo($base_path.$image); + $imageFullPath = pathinfo($modx->config['base_path'].$image); //Если имя файла уже заканчивается на суффикс (необходимо при $replaceFieldVal == 1), не будем его добавлять if (substr($imageFullPath['filename'], strlen($suffix) * -1) == $suffix){ @@ -218,7 +216,7 @@ function ddCreateThumb($thumbData){ //Формируем новое имя изображения (полный путь) 'thumbName' => $imageFullPath['dirname'].'/'.$newImageName, //Ссылка на оригинальное изображение - 'originalImage' => $base_path.$image, + 'originalImage' => $modx->config['base_path'].$image, //Разрешить ли увеличение изображения 'allowEnlargement' => $allowEnlargement )); diff --git a/assets/plugins/managermanager/widgets/ddresizeimage/phpthumb.class.php b/assets/plugins/managermanager/widgets/ddresizeimage/phpthumb.class.php index b3f9a8a84d..9359b8f344 100755 --- a/assets/plugins/managermanager/widgets/ddresizeimage/phpthumb.class.php +++ b/assets/plugins/managermanager/widgets/ddresizeimage/phpthumb.class.php @@ -211,7 +211,7 @@ class phpthumb { ////////////////////////////////////////////////////////////////////// // public: constructor - function phpThumb() { + function __construct() { $this->DebugTimingMessage('phpThumb() constructor', __FILE__, __LINE__); $this->DebugMessage('phpThumb() v'.$this->phpthumb_version, __FILE__, __LINE__); $this->config_max_source_pixels = round(max(intval(ini_get('memory_limit')), intval(get_cfg_var('memory_limit'))) * 1048576 * 0.20); // 20% of memory_limit @@ -1303,7 +1303,7 @@ function ImageMagickThumbnailToGD() { // $UnAllowedParameters contains options that can only be processed in GD, not ImageMagick // note: 'fltr' *may* need to be processed by GD, but we'll check that in more detail below $UnAllowedParameters = array('xto', 'ar', 'bg', 'bc'); - // 'ra' may be part of this list, if not a multiple of 90 + // 'ra' may be part of this list, if not a multiple of 90? foreach ($UnAllowedParameters as $parameter) { if (isset($this->$parameter)) { $this->DebugMessage('$this->useRawIMoutput=false because "'.$parameter.'" is set', __FILE__, __LINE__); diff --git a/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.css b/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.css index 4708403483..a6ff26f0f1 100755 --- a/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.css +++ b/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.css @@ -26,6 +26,18 @@ } .ui-helper-hidden-accessible {display: none;} +.ddMultipleInput { + background: none repeat scroll 0 0 #f9f9f9; + border-color: #999 #ddd #ddd #999; + border-radius: 3px; + border-style: solid; + border-width: 1px; + box-shadow: 0 1px 3px #e8e8e8 inset; + margin: 0 5px 0 0; + min-height: 17px; + padding: 4px 2px 4px 4px; + vertical-align: baseline; +} .ddMultipleInput > span { overflow: hidden; diff --git a/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.php b/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.php index 409d151926..f47289a39d 100755 --- a/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.php +++ b/assets/plugins/managermanager/widgets/ddselectdocuments/ddselectdocuments.php @@ -26,7 +26,7 @@ * http://www.DivanDesign.biz */ -function mm_ddSelectDocuments($tvs = '', $roles = '', $templates = '', $parentIds, $depth = 1, $filter = '', $max = 0, $labelMask = '[+title+] ([+id+])'){ +function mm_ddSelectDocuments($tvs = '', $roles = '', $templates = '', $parentIds, $depth = 1, $filter = '', $max = 0, $labelMask = '[+title+] ([+id+])',$allowDoubling = false){ if (empty($parentIds) || !useThisRule($roles, $templates)){return;} global $modx; @@ -135,7 +135,7 @@ function mm_ddSelectDocuments($tvs = '', $roles = '', $templates = '', $parentId foreach ($tvs as $tv){ $output .= ' -$j("#tv'.$tv['id'].'").ddMultipleInput({source: '.$jsonDocs.', max: '.$max.'}); +$j("#tv'.$tv['id'].'").ddMultipleInput({source: '.$jsonDocs.', max: '.$max.', allowDoubling: '.$allowDoubling.'}); '; } diff --git a/assets/plugins/managermanager/widgets/mm_changefieldhelp/mm_changefieldhelp.php b/assets/plugins/managermanager/widgets/mm_changefieldhelp/mm_changefieldhelp.php index deaf42ffb2..6eea050096 100755 --- a/assets/plugins/managermanager/widgets/mm_changefieldhelp/mm_changefieldhelp.php +++ b/assets/plugins/managermanager/widgets/mm_changefieldhelp/mm_changefieldhelp.php @@ -46,12 +46,12 @@ function mm_changeFieldHelp($field, $helptext = '', $roles = '', $templates = '' $mm_changeFieldHelp_title_comment = $j("").appendTo($mm_changeFieldHelp_title); } -$mm_changeFieldHelp_title_comment.html("'.jsSafe($helptext).'"); +$mm_changeFieldHelp_title_comment.html("'.addslashes($helptext).'"); '; - //Or document field + //Or document field }else{ // Give the help button an ID, and modify the alt/title text - $output .= '$j("'.$fieldtype.'[name=\''.$fieldname.'\']").siblings("img[style*=\'cursor:help\']").attr("id", "'.$fieldname.'-help").attr("alt", "'.jsSafe($helptext).'").attr("title", "'.jsSafe($helptext).'");'."\n"; + $output .= '$j("'.$fieldtype.'[name=\''.$fieldname.'\']").siblings("img[style*=\'cursor:help\']").attr("id", "'.$fieldname.'-help").attr("alt", "'.addslashes($helptext).'").attr("title", "'.addslashes($helptext).'");'."\n"; } } diff --git a/assets/plugins/managermanager/widgets/mm_createtab/mm_createtab.php b/assets/plugins/managermanager/widgets/mm_createtab/mm_createtab.php index 2827317107..8dacb25db1 100755 --- a/assets/plugins/managermanager/widgets/mm_createtab/mm_createtab.php +++ b/assets/plugins/managermanager/widgets/mm_createtab/mm_createtab.php @@ -1,18 +1,28 @@ Event; @@ -21,10 +31,12 @@ function mm_createTab($name, $id, $roles = '', $templates = '', $intro = '', $wi // Plugin page tabs use a differen name for the tab object $js_tab_object = ($e->name == 'OnPluginFormRender') ? 'tpSnippet' : 'tpSettings'; - $output = "// -------------- mm_createTab :: Begin ------------- \n"; + $output = "//---------- mm_createTab :: Begin -----\n"; + + $tabId = prepareTabId($id); $empty_tab = ' -
                      +

                      '.$name.'

                      '.$intro.'
                      @@ -33,15 +45,16 @@ function mm_createTab($name, $id, $roles = '', $templates = '', $intro = '', $wi '; // Clean up for js output - $empty_tab = str_replace( array("\n", "\t", "\r") , '', $empty_tab); - $output .='$j'; - $output .= "('div#'+mm_lastTab).after('".$empty_tab."'); \n"; - $output .= "mm_lastTab = 'tab".$id."'; \n"; - $output .= $js_tab_object. '.addTabPage( document.getElementById( "tab'.$id.'" ) ); '; + $empty_tab = str_replace(array("\n", "\t", "\r"), '', $empty_tab); + + $output .= '$j'; + $output .= "('div#' + mm_lastTab).after('".$empty_tab."');\n"; + $output .= "mm_lastTab = '".$tabId."';\n"; + $output .= $js_tab_object.'.addTabPage(document.getElementById("'.$tabId.'"));'."\n"; - $output .= "// -------------- mm_createTab :: End ------------- \n"; + $output .= "//---------- mm_createTab :: End -----\n"; - $e->output($output . "\n"); + $e->output($output); } } ?> \ No newline at end of file diff --git a/assets/plugins/tinymce/index.html b/assets/plugins/managermanager/widgets/mm_hideempty/index.html similarity index 100% rename from assets/plugins/tinymce/index.html rename to assets/plugins/managermanager/widgets/mm_hideempty/index.html diff --git a/assets/plugins/managermanager/widgets/mm_hideempty/mm_hideempty.php b/assets/plugins/managermanager/widgets/mm_hideempty/mm_hideempty.php new file mode 100644 index 0000000000..de327f566f --- /dev/null +++ b/assets/plugins/managermanager/widgets/mm_hideempty/mm_hideempty.php @@ -0,0 +1,42 @@ + + * + * @link https://github.com/MrSwed/MODXEvo.plugin.ManagerManager.mm_hideEmpty + * + * @copyright 2016 + */ + +function mm_hideEmpty($roles = '', $templates = ''){ + global $modx; + $e = &$modx->Event; + + // if the current page is being edited by someone in the list of roles, and uses a template in the list of templates + if ($e->name == 'OnDocFormRender' && useThisRule($roles, $templates)){ + $output = "//---------- mm_hideEmpty :: Begin -----\n"; + $output .= ' + $j(".sectionBody[id]:not(:has([name])):not(:has(iframe))").each(function(){ + var t = $j(this); + var id = t.attr("id").match(/(.+)_[^_]+$/)[1]; + $j("#"+id+"_header").hide(); + t.hide(); + }); + $j(".tab-pane .tab-page:not(:has([name])):not(:has(iframe))").each(function(){ + var t = $j(this); + t.hide(); + $j(".tab-pane .tab-row .tab").eq(t.get(0).tabPage.index).hide(); + }); + '; + $output .= "//---------- mm_hideEmpty :: End -----\n"; + + $e->output($output); + } +} +?> \ No newline at end of file diff --git a/assets/plugins/managermanager/widgets/mm_hidefields/mm_hidefields.php b/assets/plugins/managermanager/widgets/mm_hidefields/mm_hidefields.php old mode 100755 new mode 100644 index bcacdb4354..a58cf1e8cb --- a/assets/plugins/managermanager/widgets/mm_hidefields/mm_hidefields.php +++ b/assets/plugins/managermanager/widgets/mm_hidefields/mm_hidefields.php @@ -1,7 +1,7 @@ Event; - // if we've been supplied with a string, convert it into an array - $fields = makeArray($fields); - - // if the current page is being edited by someone in the list of roles, and uses a template in the list of templates + //if the current page is being edited by someone in the list of roles, and uses a template in the list of templates if ($e->name == 'OnDocFormRender' && useThisRule($roles, $templates)){ global $mm_fields; + // if we've been supplied with a string, convert it into an array + $fields = makeArray($fields); + $output = "//---------- mm_hideFields :: Begin -----\n"; foreach ($fields as $field){ switch ($field){ - // Exceptions + //Exceptions case 'keywords': $output .= '$j("select[name*=\'keywords\']").parent("td").hide();'."\n"; break; @@ -40,16 +40,16 @@ function mm_hideFields($fields, $roles = '', $templates = ''){ $output .= '$j("select[name*\'=metatags\']").parent("td").hide()'."\n"; break; - case 'hidemenu': - case 'hide_menu': - case 'show_in_menu': - $output .= '$j("input[name=\'hidemenucheck\']").parent("td").hide();'."\n"; - break; + //case 'hidemenu': + //case 'hide_menu': + //case 'show_in_menu': + // $output .= '$j("input[name=\'hidemenucheck\']").parent("td").hide();'."\n"; + //break; - case 'menuindex': - $output .= '$j("input[name=\'menuindex\']").parents("table").parent("td").prev("td").children("span.warning").hide();'."\n"; - $output .= '$j("input[name=\'menuindex\']").parent("td").hide();'."\n"; - break; + //case 'menuindex': + // $output .= '$j("input[name=\'menuindex\']").parents("table").parent("td").prev("td").children("span.warning").hide();'."\n"; + // $output .= '$j("input[name=\'menuindex\']").parent("td").hide();'."\n"; + //break; case 'which_editor': $output .= '$j("select#which_editor").prev("span.warning").hide();'."\n"; @@ -57,8 +57,10 @@ function mm_hideFields($fields, $roles = '', $templates = ''){ break; case 'content': - $output .= '$j("#sectionContentHeader, #sectionContentBody").hide();'."\n"; // For 1.0.0 - $output .= '$j("#ta").parent("div").parent("div").hide().prev("div").hide();'."\n"; // For 1.0.1 + //For 1.0.0 + $output .= '$j("#sectionContentHeader, #sectionContentBody").hide();'."\n"; + //For 1.0.1 + $output .= '$j("#ta").parent("div").parent("div").hide().prev("div").hide();'."\n"; break; case 'pub_date': @@ -71,18 +73,19 @@ function mm_hideFields($fields, $roles = '', $templates = ''){ $output .= '$j("input[name=\'unpub_date\']").parents("tr").hide();'."\n"; break; - // Ones that follow the regular pattern + //Ones that follow the regular pattern default: - if (isset($mm_fields[$field])){ // Check the fields exist, so we're not writing JS for elements that don't exist + //Check the fields exist, so we're not writing JS for elements that don't exist + if (isset($mm_fields[$field])){ $output .= '$j("'.$mm_fields[$field]['fieldtype'].'[name=\''.$mm_fields[$field]['fieldname'].'\']").parents("tr").hide().next("tr").find("td[colspan=2]").parent("tr").hide();'."\n"; } break; } - - $output .= "//---------- mm_hideFields :: End -----\n"; - - $e->output($output); } + + $output .= "//---------- mm_hideFields :: End -----\n"; + + $e->output($output); } } -?> \ No newline at end of file +?> diff --git a/assets/plugins/managermanager/widgets/mm_hidetabs/mm_hidetabs.php b/assets/plugins/managermanager/widgets/mm_hidetabs/mm_hidetabs.php index a7ca91a072..df19426401 100755 --- a/assets/plugins/managermanager/widgets/mm_hidetabs/mm_hidetabs.php +++ b/assets/plugins/managermanager/widgets/mm_hidetabs/mm_hidetabs.php @@ -1,69 +1,72 @@ Event; - // if we've been supplied with a string, convert it into an array - $tabs = makeArray($tabs); - // if the current page is being edited by someone in the list of roles, and uses a template in the list of templates if ($e->name == 'OnDocFormRender' && useThisRule($roles, $templates)){ - $output = "// -------------- mm_hideTabs :: Begin ------------- \n"; + $output = "//---------- mm_hideTabs :: Begin -----\n"; + + // if we've been supplied with a string, convert it into an array + $tabs = makeArray($tabs); foreach($tabs as $tab){ - switch ($tab){ - case 'general': - $output .= 'if (tpSettings.getSelectedIndex() == 0) { tpSettings.setSelectedIndex(1); } ' . "\n"; // if we are hiding the currently active tab, make another visible - $output .= '$j("div#documentPane h2:nth-child(1)").hide(); ' . "\n"; - $output .= '$j("#tabGeneral").hide();'; - break; - - case 'settings': - $output .= 'if (tpSettings.getSelectedIndex() == 1) { tpSettings.setSelectedIndex(0); } ' . "\n"; - $output .= '$j("div#documentPane h2:nth-child(2)").hide(); ' . "\n"; - $output .= '$j("#tabSettings").hide();'; - break; - - // =< v1.0.0 only - case 'meta': - if($modx->hasPermission('edit_doc_metatags') && $modx->config['show_meta'] != "0"){ - $output .= 'if (tpSettings.getSelectedIndex() == 2) { tpSettings.setSelectedIndex(0); } ' . "\n"; - $output .= '$j("div#documentPane h2:nth-child(3)").hide(); ' . "\n"; - $output .= '$j("#tabMeta").hide(); '; - } - break; - - // Meta tags tab is removed by default in version 1.0.1+ but can still be enabled via a preference. - // Access tab was only added in 1.0.1 - // Since counting the tabs is the only way of determining this, we need to know if this has been activated - // If meta tabs are active, the "access" tab is index 4 in the HTML; otherwise index 3. - // If config['show_meta'] is NULL, this is a version before this option existed, e.g. < 1.0.1 - // For versions => 1.0.1, 0 is the default value to not show them, 1 is the option to show them. - case 'access': - $access_index = ($modx->config['show_meta'] == "0") ? 3 : 4; - $output .= 'if (tpSettings.getSelectedIndex() == '.($access_index-1).') { tpSettings.setSelectedIndex(0); } ' . "\n"; - $output .= '$j("div#documentPane h2:nth-child('.$access_index.')").hide(); ' . "\n"; - $output .= '$j("#tabAccess").hide();'; - break; + //meta for =< v1.0.0 only + if ($tab != 'meta' || ($modx->hasPermission('edit_doc_metatags') && $modx->config['show_meta'] != '0')){ + $output .= +' +var $mm_hideTabs_tabElement = $j("#'.prepareTabId($tab).'"); + +//If the element exists +if ($mm_hideTabs_tabElement.length > 0){ + //Hide the tab element + $mm_hideTabs_tabElement.hide(); + //Hide the tab link + $j($mm_hideTabs_tabElement.get(0).tabPage.tab).hide(); +} +'; } - - $output .= "// -------------- mm_hideTabs :: End ------------- \n"; - - $e->output($output . "\n"); } + + $output .= +' +//All tabs +var $mm_hideTabs_allTabs = $j(); + +for (var i = 0; i < tpSettings.pages.length - 1; i++){ + $mm_hideTabs_allTabs = $mm_hideTabs_allTabs.add(tpSettings.pages[i].tab); +} + +//If the active tab is hidden +if ($j(tpSettings.pages[tpSettings.getSelectedIndex()].tab).is(":hidden")){ + //Activate the first visible tab + $mm_hideTabs_allTabs.filter(":visible").eq(0).trigger("click"); +} +'; + + $output .= "//---------- mm_hideTabs :: End -----\n"; + + $e->output($output); } } ?> \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/index.html b/assets/plugins/managermanager/widgets/mm_minimizablesections/index.html old mode 100644 new mode 100755 similarity index 100% rename from assets/plugins/tinymce/lang/index.html rename to assets/plugins/managermanager/widgets/mm_minimizablesections/index.html diff --git a/assets/plugins/managermanager/widgets/mm_minimizablesections/minimizablesections.css b/assets/plugins/managermanager/widgets/mm_minimizablesections/minimizablesections.css new file mode 100755 index 0000000000..088ec85329 --- /dev/null +++ b/assets/plugins/managermanager/widgets/mm_minimizablesections/minimizablesections.css @@ -0,0 +1,21 @@ +.minimizable { + cursor: pointer; + position: relative; +} +.minimizable:after { + content: ""; + position: absolute; + right: 1em; + border: 0.6em solid; + border-right-color: transparent; + border-left-color: transparent; + border-top-color: transparent; + border-bottom-color: initial; + top: 50%; + margin-top: -0.8em; +} +.minimizable.minimized:after { + border-top-color: initial; + border-bottom-color: transparent; + margin-top: -0.3em; +} diff --git a/assets/plugins/managermanager/widgets/mm_minimizablesections/mm_minimizablesections.php b/assets/plugins/managermanager/widgets/mm_minimizablesections/mm_minimizablesections.php new file mode 100755 index 0000000000..e2a63b09e0 --- /dev/null +++ b/assets/plugins/managermanager/widgets/mm_minimizablesections/mm_minimizablesections.php @@ -0,0 +1,69 @@ + + * + * @copyright 2015 + */ + +function prepareSection($section) { + switch ($section) { + case 'access': + return "#sectionAccessHeader"; + break; + case '*': + return ".sectionHeader"; + break; + default: + $section = prepareSectionId($section); + return "#{$section}_header"; + break; + } +} + +function mm_minimizablesections($sections, $roles = '', $templates = '',$minimized = '') { + if (!useThisRule($roles, $templates)){return;} + + global $modx; + $e = &$modx->Event; + $site = $modx->config['site_url']; + $widgetDir = $site.'assets/plugins/managermanager/widgets/mm_minimizablesections/'; + + $output=''; + if ($e->name == 'OnDocFormPrerender') { + $output .= includeJsCss($widgetDir.'minimizablesections.css', 'html'); + + $e->output($output); + } else if ($e->name == 'OnDocFormRender') { + $sections = makeArray($sections); + $minimized = makeArray($minimized); + + $sections = array_map("prepareSection",$sections); + $minimized = array_map("prepareSection",$minimized); + + $output .= "//---------- mm_minimizablesections :: Begin -----\n"; + $output .= '$j("'.implode(",",$sections).'","#documentPane").addClass("minimizable").on("click",function(){ + var _t = $j(this); + _t.next().slideToggle(400,function(){_t.toggleClass("minimized");}) + }); + $j(".minimizable").filter("'.implode(",",$minimized).'").addClass("minimized").next().hide(); + '; + + $output .= "//---------- mm_minimizablesections :: End -----\n"; + + $e->output($output); + } +} + +?> \ No newline at end of file diff --git a/manager/media/calendar/img/index.html b/assets/plugins/managermanager/widgets/mm_movecategorytotab/index.html old mode 100755 new mode 100644 similarity index 100% rename from manager/media/calendar/img/index.html rename to assets/plugins/managermanager/widgets/mm_movecategorytotab/index.html diff --git a/assets/plugins/managermanager/widgets/mm_movecategorytotab/mm_movecategorytotab.php b/assets/plugins/managermanager/widgets/mm_movecategorytotab/mm_movecategorytotab.php new file mode 100644 index 0000000000..31268eb140 --- /dev/null +++ b/assets/plugins/managermanager/widgets/mm_movecategorytotab/mm_movecategorytotab.php @@ -0,0 +1,40 @@ +Event; + $res = $modx->db->select("name", $modx->getFullTableName('site_tmplvars'), "category='" . $categoryId ."'"); + $fieldsArr = array(); + while( $row = $modx->db->getRow( $res ) ) { + $fieldsArr[] = $row['name']; + } + $fields = implode(",", $fieldsArr); + + if ($e->name == 'OnDocFormRender' && useThisRule($roles, $templates)){ + $output = "//---------- mm_moveFieldsToTab :: Begin -----\n"; + + $output .= '$j.ddMM.moveFields("'.$fields.'", "'.prepareTabId($tabId).'");'."\n"; + + $output .= "//---------- mm_moveFieldsToTab :: End -----\n"; + + $e->output($output); + } +} +?> \ No newline at end of file diff --git a/assets/plugins/managermanager/widgets/mm_renamefield/mm_renamefield.php b/assets/plugins/managermanager/widgets/mm_renamefield/mm_renamefield.php old mode 100755 new mode 100644 index 120c53924a..e1b7725331 --- a/assets/plugins/managermanager/widgets/mm_renamefield/mm_renamefield.php +++ b/assets/plugins/managermanager/widgets/mm_renamefield/mm_renamefield.php @@ -43,10 +43,10 @@ function mm_renameField($fields, $newlabel, $roles = '', $templates = '', $newhe $element = '$j("select[name*=\'metatags\']").siblings("span.warning")'; break; - case 'hidemenu': - case 'show_in_menu': - $element = '$j("input[name=\'hidemenucheck\']").siblings("span.warning")'; - break; + //case 'hidemenu': + //case 'show_in_menu': + // $element = '$j("input[name=\'hidemenucheck\']").siblings("span.warning")'; + //break; case 'which_editor': $element = '$j("#which_editor").prev("span.warning")'; @@ -56,9 +56,9 @@ function mm_renameField($fields, $newlabel, $roles = '', $templates = '', $newhe $element = '$j("#content_header")'; break; - case 'menuindex': - $element = '$j("input[name=\'menuindex\']").parents("table:first").parents("td:first").prev("td").find("span.warning")'; - break; + //case 'menuindex': + // $element = '$j("input[name=\'menuindex\']").parents("table:first").parents("td:first").prev("td").find("span.warning")'; + //break; // Ones that follow the regular pattern default: diff --git a/assets/plugins/managermanager/widgets/showimagetvs/showimagetvs.php b/assets/plugins/managermanager/widgets/showimagetvs/showimagetvs.php old mode 100755 new mode 100644 diff --git a/assets/plugins/qm/css/ie7.css b/assets/plugins/qm/css/ie7.css deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/assets/plugins/qm/css/style.css b/assets/plugins/qm/css/style.css index b08c7c7135..9493d44f35 100755 --- a/assets/plugins/qm/css/style.css +++ b/assets/plugins/qm/css/style.css @@ -174,7 +174,7 @@ position: fixed; width: 100%; line-height:1; - z-index: 9999; + z-index: 2147483647; background: #657587 url(images/tinylogo.png) no-repeat -2px 3px; text-align: left; opacity:0.5; diff --git a/assets/plugins/qm/mcc.class.php b/assets/plugins/qm/mcc.class.php index a59765f77c..f7b0f7bc96 100755 --- a/assets/plugins/qm/mcc.class.php +++ b/assets/plugins/qm/mcc.class.php @@ -16,7 +16,7 @@ class Mcc { var $fields; //_______________________________________________________ - function Mcc() { + function __construct() { $this->tabs = array( 'general' => array('index'=>1,'id'=>'tabGeneral'), 'settings' => array('index'=>2,'id'=>'tabSettings'), diff --git a/assets/plugins/qm/qm.inc.php b/assets/plugins/qm/qm.inc.php index 2d0aec097f..f83410e4e9 100755 --- a/assets/plugins/qm/qm.inc.php +++ b/assets/plugins/qm/qm.inc.php @@ -13,34 +13,34 @@ class Qm { var $modx; //_______________________________________________________ - function Qm(&$modx, $jqpath='', $loadmanagerjq='', $loadfrontendjq='', $noconflictjq='', $loadtb='', $tbwidth='', $tbheight='', $hidefields='', $hidetabs='', $hidesections='', $addbutton='', $tpltype='', $tplid='', $custombutton='', $managerbutton='', $logout='', $autohide='', $editbuttons='', $editbclass='', $newbuttons='', $newbclass='', $tvbuttons='', $tvbclass='') { + function __construct(&$modx, $jqpath='', $loadmanagerjq='', $loadfrontendjq='', $noconflictjq='', $loadtb='', $tbwidth='', $tbheight='', $hidefields='', $hidetabs='', $hidesections='', $addbutton='', $tpltype='', $tplid='', $custombutton='', $managerbutton='', $logout='', $autohide='', $editbuttons='', $editbclass='', $newbuttons='', $newbclass='', $tvbuttons='', $tvbclass='') { $this->modx = $modx; // Get plugin parameters $this->jqpath = $jqpath; $this->loadmanagerjq = $loadmanagerjq; $this->loadfrontendjq = $loadfrontendjq; - $this->noconflictjq = $noconflictjq; + $this->noconflictjq = $noconflictjq; $this->loadtb = $loadtb; $this->tbwidth = $tbwidth; $this->tbheight = $tbheight; $this->usemm = null; - $this->hidefields = $hidefields; + $this->hidefields = $hidefields; $this->hidetabs = $hidetabs; $this->hidesections = $hidesections; - $this->addbutton = $addbutton; - $this->tpltype = $tpltype; + $this->addbutton = $addbutton; + $this->tpltype = $tpltype; $this->tplid = $tplid; $this->custombutton = $custombutton; $this->managerbutton = $managerbutton; $this->logout = $logout; - $this->autohide = $autohide; + $this->autohide = $autohide; $this->editbuttons = $editbuttons; $this->editbclass = $editbclass; $this->newbuttons = $newbuttons; $this->newbclass = $newbclass; $this->tvbuttons = $tvbuttons; - $this->tvbclass = $tvbclass; + $this->tvbclass = $tvbclass; // Includes include_once($this->modx->config['base_path'].'assets/plugins/qm/mcc.class.php'); @@ -104,7 +104,7 @@ function Run() { // Different doc to be refreshed than the one we are editing? if (isset($_POST['qmrefresh'])) { $id = intval($_POST['qmrefresh']); - } + } // Redirect to clearer page which refreshes parent window and closes modal box frame if ($this->modx->config['friendly_urls'] == 1){ @@ -133,17 +133,16 @@ function Run() { $url = $this->modx->makeUrl($docID, '', '', 'full'); $output = ' - - - - - - - - - - '; - + + + + + + + + + +'; break; } @@ -231,7 +230,6 @@ function Run() { - '; @@ -480,7 +478,6 @@ function Run() { $css = ' - '; // Autohide toolbar? Default: true @@ -493,6 +490,7 @@ function Run() { } // Insert jQuery and ColorBox in head if needed + $head = ''; if ($this->loadfrontendjq == 'true') $head .= ''; if ($this->loadtb == 'true') { $head .= ' @@ -545,7 +543,33 @@ function Run() { $'.$jvar.'("body").css({"overflow":"hidden"}); $'.$jvar.'("html").css({"overflow":"hidden"}); $'.$jvar.'("#qmEditor").css({"display":"none"}); - }); + }); + + $'.$jvar.'(document).bind("cbox_cleanup", function(){ + //window is closing and cannot be stopped so clear dirty settings for all fields and tinyMCE + var foundit; + + //loop through the iframes, checking their scr + iframearray = document.getElementsByTagName(\'iframe\'); + + for(var i=0; i < iframearray.length; i++) { + //if the matching colorbox src, we have found the correct iframe + haystack=iframearray[i].src; + needle="'.$this->modx->config["site_url"]."manager/index.php?a=27".'"; + if(haystack.substr(0, needle.length) == needle){ + foundit=iframearray[i]; //assign it to the foundit variable created earlier + break; //no need to keep looking + } + } + if (foundit) { + foundit.contentWindow.window.documentDirty=false; //clear document dirty for fields + //loop through tinyMCE editors and clear any dirty flags + if (typeof(foundit.contentWindow.window.tinyMCE)!==\'undefined\') { + var i, t = foundit.contentWindow.window.tinyMCE.editors;for (i in t){ + if (t.hasOwnProperty(i)){ t[i].isNotDirty=true }} + } + } + }); $'.$jvar.'(document).bind("cbox_closed", function(){ $'.$jvar.'("body").css({"overflow":"auto"}); @@ -590,6 +614,23 @@ function getCookie(cookieName) '; + + $head .= " + + "; // Insert QM+ css in head $head .= $css; @@ -920,14 +961,10 @@ function getDefaultTvCaption($name) { //_____________________________________________________ function checkLocked() { - $activeUsersTable = $this->modx->getFullTableName('active_users'); $pageId = $this->modx->documentIdentifier; $locked = TRUE; - $userId = $_SESSION['mgrInternalKey']; - $result = $this->modx->db->select('count(internalKey)', $activeUsersTable, "(action = 27) AND internalKey != '{$userId}' AND `id` = '{$pageId}'"); - - if ($this->modx->db->getValue($result) === 0) { + if ($this->modx->elementIsLocked(7, $pageId) === NULL) { $locked = FALSE; } @@ -938,29 +975,17 @@ function checkLocked() { //_____________________________________________________ function setLocked($locked) { - $activeUsersTable = $this->modx->getFullTableName('active_users'); $pageId = $this->modx->documentIdentifier; - $userId = $_SESSION['mgrInternalKey']; // Set document locked if ($locked == 1) { - $fields = array ( - 'id' => $pageId, - 'action' => 27 - ); + $this->modx->lockElement(7, $pageId); } // Set document unlocked else { - $fields = array ( - 'id' => 'NULL', - 'action' => 2 - ); + $this->modx->unlockElement(7, $pageId); } - - $where = "internalKey = '{$userId}'"; - - $result = $this->modx->db->update($fields, $activeUsersTable, $where); } // Save TV @@ -1034,4 +1059,3 @@ function saveTv($tvName) { } } -?> \ No newline at end of file diff --git a/assets/plugins/tinymce/functions.php b/assets/plugins/tinymce/functions.php deleted file mode 100644 index 33a0fdbe79..0000000000 --- a/assets/plugins/tinymce/functions.php +++ /dev/null @@ -1,491 +0,0 @@ -params = $modx->event->params; - $this->params['mce_path'] = MODX_BASE_PATH . 'assets/plugins/tinymce/'; - $this->params['mce_url'] = MODX_BASE_URL . 'assets/plugins/tinymce/'; - } - - function get_lang($lang) - { - switch(strtolower($lang)) - { - case 'bulgarian' : $lc = 'bg'; break; - case 'czech' : $lc = 'cs'; break; - case 'danish' : $lc = 'da'; break; - case 'german' : $lc = 'de'; break; - case 'spanish-utf8' : - case 'spanish' : $lc = 'es'; break; - case 'persian' : $lc = 'fa'; break; - case 'finnish' : $lc = 'fi'; break; - case 'francais' : - case 'francais-utf8' : $lc = 'fr'; break; - case 'hebrew' : $lc = 'he'; break; - case 'italian' : $lc = 'it'; break; - case 'japanese-utf8' : - case 'japanese-euc' : $lc = 'ja'; break; - case 'nederlands-utf8' : - case 'nederlands' : $lc = 'nl'; break; - case 'norsk' : $lc = 'nn'; break; - case 'polish-utf8' : - case 'polish' : $lc = 'pl'; break; - case 'portuguese-br' : - case 'portuguese' : $lc = 'pt'; break; - case 'russian' : - case 'russian-utf8' : $lc = 'ru'; break; - case 'svenska' : - case 'svenska-utf8' : $lc = 'sv'; break; - case 'chinese' : - case 'simple_chinese-gb2312' : $lc = 'zh'; break; - default : $lc = 'en'; - } - return $lc; - } - - function get_skin_names() - { - global $modx, $_lang, $usersettings, $settings; - $params = $this->params; - $mce_path = $params['mce_path']; - - $skin_dir = "{$mce_path}tiny_mce/themes/advanced/skins/"; - switch($modx->manager->action) - { - case '11': - case '12': - case '119': - $selected = $this->selected(empty($params['mce_editor_skin'])); - $option[] = '"; - break; - } - foreach(glob("{$skin_dir}*",GLOB_ONLYDIR) as $dir) - { - $dir = str_replace('\\','/',$dir); - $skin_name = substr($dir,strrpos($dir,'/')+1); - $skins[$skin_name][] = 'default'; - $styles = glob("{$dir}/ui_*.css"); - if(is_array($styles) && 0 < count($styles)) - { - foreach($styles as $css) - { - $skin_variant = substr($css,strrpos($css,'_')+1); - $skin_variant = substr($skin_variant,0,strrpos($skin_variant,'.')); - $skins[$skin_name][] = $skin_variant; - } - } - foreach($skins as $k=>$o); - { - $v = ''; - foreach($o as $v) - { - if($v==='default') $value = $k; - else $value = "{$k}:{$v}"; - $selected = $this->selected($value == $params['mce_editor_skin']); - $option[] = '"; - } - } - } - return implode("\n",$option); - } - - function selected($cond = false) - { - if($cond !== false) return ' selected="selected"'; - else return ''; - } - - function checked($cond = false) - { - if($cond !== false) return ' checked="checked"'; - else return ''; - } - - function get_mce_settings() - { - global $modx, $_lang, $usersettings, $settings; - $params = & $this->params; - $mce_path = $params['mce_path']; - - switch ($modx->manager->action) - { - case 11: - $mce_settings = array(); - break; - case 12: - case 119: - $mce_settings = $usersettings; - if(!empty($usersettings['tinymce_editor_theme'])) - { - $usersettings['tinymce_editor_theme'] = $settings['tinymce_editor_theme']; - } - break; - case 17: - $mce_settings = $settings; - break; - default: - $mce_settings = $settings; - break; - } - $params['theme'] = $mce_settings['tinymce_editor_theme']; - $params['mce_editor_skin'] = $mce_settings['mce_editor_skin']; - $params['mce_entermode'] = $mce_settings['mce_entermode']; - $params['mce_element_format'] = $mce_settings['mce_element_format']; - $params['mce_schema'] = $mce_settings['mce_schema']; - $params['css_selectors'] = $mce_settings['tinymce_css_selectors']; - $params['custom_plugins'] = $mce_settings['tinymce_custom_plugins']; - $params['custom_buttons1'] = $mce_settings['tinymce_custom_buttons1']; - $params['custom_buttons2'] = $mce_settings['tinymce_custom_buttons2']; - $params['custom_buttons3'] = $mce_settings['tinymce_custom_buttons3']; - $params['custom_buttons4'] = $mce_settings['tinymce_custom_buttons4']; - $params['mce_template_docs'] = $mce_settings['mce_template_docs']; - $params['mce_template_chunks']= $mce_settings['mce_template_chunks']; - - // fallback to english - include_once("{$mce_path}lang/english.inc.php"); - // language settings - if (file_exists("{$mce_path}lang/".$modx->config['manager_language'].'.inc.php')) - { - include_once("{$mce_path}lang/".$modx->config['manager_language'].'.inc.php'); - } - - include_once("{$mce_path}settings/default_params.php"); - $ph += $_lang; - - switch($modx->manager->action) - { - case '11'; - case '12'; - case '119'; - $selected = empty($params['theme']) ? '"selected"':''; - $theme_options .= '\n"; - } - $themes['simple'] = $_lang['mce_theme_simple']; - $themes['editor'] = $_lang['mce_theme_editor']; - $themes['full'] = $_lang['mce_theme_full']; - $themes['creative'] = $_lang['mce_theme_creative']; - $themes['logic'] = $_lang['mce_theme_logic']; - $themes['advanced'] = $_lang['mce_theme_advanced']; - $themes['legacy'] = (!empty($_lang['mce_theme_legacy'])) ? $_lang['mce_theme_legacy'] : 'legacy'; - $themes['custom'] = $_lang['mce_theme_custom']; - foreach ($themes as $key => $value) - { - $selected = $this->selected($key == $params['theme']); - $key = '"' . $key . '"'; - $theme_options .= "\n"; - } - $ph['display'] = ($_SESSION['browser']==='modern') ? 'table-row' : 'block'; - $ph['display'] = $modx->config['use_editor']==1 ? $ph['display']: 'none'; - - $ph['theme_options'] = $theme_options; - $ph['skin_options'] = $this->get_skin_names(); - - $ph['entermode_options'] = '
                      '; - $ph['entermode_options'] .= ''; - switch($modx->manager->action) - { - case '11': - case '12': - case '119': - $ph['entermode_options'] .= '
                      '; - $ph['entermode_options'] .= '
                      '; - break; - } - - $ph['element_format_options'] = '
                      '; - $ph['element_format_options'] .= ''; - switch($modx->manager->action) - { - case '11': - case '12': - case '119': - $ph['element_format_options'] .= '
                      '; - $ph['element_format_options'] .= '
                      '; - break; - } - - $ph['schema_options'] = '
                      '; - $ph['schema_options'] .= ''; - switch($modx->manager->action) - { - case '11': - case '12': - case '119': - $ph['schema_options'] .= '
                      '; - $ph['schema_options'] .= '
                      '; - break; - } - - $gsettings = file_get_contents("{$mce_path}inc/gsettings.html.inc"); - - foreach($ph as $name => $value) - { - $name = '[+' . $name . '+]'; - $gsettings = str_replace($name, $value, $gsettings); - } - return $gsettings; - } - - function get_mce_script() - { - global $modx, $_lang; - $params = & $this->params; - $mce_path = $params['mce_path']; - $mce_url = $params['mce_url']; - - $params['css_selectors'] = $modx->config['tinymce_css_selectors']; - $params['use_browser'] = $modx->config['use_browser']; - $params['editor_css_path'] = $modx->config['editor_css_path']; - - if($modx->isBackend() || (intval($_GET['quickmanagertv']) == 1 && isset($_SESSION['mgrValidated']))) - { - $params['theme'] = $modx->config['tinymce_editor_theme']; - $params['mce_editor_skin'] = $modx->config['mce_editor_skin']; - $params['mce_entermode'] = $modx->config['mce_entermode']; - $params['language'] = $this->get_lang($modx->config['manager_language']); - $params['frontend'] = false; - $params['custom_plugins'] = $modx->config['tinymce_custom_plugins']; - $params['custom_buttons1'] = $modx->config['tinymce_custom_buttons1']; - $params['custom_buttons2'] = $modx->config['tinymce_custom_buttons2']; - $params['custom_buttons3'] = $modx->config['tinymce_custom_buttons3']; - $params['custom_buttons4'] = $modx->config['tinymce_custom_buttons4']; - $params['toolbar_align'] = $modx->config['manager_direction']==='rtl' ? 'rtl' : 'ltr'; - $params['webuser'] = null; - } - else - { - $frontend_language = isset($modx->config['fe_editor_lang']) ? $modx->config['fe_editor_lang']:''; - $webuser = (isset($modx->config['rb_webuser']) ? $modx->config['rb_webuser'] : null); - - $params['theme'] = $webtheme; - $params['webuser'] = $webuser; - $params['language'] = $this->get_lang($frontend_language); - $params['frontend'] = true; - $params['custom_plugins'] = $webPlugins; - $params['custom_buttons1'] = $webButtons1; - $params['custom_buttons2'] = $webButtons2; - $params['custom_buttons3'] = $webButtons3; - $params['custom_buttons4'] = $webButtons4; - $params['toolbar_align'] = $webAlign; - - } - - $str = ''; - - $theme = $params['theme']; - switch($theme) - { - case 'custom': - $plugins = $params['custom_plugins']; - $buttons1 = $params['custom_buttons1']; - $buttons2 = $params['custom_buttons2']; - $buttons3 = $params['custom_buttons3']; - $buttons4 = $params['custom_buttons4']; - break; - case 'simple': - case 'creative': - case 'logic': - case 'legacy': - case 'advanced': - case 'full': - case 'default': - case 'editor': - default: - include_once("{$mce_path}settings/toolbar.settings.inc.php"); - if(empty($theme) || $theme==='editor') $theme = 'default'; - $plugins = $set[$theme]['p']; - $buttons1 = $set[$theme]['b1']; - $buttons2 = $set[$theme]['b2']; - $buttons3 = $set[$theme]['b3']; - $buttons4 = $set[$theme]['b4']; - if(is_dir("{$mce_path}tiny_mce/plugins/quickupload")) - { - $plugins = 'quickupload,'. $plugins; - $buttons2 = 'quickupload,'. $buttons2; - } - if($modx->manager->action=='4' || $modx->manager->action=='27') - { - global $content; - if($content['template']==='0') - { - $plugins = str_replace('autosave', '', $plugins); - if(strpos($plugins,'fullpage')===false) $plugins .= ',fullpage'; - if(strpos($buttons1.$buttons2.$buttons3.$buttons4, 'fullpage')===false) - { - if(!empty($buttons2)) $buttons2 = 'fullpage,' . $buttons2; - else $buttons1 .= ',fullpage'; - } - } - if(empty($modx->config['mce_template_docs']) && empty($modx->config['mce_template_chunks'])) - { - $plugins = str_replace('template', '', $plugins); - $plugins = str_replace(',,', ',', $plugins); - $buttons1 = str_replace(',template', '', $buttons1); - $buttons2 = str_replace(',template', '', $buttons2); - $buttons3 = str_replace(',template', '', $buttons3); - $buttons4 = str_replace(',template', '', $buttons4); - } - } - } - - $str .= $this->build_mce_init($plugins,$buttons1,$buttons2,$buttons3,$buttons4) . "\n"; - $str .= $this->build_tiny_callback(); - if($params['link_list']=='enabled') - { - $str .= '' . "\n"; - } - - - return $str; - } - - function build_mce_init($plugins,$buttons1,$buttons2,$buttons3,$buttons4) - { - global $modx; - $params = $this->params; - $mce_path = $params['mce_path']; - $mce_url = $params['mce_url']; - - $ph['refresh_seed'] = filesize("{$mce_path}tiny_mce/tiny_mce.js"); - $ph['mce_url'] = $mce_url; - $ph['elmList'] = implode(',', $params['elements']); - $ph['width'] = (!empty($params['width'])) ? $params['width'] : '100%'; - $ph['height'] = (!empty($params['height'])) ? $params['height'] : '300'; - $ph['language'] = (empty($params['language'])) ? 'en' : $params['language']; - if(strpos($modx->config['mce_editor_skin'],':')!==false) - { - list($skin,$skin_variant) = explode(':',$modx->config['mce_editor_skin']); - } - else $skin = $modx->config['mce_editor_skin']; - $ph['skin'] = $skin; - if($skin_variant) $ph['skin_variant'] = $skin_variant; - else $ph['skin_variant'] = ''; - - $ph['document_base_url'] = MODX_SITE_URL; - switch($params['mce_path_options']) - { - case 'Site config': - case 'siteconfig': - if($modx->config['strip_image_paths']==1) - { - $ph['relative_urls'] = 'true'; - $ph['remove_script_host'] = 'true'; - $ph['convert_urls'] = 'true'; - } - else - { - $ph['relative_urls'] = 'false'; - $ph['remove_script_host'] = 'false'; - $ph['convert_urls'] = 'true'; - } - break; - case 'Root relative': - case 'docrelative': - $ph['relative_urls'] = 'true'; - $ph['remove_script_host'] = 'true'; - $ph['convert_urls'] = 'true'; - break; - case 'Absolute path': - case 'rootrelative': - $ph['relative_urls'] = 'false'; - $ph['remove_script_host'] = 'true'; - $ph['convert_urls'] = 'true'; - break; - case 'URL': - case 'fullpathurl': - $ph['relative_urls'] = 'false'; - $ph['remove_script_host'] = 'false'; - $ph['convert_urls'] = 'true'; - break; - case 'No convert': - default: - $ph['relative_urls'] = 'true'; - $ph['remove_script_host'] = 'true'; - $ph['convert_urls'] = 'false'; - } - - if($modx->config['mce_entermode']!=='br' && $modx->manager->action !== '78') - { - $ph['forced_root_block'] = 'p'; - $ph['force_p_newlines'] = 'true'; - $ph['force_br_newlines'] = 'false'; - } - else - { - $ph['forced_root_block'] = ''; - $ph['force_p_newlines'] = 'false'; - $ph['force_br_newlines'] = 'true'; - } - $ph['element_format'] = $modx->config['mce_element_format']; - $ph['schema'] = $modx->config['mce_schema']; - - $ph['toolbar_align'] = $params['toolbar_align']; - $ph['file_browser_callback'] = 'mceOpenServerBrowser'; - $ph['plugins'] = $plugins; - $ph['buttons1'] = $buttons1; - $ph['buttons2'] = $buttons2; - $ph['buttons3'] = $buttons3; - $ph['buttons4'] = $buttons4; - $ph['mce_formats'] = (empty($params['mce_formats'])) ? 'p,h1,h2,h3,h4,h5,h6,div,blockquote,code,pre,address' : $params['mce_formats']; - $ph['css_selectors'] = (empty($params['css_selectors'])) ? $modx->config['tinymce_css_selectors'] : $params['css_selectors']; - $ph['disabledButtons'] = isset($params['disabledButtons'])?$params['disabledButtons']:''; - $ph['mce_resizing'] = $params['mce_resizing']; - $ph['date_format'] = $modx->toDateFormat(null, 'formatOnly'); - $ph['time_format'] = '%H:%M:%S'; - $ph['entity_encoding'] = $params['entity_encoding']; - $ph['onchange_callback'] = 'false'; - $ph['terminate'] = (!empty($params['customparams'])) ? ',' : ''; - $ph['customparams'] = rtrim($params['customparams'], ','); - $content_css[] = "{$mce_url}style/content.css"; - if (preg_match('@^/@', $params['editor_css_path'])) - { - $content_css[] = $params['editor_css_path']; - } - elseif (preg_match('@^http://@', $params['editor_css_path'])) - { - $content_css[] = $params['editor_css_path']; - } - elseif ($params['editor_css_path']!=='') - { - $content_css[] = MODX_SITE_URL . $params['editor_css_path']; - } - $ph['content_css'] = implode(',', $content_css); - $ph['link_list'] = ($params['link_list']=='enabled') ? "'{$mce_url}js/tinymce.linklist.php'" : 'false'; - - $ph['tpl_list'] = "{$mce_url}js/get_template.php"; - - $mce_init = file_get_contents("{$mce_path}js/mce_init.js.inc"); - - foreach($ph as $name => $value) - { - $name = '[+' . $name . '+]'; - $mce_init = str_replace($name, $value, $mce_init); - } - return $mce_init; - } - - function build_tiny_callback() - { - global $modx; - $params = $this->params; - $mce_path = $params['mce_path']; - $mce_url = $params['mce_url']; - - $ph['cmsurl'] = MODX_MANAGER_URL . 'media/browser/mcpuk/browser.php?Connector='; - $ph['cmsurl'] .= MODX_MANAGER_URL . 'media/browser/mcpuk/connectors/php/connector.php&manager_url='; - $ph['cmsurl'] .= MODX_MANAGER_URL . "&editor=tinymce&editorpath={$mce_url}"; - $modx_fb = file_get_contents("{$mce_path}js/modx_fb.js.inc"); - - foreach($ph as $name => $value) - { - $name = '[+' . $name . '+]'; - $modx_fb = str_replace($name, $value, $modx_fb); - } - return $modx_fb; - } -} \ No newline at end of file diff --git a/assets/plugins/tinymce/inc/gsettings.html.inc b/assets/plugins/tinymce/inc/gsettings.html.inc deleted file mode 100644 index b886f47322..0000000000 --- a/assets/plugins/tinymce/inc/gsettings.html.inc +++ /dev/null @@ -1,86 +0,0 @@ - -
                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

                      [+mce_settings+]

                      [+mce_editor_theme_title+] - -
                      [+mce_editor_theme_message+]
                      -
                      [+mce_editor_skin_title+] - -
                      [+mce_editor_skin_message+]
                      -
                      [+mce_tpl_title+] -
                      -
                      -
                      [+mce_tpl_msg+]
                      -
                      [+mce_editor_entermode_title+] - [+entermode_options+] -
                      [+mce_editor_entermode_message+]
                      -
                      [+mce_element_format_title+] - [+element_format_options+] -
                      [+mce_element_format_message+]
                      -
                      [+mce_schema_title+] - [+schema_options+] -
                      [+mce_schema_message+]
                      -
                      [+mce_editor_custom_plugins_title+] - -
                      [+mce_editor_custom_plugins_message+]
                      -
                      [+mce_editor_custom_buttons_title+] - Row 1: -
                      [+mce_toolbar1_msg+]
                      - Row 2: -
                      [+mce_toolbar2_msg+]
                      - Row 3: - Row 4: -
                      [+mce_editor_custom_buttons_message+]
                      -
                      [+mce_editor_css_selectors_title+] -
                      [+mce_editor_css_selectors_message+]
                      -
                      \ No newline at end of file diff --git a/assets/plugins/tinymce/js/fbconfig.js b/assets/plugins/tinymce/js/fbconfig.js deleted file mode 100644 index 42b93b3d84..0000000000 --- a/assets/plugins/tinymce/js/fbconfig.js +++ /dev/null @@ -1,33 +0,0 @@ -document.write(''); - -var FileBrowserDialogue = { - init : function () { - // Here goes your code for setting your custom things onLoad. - }, - selectURL : function (url) { - var win = tinyMCEPopup.getWindowArg("window"); - - // insert information now - win.document.getElementById(tinyMCEPopup.getWindowArg("input")).value = url; - - if (typeof(win.ImageDialog) != 'undefined') { - // for image browsers: update image dimensions - if (win.ImageDialog.getImageData) { - win.ImageDialog.getImageData(); - } - // show preview image - if (win.ImageDialog.showPreviewImage) { - win.ImageDialog.showPreviewImage(url); - } - } - - // close popup window - tinyMCEPopup.close(); - } -} - -tinyMCEPopup.onInit.add(FileBrowserDialogue.init, FileBrowserDialogue); - -function SetUrl(fileUrl){ - top.FileBrowserDialogue.selectURL(fileUrl); -} \ No newline at end of file diff --git a/assets/plugins/tinymce/js/get_template.php b/assets/plugins/tinymce/js/get_template.php deleted file mode 100644 index 911eee2cf5..0000000000 --- a/assets/plugins/tinymce/js/get_template.php +++ /dev/null @@ -1,123 +0,0 @@ -db->connect(); - -/* only display if manager user is logged in */ -if ($modx->getLoginUserType() !== 'manager') -{ - // Make output a real JavaScript file! - header('Content-type: application/x-javascript'); - header('pragma: no-cache'); - header('expires: 0'); - - echo 'var mceTemplateList = Array();'; - exit(); -} - -$modx->getSettings(); - -$ids = $modx->config['mce_template_docs']; -$chunks = $modx->config['mce_template_chunks']; - -$output = false; - -if(isset($_GET['docid']) && preg_match('@^[0-9]+$@',$_GET['docid'])) -{ - $doc = $modx->getDocument($_GET['docid']); - if($doc) $output = $doc['content']; -} -elseif(isset($_GET['chunk']) && preg_match('@^[0-9]+$@',$_GET['chunk'])) -{ - $tbl_site_htmlsnippets = $modx->getFullTableName('site_htmlsnippets'); - $cid = $_GET['chunk']; - $rs = $modx->db->select('snippet', $tbl_site_htmlsnippets, "`id`='{$cid}'"); - $content = $modx->db->getValue($rs); - if($content) $output = $content; -} -else -{ - $list = array(); - $tpl = "['[+title+]', '[+site_url+]assets/plugins/tinymce/js/get_template.php?[+target+]', '[+description+]']"; - $ph['site_url'] = MODX_SITE_URL; - - if(isset($ids) && !empty($ids)) - { - $docs = $modx->getDocuments($ids, 1, 0, $fields= 'id,pagetitle,menutitle,description,content'); - foreach($docs as $i=>$a) - { - $ph['title'] = ($docs[$i]['menutitle']!=='') ? $docs[$i]['menutitle'] : $docs[$i]['pagetitle']; - $ph['target'] = 'docid=' . $docs[$i]['id']; - $ph['description'] = $docs[$i]['description']; - $list[] = $modx->parseText($tpl,$ph); - } - } - - if(isset($chunks) && !empty($chunks)) - { - $tbl_site_htmlsnippets = $modx->getFullTableName('site_htmlsnippets'); - if(strpos($chunks,',')!==false) - { - $chunks = array_filter(array_map('trim', explode(',', $chunks))); - $chunks = $modx->db->escape($chunks); - $chunks = implode("','", $chunks); - $where = "`name` IN ('{$chunks}')"; - $orderby = "FIELD(name, '{$chunks}')"; - } - else - { - $where = "`name`='{$chunks}'"; - $orderby = ''; - } - - $rs = $modx->db->select('id,name,description', $tbl_site_htmlsnippets, $where, $orderby); - - while($row = $modx->db->getRow($rs)) - { - $ph['title'] = $row['name']; - $ph['target'] = 'chunk=' . $row['id']; - $ph['description'] = $row['description']; - $list[] = $modx->parseText($tpl,$ph); - } - } - - if(0$v) { - $k = "[+{$k}+]"; - if(strpos($tpl,$k)!==false) - $tpl = str_replace($k,$v,$tpl); - } - return $tpl; -} \ No newline at end of file diff --git a/assets/plugins/tinymce/js/mce_init.js.inc b/assets/plugins/tinymce/js/mce_init.js.inc deleted file mode 100644 index f7d4d678c2..0000000000 --- a/assets/plugins/tinymce/js/mce_init.js.inc +++ /dev/null @@ -1,84 +0,0 @@ - - - - - diff --git a/assets/plugins/tinymce/js/modx_fb.js.inc b/assets/plugins/tinymce/js/modx_fb.js.inc deleted file mode 100644 index 255e54021d..0000000000 --- a/assets/plugins/tinymce/js/modx_fb.js.inc +++ /dev/null @@ -1,55 +0,0 @@ - diff --git a/assets/plugins/tinymce/js/tinymce.linklist.php b/assets/plugins/tinymce/js/tinymce.linklist.php deleted file mode 100644 index 13cb2f1a07..0000000000 --- a/assets/plugins/tinymce/js/tinymce.linklist.php +++ /dev/null @@ -1,279 +0,0 @@ -tstart = $mtime[1] + $mtime[0];; -$modx->mstart = memory_get_usage(); -startCMSSession(); -$modx->db->connect(); -$modx->getSettings(); - -/* only display if manager user is logged in */ -if ($modx->getLoginUserType() !== 'manager') -{ - // Make output a real JavaScript file! - header('Content-type: application/x-javascript'); // browser will now recognize the file as a valid JS file - - // prevent browser from caching - header('pragma: no-cache'); - header('expires: 0'); // i.e. contents have already expired - - echo 'var tinyMCELinkList = new Array();'; - exit(); -} - -$cache_path = $base_path . 'assets/cache/mce_linklist.pageCache.php'; -if(file_exists($cache_path)) -{ - $output = file_get_contents($cache_path); -} -else -{ - $linklist = new LINKLIST(); - - $allpages = $linklist->getAllPages($limit,$recent); - if (!is_array($allpages) ) {die();} - - $list = array(); - - foreach($allpages as $page) - { - if (!in_array($page['template'], $templates_to_ignore) ) - { - $caption = ''; - $page['parents'] = array_reverse($page['parents']); - $breadcrumbs = array(); - $sortcrumbs = array(); - $published = $page['published']; - foreach ($page['parents'] as $parent) - { - $p = $linklist->getPage($parent); - - // Assemble what will be displayed - if($p['menutitle']) - { - $breadcrumbs[] = htmlentities($p['menutitle'],ENT_QUOTES,$charset) . " ({$page['id']})"; - } - else - { - $breadcrumbs[] = htmlentities($p['pagetitle'],ENT_QUOTES,$charset) . " ({$page['id']})"; - } - - // How will it be sorted? - if ($sortby == 'menuindex') - { - $more_sortby_types = array('menutitle','pagetitle'); - foreach ($more_sortby_types as $backup_sort_type) - { - if ( $page[$backup_sort_type] != '') - { - $sortcrumbs[] = sprintf("%010d", $p[$sortby]); - break; - } - } - } - else - { - $sortcrumbs[] = $p[$sortby]; - } - - if ($p['published'] !== '1') - { - $published = 0; - } - } - if ($mode=='tree') - { // tree mode - $bc_count = count($breadcrumbs); - if ($bc_count>1) - { - $caption = str_repeat(' ', ($bc_count-1)*3); - $caption .= $tree_styles[$tree_style-1]; - $caption .= $breadcrumbs[$bc_count-1]; - } - else - { - $caption = $breadcrumbs[0]; - } - } - else - { // breadcrumb mode - $caption = implode('>', $breadcrumbs); - } - - $keyname = implode('-', $sortcrumbs); - - // Check for duplicates - $sc_count = count($sortcrumbs)-1; - while (isset($list[$keyname])) - { - $sortcrumbs[$sc_count] += 1000000000; - $keyname = implode('-', $sortcrumbs); - } - - //$caption = $keyname; - - $output = '["' .$caption; - if ($include_page_ids) - { - $output .= ' (' . $page['id'] . ')'; - } - $output .= '", "[~' . $page['id'] . '~]"]'; - - if ($published == '1') - { - $list[$keyname] = $output; - } - } - } - - // Sort the list by it's keys - ksort($list); - - // Output the array separated by commas - $list_output = implode(", \n", $list); - - // Output as javascript - $output = "var tinyMCELinkList = new Array(\n". $list_output .");"; - file_put_contents($cache_path,$output); -} - -// Make output a real JavaScript file! -header("Content-type: text/javascript; charset=".$modx->config['modx_charset']); // browser will now recognize the file as a valid JS file - -// prevent browser from caching -header('pragma: no-cache'); -header('expires: 0'); // i.e. contents have already expired - -echo $output; - -class LINKLIST -{ - function LINKLIST() - { - } - - function getAllPages($limit=0,$recent=0,$id=0, $sort='parent', $dir='ASC', $fields='pagetitle, id, menutitle, parent, template, menuindex, published') - { - global $modx; - - // modify field names to use sc. table reference - $fields = 'sc.'.implode(',sc.',array_filter(array_map('trim', explode(',', $fields)))); - $sort = 'sc.'.implode(',sc.',array_filter(array_map('trim', explode(',', $sort)))); - - if($recent!==0 && preg_match('@^[0-9]+$@',$recent)) - { - $where_recent = time() - ($recent * 3600 * 24); - $where_recent = "AND {$where_recent} < sc.editedon"; - $fields .= ',sc.editedon'; - } - else $where_recent = ''; - - if($limit===0 || !preg_match('@^[0-9]+$@',$limit)) - { - $limit = 2000; - } - - $tblsc = $modx->getFullTableName('site_content'); - $tbldg = $modx->getFullTableName('document_groups'); - - $result = $modx->db->select( - "DISTINCT {$fields}", - "{$tblsc} AS sc LEFT JOIN {$tbldg} dg on dg.document = sc.id", - "sc.published=1 AND sc.deleted=0 {$where_recent}", - "sc.editedon DESC, {$sort} {$dir}", - $limit - ); - $resourceArray = $modx->db->makeArray($result); - $count = count($resourceArray); - for($i=0; $i<$count; $i++) - { - $p = $this->getAllParents($resourceArray[$i]['id']); - $resourceArray[$i]['parents'] = $p; - } - return $resourceArray; - } - - function getAllParents($doc_id) { - $return_array = array($doc_id); - while ($doc_id = $this->getParent($doc_id)) - { - if($doc_id===0) break; - $return_array[] = $doc_id; - } - return $return_array; - } - - function getParent($doc_id) { - $r = $this->getPage($doc_id); - return $r['parent']; - } - - function getPage($doc_id) - { - global $modx; - global $page_cache; - - // If already cached, return this instead of doing another MySQL query - if (isset($page_cache[$doc_id])) - { - return $page_cache[$doc_id]; - } - - $tblsc = $modx->getFullTableName('site_content'); - $tbldg = $modx->getFullTableName('document_groups'); - - $result = $modx->db->select( - "sc.parent, sc.menutitle, sc.pagetitle, sc.menuindex, sc.published", - "{$tblsc} sc LEFT JOIN {$tbldg} dg on dg.document = sc.id", - "sc.published=1 AND sc.deleted=0 AND sc.id='{$doc_id}'" - ); - $resourceArray = $modx->db->makeArray($result); - - // If we have got this far, it must not have been cached already, so lets do it now. - $page_cache[$doc_id] = $resourceArray[0]; - - return $resourceArray[0]; - } - -} \ No newline at end of file diff --git a/assets/plugins/tinymce/js/xconfig.js b/assets/plugins/tinymce/js/xconfig.js deleted file mode 100644 index 87ca38c7b0..0000000000 --- a/assets/plugins/tinymce/js/xconfig.js +++ /dev/null @@ -1,26 +0,0 @@ -/** -This file is used by the MODX TinyMCE plugin to pass additional parameters to TinyMCE for processing. -*/ - -var mce_valid_elements = "@[id|class|style|title|dirNapříklad řekněme, že chceme mít třídy .mono a .smallText v našem CSS souboru, můžeme je přidat zde ve tvaru:
                      \'Monospaced text=mono;Small text=smallText\'
                      Pozor na to, že poslední výraz nesmí být ukončen středníkem.'; -$_lang['mce_settings'] = 'TinyMCE nastavení'; -$_lang['mce_theme_simple'] = 'Simple'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'Advanced'; -$_lang['mce_theme_editor'] = 'MODX style'; -$_lang['mce_theme_custom'] = 'Custom'; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = 'Použít globální nastavení'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter Key Mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element Format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk Names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/english.inc.php b/assets/plugins/tinymce/lang/english.inc.php deleted file mode 100644 index 1811e9dcde..0000000000 --- a/assets/plugins/tinymce/lang/english.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -Default : template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'Custom Buttons'; -$_lang['mce_editor_custom_buttons_message'] = 'Enter the buttons to use for the \'custom\' theme as a comma separated list for each row. Be sure that each button has the required plugin enabled in the \'Custom Plugins\' setting.'; -$_lang['mce_editor_css_selectors_title'] = 'CSS Selectors'; -$_lang['mce_editor_css_selectors_message'] = 'Here you can enter a list of selectors that should be available in the editor. Enter them as follows:
                      \'displayName=selectorName;displayName2=selectorName2\'
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      \'Monospaced text=mono;Small text=smallText\'
                      Note that the last entry should not have a semi-colon after it.'; -$_lang['mce_settings'] = 'TinyMCE Settings'; -$_lang['mce_theme_simple'] = 'Simple'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'Advanced'; -$_lang['mce_theme_editor'] = 'MODX Style'; -$_lang['mce_theme_custom'] = 'Custom'; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = 'Use the global setting'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter Key Mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element Format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk Names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/finnish.inc.php b/assets/plugins/tinymce/lang/finnish.inc.php deleted file mode 100644 index be0ec98b68..0000000000 --- a/assets/plugins/tinymce/lang/finnish.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -\'näyttöNimi=valitsimenNimi;näyttöNimi2=valitsimenNimi2\'
                      Jos sinulla on esim. .leipateksti ja .otsikko valitsimina css-tiedostossasi, lisää ne listaan näin:
                      \'Leipis=leipateksti;Otsikko=otsikko\'
                      Huomaa, ettei viimeisen kohdan jälkeen le puolipistettä.'; -$_lang['mce_settings'] = 'TinyMCE:n asetukset'; -$_lang['mce_theme_simple'] = 'Yksinkertaistettu'; -$_lang['mce_theme_full'] = 'Täysi'; -$_lang['mce_theme_advanced'] = 'Edistynyt'; -$_lang['mce_theme_editor'] = 'Sisällönmuokkaajalle'; -$_lang['mce_theme_custom'] = 'Kustomoitu'; -$_lang['mce_theme_creative'] = 'Luova'; -$_lang['mce_theme_logic'] = 'XHTML'; -$_lang['mce_theme_legacy'] = 'Vanha tyyli'; -$_lang['mce_theme_global_settings'] = 'Käytä maailmanlaajuisesti'; -$_lang['mce_editor_skin_title'] = 'Ulkoasu'; -$_lang['mce_editor_skin_message'] = 'Työkalupalkin visuaalinen tyyli. Katso tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter-näppäimen toiminto'; -$_lang['mce_editor_entermode_message'] = 'Valitse mitä tapahtuu kun enter-näppäintä painetaan.'; -$_lang['mce_entermode_opt1'] = 'Ympäröi kappale-elementillä <p></p>'; -$_lang['mce_entermode_opt2'] = 'Lisää rivivaihtoelementti <br />'; - -$_lang['mce_element_format_title'] = '(X)HTML-elementtien merkintätyyli'; -$_lang['mce_element_format_message'] = 'Tässä voit valita muotoillaanko tyhjät elementit HTML- vai XHTML-tyylisesti. XHTML on oletusvalinta. Tämä tarkoittaa että esimerkiksi <br /> muutetaan muotoon <br>, jos tämä asetus on kohdassa "HTML".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Oletus: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Oletus: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Sivujen IDt'; -$_lang['mce_tpl_chunkname'] = 'Palasten nimet'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/francais-utf8.inc.php b/assets/plugins/tinymce/lang/francais-utf8.inc.php deleted file mode 100644 index c2857220f6..0000000000 --- a/assets/plugins/tinymce/lang/francais-utf8.inc.php +++ /dev/null @@ -1,48 +0,0 @@ - \'Nom de la classe 1=class1;Nom de la classe 2=class2\'
                      Prenons l\'exemple de la classe .mono et .smallText dans votre feuille de style. Vous pouvez les appeler de la façon suivante:
                      \'Monospaced text=mono;Small text=smallText\'
                      La dernière entrée de la ligne ne doit pas être suivie du point-virgule ( ; ).'; -$_lang['mce_settings'] = 'Configuration de TinyMCE'; -$_lang['mce_theme_simple'] = 'Simple'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'Avancé'; -$_lang['mce_theme_editor'] = 'Content Editor'; -$_lang['mce_theme_custom'] = 'Personnalisé'; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = 'Utilisez le paramètre global'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter Key Mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element Format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk Names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/german.inc.php b/assets/plugins/tinymce/lang/german.inc.php deleted file mode 100644 index 8529aa157c..0000000000 --- a/assets/plugins/tinymce/lang/german.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -Standard: template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'Individuelle Buttons'; -$_lang['mce_editor_custom_buttons_message'] = 'Geben Sie die Buttons an, die Sie bei Auswahl des \'individuellen\' Templates verwenden wollen. Bitte Buttons für jede Reihe durch Komma trennen.Stellen Sie sicher, dass die für Buttons benötigten Plugins aktiviert sind unter \'Individuelle Plugins\'.'; -$_lang['mce_editor_css_selectors_title'] = 'CSS Selektoren'; -$_lang['mce_editor_css_selectors_message'] = 'Hier können Sie eine Auswahl an Selektoren definieren, die im TinyMCE verfügbar sein sollen. Bitte in dieser Form eintragen:
                      \'displayName=selectorName;displayName2=selectorName2\'
                      Beispiel: Sie wollen .mono und .smallText als Selektoren in Ihrer CSS Datei benutzen, dann erstellen Sie folgenden Eintrag:
                      \'Monospaced text=mono;Small text=smallText\'
                      Bitte achten Sie darauf, dass der letzte Eintrag nicht mit einem Semikolon abgeschlossen werden darf.'; -$_lang['mce_settings'] = 'TinyMCE Einstellungen'; -$_lang['mce_theme_simple'] = 'Wenige Plugins'; -$_lang['mce_theme_full'] = 'Komplett'; -$_lang['mce_theme_advanced'] = 'Mittlere Anzahl Plugins'; -$_lang['mce_theme_editor'] = 'Alle Plugins'; -$_lang['mce_theme_custom'] = 'Individuell'; -$_lang['mce_theme_creative'] = 'Kreativ'; -$_lang['mce_theme_logic'] = 'XHTML'; -$_lang['mce_theme_legacy'] = 'Veralteter Stil'; -$_lang['mce_theme_global_settings'] = 'Verwenden Sie die globale Einstellung'; -$_lang['mce_editor_skin_title'] = 'Oberfäche'; -$_lang['mce_editor_skin_message'] = 'Gestaltung der Symbolleiste. Siehe tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Eingabetasten-Modus'; -$_lang['mce_editor_entermode_message'] = 'Zeichen, die nach dem Drücken der Eingabetaste erzeugt werden.'; -$_lang['mce_entermode_opt1'] = 'Umgeben mit <p></p>'; -$_lang['mce_entermode_opt2'] = 'Einfügen von <br />'; - -$_lang['mce_element_format_title'] = 'Code-Format'; -$_lang['mce_element_format_message'] = 'Mit dieser Einstellung können Sie aktivieren, ob der HTML-Code als HTML oder als XHTML erzeugt wird. Die Standardeinstellung ist XHTML. Im HTML Modus werden z.B. statt <br />-Tags nur <br>-Tags erzeugt.'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'Mit dieser Einstellung können Sie zwischen dem HTML4 und HTML5 Schema umstellen. Damit können Sie steuern, welche Elemente und Attribute im HTML-Code eingegeben werden dürfen.'; - -$_lang['mce_toolbar1_msg'] = 'Standard-Einstellung: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Standard-Einstellung: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'Hier können Sie Templates auf Chunk und Ressourcen-Basis für die Template Schaltfläche im TinyMCE definieren (diese wird standardmäßig nicht angezeigt). Der Chunk- bzw. Ressourcen-Inhalt wird dann an der Cursor-Position als HTML Code im TinyMCE eingefügt. Mehrere Chunk-Namen bzw. Ressourcen-IDs können kommasepariert angegeben werden.'; -$_lang['mce_tpl_docid'] = 'Ressource-IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk-Namen'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/italian.inc.php b/assets/plugins/tinymce/lang/italian.inc.php deleted file mode 100644 index a7d8dcb0c0..0000000000 --- a/assets/plugins/tinymce/lang/italian.inc.php +++ /dev/null @@ -1,52 +0,0 @@ -Default : template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'Bottoni personalizzati:'; -$_lang['mce_editor_custom_buttons_message'] = 'Inserite i nomi dei bottoni da usare per il tema \'custom\' separati da virgola. Verificate che per ogni bottone sia stato attivato il relativo plugin dalle impostazioni \'Plugins Personalizzati\'.'; -$_lang['mce_editor_css_selectors_title'] = 'Selettori CSS:'; -$_lang['mce_editor_css_selectors_message'] = 'Qui potete inserire l\'elenco dei selettori che saranno disponibili nell\'editor. Ad esempio: -
                      \'displayName=selectorName;displayName2=selectorName2\'
                      -Quindi se per esempio avete i selettori .mono e .smallText nel vostro file CSS, li potete aggiungere come: -
                      \'Monospaced text=mono;Small text=smallText\'
                      -Notare che l\'ultimo elemento NON deve essere teminato da punto e virgola.'; -$_lang['mce_settings'] = 'Impostazioni TinyMCE'; -$_lang['mce_theme_simple'] = 'Semplice'; -$_lang['mce_theme_full'] = 'Completo'; -$_lang['mce_theme_advanced'] = 'Avanzato'; -$_lang['mce_theme_editor'] = 'Stile MODX'; -$_lang['mce_theme_custom'] = 'Personalizzato'; -$_lang['mce_theme_creative'] = 'Creativo'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'vecchio stile'; -$_lang['mce_theme_global_settings'] = 'Utilizza le impostazioni globali'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Stile della toolbar. Vedete su tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Inserire la modalità del tasto'; -$_lang['mce_editor_entermode_message'] = 'E\' stata definita l\'operazione da effettuare quando viene premuto il tasto Enter.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Inserisci <br />'; - -$_lang['mce_element_format_title'] = 'Formato dell\'elemento'; -$_lang['mce_element_format_message'] = 'Questa opzione stabilisce se gli elementi devono essere in html o in xhtml. Di default saranno in xhtml. Questo implica che se impostate "html" <br /> diventerà <br> .'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'Questa opzione vi consente di passare da uno schema HTML4 a uno HTML5. In questo modo controllate quali elementi possono essere validamente inserite nel vostro codice HTML. Può assumere il valore di default html4 oppure html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default : undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default : image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Bottone del template'; -$_lang['mce_tpl_msg'] = 'Potete inserire il blocco HTML che avete precedentemente impostato nella toolbar. Potete impostare un blocco HTML come Risorsa o Chunk e definirne diversi separandoli con una virgola.'; -$_lang['mce_tpl_docid'] = 'ID delle risorse'; -$_lang['mce_tpl_chunkname'] = 'Nomi dei chunks'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/japanese-utf8.inc.php b/assets/plugins/tinymce/lang/japanese-utf8.inc.php deleted file mode 100644 index 94957aeac0..0000000000 --- a/assets/plugins/tinymce/lang/japanese-utf8.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -デフォルト値 : template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'カスタムボタン'; -$_lang['mce_editor_custom_buttons_message'] = 'カスタムテーマを選択したときに利用するボタンをカンマ(,)で区切ってそれぞれの行に記述します。セパレータは「separator」または「|」と記述します。プラグインによって機能が提供されるボタンは、プラグイン指定も必要です。詳細についてはTinyMCE開発元の公式ドキュメントControl referenceのページをご確認ください。'; -$_lang['mce_editor_css_selectors_title'] = 'CSSスタイルセレクタ'; -$_lang['mce_editor_css_selectors_message'] = 'class=xxxxxという形で任意のタグに割り当てる「CSSクラス」をここで設定できます。
                      書式:本のタイトル=booktitle;著者=author
                      上記のように、複数のクラスをセミコロンで区切って指定します。'; -$_lang['mce_settings'] = 'TinyMCEの設定'; -$_lang['mce_theme_simple'] = 'シンプル'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'TinyMCEデフォルト'; -$_lang['mce_theme_editor'] = 'MODXデフォルト'; -$_lang['mce_theme_custom'] = 'カスタム'; -$_lang['mce_theme_creative'] = 'クリエイティブ'; -$_lang['mce_theme_logic'] = 'ロジック'; -$_lang['mce_theme_legacy'] = '旧タイプ'; -$_lang['mce_theme_global_settings'] = 'グローバル設定を利用'; -$_lang['mce_editor_skin_title'] = 'スキン'; -$_lang['mce_editor_skin_message'] = 'ツールバーのデザイン。tinymce/tiny_mce/themes/advanced/skins/ ディレクトリ内のスキンを選択します。
                      '; -$_lang['mce_editor_entermode_title'] = '改行キーの動作'; -$_lang['mce_editor_entermode_message'] = '改行キーを押した時の動作を設定します。'; -$_lang['mce_entermode_opt1'] = '<p></p>で囲む'; -$_lang['mce_entermode_opt2'] = '<br />を挿入'; - -$_lang['mce_element_format_title'] = 'タグのスタイル'; -$_lang['mce_element_format_message'] = '<br />または<br>'; -$_lang['mce_schema_title'] = 'スキーマ'; -$_lang['mce_schema_message'] = 'スキーマを選択します。'; - -$_lang['mce_toolbar1_msg'] = 'デフォルト値 : undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'デフォルト値 : image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'テンプレート挿入'; -$_lang['mce_tpl_msg'] = 'あらかじめ登録しておいたHTMLブロックをツールバーから挿入できます。HTMLブロックはリソースまたはチャンクとして作成し、カンマで区切って複数指定できます。'; -$_lang['mce_tpl_docid'] = 'リソースID'; -$_lang['mce_tpl_chunkname'] = 'チャンク名'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/nederlands-utf8.inc.php b/assets/plugins/tinymce/lang/nederlands-utf8.inc.php deleted file mode 100644 index 3fd2cdb247..0000000000 --- a/assets/plugins/tinymce/lang/nederlands-utf8.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -\'displayNaam1=selectorNaam1;displayNaam2=selectorNaam2\'
                      Bijvoorbeeld: je hebt de .mono en .smallText selectors in uw CSS bestand, dan kunt u die hier invullen als:
                      \'Monospaced text=mono;Small text=smallText\'
                      Let erop dat de laatste waarde niet wordt afgesloten door een punt-komma.'; -$_lang['mce_settings'] = 'TinyMCE instellingen'; -$_lang['mce_theme_simple'] = 'Eenvoudig'; -$_lang['mce_theme_full'] = 'Volledig'; -$_lang['mce_theme_advanced'] = 'Geavanceerd'; -$_lang['mce_theme_editor'] = 'Content Editor'; -$_lang['mce_theme_custom'] = 'Aangepast'; -$_lang['mce_theme_creative'] = 'Creatief'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy stijl'; -$_lang['mce_theme_global_settings'] = 'Gebruik het algemene instelling'; -$_lang['mce_editor_skin_title'] = 'Weergave'; -$_lang['mce_editor_skin_message'] = 'Ontwerp van de toolbar. zie tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Voeg versleutel mode in'; -$_lang['mce_editor_entermode_message'] = 'Wat gebeurt er bij indrukken van de ENTER toets.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Voeg <br /> in'; - -$_lang['mce_element_format_title'] = 'Element formaat'; -$_lang['mce_element_format_message'] = 'Deze optie maakt controle mogelijk als elementen in html of xhtml modus zijn. xhtml is de standaard staat voor deze optie. Dit betekent dat bijvoorbeeld
                      zal worden
                      Als u deze optie op "html" ingesteld.'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'Met de schema optie kunt u omschakelen tussen HTML4 en HTML5. Dit regelt de geldige elementen en kenmerken die in de HTML kan worden geplaatst. Deze waarde kan de standaard HTML4 of html5 zijn.'; - -$_lang['mce_toolbar1_msg'] = 'Standaard: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Standaard: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template knop'; -$_lang['mce_tpl_msg'] = 'U kunt het HTML-blok invoegen welke u vooraf ingeschreven heeft vanuit de werkbalk. Je maakt het HTML blok als pagina of een chunk, en kan met komma\'s benoemd worden.'; -$_lang['mce_tpl_docid'] = 'Pagina ID'; -$_lang['mce_tpl_chunkname'] = 'Chunk namen'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/nederlands.inc.php b/assets/plugins/tinymce/lang/nederlands.inc.php deleted file mode 100644 index af62e426a0..0000000000 --- a/assets/plugins/tinymce/lang/nederlands.inc.php +++ /dev/null @@ -1,49 +0,0 @@ -'displayNaam1=selectorNaam1;displayNaam2=selectorNaam2'
                      Bijvoorbeeld: je hebt de .mono en .smallText selectors in uw CSS bestand, dan kunt u die hier invullen als:
                      'Monospaced text=mono;Small text=smallText'
                      Let erop dat de laatste waarde niet wordt afgesloten door een punt-komma."; -$_lang['mce_settings'] = "TinyMCE instellingen"; -$_lang['mce_theme_simple'] = "Eenvoudig"; -$_lang['mce_theme_advanced'] = "Geavanceerd"; -$_lang['mce_theme_editor'] = "Content Editor"; -$_lang['mce_theme_custom'] = "Aangepast"; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = "Gebruik het algemene instelling"; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter key mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default : undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default : image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template button'; -$_lang['mce_tpl_msg'] = 'You can insert the HTML block which you registered beforehand from toolbar. You make HTML block as resource or a chunk, and can appoint plural number with a comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/persian.inc.php b/assets/plugins/tinymce/lang/persian.inc.php deleted file mode 100644 index e8d8b3a87c..0000000000 --- a/assets/plugins/tinymce/lang/persian.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -\'displayName=selectorName;displayName2=selectorName2\'
                      به نحو دیگر, فرض کنید که .mono و .smallText را در انتخابگرهای فایل CSS خود دارید, شما میتوانید آنها را در اینجا با این عنوان وارد کنید:
                      \'Monospaced text=mono;Small text=smallText\'
                      توجه که در انتخای متن آخر نباید سمی-کالن یا نقطه کاما باشد.'; -$_lang['mce_settings'] = 'تنظیمات TinyMCE'; -$_lang['mce_theme_simple'] = 'ساده'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'پیشرفته'; -$_lang['mce_theme_editor'] = 'ویرایشگر متن'; -$_lang['mce_theme_custom'] = 'مخصوص'; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = 'با استفاده از محیط های جهانی'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter Key Mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element Format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk Names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/polish-utf8.inc.php b/assets/plugins/tinymce/lang/polish-utf8.inc.php deleted file mode 100644 index 8406e2c8c5..0000000000 --- a/assets/plugins/tinymce/lang/polish-utf8.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -Default : template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'Niestandardowe przyciski'; -$_lang['mce_editor_custom_buttons_message'] = 'Enter the buttons to use for the \'custom\' theme as a comma separated list for each row. Be sure that each button has the required plugin enabled in the \'Custom Plugins\' setting.'; -$_lang['mce_editor_css_selectors_title'] = 'Selektory CSS'; -$_lang['mce_editor_css_selectors_message'] = 'Here you can enter a list of selectors that should be available in the editor. Enter them as follows:
                      \'displayName=selectorName;displayName2=selectorName2\'
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      \'Monospaced text=mono;Small text=smallText\'
                      Note that the last entry should not have a semi-colon after it.'; -$_lang['mce_settings'] = 'Ustawienia TinyMCE'; -$_lang['mce_theme_simple'] = 'Prosty'; -$_lang['mce_theme_full'] = 'Pełny'; -$_lang['mce_theme_advanced'] = 'Zaawansowany'; -$_lang['mce_theme_editor'] = 'Styl MODX'; -$_lang['mce_theme_custom'] = 'Niestandardowy'; -$_lang['mce_theme_creative'] = 'Twórczy'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'Klasyczny styl'; -$_lang['mce_theme_global_settings'] = 'Użyj ustawienia globalnego'; -$_lang['mce_editor_skin_title'] = 'Skórka'; -$_lang['mce_editor_skin_message'] = 'Wygląd paska narzędzi. Zobacz tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Tryb klawisza ENTER'; -$_lang['mce_editor_entermode_message'] = 'Operacja po wciśnięciu klawisza ENTER.'; -$_lang['mce_entermode_opt1'] = 'Owiń w <p></p>'; -$_lang['mce_entermode_opt2'] = 'Wstaw <br />'; - -$_lang['mce_element_format_title'] = 'Format elementu'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schemat'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Przycisk szablonu'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'ID zasobów'; -$_lang['mce_tpl_chunkname'] = 'Nazwy chunków'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/portuguese-br.inc.php b/assets/plugins/tinymce/lang/portuguese-br.inc.php deleted file mode 100644 index f1d15db9cf..0000000000 --- a/assets/plugins/tinymce/lang/portuguese-br.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -Default : template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'Botões personalizados'; -$_lang['mce_editor_custom_buttons_message'] = 'Indique os botões a utilizar para o tema personalizado, numa lista separada por vírgulas para cada linha. Assegure-se de que cada botão tem o plugin requerido activado na opção \'Plugins Personalizados\'.'; -$_lang['mce_editor_css_selectors_title'] = 'Selectores CSS'; -$_lang['mce_editor_css_selectors_message'] = 'Aqui pode indicar uma lista dos selectores que deverão estar disponíveis no editor. Indique-os da seguinte forma:
                      \'nomeMostrado=nomeSelector;nomeMostrado2=nomeSelector2\'
                      Por exemplo, se tiver os selectores .mono e .texto Pequeno no seu ficheiro CSS, pode adicioná-los aqui como:
                      \'Texto com espaçamento simples=mono;Texto Pequeno=textoPequeno\'
                      Note que a última entrada não deverá ter ponto e vírgula a segui-la.'; -$_lang['mce_settings'] = 'Opções TinyMCE'; -$_lang['mce_theme_simple'] = 'Simples'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'Avançado'; -$_lang['mce_theme_editor'] = 'Editor de Conteúdo'; -$_lang['mce_theme_custom'] = 'Personalizar'; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = 'Use a configuração global'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter Key Mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element Format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk Names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/portuguese.inc.php b/assets/plugins/tinymce/lang/portuguese.inc.php deleted file mode 100644 index a3d4c5cc0d..0000000000 --- a/assets/plugins/tinymce/lang/portuguese.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -Default : template,visualblocks,autolink,inlinepopups,autosave,save,advlist,style,fullscreen, advimage,paste,advlink,media,contextmenu,table'; -$_lang['mce_editor_custom_buttons_title'] = 'Botões personalizados'; -$_lang['mce_editor_custom_buttons_message'] = 'Indique os botões a utilizar para o tema personalizado, numa lista separada por vírgulas para cada linha. Assegure-se de que cada botão tem o plugin requerido activado na opção \'Plugins Personalizados\'.'; -$_lang['mce_editor_css_selectors_title'] = 'Selectores CSS'; -$_lang['mce_editor_css_selectors_message'] = 'Aqui pode indicar uma lista dos selectores que deverão estar disponíveis no editor. Indique-os da seguinte forma:
                      \'nomeMostrado=nomeSelector;nomeMostrado2=nomeSelector2\'
                      Por exemplo, se tiver os selectores .mono e .texto Pequeno no seu ficheiro CSS, pode adicioná-los aqui como:
                      \'Texto com espaçamento simples=mono;Texto Pequeno=textoPequeno\'
                      Note que a última entrada não deverá ter ponto e vírgula a segui-la.'; -$_lang['mce_settings'] = 'Opções TinyMCE'; -$_lang['mce_theme_simple'] = 'Simples'; -$_lang['mce_theme_full'] = 'Full'; -$_lang['mce_theme_advanced'] = 'Avançado'; -$_lang['mce_theme_editor'] = 'Editor de Conteúdo'; -$_lang['mce_theme_custom'] = 'Personalizar'; -$_lang['mce_theme_creative'] = 'Creative'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy style'; -$_lang['mce_theme_global_settings'] = 'Use a configuração global'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Design of toolbar. see tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enter Key Mode'; -$_lang['mce_editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insert <br />'; - -$_lang['mce_element_format_title'] = 'Element Format'; -$_lang['mce_element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; - -$_lang['mce_toolbar1_msg'] = 'Default: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Default: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Template Button'; -$_lang['mce_tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in TinyMCE (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in TinyMCE. Multiple chunk names or ressource IDs have to be separated by comma.'; -$_lang['mce_tpl_docid'] = 'Resource IDs'; -$_lang['mce_tpl_chunkname'] = 'Chunk Names'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/russian-UTF8.inc.php b/assets/plugins/tinymce/lang/russian-UTF8.inc.php deleted file mode 100644 index 4cce5d1ed0..0000000000 --- a/assets/plugins/tinymce/lang/russian-UTF8.inc.php +++ /dev/null @@ -1,49 +0,0 @@ -«имя, которое будет показано в WYSIWYG-редакторе»=«имя селектора»;displayName2=selectorName2
                      Например, в вашем CSS файле есть .mono и .smallText селекторы, чтобы их добавить надо прописать:
                      \'Монохромный текст=mono;Мелкий текст=smallText\'
                      NB: не ставьте точку с запятой(;) после последней записи.'; -$_lang['mce_settings'] = 'Настройки TinyMCE'; -$_lang['mce_theme_simple'] = 'Простая'; -$_lang['mce_theme_full'] = 'Все возможности'; -$_lang['mce_theme_advanced'] = 'Продвинутая'; -$_lang['mce_theme_editor'] = 'Редактор контента'; -$_lang['mce_theme_custom'] = 'Индивидуальная'; -$_lang['mce_theme_creative'] = 'Творческая'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'legacy-стиль'; -$_lang['mce_theme_global_settings'] = 'Использовать глобальные настройки'; -$_lang['mce_editor_skin_title'] = 'Тема оформления'; -$_lang['mce_editor_skin_message'] = 'Варианты оформления панели инструментов смотрите тут -tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Действие клавиши Enter'; -$_lang['mce_editor_entermode_message'] = 'Устанавливает действие, которое выполняется при нажатии клавиши Enter'; -$_lang['mce_entermode_opt1'] = 'Обернуть в <p></p>'; -$_lang['mce_entermode_opt2'] = 'Добавить <br />'; - -$_lang['mce_element_format_title'] = 'Формат элемента'; -$_lang['mce_element_format_message'] = 'Эта настройка задает формат элементов: html или xhtml. По умолчанию выбран xhtml. Это значит, что <br /> будет <br> если выбран "html".'; -$_lang['mce_schema_title'] = 'Схема'; -$_lang['mce_schema_message'] = 'Эта настройка позволяет выбрать стандарт HTML4 или HTML5. Выбор стандарта определяет допустимые в разметке элементы и атрибуты.'; - -$_lang['mce_toolbar1_msg'] = 'По умолчанию : undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'По умолчанию : image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Кнопка шаблона'; -$_lang['mce_tpl_msg'] = 'Вы можете вставить HTML блок, который вы создали заранее из панели инструментов. HTML блоки можно создавать из документов или из чанков, так же можно создать сразу несколько разделяя их запятыми'; -$_lang['mce_tpl_docid'] = 'Список ID ресурсов'; -$_lang['mce_tpl_chunkname'] = 'Название чанка'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/spanish-utf8.inc.php b/assets/plugins/tinymce/lang/spanish-utf8.inc.php deleted file mode 100644 index cd1a0b7ad6..0000000000 --- a/assets/plugins/tinymce/lang/spanish-utf8.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -\'displayName=selectorName;displayName2=selectorName2\'
                      Por ejemplo, imagine que tiene los selectores .mono and .smallText en su archivo CSS, puede agregarlos aquí como:
                      \'Monospaced text=mono;Small text=smallText\'
                      Note que la última entrada no debe tener el punto y coma luego de ella.'; -$_lang['mce_settings'] = 'Configuraciones TinyMCE'; -$_lang['mce_theme_simple'] = 'Simple'; -$_lang['mce_theme_full'] = 'Completo'; -$_lang['mce_theme_advanced'] = 'Advanzado'; -$_lang['mce_theme_editor'] = 'Editor de contenido'; -$_lang['mce_theme_custom'] = 'Personalizado'; -$_lang['mce_theme_creative'] = 'Creativo'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'estilo obsoleto'; -$_lang['mce_theme_global_settings'] = 'Use la configuración global'; -$_lang['mce_editor_skin_title'] = 'Máscara'; -$_lang['mce_editor_skin_message'] = 'Diseño de barra de herramientas. ver tinymce/tiny_mce/temas/avanzadas/skins / < br />'; -$_lang['mce_editor_entermode_title'] = 'Entrar en modo de clave'; -$_lang['mce_editor_entermode_message'] = 'Se establece la operación cuando se presiona la tecla enter.'; -$_lang['mce_entermode_opt1'] = 'Wrap <p></p>'; -$_lang['mce_entermode_opt2'] = 'Insertar <br />'; - -$_lang['mce_element_format_title'] = 'Formato de elementos'; -$_lang['mce_element_format_message'] = 'Esta opción permite controlar si los elementos deben estar en modo html o xhtml. Xhtml es el estado predeterminado para esta opción. Esto significa que por ejemplo < br / > será < br > si establece esta opción a "html".'; -$_lang['mce_schema_title'] = 'Esquema'; -$_lang['mce_schema_message'] = 'La opción de esquema le permite cambiar entre los esquemas de HTML4 ó HTML5. Controla los elementos válidos y atributos que pueden ser colocados en el HTML.Este valor puede ser por defecto predeterminado html4 o html5 .Este valor puede ser el valor por defecto html4 ó html5.'; - -$_lang['mce_toolbar1_msg'] = 'Por Defecto: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Por Defecto: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Botón de Plantilla'; -$_lang['mce_tpl_msg'] = 'Podrá definir plantillas en chucks o recursos base para el botón plantilla en TinyMCE (no se mostrará de forma predeterminada). El contenido del chuck/recurso se insertará en la posición del cursor como código html en TinyMCE. Múltiples nombres de chucks o ID de recursos tienen que estar separados por comas.'; -$_lang['mce_tpl_docid'] = 'ID de los Recursos'; -$_lang['mce_tpl_chunkname'] = 'Nombres de los Chunks'; \ No newline at end of file diff --git a/assets/plugins/tinymce/lang/svenska-utf8.inc.php b/assets/plugins/tinymce/lang/svenska-utf8.inc.php deleted file mode 100644 index 3333f4cfa7..0000000000 --- a/assets/plugins/tinymce/lang/svenska-utf8.inc.php +++ /dev/null @@ -1,48 +0,0 @@ -"namnEtikett=selektorNamn;namnEtikett2=selektorNamn2"
                      Om du till exempel har selektorerna .mono och .litenText i din css-fil, så kan du ange dom här som:
                      "Jämnbred text=mono;Liten text=litenText"
                      Notera att den sista definitionen inte ska följas av ett semikolon.'; -$_lang['mce_settings'] = 'Inställningar för TinyMCE'; -$_lang['mce_theme_simple'] = 'Enkelt'; -$_lang['mce_theme_full'] = 'Komplett'; -$_lang['mce_theme_advanced'] = 'Avancerat'; -$_lang['mce_theme_editor'] = 'Innehållseditor'; -$_lang['mce_theme_custom'] = 'Anpassat'; -$_lang['mce_theme_creative'] = 'Kreativ'; -$_lang['mce_theme_logic'] = 'xhtml'; -$_lang['mce_theme_legacy'] = 'Äldre stil'; -$_lang['mce_theme_global_settings'] = 'Använd globalt'; -$_lang['mce_editor_skin_title'] = 'Skin'; -$_lang['mce_editor_skin_message'] = 'Verktygsradens design. Se tinymce/tiny_mce/themes/advanced/skins/
                      '; -$_lang['mce_editor_entermode_title'] = 'Enterknappens funktion'; -$_lang['mce_editor_entermode_message'] = 'Anger vad som händer när Enterknappen trycks ner.'; -$_lang['mce_entermode_opt1'] = 'Inneslut i <p></p>'; -$_lang['mce_entermode_opt2'] = 'Infoga <br />'; - -$_lang['mce_element_format_title'] = 'Elementformat'; -$_lang['mce_element_format_message'] = 'Denna inställning anger om element ska hanteras som html eller xhtml. xhtml är standardvalet. Det här betyder till exempel att <br /> kommer att bli <br> om du sätter det val till "html".'; -$_lang['mce_schema_title'] = 'Schema'; -$_lang['mce_schema_message'] = 'Schemainställningen låter dig växla mellan html4- och html5-schema. Dessa styr vilka element och attribut som kan användas i html-koden. Värdet kan antingen vara standardvärdet html4 eller html5.'; - -$_lang['mce_toolbar1_msg'] = 'Standard: undo,redo,|,bold,forecolor,backcolor,strikethrough,formatselect,fontsizeselect, pastetext,pasteword,code,|,fullscreen,help'; -$_lang['mce_toolbar2_msg'] = 'Standard: image,media,link,unlink,anchor,|,justifyleft,justifycenter,justifyright,|,bullist, numlist,|,blockquote,outdent,indent,|,table,hr,|,template,visualblocks,styleprops,removeformat'; - -$_lang['mce_tpl_title'] = 'Mallknapp'; -$_lang['mce_tpl_msg'] = 'Du kan från verktygsraden infoga HTML-block som du definierat tidigare. HTML-blocken skapas som en resurs eller en chunk och du kan lägga till flera genom att separera dom med kommatecken.'; -$_lang['mce_tpl_docid'] = 'Resurs-ID:n'; -$_lang['mce_tpl_chunkname'] = 'Chunknamn'; \ No newline at end of file diff --git a/assets/plugins/tinymce/plugin.tinymce.php b/assets/plugins/tinymce/plugin.tinymce.php deleted file mode 100644 index 5de8c116c6..0000000000 --- a/assets/plugins/tinymce/plugin.tinymce.php +++ /dev/null @@ -1,40 +0,0 @@ -event; -switch ($e->name) -{ - case "OnRichTextEditorRegister": // register only for backend - $e->output('TinyMCE'); - break; - - case "OnRichTextEditorInit": - if($editor!=='TinyMCE') return; - - $html = $mce->get_mce_script(); - $e->output($html); - break; - - case "OnInterfaceSettingsRender": - $html = $mce->get_mce_settings(); - $e->output($html); - break; - - default : - return; // stop here - this is very important. - break; -} diff --git a/assets/plugins/tinymce/settings/default_params.php b/assets/plugins/tinymce/settings/default_params.php deleted file mode 100644 index a4cfc29e53..0000000000 --- a/assets/plugins/tinymce/settings/default_params.php +++ /dev/null @@ -1,22 +0,0 @@ -manager->action == 17) -{ - $css_selectors = 'left=justifyleft;right=justifyright'; - $params['theme'] = (empty($params['theme'])) ? 'editor' : $params['theme']; - $ph['custom_plugins'] = $params['custom_plugins']; - $ph['custom_buttons1'] = $params['custom_buttons1']; - $ph['custom_buttons2'] = $params['custom_buttons2']; - $ph['custom_buttons3'] = $params['custom_buttons3']; - $ph['custom_buttons4'] = $params['custom_buttons4']; - $ph['mce_template_docs'] = $params['mce_template_docs']; - $ph['mce_template_chunks'] = $params['mce_template_chunks']; - $ph['css_selectors'] = (!isset($params['css_selectors'])) ? $css_selectors : $params['css_selectors']; - $ph['mce_entermode'] = (empty($params['mce_entermode'])) ? 'p' : $params['mce_entermode']; - $ph['mce_schema'] = (empty($params['mce_schema'])) ? 'html4' : $params['mce_schema']; - $ph['mce_element_format'] = (empty($params['mce_element_format'])) ? 'xhtml' : $params['mce_element_format']; -} -else -{ - $ph = $params; -} diff --git a/assets/plugins/tinymce/settings/toolbar.settings.inc.php b/assets/plugins/tinymce/settings/toolbar.settings.inc.php deleted file mode 100644 index 001da73b35..0000000000 --- a/assets/plugins/tinymce/settings/toolbar.settings.inc.php +++ /dev/null @@ -1,42 +0,0 @@ -'; - - ed.execCommand("mceInsertContent", false, h); - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.requireLangPack(); -tinyMCEPopup.onInit.add(AdvHRDialog.init, AdvHRDialog); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/bg_dlg.js deleted file mode 100644 index 50d9d37f62..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.advhr_dlg',{size:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",noshade:"\u0411\u0435\u0437 \u0441\u044f\u043d\u043a\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"\u041d\u043e\u0440\u043c\u0430\u043b\u043d\u0430",widthunits:"\u0415\u0434\u0438\u043d\u0438\u0446\u0438"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/cs_dlg.js deleted file mode 100644 index a74dd20722..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.advhr_dlg',{size:"V\u00fd\u0161ka",noshade:"Bez st\u00ednu",width:"\u0160\u00ed\u0159ka",normal:"Norm\u00e1ln\u00ed",widthunits:"Jednotky"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/da_dlg.js deleted file mode 100644 index 3f9657c9e4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.advhr_dlg',{size:"H\u00f8jde",noshade:"Ingen skygge",width:"Bredde",normal:"Normal",widthunits:"Enheder"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/de_dlg.js deleted file mode 100644 index 7c5143e570..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.advhr_dlg',{size:"H\u00f6he",noshade:"Kein Schatten",width:"Breite",normal:"Normal",widthunits:"Einheiten"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/en_dlg.js deleted file mode 100644 index 0c3bf15e6f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.advhr_dlg',{size:"Height",noshade:"No Shadow",width:"Width",normal:"Normal",widthunits:"Units"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/es_dlg.js deleted file mode 100644 index dacd6385f8..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.advhr_dlg',{size:"Alto",noshade:"Sin sombra",width:"Ancho",normal:"Normal",widthunits:"Unidades"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fa_dlg.js deleted file mode 100644 index 9b17605577..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.advhr_dlg',{size:"\u0627\u0631\u062a\u0641\u0627\u0639",noshade:"\u0628\u062f\u0648\u0646 \u0633\u0627\u06cc\u0647",width:"\u067e\u0647\u0646\u0627",normal:"\u0645\u0639\u0645\u0648\u0644\u06cc",widthunits:"\u0648\u0627\u062d\u062f"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fi_dlg.js deleted file mode 100644 index 3318d1f69a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.advhr_dlg',{size:"Korkeus",noshade:"Ei varjoa",width:"Leveys",normal:"Normaali",widthunits:"Yksik\u00f6t"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fr_dlg.js deleted file mode 100644 index 4b6995cf6d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.advhr_dlg',{size:"Hauteur",noshade:"Pas d\'ombre",width:"Largeur",normal:"Normal",widthunits:"Unit\u00e9s"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/he_dlg.js deleted file mode 100644 index fd491ea4ab..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.advhr_dlg',{size:"\u05d2\u05d5\u05d1\u05d4",noshade:"\u05dc\u05dc\u05d0 \u05e6\u05dc",width:"\u05e8\u05d5\u05d7\u05d1",normal:"\u05e8\u05d2\u05d9\u05dc",widthunits:"\u05d9\u05d7\u05d9\u05d3\u05d5\u05ea"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/it_dlg.js deleted file mode 100644 index db513340d7..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.advhr_dlg',{size:"Altezza",noshade:"Senza ombreggiatura",width:"Larghezza",normal:"Normale",widthunits:"Unit\u00e0"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/ja_dlg.js deleted file mode 100644 index 70adc8b5d4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.advhr_dlg',{size:"\u9ad8\u3055",noshade:"\u5f71\u306a\u3057",width:"\u5e45",normal:"\u901a\u5e38",widthunits:"\u5358\u4f4d"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/nl_dlg.js deleted file mode 100644 index d3ab5acb5b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.advhr_dlg',{size:"Hoogte",noshade:"Geen schaduw",width:"Breedte",normal:"Normaal",widthunits:"Eenheden"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/nn_dlg.js deleted file mode 100644 index 535505af11..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.advhr_dlg',{size:"Storleik",noshade:"Inga skugge",width:"Breidd",normal:"Normal",widthunits:"Einingar"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/pl_dlg.js deleted file mode 100644 index f4e513887a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.advhr_dlg',{size:"Wysoko\u015b\u0107",noshade:"Bez cienia",width:"Szeroko\u015b\u0107",normal:"Normalny",widthunits:"Jednostki"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/pt_dlg.js deleted file mode 100644 index 531022082d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.advhr_dlg',{size:"Altura",noshade:"Sem sombra",width:"Largura",normal:"Normal",widthunits:"Unids"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/ru_dlg.js deleted file mode 100644 index 553f03f4dd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.advhr_dlg',{size:"\u0412\u044b\u0441\u043e\u0442\u0430",noshade:"\u0411\u0435\u0437 \u0442\u0435\u043d\u0438",width:"\u0428\u0438\u0440\u0438\u043d\u0430",normal:"\u041e\u0431\u044b\u0447\u043d\u0430\u044f",widthunits:"\u0415\u0434\u0438\u043d\u0438\u0446\u044b \u0438\u0437\u043c\u0435\u0440\u0435\u043d\u0438\u044f"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/sv_dlg.js deleted file mode 100644 index f2601e34eb..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.advhr_dlg',{size:"H\u00f6jd",noshade:"Ingen skugga",width:"Bredd",normal:"Normal",widthunits:"Enheter"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/zh_dlg.js deleted file mode 100644 index ddaefde8e5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.advhr_dlg',{size:"\u9ad8",noshade:"\u65e0\u9634\u5f71",width:"\u5bbd",normal:"\u6807\u51c6",widthunits:"\u5355\u4f4d"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advhr/rule.htm b/assets/plugins/tinymce/tiny_mce/plugins/advhr/rule.htm deleted file mode 100644 index 11d3651336..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advhr/rule.htm +++ /dev/null @@ -1,58 +0,0 @@ - - - - {#advhr.advhr_desc} - - - - - - - -
                      - - -
                      -
                      - - - - - - - - - - - - - -
                      - - - -
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/css/advimage.css b/assets/plugins/tinymce/tiny_mce/plugins/advimage/css/advimage.css deleted file mode 100644 index 228530f9ee..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/css/advimage.css +++ /dev/null @@ -1,13 +0,0 @@ -#src_list, #over_list, #out_list {width:280px;} -.mceActionPanel {margin-top:7px;} -.alignPreview {border:1px solid #000; width:140px; height:140px; overflow:hidden; padding:5px;} -.checkbox {border:0;} -.panel_wrapper div.current {height:305px;} -#prev {margin:0; border:1px solid #000; width:428px; height:150px; overflow:auto;} -#align, #classlist {width:150px;} -#width, #height {vertical-align:middle; width:50px; text-align:center;} -#vspace, #hspace, #border {vertical-align:middle; width:30px; text-align:center;} -#class_list {width:180px;} -input {width: 280px;} -#constrain, #onmousemovecheck {width:auto;} -#id, #dir, #lang, #usemap, #longdesc {width:200px;} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/editor_plugin.js deleted file mode 100644 index d613a61393..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.AdvancedImagePlugin",{init:function(a,b){a.addCommand("mceAdvImage",function(){if(a.dom.getAttrib(a.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}a.windowManager.open({file:b+"/image.htm",width:480+parseInt(a.getLang("advimage.delta_width",0)),height:385+parseInt(a.getLang("advimage.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("image",{title:"advimage.image_desc",cmd:"mceAdvImage"})},getInfo:function(){return{longname:"Advanced image",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advimage",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advimage",tinymce.plugins.AdvancedImagePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/image.htm b/assets/plugins/tinymce/tiny_mce/plugins/advimage/image.htm deleted file mode 100644 index 835d3882c6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/image.htm +++ /dev/null @@ -1,235 +0,0 @@ - - - - {#advimage_dlg.dialog_title} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#advimage_dlg.general} - - - - - - - - - - - - - - - - - - - -
                      - -
                      - {#advimage_dlg.preview} - -
                      -
                      - -
                      -
                      - {#advimage_dlg.tab_appearance} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - {#advimage_dlg.example_img} - Lorem ipsum, Dolor sit amet, consectetuer adipiscing loreum ipsum edipiscing elit, sed diam - nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.Loreum ipsum - edipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam - erat volutpat. -
                      -
                      - - x - - px -
                        - - - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#advimage_dlg.swap_image} - - - - - - - - - - - - - - - - - - - - - -
                      - - - - -
                       
                      - - - - -
                       
                      -
                      - -
                      - {#advimage_dlg.misc} - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - -
                      - -
                      - - - - -
                       
                      -
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/img/sample.gif b/assets/plugins/tinymce/tiny_mce/plugins/advimage/img/sample.gif deleted file mode 100644 index 53bf6890b5..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/advimage/img/sample.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/js/image.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/js/image.js deleted file mode 100644 index 02495fbf08..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/js/image.js +++ /dev/null @@ -1,464 +0,0 @@ -var ImageDialog = { - preInit : function() { - var url; - - tinyMCEPopup.requireLangPack(); - - if (url = tinyMCEPopup.getParam("external_image_list_url")) - document.write(''); - }, - - init : function(ed) { - var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, dom = ed.dom, n = ed.selection.getNode(), fl = tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList'); - - tinyMCEPopup.resizeToInnerSize(); - this.fillClassList('class_list'); - this.fillFileList('src_list', fl); - this.fillFileList('over_list', fl); - this.fillFileList('out_list', fl); - TinyMCE_EditableSelects.init(); - - if (n.nodeName == 'IMG') { - nl.src.value = dom.getAttrib(n, 'src'); - nl.width.value = dom.getAttrib(n, 'width'); - nl.height.value = dom.getAttrib(n, 'height'); - nl.alt.value = dom.getAttrib(n, 'alt'); - nl.title.value = dom.getAttrib(n, 'title'); - nl.vspace.value = this.getAttrib(n, 'vspace'); - nl.hspace.value = this.getAttrib(n, 'hspace'); - nl.border.value = this.getAttrib(n, 'border'); - selectByValue(f, 'align', this.getAttrib(n, 'align')); - selectByValue(f, 'class_list', dom.getAttrib(n, 'class'), true, true); - nl.style.value = dom.getAttrib(n, 'style'); - nl.id.value = dom.getAttrib(n, 'id'); - nl.dir.value = dom.getAttrib(n, 'dir'); - nl.lang.value = dom.getAttrib(n, 'lang'); - nl.usemap.value = dom.getAttrib(n, 'usemap'); - nl.longdesc.value = dom.getAttrib(n, 'longdesc'); - nl.insert.value = ed.getLang('update'); - - if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseover'))) - nl.onmouseoversrc.value = dom.getAttrib(n, 'onmouseover').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); - - if (/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/.test(dom.getAttrib(n, 'onmouseout'))) - nl.onmouseoutsrc.value = dom.getAttrib(n, 'onmouseout').replace(/^\s*this.src\s*=\s*\'([^\']+)\';?\s*$/, '$1'); - - if (ed.settings.inline_styles) { - // Move attribs to styles - if (dom.getAttrib(n, 'align')) - this.updateStyle('align'); - - if (dom.getAttrib(n, 'hspace')) - this.updateStyle('hspace'); - - if (dom.getAttrib(n, 'border')) - this.updateStyle('border'); - - if (dom.getAttrib(n, 'vspace')) - this.updateStyle('vspace'); - } - } - - // Setup browse button - document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); - if (isVisible('srcbrowser')) - document.getElementById('src').style.width = '260px'; - - // Setup browse button - document.getElementById('onmouseoversrccontainer').innerHTML = getBrowserHTML('overbrowser','onmouseoversrc','image','theme_advanced_image'); - if (isVisible('overbrowser')) - document.getElementById('onmouseoversrc').style.width = '260px'; - - // Setup browse button - document.getElementById('onmouseoutsrccontainer').innerHTML = getBrowserHTML('outbrowser','onmouseoutsrc','image','theme_advanced_image'); - if (isVisible('outbrowser')) - document.getElementById('onmouseoutsrc').style.width = '260px'; - - // If option enabled default contrain proportions to checked - if (ed.getParam("advimage_constrain_proportions", true)) - f.constrain.checked = true; - - // Check swap image if valid data - if (nl.onmouseoversrc.value || nl.onmouseoutsrc.value) - this.setSwapImage(true); - else - this.setSwapImage(false); - - this.changeAppearance(); - this.showPreviewImage(nl.src.value, 1); - }, - - insert : function(file, title) { - var ed = tinyMCEPopup.editor, t = this, f = document.forms[0]; - - if (f.src.value === '') { - if (ed.selection.getNode().nodeName == 'IMG') { - ed.dom.remove(ed.selection.getNode()); - ed.execCommand('mceRepaint'); - } - - tinyMCEPopup.close(); - return; - } - - if (tinyMCEPopup.getParam("accessibility_warnings", 1)) { - if (!f.alt.value) { - tinyMCEPopup.confirm(tinyMCEPopup.getLang('advimage_dlg.missing_alt'), function(s) { - if (s) - t.insertAndClose(); - }); - - return; - } - } - - t.insertAndClose(); - }, - - insertAndClose : function() { - var ed = tinyMCEPopup.editor, f = document.forms[0], nl = f.elements, v, args = {}, el; - - tinyMCEPopup.restoreSelection(); - - // Fixes crash in Safari - if (tinymce.isWebKit) - ed.getWin().focus(); - - if (!ed.settings.inline_styles) { - args = { - vspace : nl.vspace.value, - hspace : nl.hspace.value, - border : nl.border.value, - align : getSelectValue(f, 'align') - }; - } else { - // Remove deprecated values - args = { - vspace : '', - hspace : '', - border : '', - align : '' - }; - } - - tinymce.extend(args, { - src : nl.src.value.replace(/ /g, '%20'), - width : nl.width.value, - height : nl.height.value, - alt : nl.alt.value, - title : nl.title.value, - 'class' : getSelectValue(f, 'class_list'), - style : nl.style.value, - id : nl.id.value, - dir : nl.dir.value, - lang : nl.lang.value, - usemap : nl.usemap.value, - longdesc : nl.longdesc.value - }); - - args.onmouseover = args.onmouseout = ''; - - if (f.onmousemovecheck.checked) { - if (nl.onmouseoversrc.value) - args.onmouseover = "this.src='" + nl.onmouseoversrc.value + "';"; - - if (nl.onmouseoutsrc.value) - args.onmouseout = "this.src='" + nl.onmouseoutsrc.value + "';"; - } - - el = ed.selection.getNode(); - - if (el && el.nodeName == 'IMG') { - ed.dom.setAttribs(el, args); - } else { - tinymce.each(args, function(value, name) { - if (value === "") { - delete args[name]; - } - }); - - ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1}); - ed.undoManager.add(); - } - - tinyMCEPopup.editor.execCommand('mceRepaint'); - tinyMCEPopup.editor.focus(); - tinyMCEPopup.close(); - }, - - getAttrib : function(e, at) { - var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; - - if (ed.settings.inline_styles) { - switch (at) { - case 'align': - if (v = dom.getStyle(e, 'float')) - return v; - - if (v = dom.getStyle(e, 'vertical-align')) - return v; - - break; - - case 'hspace': - v = dom.getStyle(e, 'margin-left') - v2 = dom.getStyle(e, 'margin-right'); - - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'vspace': - v = dom.getStyle(e, 'margin-top') - v2 = dom.getStyle(e, 'margin-bottom'); - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'border': - v = 0; - - tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { - sv = dom.getStyle(e, 'border-' + sv + '-width'); - - // False or not the same as prev - if (!sv || (sv != v && v !== 0)) { - v = 0; - return false; - } - - if (sv) - v = sv; - }); - - if (v) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - } - } - - if (v = dom.getAttrib(e, at)) - return v; - - return ''; - }, - - setSwapImage : function(st) { - var f = document.forms[0]; - - f.onmousemovecheck.checked = st; - setBrowserDisabled('overbrowser', !st); - setBrowserDisabled('outbrowser', !st); - - if (f.over_list) - f.over_list.disabled = !st; - - if (f.out_list) - f.out_list.disabled = !st; - - f.onmouseoversrc.disabled = !st; - f.onmouseoutsrc.disabled = !st; - }, - - fillClassList : function(id) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { - cl = []; - - tinymce.each(v.split(';'), function(v) { - var p = v.split('='); - - cl.push({'title' : p[0], 'class' : p[1]}); - }); - } else - cl = tinyMCEPopup.editor.dom.getClasses(); - - if (cl.length > 0) { - lst.options.length = 0; - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); - - tinymce.each(cl, function(o) { - lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - fillFileList : function(id, l) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - l = typeof(l) === 'function' ? l() : window[l]; - lst.options.length = 0; - - if (l && l.length > 0) { - lst.options[lst.options.length] = new Option('', ''); - - tinymce.each(l, function(o) { - lst.options[lst.options.length] = new Option(o[0], o[1]); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - resetImageData : function() { - var f = document.forms[0]; - - f.elements.width.value = f.elements.height.value = ''; - }, - - updateImageData : function(img, st) { - var f = document.forms[0]; - - if (!st) { - f.elements.width.value = img.width; - f.elements.height.value = img.height; - } - - this.preloadImg = img; - }, - - changeAppearance : function() { - var ed = tinyMCEPopup.editor, f = document.forms[0], img = document.getElementById('alignSampleImg'); - - if (img) { - if (ed.getParam('inline_styles')) { - ed.dom.setAttrib(img, 'style', f.style.value); - } else { - img.align = f.align.value; - img.border = f.border.value; - img.hspace = f.hspace.value; - img.vspace = f.vspace.value; - } - } - }, - - changeHeight : function() { - var f = document.forms[0], tp, t = this; - - if (!f.constrain.checked || !t.preloadImg) { - return; - } - - if (f.width.value == "" || f.height.value == "") - return; - - tp = (parseInt(f.width.value) / parseInt(t.preloadImg.width)) * t.preloadImg.height; - f.height.value = tp.toFixed(0); - }, - - changeWidth : function() { - var f = document.forms[0], tp, t = this; - - if (!f.constrain.checked || !t.preloadImg) { - return; - } - - if (f.width.value == "" || f.height.value == "") - return; - - tp = (parseInt(f.height.value) / parseInt(t.preloadImg.height)) * t.preloadImg.width; - f.width.value = tp.toFixed(0); - }, - - updateStyle : function(ty) { - var dom = tinyMCEPopup.dom, b, bStyle, bColor, v, isIE = tinymce.isIE, f = document.forms[0], img = dom.create('img', {style : dom.get('style').value}); - - if (tinyMCEPopup.editor.settings.inline_styles) { - // Handle align - if (ty == 'align') { - dom.setStyle(img, 'float', ''); - dom.setStyle(img, 'vertical-align', ''); - - v = getSelectValue(f, 'align'); - if (v) { - if (v == 'left' || v == 'right') - dom.setStyle(img, 'float', v); - else - img.style.verticalAlign = v; - } - } - - // Handle border - if (ty == 'border') { - b = img.style.border ? img.style.border.split(' ') : []; - bStyle = dom.getStyle(img, 'border-style'); - bColor = dom.getStyle(img, 'border-color'); - - dom.setStyle(img, 'border', ''); - - v = f.border.value; - if (v || v == '0') { - if (v == '0') - img.style.border = isIE ? '0' : '0 none none'; - else { - var isOldIE = tinymce.isIE && (!document.documentMode || document.documentMode < 9); - - if (b.length == 3 && b[isOldIE ? 2 : 1]) - bStyle = b[isOldIE ? 2 : 1]; - else if (!bStyle || bStyle == 'none') - bStyle = 'solid'; - if (b.length == 3 && b[isIE ? 0 : 2]) - bColor = b[isOldIE ? 0 : 2]; - else if (!bColor || bColor == 'none') - bColor = 'black'; - img.style.border = v + 'px ' + bStyle + ' ' + bColor; - } - } - } - - // Handle hspace - if (ty == 'hspace') { - dom.setStyle(img, 'marginLeft', ''); - dom.setStyle(img, 'marginRight', ''); - - v = f.hspace.value; - if (v) { - img.style.marginLeft = v + 'px'; - img.style.marginRight = v + 'px'; - } - } - - // Handle vspace - if (ty == 'vspace') { - dom.setStyle(img, 'marginTop', ''); - dom.setStyle(img, 'marginBottom', ''); - - v = f.vspace.value; - if (v) { - img.style.marginTop = v + 'px'; - img.style.marginBottom = v + 'px'; - } - } - - // Merge - dom.get('style').value = dom.serializeStyle(dom.parseStyle(img.style.cssText), 'img'); - } - }, - - changeMouseMove : function() { - }, - - showPreviewImage : function(u, st) { - if (!u) { - tinyMCEPopup.dom.setHTML('prev', ''); - return; - } - - if (!st && tinyMCEPopup.getParam("advimage_update_dimensions_onchange", true)) - this.resetImageData(); - - u = tinyMCEPopup.editor.documentBaseURI.toAbsolute(u); - - if (!st) - tinyMCEPopup.dom.setHTML('prev', ''); - else - tinyMCEPopup.dom.setHTML('prev', ''); - } -}; - -ImageDialog.preInit(); -tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/bg_dlg.js deleted file mode 100644 index 762154144f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","align_right":"\u0414\u044f\u0441\u043d\u043e","align_left":"\u041b\u044f\u0432\u043e","align_textbottom":"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443","align_texttop":"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435","align_bottom":"\u0414\u043e\u043b\u0443","align_middle":"\u0426\u0435\u043d\u0442\u044a\u0440","align_top":"\u0413\u043e\u0440\u0435","align_baseline":"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",hspace:"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",vspace:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",src:"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","dialog_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","missing_alt":"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435 \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430? \u0411\u0435\u0437 \u043d\u0435\u0433\u043e \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430 \u043c\u043e\u0436\u0435 \u0434\u0430 \u0435 \u043d\u0435\u0434\u043e\u0441\u0442\u044a\u043f\u043d\u0430 \u0437\u0430 \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u043d\u0435\u0434\u044a\u0437\u0438, \u0438\u043b\u0438 \u0437\u0430 \u0442\u0435\u0437\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0442\u0435\u043a\u0441\u0442\u043e\u0432 \u0431\u0440\u0430\u0443\u0437\u044a\u0440, \u0438\u043b\u0438 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0449\u0438 \u0418\u043d\u0442\u0435\u0440\u043d\u0435\u0442 \u0441 \u0438\u0437\u043a\u043b\u044e\u0447\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438.","example_img":"\u041f\u0440\u0435\u0433\u043b\u0435\u0434 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430",misc:"\u0420\u0430\u0437\u043d\u0438",mouseout:"\u0437\u0430 mouse out",mouseover:"\u0437\u0430 mouse over","alt_image":"\u0420\u0435\u0437\u0435\u0440\u0432\u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","swap_image":"\u0421\u043c\u0435\u043d\u0438 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",map:"\u041a\u0430\u0440\u0442\u0438\u043d\u0430 \u043a\u0430\u0440\u0442\u0430",id:"Id",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b","long_desc":"\u0425\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 \u043a\u044a\u043c \u0434\u044a\u043b\u0433\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","constrain_proportions":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434",title:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",general:"\u041e\u0431\u0449\u0438","tab_advanced":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","tab_appearance":"\u0412\u044a\u043d\u0448\u0435\u043d \u0432\u0438\u0434","tab_general":"\u041e\u0431\u0449\u0438",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/cs_dlg.js deleted file mode 100644 index cb9cb5878a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.advimage_dlg',{"image_list":"Seznam obr\u00e1zk\u016f","align_right":"Vpravo","align_left":"Vlevo","align_textbottom":"Se spodkem \u0159\u00e1dku","align_texttop":"S vrchem \u0159\u00e1dku","align_bottom":"Dol\u016f","align_middle":"Na st\u0159ed \u0159\u00e1dku","align_top":"Nahoru","align_baseline":"Na z\u00e1kladnu",align:"Zarovn\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed",dimensions:"Rozm\u011bry",border:"R\u00e1me\u010dek",list:"Seznam obr\u00e1zk\u016f",alt:"Popis obr\u00e1zku",src:"URL obr\u00e1zku","dialog_title":"Vlo\u017eit/upravit obr\u00e1zek","missing_alt":"Skute\u010dn\u011b chcete pokra\u010dovat bez vlo\u017een\u00e9ho popisu obr\u00e1zku? Bez popisu m\u016f\u017ee b\u00fdt obr\u00e1zek nep\u0159\u00edstupn\u00fd u\u017eivatel\u016fm se zrakov\u00fdm posti\u017een\u00edm, u\u017eivatel\u016fm textov\u00fdch prohl\u00ed\u017ee\u010d\u016f nebo u\u017eivatel\u016fm, kte\u0159\u00ed maj\u00ed vypnuto zobrazov\u00e1n\u00ed obr\u00e1zk\u016f.","example_img":"P\u0159\u00edklad obr\u00e1zku",misc:"R\u016fzn\u00e9",mouseout:"Po odjet\u00ed my\u0161i...",mouseover:"P\u0159i najet\u00ed my\u0161i...","alt_image":"Alternativn\u00ed obr\u00e1zek","swap_image":"P\u0159epnout obr\u00e1zek",map:"Obr\u00e1zkov\u00e1 mapa",id:"ID",rtl:"Zprava doleva",ltr:"Zleva doprava",classes:"T\u0159\u00eddy",style:"Styl","long_desc":"Dlouh\u00fd popis",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu","constrain_proportions":"Zachovat proporce",preview:"N\u00e1hled",title:"Titulek",general:"Obecn\u00e9 parametry","tab_advanced":"Roz\u0161\u00ed\u0159en\u00e9","tab_appearance":"Vzhled","tab_general":"Obecn\u00e9",width:"\u0160\u00ed\u0159ka",height:"V\u00fd\u0161ka"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/da_dlg.js deleted file mode 100644 index 66aa88be93..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.advimage_dlg',{"image_list":"Billedliste","align_right":"H\u00f8jre","align_left":"Venstre","align_textbottom":"Tekstbund","align_texttop":"Teksttop","align_bottom":"Bund","align_middle":"Midte","align_top":"Top","align_baseline":"Grundlinje",align:"Justering",hspace:"Horisontal afstand",vspace:"Vertikal afstand",dimensions:"Dimensioner",border:"Kant",list:"Billedliste",alt:"Billedbeskrivelse",src:"Billed-URL","dialog_title":"Inds\u00e6t/rediger billede","missing_alt":"Er du sikker p\u00e5, at du vil forts\u00e6tte uden at inkludere en billedebeskrivelse? Uden denne er billedet m\u00e5ske ikke tilg\u00e6ngeligt for nogle brugere med handicaps, eller for dem der bruger en tekstbrowser, eller som browser internettet med billeder sl\u00e5et fra.","example_img":"Forh\u00e5ndsvisning af billede",misc:"Diverse",mouseout:"for mus-ud",mouseover:"for mus-over","alt_image":"Alternativt billede","swap_image":"Byt billede",map:"Billede map",id:"Id",rtl:"H\u00f8jre til venstre",ltr:"Venstre til h\u00f8jre",classes:"Klasser",style:"Stil","long_desc":"Lang beskrivelseslink",langcode:"Sprogkode",langdir:"Sprogretning","constrain_proportions":"Bibehold proportioner",preview:"Vis",title:"Titel",general:"Generelt","tab_advanced":"Avanceret","tab_appearance":"Udseende","tab_general":"Generelt",width:"Bredde",height:"H\u00f8jde"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/de_dlg.js deleted file mode 100644 index c5ea891a6d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.advimage_dlg',{"image_list":"Bilderliste","align_right":"Rechts","align_left":"Links","align_textbottom":"Unten im Text","align_texttop":"Oben im Text","align_bottom":"Unten","align_middle":"Mittig","align_top":"Oben","align_baseline":"Zeile",align:"Ausrichtung",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand",dimensions:"Ausma\u00dfe",border:"Rahmen",list:"Bilderliste",alt:"Beschreibung",src:"Adresse","dialog_title":"Bild einf\u00fcgen/ver\u00e4ndern","missing_alt":"Soll wirklich keine Beschreibung f\u00fcr das Bild eingegeben werden? Bestimmte Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnen so nicht darauf zugreifen, ebenso solche, die einen Textbrowser benutzen oder die Anzeige von Bildern deaktiviert haben.","example_img":"Vorschau auf das Aussehen",misc:"Verschiedenes",mouseout:"bei keinem Mauskontakt",mouseover:"bei Mauskontakt","alt_image":"Alternatives Bild","swap_image":"Bild austauschen",map:"Image-Map",id:"ID",rtl:"Rechts nach links",ltr:"Links nach rechts",classes:"Klassen",style:"Format","long_desc":"Ausf\u00fchrliche Beschreibung",langcode:"Sprachcode",langdir:"Schriftrichtung","constrain_proportions":"Seitenverh\u00e4ltnis beibehalten",preview:"Vorschau",title:"Titel",general:"Allgemein","tab_advanced":"Erweitert","tab_appearance":"Aussehen","tab_general":"Allgemein",width:"Breite",height:"H\u00f6he"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/en_dlg.js deleted file mode 100644 index 5f122e2cd3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.advimage_dlg',{"image_list":"Image List","align_right":"Right","align_left":"Left","align_textbottom":"Text Bottom","align_texttop":"Text Top","align_bottom":"Bottom","align_middle":"Middle","align_top":"Top","align_baseline":"Baseline",align:"Alignment",hspace:"Horizontal Space",vspace:"Vertical Space",dimensions:"Dimensions",border:"Border",list:"Image List",alt:"Image Description",src:"Image URL","dialog_title":"Insert/Edit Image","missing_alt":"Are you sure you want to continue without including an Image Description? Without it the image may not be accessible to some users with disabilities, or to those using a text browser, or browsing the Web with images turned off.","example_img":"Appearance Preview Image",misc:"Miscellaneous",mouseout:"For Mouse Out",mouseover:"For Mouse Over","alt_image":"Alternative Image","swap_image":"Swap Image",map:"Image Map",id:"ID",rtl:"Right to Left",ltr:"Left to Right",classes:"Classes",style:"Style","long_desc":"Long Description Link",langcode:"Language Code",langdir:"Language Direction","constrain_proportions":"Constrain Proportions",preview:"Preview",title:"Title",general:"General","tab_advanced":"Advanced","tab_appearance":"Appearance","tab_general":"General",width:"Width",height:"Height"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/es_dlg.js deleted file mode 100644 index 6b6a5130ca..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.advimage_dlg',{"image_list":"Lista de imagen","align_right":"Derecha","align_left":"Izquierda","align_textbottom":"Texto abajo","align_texttop":"Texto arriba","align_bottom":"Debajo","align_middle":"Medio","align_top":"Arriba","align_baseline":"L\u00ednea base",align:"Alineaci\u00f3n",hspace:"Espacio horizontal",vspace:"Espacio vertical",dimensions:"Dimensiones",border:"Bordes",list:"Lista de imagen",alt:"Descripci\u00f3n de la imagen",src:"URL de la imagen","dialog_title":"Insertar/editar imagen","missing_alt":" \u00bfEsta seguro de continuar sin introducir una descripci\u00f3n a la imagen? Sin ella puede no ser accesible para usuarios con discapacidades, o para aquellos que usen navegadores de modo texto, o tengan deshabilitadas las im\u00e1genes de la p\u00e1gina.","example_img":"Vista previa de la imagen",misc:"Miscel\u00e1neo",mouseout:"para mouseout",mouseover:"para mouseover","alt_image":"Imagen alternativa","swap_image":"Intercambiar imagen",map:"Mapa de imagen",id:"Id",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",classes:"Clases",style:"Estilos","long_desc":"V\u00ednculo para descripci\u00f3n larga",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",preview:"Vista previa",title:"T\u00edtulo",general:"General","tab_advanced":"Avanzado","tab_appearance":"Apariencia","tab_general":"General",width:"Ancho",height:"Alto"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fa_dlg.js deleted file mode 100644 index a52e737d50..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.advimage_dlg',{"image_list":"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631","align_right":"\u0631\u0627\u0633\u062a","align_left":"\u0686\u067e","align_textbottom":"\u0645\u062a\u0646 \u067e\u0627\u06cc\u06cc\u0646","align_texttop":"\u0645\u062a\u0646 \u0628\u0627\u0644\u0627","align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","align_middle":"\u0648\u0633\u0637","align_top":"\u0628\u0627\u0644\u0627","align_baseline":"\u062e\u0637 \u067e\u0627\u06cc\u0647",align:"\u062a\u0631\u0627\u0632",hspace:"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc",vspace:"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc",dimensions:"\u0627\u0628\u0639\u0627\u062f",border:"\u062d\u0627\u0634\u06cc\u0647",list:"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631",alt:"\u062a\u0648\u0636\u06cc\u062d \u062a\u0635\u0648\u06cc\u0631",src:"\u0622\u062f\u0631\u0633 \u062a\u0635\u0648\u06cc\u0631","dialog_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","missing_alt":"\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0627\u0632 \u0627\u062f\u0627\u0645\u0647 \u0628\u062f\u0648\u0646 \u0634\u0627\u0645\u0644 \u06a9\u0631\u062f\u0646 \u06cc\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0628\u0631\u0627\u06cc \u062a\u0635\u0648\u06cc\u0631 \u0627\u0637\u0645\u06cc\u0646\u0627\u0646 \u062f\u0627\u0631\u06cc\u062f\u061f \u0628\u062f\u0648\u0646 \u0622\u0646 \u0645\u0645\u06a9\u0646 \u0646\u06cc\u0633\u062a \u062a\u0635\u0627\u0648\u06cc\u0631 \u0628\u0631\u0627\u06cc \u0628\u0631\u062e\u06cc \u06a9\u0627\u0631\u0628\u0631\u0627\u0646\u06cc \u06a9\u0647 \u0642\u0627\u0628\u0644\u06cc\u062a \u062f\u06cc\u062f\u0646 \u062a\u0635\u0627\u0648\u06cc\u0631 \u0631\u0627 \u0646\u062f\u0627\u0631\u0646\u062f \u060c \u06cc\u0627 \u0622\u0646\u0647\u0627\u06cc\u06cc \u06a9\u0647 \u0627\u0632 \u06cc\u06a9 \u0645\u0631\u0648\u0631\u06af\u0631 \u0645\u062a\u0646\u06cc \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0645\u06cc \u06a9\u0646\u0646\u062f \u060c \u06cc\u0627 \u062f\u0631 \u062d\u0627\u0644 \u062f\u06cc\u062f\u0646 \u0648\u0628 \u0628\u062f\u0648\u0646 \u062a\u0635\u0648\u06cc\u0631 \u0645\u06cc \u0628\u0627\u0634\u0646\u062f \u060c \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u06cc\u0627\u0628\u06cc \u0628\u0627\u0634\u062f.","example_img":"\u062a\u0635\u0648\u06cc\u0631 \u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634 \u0638\u0627\u0647\u0631",misc:"\u0645\u062a\u0641\u0631\u0642\u0647",mouseout:"\u0628\u0631\u0627\u06cc \u0631\u0641\u062a\u0646 \u0645\u0648\u0633",mouseover:"\u0628\u0631\u0627\u06cc \u0622\u0645\u062f\u0646 \u0645\u0648\u0633","alt_image":"\u062a\u0635\u0648\u06cc\u0631 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646","swap_image":"\u062a\u0639\u0648\u06cc\u0636 \u062a\u0635\u0648\u06cc\u0631",map:"\u0646\u0642\u0634\u0647 \u062a\u0635\u0648\u06cc\u0631",id:"\u0634\u0646\u0627\u0633\u0647",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",classes:"\u06a9\u0644\u0627\u0633 \u0647\u0627",style:"\u0627\u0633\u062a\u0627\u06cc\u0644","long_desc":"\u0644\u06cc\u0646\u06a9 \u062a\u0648\u0636\u06cc\u062d \u0637\u0648\u0644\u0627\u0646\u06cc",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646","constrain_proportions":"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634",title:"\u0639\u0646\u0648\u0627\u0646",general:"\u0639\u0645\u0648\u0645\u06cc","tab_advanced":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","tab_appearance":"\u0638\u0627\u0647\u0631","tab_general":"\u0639\u0645\u0648\u0645\u06cc",width:"\u067e\u0647\u0646\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fi_dlg.js deleted file mode 100644 index f85c1ec31d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.advimage_dlg',{"image_list":"Kuvalista","align_right":"Oikealla","align_left":"Vasemmalla","align_textbottom":"Teksti alhaalla","align_texttop":"Teksti ylh\u00e4\u00e4ll\u00e4","align_bottom":"Alhaalla","align_middle":"Keskell\u00e4","align_top":"Ylh\u00e4\u00e4ll\u00e4","align_baseline":"Rivill\u00e4",align:"Tasaus",hspace:"vaakasuora tila",vspace:"pystysuora tila",dimensions:"Mitat",border:"Kehys",list:"Kuvalista",alt:"Kuvan kuvaus",src:"Kuvan URL","dialog_title":"Lis\u00e4\u00e4/muokkaa kuvaa","missing_alt":"Haluatko varmasti jatkaa lis\u00e4\u00e4m\u00e4tt\u00e4 kuvausta? Kuvauksen puuttuminen saattaa h\u00e4irit\u00e4 sellaisia, jotka k\u00e4ytt\u00e4v\u00e4t tekstipohjaista selainta tai ovat kytkeneet kuvien n\u00e4kymisen pois p\u00e4\u00e4lt\u00e4.","example_img":"Ulkoasun esikatselukuva",misc:"Sekalaiset",mouseout:"mouseoutille",mouseover:"mouseoverille","alt_image":"Vaihtoehtoinen kuva","swap_image":"Vaihda kuva",map:"Kuvakartta",id:"Id",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",classes:"Luokat",style:"Tyyli","long_desc":"Pitk\u00e4n kuvauksen linkki",langcode:"Kielen koodi",langdir:"Kielen suunta","constrain_proportions":"S\u00e4ilyt\u00e4 mittasuhteet",preview:"Esikatselu",title:"Otsikko",general:"Yleiset","tab_advanced":"Edistynyt","tab_appearance":"N\u00e4kyminen","tab_general":"Yleiset",width:"Leveys",height:"Korkeus"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fr_dlg.js deleted file mode 100644 index 1479bf1948..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.advimage_dlg',{"image_list":"Liste d\'images","align_right":"Droite (flottant)","align_left":"Gauche (flottant)","align_textbottom":"Texte en bas","align_texttop":"Texte en haut","align_bottom":"En bas","align_middle":"Au milieu","align_top":"En haut","align_baseline":"Normal",align:"Alignement",hspace:"Espacement horizontal",vspace:"Espacement vertical",dimensions:"Dimensions",border:"Bordure",list:"Liste d\'images",alt:"Description de l\'image",src:"URL de l\'image","dialog_title":"Ins\u00e9rer / \u00e9diter une image","missing_alt":"\u00cates-vous s\u00fbr de vouloir continuer sans d\u00e9finir de description pour l\'image ? Sans elle, l\'image peut ne pas \u00eatre accessible \u00e0 certains utilisateurs handicap\u00e9s, ceux utilisant un navigateur texte ou ceux qui naviguent sans affichage des images.","example_img":"Apparence de l\'image",misc:"Divers",mouseout:"\u00e0 la sortie de la souris",mouseover:"au survol de la souris","alt_image":"Image alternative","swap_image":"Image de remplacement",map:"Image cliquable",id:"Id",rtl:"De droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",classes:"Classes",style:"Style","long_desc":"Description longue du lien",langcode:"Code de la langue",langdir:"Sens de lecture","constrain_proportions":"Conserver les proportions",preview:"Pr\u00e9visualisation",title:"Titre",general:"G\u00e9n\u00e9ral","tab_advanced":"Avanc\u00e9","tab_appearance":"Apparence","tab_general":"G\u00e9n\u00e9ral",width:"Largeur",height:"Hauteur"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/he_dlg.js deleted file mode 100644 index fb3ea2ac69..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.advimage_dlg',{"image_list":"\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea","align_right":"\u05dc\u05d9\u05de\u05d9\u05df","align_left":"\u05dc\u05e9\u05de\u05d0\u05dc","align_textbottom":"\u05d8\u05e7\u05e1\u05d8 \u05ea\u05d7\u05ea\u05d5\u05df","align_texttop":"\u05d8\u05e7\u05e1\u05d8 \u05e2\u05dc\u05d9\u05d5\u05df","align_bottom":"\u05ea\u05d7\u05ea\u05d9\u05ea","align_middle":"\u05d0\u05de\u05e6\u05e2","align_top":"\u05e2\u05dc\u05d9\u05d5\u05df","align_baseline":"\u05e7\u05d5 \u05d1\u05e1\u05d9\u05e1\u05d9",align:"\u05d9\u05e9\u05d5\u05e8",hspace:"\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9",vspace:"\u05e7\u05d5 \u05d0\u05e0\u05db\u05d9",dimensions:"\u05de\u05d9\u05de\u05d3\u05d9\u05dd",border:"\u05d2\u05d1\u05d5\u05dc",list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05de\u05d5\u05e0\u05d5\u05ea",alt:"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",src:"URL \u05e9\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4","dialog_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4","missing_alt":"\u05dc\u05d4\u05de\u05e9\u05d9\u05da \u05de\u05d1\u05dc\u05d9 \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05ea\u05d9\u05d0\u05d5\u05e8 \u05dc\u05ea\u05de\u05d5\u05e0\u05d4?","example_img":"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4 \u05e9\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",misc:"\u05e9\u05d5\u05e0\u05d5\u05ea",mouseout:"\u05d4\u05e1\u05de\u05df \u05e2\u05d1\u05e8 \u05d0\u05ea \u05d4\u05ea\u05de\u05d5\u05e0\u05d4",mouseover:"\u05d1\u05e2\u05ea \u05de\u05e2\u05d1\u05e8 \u05d4\u05e1\u05de\u05df \u05e2\u05dc \u05d4\u05ea\u05de\u05d5\u05e0\u05d4","alt_image":"\u05ea\u05de\u05d5\u05e0\u05d4 \u05d7\u05dc\u05d9\u05e4\u05d9\u05ea","swap_image":"\u05d4\u05d7\u05dc\u05e4\u05ea \u05ea\u05de\u05d5\u05e0\u05d4",map:"Image map",id:"Id",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",classes:"Classes",style:"\u05e1\u05d2\u05e0\u05d5\u05df","long_desc":"\u05ea\u05d9\u05d0\u05d5\u05e8 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e8\u05d5\u05da",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4","constrain_proportions":"\u05e9\u05de\u05d9\u05e8\u05d4 \u05e2\u05dc \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4",title:"\u05db\u05d5\u05ea\u05e8\u05ea",general:"\u05db\u05dc\u05dc\u05d9","tab_advanced":"\u05de\u05ea\u05e7\u05d3\u05dd","tab_appearance":"\u05de\u05e8\u05d0\u05d4","tab_general":"\u05db\u05dc\u05dc\u05d9",width:"\u05e8\u05d5\u05d7\u05d1",height:"\u05d2\u05d5\u05d1\u05d4"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/it_dlg.js deleted file mode 100644 index 9195c9623c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.advimage_dlg',{"image_list":"Lista immagini","align_right":"A destra","align_left":"A sinistra","align_textbottom":"In basso al testo","align_texttop":"In alto al testo","align_bottom":"In basso","align_middle":"In mezzo","align_top":"In alto","align_baseline":"Alla base",align:"Allineamento",hspace:"Spaziatura orizzontale",vspace:"Spaziatura verticale",dimensions:"Dimensioni",border:"Bordo",list:"Lista immagini",alt:"Descrizione immagine",src:"URL immagine","dialog_title":"Inserisci/modifica immagine","missing_alt":"Sicuro di continuare senza includere una descrizione dell\'immagine? Senza di essa l\'immagine pu\u00f2 non essere accessibile ad alcuni utenti con disabilit\u00e0, o per coloro che usano un browser testuale oppure che hanno disabilitato la visualizzazione delle immagini nel loro browser.","example_img":"Anteprima aspetto immagine",misc:"Impostazioni varie",mouseout:"quando mouse fuori",mouseover:"quando mouse sopra","alt_image":"Immagine alternativa","swap_image":"Sostituisci immagine",map:"Immagine come mappa",id:"Id",rtl:"Destra verso sinistraa",ltr:"Sinistra verso destra",classes:"Classe",style:"Stile","long_desc":"Descrizione del collegamento",langcode:"codice lingua",langdir:"Direzione testo","constrain_proportions":"Mantieni proporzioni",preview:"Anteprima",title:"Titolo",general:"Generale","tab_advanced":"Avanzate","tab_appearance":"Aspetto","tab_general":"Generale",width:"Larghezza",height:"Altezza"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/ja_dlg.js deleted file mode 100644 index f8449c4230..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.advimage_dlg',{"image_list":"\u753b\u50cf\u306e\u4e00\u89a7","align_right":"\u53f3\u5bc4\u305b","align_left":"\u5de6\u5bc4\u305b","align_textbottom":"\u30c6\u30ad\u30b9\u30c8\u3092\u4e0b\u7aef\u63c3\u3048","align_texttop":"\u30c6\u30ad\u30b9\u30c8\u3092\u4e0a\u7aef\u63c3\u3048","align_bottom":"\u4e0b\u63c3\u3048","align_middle":"\u4e2d\u592e\u63c3\u3048","align_top":"\u4e0a\u63c3\u3048","align_baseline":"\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\u63c3\u3048",align:"\u914d\u7f6e",hspace:"\u5de6\u53f3\u306e\u4f59\u767d",vspace:"\u4e0a\u4e0b\u306e\u4f59\u767d",dimensions:"\u5bf8\u6cd5",border:"\u67a0\u7dda",list:"\u753b\u50cf\u306e\u4e00\u89a7",alt:"\u753b\u50cf\u306e\u8aac\u660e",src:"\u753b\u50cf\u306eURL","dialog_title":"\u753b\u50cf\u3092\u633f\u5165/\u7de8\u96c6","missing_alt":"\u753b\u50cf\u306e\u8aac\u660e\u3092\u542b\u3081\u305a\u306b\u7d9a\u3051\u307e\u3059\u304b? \u753b\u50cf\u306e\u8aac\u660e\u304c\u306a\u3044\u3068\u76ee\u306e\u4e0d\u81ea\u7531\u306a\u65b9\u3001\u30c6\u30ad\u30b9\u30c8\u8868\u793a\u3060\u3051\u306e\u30d6\u30e9\u30a6\u30b6\u3092\u4f7f\u7528\u3057\u3066\u3044\u308b\u65b9\u3001\u753b\u50cf\u306e\u8868\u793a\u3092\u6b62\u3081\u3066\u308b\u65b9\u304c\u30a2\u30af\u30bb\u30b9\u3067\u304d\u306a\u3044\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002","example_img":"\u753b\u50cf\u306e\u30d7\u30ec\u30d3\u30e5\u30fc\u306e\u69d8\u5b50",misc:"\u305d\u306e\u4ed6",mouseout:"\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u5916\u308c\u308b\u6642",mouseover:"\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u304b\u304b\u308b\u6642","alt_image":"\u5225\u306e\u753b\u50cf","swap_image":"\u753b\u50cf\u306e\u5165\u308c\u66ff\u3048",map:"\u30a4\u30e1\u30fc\u30b8\u30de\u30c3\u30d7",id:"ID",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",classes:"\u30af\u30e9\u30b9",style:"\u30b9\u30bf\u30a4\u30eb","long_desc":"\u8a73\u7d30\u306a\u8aac\u660e\u306e\u30ea\u30f3\u30af",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411","constrain_proportions":"\u7e26\u6a2a\u6bd4\u306e\u7dad\u6301",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc",title:"\u30bf\u30a4\u30c8\u30eb",general:"\u4e00\u822c","tab_advanced":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","tab_appearance":"\u8868\u793a","tab_general":"\u4e00\u822c",width:"\u5e45",height:"\u9ad8\u3055"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/nl_dlg.js deleted file mode 100644 index ea72728127..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.advimage_dlg',{"image_list":"Lijst","align_right":"Rechts","align_left":"Links","align_textbottom":"Onderkant tekst","align_texttop":"Bovenkant tekst","align_bottom":"Onder","align_middle":"Midden","align_top":"Boven","align_baseline":"Basislijn",align:"Uitlijning",hspace:"Horizontale ruimte",vspace:"Verticale ruimte",dimensions:"Afmetingen",border:"Rand",list:"Lijst",alt:"Beschrijving",src:"Bestand/URL","dialog_title":"Afbeelding invoegen/bewerken","missing_alt":"Wilt u de afbeelding zonder beschrijving invoegen? De afbeelding wordt dan mogelijk niet opgemerkt door mensen met een visuele handicap, of mensen die zonder afbeeldingen browsen.","example_img":"Voorbeeldweergave",misc:"Diversen",mouseout:"Bij muis uit",mouseover:"Bij muis over","alt_image":"Alternatieve afbeeldingen","swap_image":"Afbeelding wisselen",map:"Afbeeldingsplattegrond",id:"Id",rtl:"Van rechts naar links",ltr:"Van links naar rechts",classes:"Klasses",style:"Stijl","long_desc":"Uitgebreide beschrijving",langcode:"Taalcode",langdir:"Taalrichting","constrain_proportions":"Verhouding behouden",preview:"Voorbeeld",title:"Titel",general:"Algemeen","tab_advanced":"Geavanceerd","tab_appearance":"Weergave","tab_general":"Algemeen",width:"Breedte",height:"Hoogte"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/nn_dlg.js deleted file mode 100644 index 2c0b2caad9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.advimage_dlg',{"image_list":"Liste med bilete","align_right":"H\u00f8gre","align_left":"Venstre","align_textbottom":"Tekst botn","align_texttop":"Tekst topp","align_bottom":"Botn","align_middle":"Midtstilt","align_top":"Topp","align_baseline":"Basislinje",align:"Justering",hspace:"Horisontal avstand",vspace:"Vertikal avstand",dimensions:"Dimensjonar",border:"Ramme",list:"Bileteliste",alt:"Bileteomtale",src:"Bilete-URL","dialog_title":"Set inn / endre bilete","missing_alt":"Er du sikker p\u00e5 at du vil fortsetje utan \u00e5 setje inn ei omtale av biletet? Utan omtale vil biletet ikkje gje meining for enkelte funksjonshemma eller for personar som bruker ein nettlesar med biletvisinga avsl\u00e5tt.","example_img":"Sj\u00e5 f\u00f8rebels utkast av bilete",misc:"Anna",mouseout:"for musepeikar utanfor",mouseover:"for musepeikar over","alt_image":"Alternativt bilete","swap_image":"Byt bilete",map:"Biletekart",id:"Id",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",classes:"Klasser",style:"Stil","long_desc":"Lang omtale",langcode:"Spr\u00e5kkode",langdir:"Skriftretning","constrain_proportions":"Behald proporsjonar",preview:"Sj\u00e5 f\u00f8rebels utkast",title:"Tittel",general:"Generelt","tab_advanced":"Avansert","tab_appearance":"Utsj\u00e5nad","tab_general":"Generelt",width:"Breidde",height:"H\u00f8gde"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/pl_dlg.js deleted file mode 100644 index c32f718ac2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.advimage_dlg',{"image_list":"Lista obrazk\u00f3w","align_right":"Prawy","align_left":"Lewy","align_textbottom":"Tekst dolny","align_texttop":"Tekst g\u00f3rny","align_bottom":"Dolny","align_middle":"\u015arodkowy","align_top":"G\u00f3rny","align_baseline":"G\u0142\u00f3wna linia",align:"Wyr\u00f3wnanie",hspace:"Odst\u0119p poziomy",vspace:"Odst\u0119p pionowy",dimensions:"Rozmiary",border:"Obramowanie",list:"Lista obrazk\u00f3w",alt:"Opis obrazka",src:"URL obrazka","dialog_title":"Wklej/edytuj obraz","missing_alt":"Czy jeste\u015b pewien, \u017ce chcesz kontynuowa\u0107 bez opisu obrazka? Obrazek bez opisu mo\u017ce nie by\u0107 dost\u0119pny dla u\u017cytkownik\u00f3w u\u017cywaj\u0105cych tekstowe przegl\u0105darki lub przegl\u0105daj\u0105cych stron\u0119 z wy\u0142\u0105czonymi obrazkami.","example_img":"Podgl\u0105d wygl\u0105du obrazka",misc:"R\u00f3\u017cne",mouseout:"dla mouseout",mouseover:"dla mouseover","alt_image":"alternatywny obrazek","swap_image":"Zamiana obrazka",map:"Mapa obrazu",id:"Id",rtl:"Z prawej do lewej",ltr:"Z lewej do prawej",classes:"Klasy",style:"Styl","long_desc":"D\u0142ugi opis linku",langcode:"Kod j\u0119zyka",langdir:"Kierunek j\u0119zyka","constrain_proportions":"Zachowaj proporcje",preview:"Podgl\u0105d",title:"Tytu\u0142",general:"Og\u00f3lne","tab_advanced":"Zaawansowane","tab_appearance":"Wygl\u0105d","tab_general":"Og\u00f3lne",width:"Szeroko\u015b\u0107",height:"Wysoko\u015b\u0107"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/pt_dlg.js deleted file mode 100644 index 513319ffc9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.advimage_dlg',{"image_list":"Lista de imagens","align_right":"Direita","align_left":"Esquerda","align_textbottom":"Base do texto","align_texttop":"Topo do texto","align_bottom":"Abaixo","align_middle":"Meio","align_top":"Topo","align_baseline":"Sobre a linha de texto",align:"Alinhamento",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical",dimensions:"Dimens\u00f5es",border:"Limite",list:"Lista de imagens",alt:"Descri\u00e7\u00e3o da imagem",src:"Endere\u00e7o da imagem","dialog_title":"Inserir/editar imagem","missing_alt":"Tem certeza que deseja continuar sem acrescentar uma descri\u00e7\u00e3o \u00e0 imagem? (Isto pode gerar problemas de acessibilidade em alguns navegadores)","example_img":"Pr\u00e9-Visualiza\u00e7\u00e3o",misc:"Misto",mouseout:"mouseout",mouseover:"mouseover","alt_image":"Imagem alternativa","swap_image":"Trocar imagem",map:"Mapa de imagem",id:"Id",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",classes:"Classes",style:"Estilo","long_desc":"Descri\u00e7\u00e3o extensa",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto","constrain_proportions":"Manter propor\u00e7\u00f5es",preview:"Pr\u00e9-Visualiza\u00e7\u00e3o",title:"T\u00edtulo",general:"Geral","tab_advanced":"Avan\u00e7ado","tab_appearance":"Apar\u00eancia","tab_general":"Geral",width:"Largura",height:"Altura"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/ru_dlg.js deleted file mode 100644 index 3e341d1f7d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.advimage_dlg',{"image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",hspace:"\u0413\u043e\u0440\u0438\u0437. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f",dimensions:"\u0420\u0430\u0437\u043c\u0435\u0440",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a",alt:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",src:"\u0410\u0434\u0440\u0435\u0441","dialog_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","missing_alt":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u044f? \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c \u0441 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044f\u043c\u0438 \u0438\u043b\u0438 \u0442\u0435\u043c, \u043a\u0442\u043e \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u043e\u0432\u044b\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b \u0438\u043b\u0438 \u043e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u0442 \u0441\u0430\u0439\u0442\u044b \u0441 \u043e\u0442\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u043c\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f\u043c\u0438.","example_img":"\u041f\u0440\u0438\u043c\u0435\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",misc:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",mouseout:"\u0412 \u043f\u043e\u043a\u043e\u0435",mouseover:"\u041f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","alt_image":"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","swap_image":"\u0414\u0438\u043d\u0430\u043c\u0438\u0447\u0435\u0441\u043a\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",map:"\u041a\u0430\u0440\u0442\u0430 \u0441\u0441\u044b\u043b\u043e\u043a",id:"\u0418\u043c\u044f \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0430",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",classes:"\u041a\u043b\u0430\u0441\u0441\u044b",style:"\u0421\u0442\u0438\u043b\u044c","long_desc":"\u0421\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043f\u043e\u043b\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440",title:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",general:"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","tab_advanced":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","tab_appearance":"\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","tab_general":"\u041e\u0431\u0449\u0435\u0435",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u044b\u0441\u043e\u0442\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/sv_dlg.js deleted file mode 100644 index af1e61c55a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.advimage_dlg',{"image_list":"Bildlista","align_right":"H\u00f6ger","align_left":"V\u00e4nster","align_textbottom":"Botten av texten","align_texttop":"Toppen av texten","align_bottom":"Botten","align_middle":"Mitten","align_top":"Toppen","align_baseline":"Baslinje",align:"Justering",hspace:"Horisontalrymd",vspace:"Vertikalrymd",dimensions:"Dimensioner",border:"Ram",list:"Bildlista",alt:"Bildens beskrivning",src:"Bildens URL","dialog_title":"Infoga/redigera bild","missing_alt":"Vill du forts\u00e4tta utan bildbeskrivning?\nIcke grafiska webbl\u00e4sare kommer inte att kunna tolka bilden f\u00f6r anv\u00e4ndaren.","example_img":"Exempelbild",misc:"\u00d6vrigt",mouseout:"vid musen utanf\u00f6r",mouseover:"vid musen ovanf\u00f6r","alt_image":"Alternativbild","swap_image":"Utbytningsbild",map:"L\u00e4nkkarta",id:"Id",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",classes:"Klasser",style:"Stil","long_desc":"L\u00e5ng beskrivning",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning","constrain_proportions":"Bibeh\u00e5ll proportionerna",preview:"F\u00f6rhandsvisning",title:"Titel",general:"Generellt","tab_advanced":"Avancerat","tab_appearance":"Utseende","tab_general":"Generellt",width:"Bredd",height:"H\u00f6jd"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/zh_dlg.js deleted file mode 100644 index b07c5f792a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advimage/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.advimage_dlg',{"image_list":"\u56fe\u7247\u6e05\u5355","align_right":"\u9760\u53f3","align_left":"\u9760\u5de6","align_textbottom":"\u6587\u5b57\u4e0b\u65b9","align_texttop":"\u6587\u5b57\u4e0a\u65b9","align_bottom":"\u9760\u4e0b","align_middle":"\u5782\u76f4\u5c45\u4e2d","align_top":"\u9760\u4e0a","align_baseline":"\u57fa\u51c6\u7ebf",align:"\u5bf9\u9f50\u65b9\u5f0f",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd",dimensions:"\u5c3a\u5bf8",border:"\u8fb9\u6846",list:"\u56fe\u7247\u6e05\u5355",alt:"\u56fe\u7247\u8bf4\u660e",src:"\u56fe\u7247URL","dialog_title":"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247","missing_alt":"\u60a8\u5c1a\u672a\u586b\u5199\u56fe\u7247\u8bf4\u660e\u6587\u5b57\uff0c\u662f\u5426\u8981\u7ee7\u7eed\uff1f\u5982\u679c\u4e0d\u586b\u5199\u8bf4\u660e\u6587\u5b57\uff0c\u5bf9\u4f7f\u7528\u975e\u53ef\u89c6\u6216\u5bf9\u8bbe\u5b9a\u4e3a\u4e0d\u663e\u793a\u56fe\u7247\u7684\u6d4f\u89c8\u5668\u4f7f\u7528\u8005\u5c06\u66f4\u96be\u9605\u8bfb\u6216\u7406\u89e3\u6b64\u56fe\u7247\u3002","example_img":"\u56fe\u7247\u9884\u89c8",misc:"\u5176\u5b83",mouseout:"\u9f20\u6807\u79fb\u51fa",mouseover:"\u9f20\u6807\u79fb\u5165","alt_image":"\u66ff\u4ee3\u56fe\u7247","swap_image":"\u56fe\u7247\u5207\u6362",map:"\u56fe\u7247\u70ed\u533a",id:"ID",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",classes:"\u7c7b",style:"\u6837\u5f0f","long_desc":"\u957f\u94fe\u63a5",langcode:"\u8bed\u8a00\u4ee3\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411","constrain_proportions":"\u7ea6\u675f\u6bd4\u4f8b",preview:"\u9884\u89c8",title:"\u56fe\u7247\u6807\u9898",general:"\u666e\u901a","tab_advanced":"\u9ad8\u7ea7","tab_appearance":"\u5916\u89c2","tab_general":"\u666e\u901a",width:"\u5bbd",height:"\u9ad8"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/css/advlink.css b/assets/plugins/tinymce/tiny_mce/plugins/advlink/css/advlink.css deleted file mode 100644 index 66c6549354..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/css/advlink.css +++ /dev/null @@ -1,8 +0,0 @@ -.mceLinkList, .mceAnchorList, #targetlist {width:280px;} -.mceActionPanel {margin-top:7px;} -.panel_wrapper div.current {height:320px;} -#classlist, #title, #href {width:280px;} -#popupurl, #popupname {width:200px;} -#popupwidth, #popupheight, #popupleft, #popuptop {width:30px;vertical-align:middle;text-align:center;} -#id, #style, #classes, #target, #dir, #hreflang, #lang, #charset, #type, #rel, #rev, #tabindex, #accesskey {width:200px;} -#events_panel input {width:200px;} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/editor_plugin.js deleted file mode 100644 index 983fe5a9ca..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.AdvancedLinkPlugin",{init:function(a,b){this.editor=a;a.addCommand("mceAdvLink",function(){var c=a.selection;if(c.isCollapsed()&&!a.dom.getParent(c.getNode(),"A")){return}a.windowManager.open({file:b+"/link.htm",width:480+parseInt(a.getLang("advlink.delta_width",0)),height:400+parseInt(a.getLang("advlink.delta_height",0)),inline:1},{plugin_url:b})});a.addButton("link",{title:"advlink.link_desc",cmd:"mceAdvLink"});a.addShortcut("ctrl+k","advlink.advlink_desc","mceAdvLink");a.onNodeChange.add(function(d,c,f,e){c.setDisabled("link",e&&f.nodeName!="A");c.setActive("link",f.nodeName=="A"&&!f.name)})},getInfo:function(){return{longname:"Advanced link",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlink",tinymce.plugins.AdvancedLinkPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/js/advlink.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/js/advlink.js deleted file mode 100644 index 5bf8070030..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/js/advlink.js +++ /dev/null @@ -1,543 +0,0 @@ -/* Functions for the advlink plugin popup */ - -tinyMCEPopup.requireLangPack(); - -var templates = { - "window.open" : "window.open('${url}','${target}','${options}')" -}; - -function preinit() { - var url; - - if (url = tinyMCEPopup.getParam("external_link_list_url")) - document.write(''); -} - -function changeClass() { - var f = document.forms[0]; - - f.classes.value = getSelectValue(f, 'classlist'); -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - var formObj = document.forms[0]; - var inst = tinyMCEPopup.editor; - var elm = inst.selection.getNode(); - var action = "insert"; - var html; - - document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser','href','file','advlink'); - document.getElementById('popupurlbrowsercontainer').innerHTML = getBrowserHTML('popupurlbrowser','popupurl','file','advlink'); - document.getElementById('targetlistcontainer').innerHTML = getTargetListHTML('targetlist','target'); - - // Link list - html = getLinkListHTML('linklisthref','href'); - if (html == "") - document.getElementById("linklisthrefrow").style.display = 'none'; - else - document.getElementById("linklisthrefcontainer").innerHTML = html; - - // Anchor list - html = getAnchorListHTML('anchorlist','href'); - if (html == "") - document.getElementById("anchorlistrow").style.display = 'none'; - else - document.getElementById("anchorlistcontainer").innerHTML = html; - - // Resize some elements - if (isVisible('hrefbrowser')) - document.getElementById('href').style.width = '260px'; - - if (isVisible('popupurlbrowser')) - document.getElementById('popupurl').style.width = '180px'; - - elm = inst.dom.getParent(elm, "A"); - if (elm == null) { - var prospect = inst.dom.create("p", null, inst.selection.getContent()); - if (prospect.childNodes.length === 1) { - elm = prospect.firstChild; - } - } - - if (elm != null && elm.nodeName == "A") - action = "update"; - - formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true); - - setPopupControlsDisabled(true); - - if (action == "update") { - var href = inst.dom.getAttrib(elm, 'href'); - var onclick = inst.dom.getAttrib(elm, 'onclick'); - var linkTarget = inst.dom.getAttrib(elm, 'target') ? inst.dom.getAttrib(elm, 'target') : "_self"; - - // Setup form data - setFormValue('href', href); - setFormValue('title', inst.dom.getAttrib(elm, 'title')); - setFormValue('id', inst.dom.getAttrib(elm, 'id')); - setFormValue('style', inst.dom.getAttrib(elm, "style")); - setFormValue('rel', inst.dom.getAttrib(elm, 'rel')); - setFormValue('rev', inst.dom.getAttrib(elm, 'rev')); - setFormValue('charset', inst.dom.getAttrib(elm, 'charset')); - setFormValue('hreflang', inst.dom.getAttrib(elm, 'hreflang')); - setFormValue('dir', inst.dom.getAttrib(elm, 'dir')); - setFormValue('lang', inst.dom.getAttrib(elm, 'lang')); - setFormValue('tabindex', inst.dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); - setFormValue('accesskey', inst.dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); - setFormValue('type', inst.dom.getAttrib(elm, 'type')); - setFormValue('onfocus', inst.dom.getAttrib(elm, 'onfocus')); - setFormValue('onblur', inst.dom.getAttrib(elm, 'onblur')); - setFormValue('onclick', onclick); - setFormValue('ondblclick', inst.dom.getAttrib(elm, 'ondblclick')); - setFormValue('onmousedown', inst.dom.getAttrib(elm, 'onmousedown')); - setFormValue('onmouseup', inst.dom.getAttrib(elm, 'onmouseup')); - setFormValue('onmouseover', inst.dom.getAttrib(elm, 'onmouseover')); - setFormValue('onmousemove', inst.dom.getAttrib(elm, 'onmousemove')); - setFormValue('onmouseout', inst.dom.getAttrib(elm, 'onmouseout')); - setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress')); - setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown')); - setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup')); - setFormValue('target', linkTarget); - setFormValue('classes', inst.dom.getAttrib(elm, 'class')); - - // Parse onclick data - if (onclick != null && onclick.indexOf('window.open') != -1) - parseWindowOpen(onclick); - else - parseFunction(onclick); - - // Select by the values - selectByValue(formObj, 'dir', inst.dom.getAttrib(elm, 'dir')); - selectByValue(formObj, 'rel', inst.dom.getAttrib(elm, 'rel')); - selectByValue(formObj, 'rev', inst.dom.getAttrib(elm, 'rev')); - selectByValue(formObj, 'linklisthref', href); - - if (href.charAt(0) == '#') - selectByValue(formObj, 'anchorlist', href); - - addClassesToList('classlist', 'advlink_styles'); - - selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true); - selectByValue(formObj, 'targetlist', linkTarget, true); - } else - addClassesToList('classlist', 'advlink_styles'); -} - -function checkPrefix(n) { - if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_email'))) - n.value = 'mailto:' + n.value; - - if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advlink_dlg.is_external'))) - n.value = 'http://' + n.value; -} - -function setFormValue(name, value) { - document.forms[0].elements[name].value = value; -} - -function parseWindowOpen(onclick) { - var formObj = document.forms[0]; - - // Preprocess center code - if (onclick.indexOf('return false;') != -1) { - formObj.popupreturn.checked = true; - onclick = onclick.replace('return false;', ''); - } else - formObj.popupreturn.checked = false; - - var onClickData = parseLink(onclick); - - if (onClickData != null) { - formObj.ispopup.checked = true; - setPopupControlsDisabled(false); - - var onClickWindowOptions = parseOptions(onClickData['options']); - var url = onClickData['url']; - - formObj.popupname.value = onClickData['target']; - formObj.popupurl.value = url; - formObj.popupwidth.value = getOption(onClickWindowOptions, 'width'); - formObj.popupheight.value = getOption(onClickWindowOptions, 'height'); - - formObj.popupleft.value = getOption(onClickWindowOptions, 'left'); - formObj.popuptop.value = getOption(onClickWindowOptions, 'top'); - - if (formObj.popupleft.value.indexOf('screen') != -1) - formObj.popupleft.value = "c"; - - if (formObj.popuptop.value.indexOf('screen') != -1) - formObj.popuptop.value = "c"; - - formObj.popuplocation.checked = getOption(onClickWindowOptions, 'location') == "yes"; - formObj.popupscrollbars.checked = getOption(onClickWindowOptions, 'scrollbars') == "yes"; - formObj.popupmenubar.checked = getOption(onClickWindowOptions, 'menubar') == "yes"; - formObj.popupresizable.checked = getOption(onClickWindowOptions, 'resizable') == "yes"; - formObj.popuptoolbar.checked = getOption(onClickWindowOptions, 'toolbar') == "yes"; - formObj.popupstatus.checked = getOption(onClickWindowOptions, 'status') == "yes"; - formObj.popupdependent.checked = getOption(onClickWindowOptions, 'dependent') == "yes"; - - buildOnClick(); - } -} - -function parseFunction(onclick) { - var formObj = document.forms[0]; - var onClickData = parseLink(onclick); - - // TODO: Add stuff here -} - -function getOption(opts, name) { - return typeof(opts[name]) == "undefined" ? "" : opts[name]; -} - -function setPopupControlsDisabled(state) { - var formObj = document.forms[0]; - - formObj.popupname.disabled = state; - formObj.popupurl.disabled = state; - formObj.popupwidth.disabled = state; - formObj.popupheight.disabled = state; - formObj.popupleft.disabled = state; - formObj.popuptop.disabled = state; - formObj.popuplocation.disabled = state; - formObj.popupscrollbars.disabled = state; - formObj.popupmenubar.disabled = state; - formObj.popupresizable.disabled = state; - formObj.popuptoolbar.disabled = state; - formObj.popupstatus.disabled = state; - formObj.popupreturn.disabled = state; - formObj.popupdependent.disabled = state; - - setBrowserDisabled('popupurlbrowser', state); -} - -function parseLink(link) { - link = link.replace(new RegExp(''', 'g'), "'"); - - var fnName = link.replace(new RegExp("\\s*([A-Za-z0-9\.]*)\\s*\\(.*", "gi"), "$1"); - - // Is function name a template function - var template = templates[fnName]; - if (template) { - // Build regexp - var variableNames = template.match(new RegExp("'?\\$\\{[A-Za-z0-9\.]*\\}'?", "gi")); - var regExp = "\\s*[A-Za-z0-9\.]*\\s*\\("; - var replaceStr = ""; - for (var i=0; i'); - for (var i=0; i' + name + ''; - - if ((name = nodes[i].id) != "" && !nodes[i].href) - html += ''; - } - - if (html == "") - return ""; - - html = ''; - - return html; -} - -function insertAction() { - var inst = tinyMCEPopup.editor; - var elm, elementArray, i; - - elm = inst.selection.getNode(); - checkPrefix(document.forms[0].href); - - elm = inst.dom.getParent(elm, "A"); - - // Remove element if there is no href - if (!document.forms[0].href.value) { - i = inst.selection.getBookmark(); - inst.dom.remove(elm, 1); - inst.selection.moveToBookmark(i); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); - return; - } - - // Create new anchor elements - if (elm == null) { - inst.getDoc().execCommand("unlink", false, null); - tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); - - elementArray = tinymce.grep(inst.dom.select("a"), function(n) {return inst.dom.getAttrib(n, 'href') == '#mce_temp_url#';}); - for (i=0; i' + tinyMCELinkList[i][0] + ''; - - html += ''; - - return html; - - // tinyMCE.debug('-- image list start --', html, '-- image list end --'); -} - -function getTargetListHTML(elm_id, target_form_element) { - var targets = tinyMCEPopup.getParam('theme_advanced_link_targets', '').split(';'); - var html = ''; - - html += ''; - - return html; -} - -// While loading -preinit(); -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/bg_dlg.js deleted file mode 100644 index 3b83fe4e4c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.advlink_dlg',{"target_name":"\u0418\u043c\u0435 \u043d\u0430 \u0446\u0435\u043b",classes:"\u041a\u043b\u0430\u0441\u043e\u0432\u0435",style:"\u0421\u0442\u0438\u043b",id:"Id","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","popup_size":"\u0420\u0430\u0437\u043c\u0435\u0440","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u0438 (Mozilla/Firefox only)","popup_resizable":"\u0420\u0430\u0437\u0440\u0435\u0448\u0438 \u043f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0446\u0438\u0442\u0435","popup_location":"\u041f\u043e\u043a\u0430\u0436\u0438 location bar","popup_menubar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0430\u0442\u0430 \u0441 \u043c\u0435\u043d\u044e\u0442\u0430","popup_toolbar":"\u041f\u043e\u043a\u0430\u0436\u0438 \u043b\u0435\u043d\u0442\u0438\u0442\u0435 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438","popup_statusbar":"\u041f\u043e\u043a\u0430\u0436\u0438 status bar","popup_scrollbars":"\u041f\u043e\u043a\u0430\u0436\u0438 \u0441\u043a\u0440\u043e\u043b\u0435\u0440\u0438","popup_return":"\u0412\u043c\u044a\u043a\u043d\u0438 \'return false\'","popup_name":"\u0418\u043c\u0435 \u043d\u0430 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430","popup_url":"URL \u043d\u0430 popup-\u0430",popup:"Javascript popup","target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","target_top":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u043d\u0430\u0439-\u0433\u043e\u0440\u043d\u0438\u044f \u0444\u0440\u0435\u0439\u043c (\u0437\u0430\u043c\u0435\u0441\u0442\u0432\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0444\u0440\u0435\u0439\u043c\u043e\u0432\u0435)","target_parent":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0433\u043e\u0440\u043d\u0438\u044f \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c","target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0432 \u0442\u043e\u0437\u0438 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 / \u0444\u0440\u0435\u0439\u043c","anchor_names":"\u041a\u043e\u0442\u0432\u0438","popup_opts":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_props":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","event_props":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","popup_props":"Popup \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","general_props":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","events_tab":"\u0421\u044a\u0431\u0438\u0442\u0438\u044f","popup_tab":"Popup","general_tab":"\u041e\u0431\u0449\u0438",list:"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438","is_external":"URL-\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","is_email":"URL-\u0442\u043e, \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?",titlefield:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435",target:"\u0426\u0435\u043b",url:"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",accesskey:"\u041a\u043b\u0430\u0432\u0438\u0448",tabindex:"\u041f\u043e\u0441\u043b\u0435\u0434\u043e\u0432\u0430\u0442\u0435\u043b\u043d\u043e\u0441\u0442",rev:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b - \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430",rel:"\u0412\u0437\u0430\u0438\u043c\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430 - \u0446\u0435\u043b",mime:"MIME \u0442\u0438\u043f",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0442\u0435",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430","target_langcode":"\u0415\u0437\u0438\u043a",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/cs_dlg.js deleted file mode 100644 index d631229597..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.advlink_dlg',{"target_name":"N\u00e1zev c\u00edle",classes:"T\u0159\u00eddy",style:"Styl",id:"ID","popup_position":"Um\u00edst\u011bn\u00ed (X/Y)",langdir:"Sm\u011br textu","popup_size":"Velikost","popup_dependent":"Z\u00e1vislost (pouze Mozilla/Firefox)","popup_resizable":"Umo\u017enit zm\u011bnu velikosti","popup_location":"Zobrazit pole s adresou","popup_menubar":"Zobrazit nab\u00eddku","popup_toolbar":"Zobrazit panel n\u00e1stroj\u016f","popup_statusbar":"Zobrazit stavov\u00fd \u0159\u00e1dek","popup_scrollbars":"Zobrazit posuvn\u00edky","popup_return":"Vlo\u017eit \'return false\'","popup_name":"N\u00e1zev okna","popup_url":"URL vyskakovac\u00edho okna",popup:"Javascriptov\u00e9 okno","target_blank":"Otev\u0159\u00edt v nov\u00e9m okn\u011b/r\u00e1mu","target_top":"Otev\u0159\u00edt v hlavn\u00edm okn\u011b/r\u00e1mu (nahradit v\u0161echny r\u00e1my)","target_parent":"Otev\u0159\u00edt v nad\u0159azen\u00e9m okn\u011b/r\u00e1mu","target_same":"Otev\u0159\u00edt v tomto okn\u011b/r\u00e1mu","anchor_names":"Z\u00e1lo\u017eka","popup_opts":"Mo\u017enosti","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry","event_props":"Ud\u00e1losti","popup_props":"Vlastnosti vyskakovac\u00edho okna","general_props":"Obecn\u00e9 parametry","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","events_tab":"Ud\u00e1losti","popup_tab":"Vyskakovac\u00ed okno","general_tab":"Obecn\u00e9",list:"Seznam odkaz\u016f","is_external":"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?","is_email":"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?",titlefield:"Titulek",target:"C\u00edl",url:"URL odkazu",title:"Vlo\u017eit/upravit odkaz","link_list":"Seznam odkaz\u016f",rtl:"Zprava doleva",ltr:"Zleva doprava",accesskey:"Kl\u00e1vesov\u00e1 zkratka",tabindex:"Po\u0159ad\u00ed pro tabul\u00e1tor",rev:"Vztah c\u00edle ke str\u00e1nce",rel:"Vztah str\u00e1nky k c\u00edli",mime:"MIME typ",encoding:"K\u00f3dov\u00e1n\u00ed",langcode:"K\u00f3d jazyka","target_langcode":"Jazyk c\u00edle",width:"\u0160\u00ed\u0159ka",height:"V\u00fd\u0161ka"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/da_dlg.js deleted file mode 100644 index 06f7fe3d83..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.advlink_dlg',{"target_name":"Destinationsnavn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Position (X/Y)",langdir:"Sprogretning","popup_size":"St\u00f8rrelse","popup_dependent":"Afh\u00e6ngig (Kun Mozilla/Firefox)","popup_resizable":"Lad det v\u00e6re muligt at \u00e6ndre st\u00f8rrelsen p\u00e5 vinduet","popup_location":"Vis adresselinje","popup_menubar":"Vis menulinje","popup_toolbar":"Vis v\u00e6rkt\u00f8jslinjer","popup_statusbar":"Vis statuslinje","popup_scrollbars":"Vis rullepanel","popup_return":"Inds\u00e6t \'return false\'","popup_name":"Vinduesnavn","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00c5ben i nyt vindue","target_top":"\u00c5ben i \u00f8verste vindue / ramme (erstatter alle rammer)","target_parent":"\u00c5ben i overliggende vindue / ramme","target_same":"\u00c5ben i dette vindue / ramme","anchor_names":"Ankre","popup_opts":"Indstillinger","advanced_props":"Avancerede egenskaber","event_props":"H\u00e6ndelser","popup_props":"Popup egenskaber","general_props":"Generelle egenskaber","advanced_tab":"Advanceret","events_tab":"H\u00e6ndelser","popup_tab":"Popup","general_tab":"Generelt",list:"Liste over links","is_external":"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?","is_email":"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?",titlefield:"Titel",target:"M\u00e5l",url:"Link URL",title:"Inds\u00e6t/rediger link","link_list":"Liste over links",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",accesskey:"Genvejstast",tabindex:"Tabindex",rev:"Relativ destination til side",rel:"Relativ side til destination",mime:"Destinations-MIME-type",encoding:"Destinationstegns\u00e6t",langcode:"Sprogkode","target_langcode":"Destinationssprog",width:"Bredde",height:"H\u00f8jde"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/de_dlg.js deleted file mode 100644 index 475dfe9503..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.advlink_dlg',{"target_name":"Name der Zielseite",classes:"Klassen",style:"Format",id:"ID","popup_position":"Position (X/Y)",langdir:"Schriftrichtung","popup_size":"Gr\u00f6\u00dfe","popup_dependent":"Vom Elternfenster abh\u00e4ngig
                      (nur Mozilla/Firefox) ","popup_resizable":"Vergr\u00f6\u00dfern des Fenster zulassen","popup_location":"Adressleiste anzeigen","popup_menubar":"Browsermen\u00fc anzeigen","popup_toolbar":"Werkzeugleisten anzeigen","popup_statusbar":"Statusleiste anzeigen","popup_scrollbars":"Scrollbalken anzeigen","popup_return":"Link trotz Popup folgen","popup_name":"Name des Fensters","popup_url":"Popup-Adresse",popup:"JavaScript-Popup","target_blank":"In neuem Fenster \u00f6ffnen","target_top":"Im obersten Frame \u00f6ffnen (sprengt das Frameset)","target_parent":"Im \u00fcbergeordneten Fenster/Frame \u00f6ffnen","target_same":"Im selben Fenster/Frame \u00f6ffnen","anchor_names":"Anker","popup_opts":"Optionen","advanced_props":"Erweiterte Eigenschaften","event_props":"Ereignisse","popup_props":"Popup-Eigenschaften","general_props":"Allemeine Eigenschaften","advanced_tab":"Erweitert","events_tab":"Ereignisse","popup_tab":"Popup","general_tab":"Allgemein",list:"Linkliste","is_external":"Diese Adresse scheint ein externer Link zu sein. Soll das dazu ben\u00f6tigte \"http://\" vorangestellt werden?","is_email":"Diese Adresse scheint eine E-Mail Adresse zu sein. Soll das dazu ben\u00f6tigte \"mailto:\" vorangestellt werden?",titlefield:"Titel",target:"Fenster",url:"Adresse",title:"Link einf\u00fcgen/bearbeiten","link_list":"Linkliste",rtl:"Rechts nach links",ltr:"Links nach rechts",accesskey:"Tastenk\u00fcrzel",tabindex:"Tabindex",rev:"Beziehung des Linkziels zur Seite",rel:"Beziehung der Seite zum Linkziel",mime:"MIME-Type der Zielseite",encoding:"Zeichenkodierung der Zielseite",langcode:"Sprachcode","target_langcode":"Sprache der Zielseite",width:"Breite",height:"H\u00f6he"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/en_dlg.js deleted file mode 100644 index 3169a56580..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.advlink_dlg',{"target_name":"Target Name",classes:"Classes",style:"Style",id:"ID","popup_position":"Position (X/Y)",langdir:"Language Direction","popup_size":"Size","popup_dependent":"Dependent (Mozilla/Firefox Only)","popup_resizable":"Make Window Resizable","popup_location":"Show Location Bar","popup_menubar":"Show Menu Bar","popup_toolbar":"Show Toolbars","popup_statusbar":"Show Status Bar","popup_scrollbars":"Show Scrollbars","popup_return":"Insert \'return false\'","popup_name":"Window Name","popup_url":"Popup URL",popup:"JavaScript Popup","target_blank":"Open in New Window","target_top":"Open in Top Frame (Replaces All Frames)","target_parent":"Open in Parent Window/Frame","target_same":"Open in This Window/Frame","anchor_names":"Anchors","popup_opts":"Options","advanced_props":"Advanced Properties","event_props":"Events","popup_props":"Popup Properties","general_props":"General Properties","advanced_tab":"Advanced","events_tab":"Events","popup_tab":"Popup","general_tab":"General",list:"Link List","is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?",titlefield:"Title",target:"Target",url:"Link URL",title:"Insert/Edit Link","link_list":"Link List",rtl:"Right to Left",ltr:"Left to Right",accesskey:"AccessKey",tabindex:"TabIndex",rev:"Relationship Target to Page",rel:"Relationship Page to Target",mime:"Target MIME Type",encoding:"Target Character Encoding",langcode:"Language Code","target_langcode":"Target Language",width:"Width",height:"Height"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/es_dlg.js deleted file mode 100644 index 2f48a37154..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.advlink_dlg',{"target_name":"Nombre del Target",classes:"Clases",style:"Estilo",id:"Id","popup_position":"Posici\u00f3n (X/Y)",langdir:"Direcci\u00f3n del lenguaje","popup_size":"Tama\u00f1o","popup_dependent":"Dependientes (s\u00f3lo Mozilla/Firefox)","popup_resizable":"Permitir cambiar el tama\u00f1o de la ventana","popup_location":"Barra de localizaci\u00f3n","popup_menubar":"Barra de men\u00fa","popup_toolbar":"Barra de herramientas","popup_statusbar":"Barra de estado","popup_scrollbars":"Barras de desplazamiento","popup_return":"Insertar \'return false\'","popup_name":"Nombre de la ventana","popup_url":"URL de la ventana emergente",popup:"Javascript popup","target_blank":"Abrir en ventana nueva","target_top":"Abrir en el marco superior (reemplaza todos los marcos)","target_parent":"Abrir en ventana padre / marco","target_same":"Abrir en esta ventana / marco","anchor_names":"Anclas","popup_opts":"Opciones","advanced_props":"Propiedades avanzadas","event_props":"Eventos","popup_props":"Propiedades de ventanas emergentes","general_props":"Propiedades generales","advanced_tab":"Avanzado","events_tab":"Eventos","popup_tab":"Ventana emergente","general_tab":"General",list:"Lista de v\u00ednculos","is_external":"La URL que ha introducido parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","is_email":"La URL que ha introducido parece ser una direci\u00f3n de correo, \u00bfdesea agregar el prefijo mailto: necesario?",titlefield:"T\u00edtulo",target:"Destino",url:"URL del hiperv\u00ednculo",title:"Insertar/editar hiperv\u00ednculo","link_list":"Lista de v\u00ednculo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",accesskey:"Tecla de acceso",tabindex:"Indice de tabulaci\u00f3n",rev:"Relaci\u00f3n target a p\u00e1gina",rel:"Relaci\u00f3n p\u00e1gina a target",mime:"Tipo MIME del Target",encoding:"Codificaci\u00f3n de caracteres del Target",langcode:"C\u00f3digo del lenguaje","target_langcode":"Lenguaje del Target",width:"Ancho",height:"Alto"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fa_dlg.js deleted file mode 100644 index d500971a73..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.advlink_dlg',{"target_name":"\u0646\u0627\u0645 \u0645\u0642\u0635\u062f (Target)",classes:"\u06a9\u0644\u0627\u0633 \u0647\u0627",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",id:"\u0634\u0646\u0627\u0633\u0647","popup_position":"\u0645\u0648\u0642\u0639\u06cc\u062a (X/Y)",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646","popup_size":"\u0627\u0646\u062f\u0627\u0632\u0647","popup_dependent":"\u0648\u0627\u0628\u0633\u062a\u0647 (\u0641\u0642\u0637 Mozilla/Firefox)","popup_resizable":"\u0627\u06cc\u062c\u0627\u062f \u067e\u0646\u062c\u0631\u0647 \u0642\u0627\u0628\u0644 \u0627\u0646\u062f\u0627\u0632\u0647 \u0628\u0646\u062f\u06cc \u0645\u062c\u062f\u062f","popup_location":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0645\u06a9\u0627\u0646","popup_menubar":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0645\u0646\u0648","popup_toolbar":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631","popup_statusbar":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u0648\u0636\u0639\u06cc\u062a","popup_scrollbars":"\u0646\u0645\u0627\u06cc\u0634 \u0646\u0648\u0627\u0631 \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0647\u0627","popup_return":"\u062f\u0631\u062c \'return false\'","popup_name":"\u0646\u0627\u0645 \u067e\u0646\u062c\u0631\u0647","popup_url":"\u0622\u062f\u0631\u0633 \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)",popup:"\u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648\u06cc Javascript","target_blank":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f","target_top":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u0642\u0627\u0628 \u0628\u0627\u0644\u0627 (Top Frame) (\u062a\u0645\u0627\u0645\u06cc \u0642\u0627\u0628 \u0647\u0627 \u0631\u0627 \u062a\u0639\u0648\u06cc\u0636 \u0645\u06cc \u06a9\u0646\u062f)","target_parent":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 / \u0642\u0627\u0628 \u0648\u0627\u0644\u062f (Parent Frame)","target_same":"\u0628\u0627\u0632\u0634\u062f\u0646 \u062f\u0631 \u0627\u06cc\u0646 \u067e\u0646\u062c\u0631\u0647 / \u0642\u0627\u0628 (Frame)","anchor_names":"\u0644\u0646\u06af\u0631\u0647\u0627 (Anchor)","popup_opts":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a","advanced_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647","event_props":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627","popup_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)","general_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u0645\u0648\u0645\u06cc","advanced_tab":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","events_tab":"\u0631\u0648\u06cc\u062f\u0627\u062f\u0647\u0627","popup_tab":"\u067e\u0646\u062c\u0631\u0647 \u0628\u0627\u0632\u0634\u0648 (Popup)","general_tab":"\u0639\u0645\u0648\u0645\u06cc",list:"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9","is_external":"\u0622\u062f\u0631\u0633 \u0648\u0628\u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0644\u06cc\u0646\u06a9 \u062e\u0627\u0631\u062c\u06cc \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 //:http \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","is_email":"\u0622\u062f\u0631\u0633 \u0648\u0628\u06cc \u06a9\u0647 \u0648\u0627\u0631\u062f \u06a9\u0631\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 :mailto \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f",titlefield:"\u0639\u0646\u0648\u0627\u0646",target:"\u0645\u0642\u0635\u062f (Target)",url:"\u0622\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9",title:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9","link_list":"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",accesskey:"\u06a9\u0644\u06cc\u062f \u062f\u0633\u062a\u0631\u0633\u06cc",tabindex:"TabIndex",rev:"\u0631\u0627\u0628\u0637\u0647 \u0645\u0642\u0635\u062f (Target) \u0628\u0627 \u0635\u0641\u062d\u0647",rel:"\u0631\u0627\u0628\u0637\u0647 \u0635\u0641\u062d\u0647 \u0628\u0627 \u0645\u0642\u0635\u062f (Target)",mime:"\u0646\u0648\u0639 MIME \u0645\u0642\u0635\u062f (Target)",encoding:"\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0645\u0642\u0635\u062f (Target)",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646","target_langcode":"\u0632\u0628\u0627\u0646 \u0645\u0642\u0635\u062f (Target)",width:"\u067e\u0647\u0646\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fi_dlg.js deleted file mode 100644 index e49488e733..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.advlink_dlg',{"target_name":"Kohteen nimi",classes:"Luokat",style:"Tyyli",id:"Id","popup_position":"Sijainti (X/Y)",langdir:"Kielen suunta","popup_size":"Koko","popup_dependent":"Riippuvainen (vain Mozilla/Firefox)","popup_resizable":"Tee ikkunan koko muokattavaksi","popup_location":"N\u00e4yt\u00e4 sijaintipalkki","popup_menubar":"N\u00e4yt\u00e4 valikkopalkki","popup_toolbar":"N\u00e4yt\u00e4 ty\u00f6kalut","popup_statusbar":"N\u00e4yt\u00e4 tilapalkki","popup_scrollbars":"N\u00e4yt\u00e4 vierityspalkit","popup_return":"Lis\u00e4\u00e4 \'return false\'","popup_name":"Ikkunan nimi","popup_url":"Ponnahdusikkunan URL",popup:"JavaScript-ponnahdusikkuna","target_blank":"Avaa uudessa ikkunassa","target_top":"Avaa ylimm\u00e4ss\u00e4 ruudussa (korvaa kaikki ruudut)","target_parent":"Avaa ylemm\u00e4ss\u00e4 ikkunassa","target_same":"Avaa t\u00e4ss\u00e4 ikkunassa","anchor_names":"Ankkurit","popup_opts":"Valinta","advanced_props":"Edistyneet asetukset","event_props":"Tapahtumat (events)","popup_props":"Ponnahdusikkunan asetukset","general_props":"Yleiset asetukset","advanced_tab":"Edistynyt","events_tab":"Tapahtumat","popup_tab":"Ponnahdusikkuna","general_tab":"Yleiset",list:"Linkkilista","is_external":"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan sivuston ulkoinen osoite, haluatko lis\u00e4t\u00e4 http://-etuliitteen?","is_email":"Sy\u00f6tt\u00e4m\u00e4si URL n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite, haluatko lis\u00e4t\u00e4 mailto:-etuliitteen?",titlefield:"Otsikko",target:"Kohde (target)",url:"Linkin URL",title:"Lis\u00e4\u00e4/muokkaa linkki\u00e4","link_list":"Linkkilista",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",accesskey:"Pikan\u00e4pp\u00e4in",tabindex:"Tabulaattori-indeksi",rev:"Kohteen suhde sivuun",rel:"Sivun suhde kohteeseen",mime:"Kohteen MIME-tyyppi",encoding:"Kohteen merkist\u00f6koodaus",langcode:"Kielen koodi","target_langcode":"Kohteen kieli",width:"Leveys",height:"Korkeus"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fr_dlg.js deleted file mode 100644 index 38e5a7858f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.advlink_dlg',{"target_name":"Nom de la cible",classes:"Classes",style:"Style",id:"Id","popup_position":"Position (X/Y)",langdir:"Sens de lecture","popup_size":"Taille","popup_dependent":"D\u00e9pendante (seulement sous Mozilla/Firefox)","popup_resizable":"Autoriser le redimensionnement de la fen\u00eatre","popup_location":"Afficher la barre d\'adresse","popup_menubar":"Afficher la barre de menu","popup_toolbar":"Afficher la barre d\'outils","popup_statusbar":"Afficher la barre d\'\u00e9tat","popup_scrollbars":"Afficher les ascenseurs","popup_return":"Ins\u00e9rer \'return false\'","popup_name":"Nom de la fen\u00eatre","popup_url":"URL de la popup",popup:"Popup Javascript","target_blank":"Ouvrir dans une nouvelle fen\u00eatre","target_top":"Ouvrir dans le cadre principal (remplace tous les cadres)","target_parent":"Ouvrir dans la fen\u00eatre / le cadre parent","target_same":"Ouvrir dans cette fen\u00eatre / dans ce cadre","anchor_names":"Ancres","popup_opts":"Options","advanced_props":"Propri\u00e9t\u00e9s avanc\u00e9es","event_props":"\u00c9v\u00e8nements","popup_props":"Propri\u00e9t\u00e9s de la popup","general_props":"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales","advanced_tab":"Avanc\u00e9","events_tab":"\u00c9v\u00e8nements","popup_tab":"Popup","general_tab":"G\u00e9n\u00e9ral",list:"Liste de liens","is_external":"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?","is_email":"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?",titlefield:"Titre",target:"Cible",url:"URL du lien",title:"Ins\u00e9rer / \u00e9diter un lien","link_list":"Liste des liens",rtl:"Droite \u00e0 gauche",ltr:"Gauche \u00e0 droite",accesskey:"Touche d\'acc\u00e8s rapide",tabindex:"Tabindex",rev:"Relation de la cible \u00e0 la page",rel:"Relation de la page \u00e0 la cible",mime:"Type MIME de la cible",encoding:"Encodage de la cible",langcode:"Code de la langue","target_langcode":"Langue de la cible",width:"Largeur",height:"Hauteur"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/he_dlg.js deleted file mode 100644 index 7ea21bdaae..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.advlink_dlg',{"target_name":"Target name",classes:"Classes",style:"\u05e1\u05d2\u05e0\u05d5\u05df",id:"\u05de\u05e1\u05e4\u05e8 \u05e1\u05d9\u05d3\u05d5\u05e8\u05d9","popup_position":"\u05de\u05d9\u05e7\u05d5\u05dd (X/Y)",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4","popup_size":"\u05d2\u05d5\u05d3\u05dc","popup_dependent":"Dependent (Mozilla/Firefox only)","popup_resizable":"\u05d7\u05dc\u05d5\u05df \u05d3\u05d9\u05e0\u05d0\u05de\u05d9(resizable)","popup_location":"\u05d4\u05e6\u05d2\u05ea location bar ","popup_menubar":"\u05d4\u05e6\u05d2\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8","popup_toolbar":"\u05d4\u05e6\u05d2\u05ea \u05e1\u05e8\u05d2\u05dc\u05d9 \u05db\u05dc\u05d9\u05dd","popup_statusbar":"\u05d4\u05e6\u05d2\u05ea \u05e9\u05d5\u05e8\u05ea \u05e1\u05d8\u05d0\u05d8\u05d5\u05e1","popup_scrollbars":"\u05d4\u05e6\u05d2\u05ea \u05e4\u05e1 \u05d2\u05dc\u05d9\u05dc\u05d4","popup_return":"\u05d9\u05e9 \u05dc\u05d4\u05db\u05e0\u05d9\u05e1 \'return false\'","popup_name":"\u05e9\u05dd \u05d4\u05d7\u05dc\u05d5\u05df","popup_url":"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5 URL",popup:"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5 javascript","target_blank":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9","target_top":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d4\u05d1\u05df \u05d4\u05e8\u05d0\u05e9\u05d9(\u05de\u05d7\u05dc\u05d9\u05e3 \u05d0\u05ea \u05db\u05dc \u05d7\u05dc\u05d5\u05e0\u05d5\u05ea \u05d4\u05d1\u05e0\u05d9\u05dd)","target_parent":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05dc\u05d5\u05df \u05d4\u05d0\u05d1\u05d0/\u05d7\u05dc\u05d5\u05df \u05d1\u05df","target_same":"\u05e4\u05ea\u05d9\u05d7\u05d4 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9/\u05d7\u05dc\u05d5\u05df \u05d1\u05df","anchor_names":"\u05e7\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e1\u05d9\u05de\u05e0\u05d9\u05d4","popup_opts":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea","advanced_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea","event_props":"\u05de\u05d0\u05d5\u05e8\u05e2\u05d5\u05ea","popup_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5","general_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea","advanced_tab":"\u05de\u05ea\u05e7\u05d3\u05dd","events_tab":"\u05d0\u05e8\u05d5\u05e2\u05d9\u05dd","popup_tab":"\u05d7\u05dc\u05d5\u05df \u05de\u05d5\u05e7\u05e4\u05e5","general_tab":"\u05db\u05dc\u05dc\u05d9",list:"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd","is_external":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:// \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?","is_email":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05d9\u05d9\u05dc \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea MAILTO \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?",titlefield:"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",target:"\u05d9\u05e2\u05d3",url:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8",title:"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","link_list":"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",accesskey:"Accesskey",tabindex:"Tabindex",rev:"Relationship target to page",rel:"Relationship page to target",mime:"Target MIME type",encoding:"Target character encoding",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4","target_langcode":"Target language",width:"\u05e8\u05d5\u05d7\u05d1",height:"\u05d2\u05d5\u05d1\u05d4"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/it_dlg.js deleted file mode 100644 index bf19659d05..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.advlink_dlg',{"target_name":"Nome target",classes:"Classe",style:"Stile",id:"Id","popup_position":"Posizione (X/Y)",langdir:"Direzione del testo","popup_size":"Dimensioni","popup_dependent":"Dipendente (Solo in Mozilla/Firefox)","popup_resizable":"Rendi la finestra ridimensionabile","popup_location":"Mostra barra navigazione","popup_menubar":"Mostra barra menu","popup_toolbar":"Mostra barre strumenti","popup_statusbar":"Mostra barra di stato","popup_scrollbars":"Mostra barre di scorrimento","popup_return":"Inserisci \'return false\'","popup_name":"Nome finestra","popup_url":"URL Popup",popup:"Popup Javascript","target_blank":"Apri in una nuova finestra","target_top":"Apri nella cornice superiore (sostituisce tutte le cornici)","target_parent":"Apri nella finestra / cornice genitore","target_same":"Apri in questa finestra / cornice","anchor_names":"Ancore","popup_opts":"Opzioni","advanced_props":"Propriet\u00e0 avanzate","event_props":"Eventi","popup_props":"Propriet\u00e0 popup","general_props":"Propriet\u00e0 generali","advanced_tab":"Avanzate","events_tab":"Eventi","popup_tab":"Popup","general_tab":"Generale",list:"Lista collegamenti","is_external":"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?","is_email":"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?",titlefield:"Titolo",target:"Target",url:"URL collegamento",title:"Inserisci/modifica link","link_list":"Lista collegamenti",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",accesskey:"Carattere di accesso",tabindex:"Indice tabulazione",rev:"Relazione da target a pagina",rel:"Relazione da pagina a target",mime:"Tipo MIME del target",encoding:"Codifica carattere del target",langcode:"Lingua","target_langcode":"Lingua del target",width:"Larghezza",height:"Altezza"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/ja_dlg.js deleted file mode 100644 index 68ebcd2e6e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.advlink_dlg',{"target_name":"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u540d\u524d",classes:"\u30af\u30e9\u30b9",style:"\u30b9\u30bf\u30a4\u30eb",id:"ID","popup_position":"\u4f4d\u7f6e (X/Y)",langdir:"\u6587\u7ae0\u306e\u65b9\u5411","popup_size":"\u5927\u304d\u3055","popup_dependent":"\u4f9d\u5b58(Mozilla\u3068Firefox\u3060\u3051)","popup_resizable":"\u30a6\u30a4\u30f3\u30c9\u30a6\u306e\u30b5\u30a4\u30ba\u5909\u66f4\u3092\u8a31\u53ef","popup_location":"\u30a2\u30c9\u30ec\u30b9\u30d0\u30fc\u3092\u8868\u793a","popup_menubar":"\u30e1\u30cb\u30e5\u30fc\u30d0\u30fc\u3092\u8868\u793a","popup_toolbar":"\u30c4\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a","popup_statusbar":"\u30b9\u30c6\u30fc\u30bf\u30b9\u30d0\u30fc\u3092\u8868\u793a","popup_scrollbars":"\u30b9\u30af\u30ed\u30fc\u30eb\u30d0\u30fc\u3092\u8868\u793a","popup_return":"\'return false\'\u3092\u633f\u5165","popup_name":"\u30a6\u30a4\u30f3\u30c9\u30a6\u306e\u540d\u524d","popup_url":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7\u306eURL",popup:"Javascript\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","target_blank":"\u65b0\u3057\u3044\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","target_top":"\u30c8\u30c3\u30d7\u306e\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f(\u3059\u3079\u3066\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u7f6e\u304d\u63db\u3048)","target_parent":"\u89aa\u30a6\u30a4\u30f3\u30c9\u30a6/\u89aa\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","target_same":"\u3053\u306e\u30a6\u30a4\u30f3\u30c9\u30a6/\u30d5\u30ec\u30fc\u30e0\u3067\u958b\u304f","anchor_names":"\u30a2\u30f3\u30ab\u30fc","popup_opts":"\u30aa\u30d7\u30b7\u30e7\u30f3","advanced_props":"\u9ad8\u5ea6\u306a\u5c5e\u6027","event_props":"\u30a4\u30d9\u30f3\u30c8","popup_props":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","general_props":"\u4e00\u822c","advanced_tab":"\u5c02\u9580\u7684","events_tab":"\u30a4\u30d9\u30f3\u30c8","popup_tab":"\u30dd\u30c3\u30d7\u30a2\u30c3\u30d7","general_tab":"\u4e00\u822c",list:"\u30ea\u30f3\u30af\u306e\u4e00\u89a7","is_external":"\u5165\u529b\u3057\u305fURL\u306f\u5916\u90e8\u306e\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b http:// \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?","is_email":"\u5165\u529b\u3057\u305fURL\u306f\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b mailto: \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?",titlefield:"\u30bf\u30a4\u30c8\u30eb",target:"\u30bf\u30fc\u30b2\u30c3\u30c8",url:"\u30ea\u30f3\u30af\u306eURL",title:"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","link_list":"\u30ea\u30f3\u30af\u306e\u4e00\u89a7",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",accesskey:"\u30a2\u30af\u30bb\u30b9\u30ad\u30fc",tabindex:"\u30bf\u30d6\u30a4\u30f3\u30c7\u30c3\u30af\u30b9",rev:"\u30bf\u30fc\u30b2\u30c3\u30c8\u304b\u3089\u30da\u30fc\u30b8\u306e\u95a2\u4fc2",rel:"\u30da\u30fc\u30b8\u304b\u3089\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u95a2\u4fc2",mime:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306eMIME\u30bf\u30a4\u30d7",encoding:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9","target_langcode":"\u30bf\u30fc\u30b2\u30c3\u30c8\u306e\u8a00\u8a9e",width:"\u5e45",height:"\u9ad8\u3055"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/nl_dlg.js deleted file mode 100644 index b2924758b0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.advlink_dlg',{"target_name":"Doel",classes:"Klasses",style:"Stijl",id:"Id","popup_position":"Positie (X/Y)",langdir:"Taalrichting","popup_size":"Grootte","popup_dependent":"Afhankelijk (Alleen Mozilla/Firefox)","popup_resizable":"Aanpasbaar venster","popup_location":"Lokatiebalk weergeven","popup_menubar":"Menubalk weergeven","popup_toolbar":"Werkbalk weergeven","popup_statusbar":"Statusbalk weergeven","popup_scrollbars":"Scrollbalken weergeven","popup_return":"\'return false\' invoegen","popup_name":"Vensternaam","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"In nieuw venster openen","target_top":"In bovenste frame openen (vervangt gehele pagina)","target_parent":"In bovenliggend venster / frame openen","target_same":"In dit venster / frame openen","anchor_names":"Ankers","popup_opts":"Opties","advanced_props":"Geavanceerde eigenschappen","event_props":"Gebeurtenissen","popup_props":"Popup eigenschappen","general_props":"Algemene eigenschappen","advanced_tab":"Geavanceerd","events_tab":"Gebeurtenissen","popup_tab":"Popup","general_tab":"Algemeen",list:"Lijst","is_external":"De ingevoerde URL lijkt op een externe link. Wilt u de vereiste http:// tekst voorvoegen?","is_email":"De ingevoerde URL lijkt op een e-mailadres. Wilt u de vereiste mailto: tekst voorvoegen?",titlefield:"Titel",target:"Doel",url:"URL",title:"Link invoegen/bewerken","link_list":"Lijst",rtl:"Van rechts naar links",ltr:"Van links naar rechts",accesskey:"Toegangstoets",tabindex:"Tabvolgorde",rev:"Relatie van doel tot pagina",rel:"Relatie van pagina tot doel",mime:"MIME type",encoding:"Taalcodering",langcode:"Taalcode","target_langcode":"Taal",width:"Breedte",height:"Hoogte"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/nn_dlg.js deleted file mode 100644 index 8644b0bc09..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.advlink_dlg',{"target_name":"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Posisjon (X/Y)",langdir:"Skriftretning","popup_size":"Storleik","popup_dependent":"Avhengig vindu (berre i Mozilla/Firefox)","popup_resizable":"Gjer vindauget skalerbart","popup_location":"Vis plasseringsline","popup_menubar":"Vis menyline","popup_toolbar":"Vis verktyliner","popup_statusbar":"Vis statusline","popup_scrollbars":"Vis rullefelt","popup_return":"Set inn \\\'return false\\\'","popup_name":"Namn p\u00e5 vindauge","popup_url":"Popup URL",popup:"Javascript-popup","target_blank":"Opne i nytt vindauge","target_top":"Opne i toppvindauge (erstattar alle rammer)","target_parent":"Opne i overordna vindauge/ramme","target_same":"Opne i same vindauge/ramme","anchor_names":"Anker","popup_opts":"Innstillingar","advanced_props":"Generelle eigenskapar","event_props":"Hendingar","popup_props":"Popup-eigenskapar","general_props":"Generelt","advanced_tab":"Avansert","events_tab":"Hendingar","popup_tab":"Popup","general_tab":"Generelt",list:"Lenkjeliste","is_external":"URL-en du skreiv inn ser ut til \u00e5 vere ei eksern lenkje. \u00d8nskjer du \u00e5 leggje til det obligatoriske http://-prefikset?","is_email":"URL-en du skreiv inn ser ut til \u00e5 vere ei e-postadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske mailto:-prefikset?",titlefield:"Tittel",target:"M\u00e5l",url:"Lenkje-URL",title:"Set inn / rediger lenkje","link_list":"Lenkjeliste",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",accesskey:"Hurtigtast",tabindex:"Tabulatorindeks",rev:"M\u00e5let sitt forhold til sida",rel:"Sida sitt forhold til m\u00e5let",mime:"M\u00e5let sin MIME-type",encoding:"Teiknkonvertering",langcode:"Spr\u00e5kkode","target_langcode":"M\u00e5lspr\u00e5k",width:"Breidde",height:"H\u00f8gde"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/pl_dlg.js deleted file mode 100644 index d529d7ad17..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.advlink_dlg',{"target_name":"Nazwa celu",classes:"Klasy",style:"Styl",id:"Id","popup_position":"Pozycja (X/Y)",langdir:"Kierunek czytania tekstu","popup_size":"Rozmiar","popup_dependent":"Zale\u017cny (Mozilla/Firefox wy\u0142\u0105cznie)","popup_resizable":"Stw\u00f3rz okno z mo\u017cliwo\u015bci\u0105 zmiany rozmiaru","popup_location":"Poka\u017c pasek adresu","popup_menubar":"Poka\u017c pasek menu","popup_toolbar":"Poka\u017c narz\u0119dzia","popup_statusbar":"Poka\u017c pasek statusu","popup_scrollbars":"Poka\u017c paski przewijania","popup_return":"Wstaw \'return false\'","popup_name":"Nazwa okna","popup_url":"URL okna",popup:"Wyskakuj\u0105ce okno","target_blank":"Otw\u00f3rz w nowym oknie","target_top":"Otw\u00f3rz w g\u00f3rnej ramce (zamie\u0144 wszystkie ramki)","target_parent":"Otw\u00f3rz w nadrz\u0119dnym oknie / ramce","target_same":"Otw\u00f3rz w tym oknie / ramce","anchor_names":"Kotwice","popup_opts":"Opcje","advanced_props":"Zaawansowae w\u0142a\u015bciwo\u015bci","event_props":"Zdarzenia","popup_props":"W\u0142a\u015bciwo\u015bci okna","general_props":"W\u0142a\u015bciwo\u015bci og\u00f3lne","advanced_tab":"Zaawansowane","events_tab":"Zdarzenia","popup_tab":"Popup","general_tab":"Og\u00f3lne",list:"Lista link\u00f3w","is_external":"Podany adres wydaje si\u0119 by\u0107 zewn\u0119trznym linkiem, czy chcesz doda\u0107 wymagany prefiks http://?","is_email":"Podany adres wydaje si\u0119 by\u0107 adresem emailowym, czy chcesz doda\u0107 wymagany prefiks mailto:?",titlefield:"Tytu\u0142",target:"Cel",url:"URL linka",title:"Wstaw/edytuj link","link_list":"Lista odno\u015bnik\u00f3w",rtl:"Kierunek z prawej do lewej",ltr:"Kierunek z lewej do prawej",accesskey:"Klawisz skr\u00f3tu",tabindex:"Numer tab",rev:"Relacje celu do strony",rel:"Relacje strony do celu",mime:"Docelowy typ MIME",encoding:"Kodowanie znak\u00f3w celu",langcode:"Kod j\u0119zyka","target_langcode":"Docelowy kod j\u0119zyka",width:"Szeroko\u015b\u0107",height:"Wysoko\u015b\u0107"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/pt_dlg.js deleted file mode 100644 index 8167855442..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.advlink_dlg',{"target_name":"Nome do alvo",classes:"Classes",style:"Estilo",id:"Id","popup_position":"Posi\u00e7\u00e3o (X/Y)",langdir:"Dire\u00e7\u00e3o do texto","popup_size":"Tamanho","popup_dependent":"Dependente (Mozilla/Firefox apenas)","popup_resizable":"Permitir altera\u00e7\u00e3o do tamanho da janela","popup_location":"Mostrar a barra de endere\u00e7os","popup_menubar":"Mostrar a barra de menu","popup_toolbar":"Mostrar a barra de ferramentas","popup_statusbar":"Mostrar a barra de status","popup_scrollbars":"Mostrar as barras de scroll","popup_return":"Inserir \"return false\"","popup_name":"Nome da janela","popup_url":"URL do popup",popup:"Popup javascript","target_blank":"Abrir numa nova janela","target_top":"Abrir na p\u00e1gina inteira (substitui todos os quadros)","target_parent":"Abrir na janela/quadro pai","target_same":"Abrir nesta janela/quadro","anchor_names":"\u00c2ncoras","popup_opts":"Op\u00e7\u00f5es","advanced_props":"Propriedades avan\u00e7adas","event_props":"Eventos","popup_props":"Propriedades de popup","general_props":"Propriedades gerais","advanced_tab":"Avan\u00e7ado","events_tab":"Eventos","popup_tab":"Popup","general_tab":"Geral",list:"Lista de hyperlinks","is_external":"A URL digitada parece conduzir a um link externo. Deseja acrescentar o prefixo necess\u00e1rio http://?","is_email":"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o prefixo necess\u00e1rio mailto:?",titlefield:"T\u00edtulo",target:"Alvo",url:"URL do hyperlink",title:"Inserir/editar hyperlink","link_list":"Lista de hyperlinks",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",accesskey:"Chave de acesso",tabindex:"Tabindex",rev:"Rela\u00e7\u00e3o alvo/p\u00e1gina",rel:"Rela\u00e7\u00e3o p\u00e1gina/alvo",mime:"Tipo MIME alvo",encoding:"Codifica\u00e7\u00e3o de caracteres",langcode:"C\u00f3digo do idioma","target_langcode":"Idioma alvo",width:"Largura",height:"Altura"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/ru_dlg.js deleted file mode 100644 index 1f1695fa69..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.advlink_dlg',{"target_name":"\u0418\u043c\u044f \u0446\u0435\u043b\u0438",classes:"\u041a\u043b\u0430\u0441\u0441\u044b",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0418\u043c\u044f","popup_position":"\u041f\u043e\u0437\u0438\u0446\u0438\u044f (X/Y)",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","popup_size":"\u0420\u0430\u0437\u043c\u0435\u0440","popup_dependent":"\u0417\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c (\u0442\u043e\u043b\u044c\u043a\u043e \u0434\u043b\u044f Firefox)","popup_resizable":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0438\u0437\u043c\u0435\u043d\u044f\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440","popup_location":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u044c \u0440\u0430\u0441\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u044f","popup_menubar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043c\u0435\u043d\u044e","popup_toolbar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432","popup_statusbar":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043e\u0441\u0442\u043e\u044f\u043d\u0438\u044f","popup_scrollbars":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0442\u044c \u043f\u043e\u043b\u043e\u0441\u044b \u043f\u0440\u043e\u043a\u0440\u0443\u0442\u043a\u0438","popup_return":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \'return false\'","popup_name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435 \u043e\u043a\u043d\u0430","popup_url":"\u0410\u0434\u0440\u0435\u0441",popup:"\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435 \u0441 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435\u043c Java","target_blank":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435","target_top":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0432\u0435\u0440\u0445\u043d\u0435\u043c \u043a\u0430\u0434\u0440\u0435 (\u0437\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435 \u043a\u0430\u0434\u0440\u044b)","target_parent":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u0440\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u0441\u043a\u043e\u043c \u043e\u043a\u043d\u0435/\u043a\u0430\u0434\u0440\u0435","target_same":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435/\u043a\u0430\u0434\u0440\u0435","anchor_names":"\u042f\u043a\u043e\u0440\u044f","popup_opts":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","event_props":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u043e\u0431\u044b\u0442\u0438\u0439","popup_props":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f","general_props":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","events_tab":"\u0421\u043e\u0431\u044b\u0442\u0438\u044f","popup_tab":"\u0420\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0435","general_tab":"\u041e\u0431\u0449\u0435\u0435",list:"\u0421\u043f\u0438\u0441\u043e\u043a","is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http://?","is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?",titlefield:"\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430",target:"\u041e\u043a\u043d\u043e",url:"\u0410\u0434\u0440\u0435\u0441",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438","link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",accesskey:"\u041a\u043b\u044e\u0447 \u0434\u043e\u0441\u0442\u0443\u043f\u0430",tabindex:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",rev:"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0446\u0435\u043b\u0438 \u043a \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0435",rel:"\u041e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b \u043a \u0446\u0435\u043b\u0438",mime:"MIME \u0442\u0438\u043f \u0446\u0435\u043b\u0438",encoding:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430 \u0446\u0435\u043b\u0438",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430","target_langcode":"\u042f\u0437\u044b\u043a \u0446\u0435\u043b\u0438",width:"\u0428\u0438\u0440\u0438\u043d\u0430",height:"\u0412\u044b\u0441\u043e\u0442\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/sv_dlg.js deleted file mode 100644 index 8a6194472a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.advlink_dlg',{"target_name":"M\u00e5lnamn",classes:"Klasser",style:"Stil",id:"Id","popup_position":"Position (x/y)",langdir:"Skriftriktning","popup_size":"Storlek","popup_dependent":"Beroende av (Mozilla/Firefox enbart)","popup_resizable":"Skalbart f\u00f6nster","popup_location":"Adressraden","popup_menubar":"Menyrad","popup_toolbar":"Verktygsf\u00e4lt","popup_statusbar":"Statusf\u00e4lt","popup_scrollbars":"Rullningslister","popup_return":"Infoga \'return false\'","popup_name":"F\u00f6nsternamn","popup_url":"Popup URL",popup:"Javascript popup","target_blank":"\u00d6ppna i nytt f\u00f6nster","target_top":"\u00d6ppna i toppramen (ers\u00e4tter alla ramar)","target_parent":"\u00d6ppna i \u00f6verliggande f\u00f6nster/ram","target_same":"\u00d6ppna i detta f\u00f6nster/ram","anchor_names":"Bokm\u00e4rken","popup_opts":"Inst\u00e4llningar","advanced_props":"Avancerade inst\u00e4llningar","event_props":"H\u00e4ndelser","popup_props":"Popup-inst\u00e4llningar","general_props":"Generella inst\u00e4llningar","advanced_tab":"Avancerat","events_tab":"H\u00e4ndelser","popup_tab":"Popup","general_tab":"Generellt",list:"L\u00e4nklista","is_external":"L\u00e4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00e5 l\u00e4nken?","is_email":"L\u00e4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00e5 l\u00e4nken?",titlefield:"Titel",target:"M\u00e5l",url:"L\u00e4nkens URL",title:"Infoga/redigera l\u00e4nk","link_list":"L\u00e4nklista",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",accesskey:"Snabbtangent",tabindex:"Tabbindex",rev:"Omv\u00e4nd relation (rev)",rel:"Relation (rel attribut)",mime:"MIME type",encoding:"Teckenformattering",langcode:"Spr\u00e5kkod","target_langcode":"M\u00e5lspr\u00e5k",width:"Bredd",height:"H\u00f6jd"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/zh_dlg.js deleted file mode 100644 index 57cbd452db..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.advlink_dlg',{"target_name":"\u94fe\u63a5\u76ee\u6807\u540d\u79f0",classes:"\u7c7b",style:"\u6837\u5f0f",id:"ID","popup_position":"\u4f4d\u7f6e(X/Y)",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411","popup_size":"\u5927\u5c0f","popup_dependent":"\u6d4f\u89c8\u5668\u9650\u5236(\u4ec5\u652f\u6301Mozilla/Firefox)","popup_resizable":"\u53ef\u8c03\u6574\u5927\u5c0f\u7684\u5f39\u51fa\u7a97\u53e3","popup_location":"\u663e\u793a\u7f51\u5740\u680f","popup_menubar":"\u663e\u793a\u83dc\u5355\u680f","popup_toolbar":"\u663e\u793a\u5de5\u5177\u680f","popup_statusbar":"\u663e\u793a\u72b6\u6001\u680f","popup_scrollbars":"\u663e\u793a\u6eda\u52a8\u680f","popup_return":"\u63d2\u5165\'return false\'","popup_name":"\u7a97\u53e3\u540d\u79f0","popup_url":"\u5f39\u51fa\u7a97\u53e3\u7684URL",popup:"JavaScript\u5f39\u51fa\u7a97\u53e3","target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00\u94fe\u63a5","target_top":"\u5728top\u6846\u67b6\u6253\u5f00\u94fe\u63a5 (\u5957\u7528\u5728\u6240\u6709\u6846\u67b6)","target_parent":"\u5728\u7236(\u4e0a\u5c42)\u7a97\u53e3/\u6846\u67b6\u6253\u5f00\u94fe\u63a5","target_same":"\u5728\u5f53\u524d\u7a97\u53e3\u6253\u5f00\u94fe\u63a5","anchor_names":"\u951a\u70b9","popup_opts":"\u9009\u9879","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","event_props":"Javascript\u4e8b\u4ef6","popup_props":"\u5f39\u51fa\u7a97\u53e3\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","events_tab":"Javascript\u4e8b\u4ef6","popup_tab":"\u5f39\u51fa\u7a97\u53e3","general_tab":"\u666e\u901a",list:"\u94fe\u63a5\u6e05\u5355","is_external":"\u60a8\u6240\u8f93\u5165\u7684URL\u4f3c\u4e4e\u4e3a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u9700\u8981\u52a0\u4e0ahttp://\u524d\u7f00\uff1f","is_email":"\u60a8\u8f93\u5165\u7684URL\u4f3c\u4e4e\u662f\u7535\u5b50\u90ae\u4ef6\u4f4d\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\uff1f",titlefield:"\u94fe\u63a5\u6807\u9898",target:"\u94fe\u63a5\u76ee\u6807",url:"URL\u94fe\u63a5",title:"\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5","link_list":"\u94fe\u63a5\u6e05\u5355",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",accesskey:"\u5feb\u6377\u952e",tabindex:"Tab\u7d22\u5f15",rev:"\u76ee\u6807\u5230\u7f51\u9875\u7684\u5173\u7cfb",rel:"\u7f51\u9875\u5230\u76ee\u6807\u7684\u5173\u7cfb",mime:"\u76ee\u6807MIME\u7c7b\u578b",encoding:"\u76ee\u6807\u5b57\u7b26\u7f16\u7801",langcode:"\u8bed\u8a00\u4ee3\u7801","target_langcode":"\u76ee\u6807\u8bed\u8a00",width:"\u5bbd",height:"\u9ad8"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlink/link.htm b/assets/plugins/tinymce/tiny_mce/plugins/advlink/link.htm deleted file mode 100644 index 52623ab571..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlink/link.htm +++ /dev/null @@ -1,338 +0,0 @@ - - - - {#advlink_dlg.title} - - - - - - - - - -
                      - - - - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/advlist/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/advlist/editor_plugin.js deleted file mode 100644 index 57ecce6e02..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/advlist/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.AdvListPlugin",{init:function(b,c){var d=this;d.editor=b;function e(g){var f=[];a(g.split(/,/),function(h){f.push({title:"advlist."+(h=="default"?"def":h.replace(/-/g,"_")),styles:{listStyleType:h=="default"?"":h}})});return f}d.numlist=b.getParam("advlist_number_styles")||e("default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");d.bullist=b.getParam("advlist_bullet_styles")||e("default,circle,disc,square");if(tinymce.isIE&&/MSIE [2-7]/.test(navigator.userAgent)){d.isIE7=true}},createControl:function(d,b){var f=this,e,i,g=f.editor;if(d=="numlist"||d=="bullist"){if(f[d][0].title=="advlist.def"){i=f[d][0]}function c(j,l){var k=true;a(l.styles,function(n,m){if(g.dom.getStyle(j,m)!=n){k=false;return false}});return k}function h(){var k,l=g.dom,j=g.selection;k=l.getParent(j.getNode(),"ol,ul");if(!k||k.nodeName==(d=="bullist"?"OL":"UL")||c(k,i)){g.execCommand(d=="bullist"?"InsertUnorderedList":"InsertOrderedList")}if(i){k=l.getParent(j.getNode(),"ol,ul");if(k){l.setStyles(k,i.styles);k.removeAttribute("data-mce-style")}}g.focus()}e=b.createSplitButton(d,{title:"advanced."+d+"_desc","class":"mce_"+d,onclick:function(){h()}});e.onRenderMenu.add(function(j,k){k.onHideMenu.add(function(){if(f.bookmark){g.selection.moveToBookmark(f.bookmark);f.bookmark=0}});k.onShowMenu.add(function(){var n=g.dom,m=n.getParent(g.selection.getNode(),"ol,ul"),l;if(m||i){l=f[d];a(k.items,function(o){var p=true;o.setSelected(0);if(m&&!o.isDisabled()){a(l,function(q){if(q.id==o.id){if(!c(m,q)){p=false;return false}}});if(p){o.setSelected(1)}}});if(!m){k.items[i.id].setSelected(1)}}g.focus();if(tinymce.isIE){f.bookmark=g.selection.getBookmark(1)}});k.add({id:g.dom.uniqueId(),title:"advlist.types","class":"mceMenuItemTitle",titleItem:true}).setDisabled(1);a(f[d],function(l){if(f.isIE7&&l.styles.listStyleType=="lower-greek"){return}l.id=g.dom.uniqueId();k.add({id:l.id,title:l.title,onclick:function(){i=l;h()}})})});return e}},getInfo:function(){return{longname:"Advanced lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/advlist",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("advlist",tinymce.plugins.AdvListPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/autolink/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/autolink/editor_plugin.js deleted file mode 100644 index 71d86bbecb..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/autolink/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}if(n.nodeType==3){a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f>=2?f-2:0);a.setEnd(n,f>=1?f-1:0);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])&&!/^mailto:/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);i.nodeChanged();if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/autoresize/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/autoresize/editor_plugin.js deleted file mode 100644 index 46d9dc3dd4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/autoresize/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.AutoResizePlugin",{init:function(a,c){var d=this,e=0;if(a.getParam("fullscreen_is_enabled")){return}function b(){var j,i=a.getDoc(),f=i.body,l=i.documentElement,h=tinymce.DOM,k=d.autoresize_min_height,g;g=tinymce.isIE?f.scrollHeight:(tinymce.isWebKit&&f.clientHeight==0?0:f.offsetHeight);if(g>d.autoresize_min_height){k=g}if(d.autoresize_max_height&&g>d.autoresize_max_height){k=d.autoresize_max_height;f.style.overflowY="auto";l.style.overflowY="auto"}else{f.style.overflowY="hidden";l.style.overflowY="hidden";f.scrollTop=0}if(k!==e){j=k-e;h.setStyle(h.get(a.id+"_ifr"),"height",k+"px");e=k;if(tinymce.isWebKit&&j<0){b()}}}d.editor=a;d.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight));d.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0));a.onInit.add(function(f){f.dom.setStyle(f.getBody(),"paddingBottom",f.getParam("autoresize_bottom_margin",50)+"px")});a.onChange.add(b);a.onSetContent.add(b);a.onPaste.add(b);a.onKeyUp.add(b);a.onPostRender.add(b);if(a.getParam("autoresize_on_init",true)){a.onLoad.add(b);a.onLoadContent.add(b)}a.addCommand("mceAutoResize",b)},getInfo:function(){return{longname:"Auto Resize",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autoresize",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autoresize",tinymce.plugins.AutoResizePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/autosave/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/autosave/editor_plugin.js deleted file mode 100644 index 6da98ff33a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/autosave/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){var c="autosave",g="restoredraft",b=true,f,d,a=e.util.Dispatcher;e.create("tinymce.plugins.AutoSave",{init:function(i,j){var h=this,l=i.settings;h.editor=i;function k(n){var m={s:1000,m:60000};n=/^(\d+)([ms]?)$/.exec(""+n);return(n[2]?m[n[2]]:1)*parseInt(n)}e.each({ask_before_unload:b,interval:"30s",retention:"20m",minlength:50},function(n,m){m=c+"_"+m;if(l[m]===f){l[m]=n}});l.autosave_interval=k(l.autosave_interval);l.autosave_retention=k(l.autosave_retention);i.addButton(g,{title:c+".restore_content",onclick:function(){if(i.getContent({draft:true}).replace(/\s| |<\/?p[^>]*>|]*>/gi,"").length>0){i.windowManager.confirm(c+".warning_message",function(m){if(m){h.restoreDraft()}})}else{h.restoreDraft()}}});i.onNodeChange.add(function(){var m=i.controlManager;if(m.get(g)){m.setDisabled(g,!h.hasDraft())}});i.onInit.add(function(){if(i.controlManager.get(g)){h.setupStorage(i);setInterval(function(){if(!i.removed){h.storeDraft();i.nodeChanged()}},l.autosave_interval)}});h.onStoreDraft=new a(h);h.onRestoreDraft=new a(h);h.onRemoveDraft=new a(h);if(!d){window.onbeforeunload=e.plugins.AutoSave._beforeUnloadHandler;d=b}},getInfo:function(){return{longname:"Auto save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autosave",version:e.majorVersion+"."+e.minorVersion}},getExpDate:function(){return new Date(new Date().getTime()+this.editor.settings.autosave_retention).toUTCString()},setupStorage:function(i){var h=this,k=c+"_test",j="OK";h.key=c+i.id;e.each([function(){if(localStorage){localStorage.setItem(k,j);if(localStorage.getItem(k)===j){localStorage.removeItem(k);return localStorage}}},function(){if(sessionStorage){sessionStorage.setItem(k,j);if(sessionStorage.getItem(k)===j){sessionStorage.removeItem(k);return sessionStorage}}},function(){if(e.isIE){i.getElement().style.behavior="url('#default#userData')";return{autoExpires:b,setItem:function(l,n){var m=i.getElement();m.setAttribute(l,n);m.expires=h.getExpDate();try{m.save("TinyMCE")}catch(o){}},getItem:function(l){var m=i.getElement();try{m.load("TinyMCE");return m.getAttribute(l)}catch(n){return null}},removeItem:function(l){i.getElement().removeAttribute(l)}}}},],function(l){try{h.storage=l();if(h.storage){return false}}catch(m){}})},storeDraft:function(){var i=this,l=i.storage,j=i.editor,h,k;if(l){if(!l.getItem(i.key)&&!j.isDirty()){return}k=j.getContent({draft:true});if(k.length>j.settings.autosave_minlength){h=i.getExpDate();if(!i.storage.autoExpires){i.storage.setItem(i.key+"_expires",h)}i.storage.setItem(i.key,k);i.onStoreDraft.dispatch(i,{expires:h,content:k})}}},restoreDraft:function(){var h=this,j=h.storage,i;if(j){i=j.getItem(h.key);if(i){h.editor.setContent(i);h.onRestoreDraft.dispatch(h,{content:i})}}},hasDraft:function(){var h=this,k=h.storage,i,j;if(k){j=!!k.getItem(h.key);if(j){if(!h.storage.autoExpires){i=new Date(k.getItem(h.key+"_expires"));if(new Date().getTime()(.*?)<\/a>/gi,"[url=$1]$2[/url]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]");b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]");b(/(.*?)<\/span>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/font>/gi,"[color=$1]$2[/color]");b(/(.*?)<\/span>/gi,"[size=$1]$2[/size]");b(/(.*?)<\/font>/gi,"$1");b(//gi,"[img]$1[/img]");b(/(.*?)<\/span>/gi,"[code]$1[/code]");b(/(.*?)<\/span>/gi,"[quote]$1[/quote]");b(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]");b(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]");b(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]");b(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]");b(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]");b(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]");b(/<\/(strong|b)>/gi,"[/b]");b(/<(strong|b)>/gi,"[b]");b(/<\/(em|i)>/gi,"[/i]");b(/<(em|i)>/gi,"[i]");b(/<\/u>/gi,"[/u]");b(/(.*?)<\/span>/gi,"[u]$1[/u]");b(//gi,"[u]");b(/]*>/gi,"[quote]");b(/<\/blockquote>/gi,"[/quote]");b(/
                      /gi,"\n");b(//gi,"\n");b(/
                      /gi,"\n");b(/

                      /gi,"");b(/<\/p>/gi,"\n");b(/ |\u00a0/gi," ");b(/"/gi,'"');b(/</gi,"<");b(/>/gi,">");b(/&/gi,"&");return a},_punbb_bbcode2html:function(a){a=tinymce.trim(a);function b(c,d){a=a.replace(c,d)}b(/\n/gi,"
                      ");b(/\[b\]/gi,"");b(/\[\/b\]/gi,"");b(/\[i\]/gi,"");b(/\[\/i\]/gi,"");b(/\[u\]/gi,"");b(/\[\/u\]/gi,"");b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2');b(/\[url\](.*?)\[\/url\]/gi,'$1');b(/\[img\](.*?)\[\/img\]/gi,'');b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2');b(/\[code\](.*?)\[\/code\]/gi,'$1 ');b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 ');return a}});tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/contextmenu/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/contextmenu/editor_plugin.js deleted file mode 100644 index 2ed042c3ae..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/contextmenu/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a=tinymce.dom.Event,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.ContextMenu",{init:function(f){var i=this,g,d,j,e;i.editor=f;d=f.settings.contextmenu_never_use_native;i.onContextMenu=new tinymce.util.Dispatcher(this);e=function(k){h(f,k)};g=f.onContextMenu.add(function(k,l){if((j!==0?j:l.ctrlKey)&&!d){return}a.cancel(l);if(l.target.nodeName=="IMG"){k.selection.select(l.target)}i._getMenu(k).showMenu(l.clientX||l.pageX,l.clientY||l.pageY);a.add(k.getDoc(),"click",e);k.nodeChanged()});f.onRemove.add(function(){if(i._menu){i._menu.removeAll()}});function h(k,l){j=0;if(l&&l.button==2){j=l.ctrlKey;return}if(i._menu){i._menu.removeAll();i._menu.destroy();a.remove(k.getDoc(),"click",e);i._menu=null}}f.onMouseDown.add(h);f.onKeyDown.add(h);f.onKeyDown.add(function(k,l){if(l.shiftKey&&!l.ctrlKey&&!l.altKey&&l.keyCode===121){a.cancel(l);g(k,l)}})},getInfo:function(){return{longname:"Contextmenu",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/contextmenu",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getMenu:function(e){var g=this,d=g._menu,j=e.selection,f=j.isCollapsed(),h=j.getNode()||e.getBody(),i,k;if(d){d.removeAll();d.destroy()}k=b.getPos(e.getContentAreaContainer());d=e.controlManager.createDropMenu("contextmenu",{offset_x:k.x+e.getParam("contextmenu_offset_x",0),offset_y:k.y+e.getParam("contextmenu_offset_y",0),constrain:1,keyboard_focus:true});g._menu=d;d.add({title:"advanced.cut_desc",icon:"cut",cmd:"Cut"}).setDisabled(f);d.add({title:"advanced.copy_desc",icon:"copy",cmd:"Copy"}).setDisabled(f);d.add({title:"advanced.paste_desc",icon:"paste",cmd:"Paste"});if((h.nodeName=="A"&&!e.dom.getAttrib(h,"name"))||!f){d.addSeparator();d.add({title:"advanced.link_desc",icon:"link",cmd:e.plugins.advlink?"mceAdvLink":"mceLink",ui:true});d.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"})}d.addSeparator();d.add({title:"advanced.image_desc",icon:"image",cmd:e.plugins.advimage?"mceAdvImage":"mceImage",ui:true});d.addSeparator();i=d.addMenu({title:"contextmenu.align"});i.add({title:"contextmenu.left",icon:"justifyleft",cmd:"JustifyLeft"});i.add({title:"contextmenu.center",icon:"justifycenter",cmd:"JustifyCenter"});i.add({title:"contextmenu.right",icon:"justifyright",cmd:"JustifyRight"});i.add({title:"contextmenu.full",icon:"justifyfull",cmd:"JustifyFull"});g.onContextMenu.dispatch(g,d,h,f);return d}});tinymce.PluginManager.add("contextmenu",tinymce.plugins.ContextMenu)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/directionality/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/directionality/editor_plugin.js deleted file mode 100644 index 90847e78e3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/directionality/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.Directionality",{init:function(b,c){var d=this;d.editor=b;function a(e){var h=b.dom,g,f=b.selection.getSelectedBlocks();if(f.length){g=h.getAttrib(f[0],"dir");tinymce.each(f,function(i){if(!h.getParent(i.parentNode,"*[dir='"+e+"']",h.getRoot())){if(g!=e){h.setAttrib(i,"dir",e)}else{h.setAttrib(i,"dir",null)}}});b.nodeChanged()}}b.addCommand("mceDirectionLTR",function(){a("ltr")});b.addCommand("mceDirectionRTL",function(){a("rtl")});b.addButton("ltr",{title:"directionality.ltr_desc",cmd:"mceDirectionLTR"});b.addButton("rtl",{title:"directionality.rtl_desc",cmd:"mceDirectionRTL"});b.onNodeChange.add(d._nodeChange,d)},getInfo:function(){return{longname:"Directionality",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/directionality",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,e){var d=b.dom,c;e=d.getParent(e,d.isBlock);if(!e){a.setDisabled("ltr",1);a.setDisabled("rtl",1);return}c=d.getAttrib(e,"dir");a.setActive("ltr",c=="ltr");a.setDisabled("ltr",0);a.setActive("rtl",c=="rtl");a.setDisabled("rtl",0)}});tinymce.PluginManager.add("directionality",tinymce.plugins.Directionality)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/editor_plugin.js deleted file mode 100644 index dbdd8ffb58..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){a.create("tinymce.plugins.EmotionsPlugin",{init:function(b,c){b.addCommand("mceEmotion",function(){b.windowManager.open({file:c+"/emotions.htm",width:250+parseInt(b.getLang("emotions.delta_width",0)),height:160+parseInt(b.getLang("emotions.delta_height",0)),inline:1},{plugin_url:c})});b.addButton("emotions",{title:"emotions.emotions_desc",cmd:"mceEmotion"})},getInfo:function(){return{longname:"Emotions",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/emotions",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("emotions",a.plugins.EmotionsPlugin)})(tinymce); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/emotions.htm b/assets/plugins/tinymce/tiny_mce/plugins/emotions/emotions.htm deleted file mode 100644 index eb7a6b2714..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/emotions.htm +++ /dev/null @@ -1,42 +0,0 @@ - - - - {#emotions_dlg.title} - - - - - -

                      -
                      {#emotions_dlg.title}:

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      {#emotions_dlg.usage}
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/js/emotions.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/js/emotions.js deleted file mode 100644 index f73516c833..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/js/emotions.js +++ /dev/null @@ -1,43 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var EmotionsDialog = { - addKeyboardNavigation: function(){ - var tableElm, cells, settings; - - cells = tinyMCEPopup.dom.select("a.emoticon_link", "emoticon_table"); - - settings ={ - root: "emoticon_table", - items: cells - }; - cells[0].tabindex=0; - tinyMCEPopup.dom.addClass(cells[0], "mceFocus"); - if (tinymce.isGecko) { - cells[0].focus(); - } else { - setTimeout(function(){ - cells[0].focus(); - }, 100); - } - tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom); - }, - init : function(ed) { - tinyMCEPopup.resizeToInnerSize(); - this.addKeyboardNavigation(); - }, - - insert : function(file, title) { - var ed = tinyMCEPopup.editor, dom = ed.dom; - - tinyMCEPopup.execCommand('mceInsertContent', false, dom.createHTML('img', { - src : tinyMCEPopup.getWindowArg('plugin_url') + '/img/' + file, - alt : ed.getLang(title), - title : ed.getLang(title), - border : 0 - })); - - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.onInit.add(EmotionsDialog.init, EmotionsDialog); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/bg_dlg.js deleted file mode 100644 index b15ff1cb01..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438 \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in mouth",embarassed:"Embarassed",usage:"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438\u0442\u0435 \u043d\u0430\u043b\u044f\u0432\u043e \u0438 \u043d\u0430\u0434\u044f\u0441\u043d\u043e, \u0437\u0430 \u0434\u0430 \u0438\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u043d\u044f\u043a\u043e\u044f \u0435\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u043a\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/cs_dlg.js deleted file mode 100644 index 625608bccc..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.emotions_dlg',{cry:"Pla\u010d\u00edc\u00ed",cool:"\u00da\u017easn\u00fd",desc:"Emotikony",title:"Vlo\u017eit emotikonu",yell:"K\u0159i\u010d\u00edc\u00ed",wink:"Mrkaj\u00edc\u00ed",undecided:"Nerozhodn\u00fd","tongue_out":"S vyplazen\u00fdm jazykem",surprised:"P\u0159ekvapen\u00fd",smile:"Usm\u00edvaj\u00edc\u00ed se",sealed:"Ml\u010d\u00edc\u00ed","money_mouth":"Je na prachy",laughing:"Sm\u011bj\u00edc\u00ed se",kiss:"L\u00edbaj\u00edc\u00ed",innocent:"Nevinn\u00fd",frown:"Zamra\u010den\u00fd","foot_in_mouth":"\u0160l\u00e1pnul vedle",embarassed:"Rozpa\u010dit\u00fd",usage:"Pro navigaci pou\u017eijte \u0161ipky vlevo a vpravo."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/da_dlg.js deleted file mode 100644 index 165137e7b0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.emotions_dlg',{cry:"Gr\u00e6de",cool:"Cool",desc:"Hum\u00f8rikoner",title:"Inds\u00e6t hum\u00f8rikon",yell:"R\u00e5be",wink:"Vink",undecided:"Ubeslutsom","tongue_out":"Tunge ud",surprised:"Overrasket",smile:"Smil",sealed:"Lukket","money_mouth":"Pengemund",laughing:"Grine",kiss:"Kys",innocent:"Uskyldig",frown:"Forskr\u00e6kket","foot_in_mouth":"Fod i munden",embarassed:"Flov",usage:"Brug venstre og h\u00f8jre piletaster til at navigere"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/de_dlg.js deleted file mode 100644 index 7489e35e0a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.emotions_dlg',{cry:"Weinend",cool:"Cool",desc:"Smileys",title:"Smiley einf\u00fcgen",yell:"Br\u00fcllend",wink:"Zwinkernd",undecided:"Unentschlossen","tongue_out":"Zunge raus",surprised:"\u00dcberrascht",smile:"L\u00e4chelnd",sealed:"Verschlossen","money_mouth":"Geld",laughing:"Lachend",kiss:"K\u00fcssend",innocent:"Unschuldig",frown:"Stirnrunzelnd","foot_in_mouth":"Reingefallen",embarassed:"Verlegen",usage:"Navigation mit linken und rechten Pfeilen."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/en_dlg.js deleted file mode 100644 index 037c4b5883..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",usage:"Use left and right arrows to navigate.",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed"}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/es_dlg.js deleted file mode 100644 index bdff36a570..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.emotions_dlg',{cry:"Llora",cool:"Todo bien",desc:"Emoticones",title:"Insertar emoticon",yell:"Enfadado",wink:"Gui\u00f1o",undecided:"Indeciso","tongue_out":"Lengua fuera",surprised:"Sorprendido",smile:"Sonrisa",sealed:"Sellado","money_mouth":"Dinero boca",laughing:"Risa",kiss:"Beso",innocent:"Inocente",frown:"Triste","foot_in_mouth":"Pie en la boca",embarassed:"Verg\u00fcenza",usage:"Use las flechas para navegar"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fa_dlg.js deleted file mode 100644 index 1c1d57c0d6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.emotions_dlg',{cry:"\u06af\u0631\u06cc\u0647",cool:"\u0622\u0631\u0627\u0645",desc:"\u0634\u06a9\u0644\u06a9 \u0647\u0627",title:"\u062f\u0631\u062c \u0634\u06a9\u0644\u06a9",yell:"\u0641\u0631\u06cc\u0627\u062f",wink:"\u0686\u0634\u0645\u06a9",undecided:"\u0645\u0631\u062f\u062f","tongue_out":"\u0632\u0628\u0627\u0646 \u062f\u0631\u0627\u0632\u06cc",surprised:"\u0645\u062a\u0639\u062c\u0628",smile:"\u0644\u0628\u062e\u0646\u062f",sealed:"\u0645\u0647\u0631 \u0634\u062f\u0647","money_mouth":"\u067e\u0648\u0644 \u062f\u0631 \u062f\u0647\u0627\u0646",laughing:"\u062e\u0646\u062f\u0647",kiss:"\u0628\u0648\u0633\u0647",innocent:"\u0628\u06cc \u062a\u0642\u0635\u06cc\u0631",frown:"\u0627\u062e\u0645","foot_in_mouth":"\u067e\u0627 \u062f\u0631 \u062f\u0647\u0627\u0646",embarassed:"\u062e\u062c\u0627\u0644\u062a\u06cc",usage:"\u0627\u0632 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc \u0686\u067e \u0648 \u0631\u0627\u0633\u062a \u062c\u0647\u062a \u062d\u0631\u06a9\u062a \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fi_dlg.js deleted file mode 100644 index 7e620dd5f3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.emotions_dlg',{cry:"Itku",cool:"Cool",desc:"Hymi\u00f6t",title:"Lis\u00e4\u00e4 hymi\u00f6",yell:"Huuto",wink:"Silm\u00e4nisku",undecided:"P\u00e4\u00e4tt\u00e4m\u00e4t\u00f6n","tongue_out":"Kieli ulkona",surprised:"Yll\u00e4ttynyt",smile:"Hymy",sealed:"Tukittu","money_mouth":"Klink Klink (raha)",laughing:"Nauru",kiss:"Pusu",innocent:"Viaton",frown:"Otsan rypistys","foot_in_mouth":"Jalka suussa",embarassed:"Nolostunut",usage:"K\u00e4yt\u00e4 vasenta ja oikeata nuolin\u00e4pp\u00e4int\u00e4 navigointiin."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fr_dlg.js deleted file mode 100644 index 971cf0966d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.emotions_dlg',{cry:"En pleurs",cool:"Cool",desc:"\u00c9motic\u00f4nes",title:"Ins\u00e9rer une \u00e9motic\u00f4ne",yell:"Criant",wink:"Clin d\'\u0153il",undecided:"Incertain","tongue_out":"Langue tir\u00e9e",surprised:"Surpris",smile:"Sourire",sealed:"Bouche cousue","money_mouth":"Avare",laughing:"Rigolant",kiss:"Bisou",innocent:"Innocent",frown:"D\u00e9\u00e7u","foot_in_mouth":"Pied de nez",embarassed:"Embarrass\u00e9",usage:"Utilisez les fl\u00e8ches gauche et droite pour naviguer."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/he_dlg.js deleted file mode 100644 index 2664cd224e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.emotions_dlg',{cry:"\u05d1\u05d5\u05db\u05d4",cool:"\u05de\u05d2\u05e0\u05d9\u05d1",desc:"\u05e1\u05de\u05d9\u05d9\u05dc\u05d9\u05dd",title:"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e1\u05de\u05d9\u05d9\u05dc\u05d9",yell:"\u05e6\u05e2\u05e7\u05d4",wink:"\u05e7\u05e8\u05d9\u05e6\u05d4",undecided:"\u05d4\u05e1\u05e0\u05e0\u05d9","tongue_out":"\u05dc\u05e9\u05d5\u05df \u05d1\u05d7\u05d5\u05e5",surprised:"\u05de\u05d5\u05e4\u05ea\u05e2",smile:"\u05d7\u05d9\u05d5\u05da",sealed:"\u05d0\u05d8\u05d5\u05dd","money_mouth":"\u05db\u05e1\u05e3",laughing:"\u05e6\u05d5\u05d7\u05e7",kiss:"\u05e0\u05e9\u05d9\u05e7\u05d4",innocent:"\u05ea\u05de\u05d9\u05dd",frown:"\u05de\u05d6\u05e2\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e4\u05d4","foot_in_mouth":"\u05e8\u05d2\u05dc \u05d1\u05e4\u05d4",embarassed:"\u05e0\u05d1\u05d5\u05da",usage:"\u05d4\u05e9\u05ea\u05de\u05e9\u05d5 \u05d1\u05d7\u05e5 \u05d9\u05de\u05d9\u05e0\u05d4 \u05d5\u05e9\u05de\u05d0\u05dc\u05d4 \u05dc\u05e0\u05d9\u05d5\u05d5\u05d8"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/it_dlg.js deleted file mode 100644 index 06998660a4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.emotions_dlg',{cry:"Piango",cool:"Fico",desc:"Faccina",title:"Inserisci faccina",yell:"Arrabbiato",wink:"Occhiolino",undecided:"Indeciso","tongue_out":"Linguaccia",surprised:"Sorpreso",smile:"Sorridente",sealed:"Bocca sigillata","money_mouth":"Bocca danarosa",laughing:"Risatona",kiss:"Bacio",innocent:"Santarellino",frown:"Triste","foot_in_mouth":"Piede in bocca",embarassed:"Imbarazzato",usage:"Utilizza le freccie sinistra e destra per navigare."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/ja_dlg.js deleted file mode 100644 index 7ff287f390..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.emotions_dlg',{cry:"\u6ce3\u304d\u9854",cool:"\u30af\u30fc\u30eb",desc:"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3",title:"\u8868\u60c5\u30a2\u30a4\u30b3\u30f3\u306e\u633f\u5165",yell:"\u30a8\u30fc\u30eb",wink:"\u30a6\u30a3\u30f3\u30af",undecided:"\u672a\u6c7a\u5b9a","tongue_out":"\u30a2\u30c3\u30ab\u30f3\u30d9\u30fc",surprised:"\u9a5a\u304d",smile:"\u7b11\u9854",sealed:"\u5c01\u5370","money_mouth":"\u53e3\u306b\u304a\u91d1",laughing:"\u7b11\u3044",kiss:"\u30ad\u30b9",innocent:"\u7d14\u771f\u7121\u57a2",frown:"\u6e0b\u9762","foot_in_mouth":"\u53e3\u306b\u8db3",embarassed:"\u56f0\u60d1",usage:"\u5de6\u3068\u53f3\u306e\u30ab\u30fc\u30bd\u30eb\u30ad\u30fc\u3067\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/nl_dlg.js deleted file mode 100644 index 0e7d7babbf..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.emotions_dlg',{cry:"Huilen",cool:"Stoer",desc:"Emoties",title:"Emotie invoegen",yell:"Roepen",wink:"Knipogen",undecided:"Onbeslist","tongue_out":"Tong uitsteken",surprised:"Verrast",smile:"Lachen",sealed:"Afgesloten","money_mouth":"Hebberig",laughing:"Lachen",kiss:"Zoenen",innocent:"Onschuldig",frown:"Wenkbrauw ophalen","foot_in_mouth":"Verstomd",embarassed:"Schamen",usage:"Gebruik linker en rechter pijltjestoetsen om te navigeren."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/nn_dlg.js deleted file mode 100644 index 17ad594c98..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.emotions_dlg',{cry:"Gret",cool:"Cool",desc:"Hum\u00f8rfjes",title:"Set inn hum\u00f8rfjes",yell:"Skri",wink:"Blunke",undecided:"Skeptisk","tongue_out":"Rekkje tunge",surprised:"Overraska",smile:"Glad",sealed:"Hemmeleg","money_mouth":"Pengar i munnen",laughing:"Ler",kiss:"Kyss",innocent:"Uskyldig",frown:"Skuffa","foot_in_mouth":"Fot i munnen",embarassed:"Flau",usage:"Bruk venstre og h\u00f8gre piltast for \u00e5 navigere"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/pl_dlg.js deleted file mode 100644 index 4e676926b3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.emotions_dlg',{cry:"P\u0142acz",cool:"Wyluzowany",desc:"Emotikony",title:"Wstaw emotikon\u0119",yell:"Krzyk",wink:"Mrugni\u0119cie",undecided:"Niezdecydowany","tongue_out":"Wystawiony j\u0119zyk",surprised:"Zaskoczony",smile:"U\u015bmiech",sealed:"Zaklepany","money_mouth":"Zaanga\u017cowany",laughing:"\u015amiech",kiss:"Poca\u0142unek",innocent:"Niewinny",frown:"Dezaprobata","foot_in_mouth":"Niewyparzona g\u0119ba",embarassed:"Zmieszany",usage:"U\u017cywaj strza\u0142ek w lewo i w prawo do nawigacji."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/pt_dlg.js deleted file mode 100644 index 220959478b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.emotions_dlg',{cry:"Chor\u00e3o",cool:"Fixe",desc:"Emoticons",title:"Inserir emoticon",yell:"Irado",wink:"Piscadela",undecided:"Indeciso","tongue_out":"L\u00edngua de fora",surprised:"Surpresa",smile:"Sorriso",sealed:"Boca Fechada","money_mouth":"Avarez",laughing:"Riso",kiss:"Beijo",innocent:"Inocente",frown:"Decep\u00e7\u00e3o","foot_in_mouth":"Disse asneira",embarassed:"Embara\u00e7ado",usage:"Use as setas esquerda e direita para navegar."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/ru_dlg.js deleted file mode 100644 index be9f3bca98..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.emotions_dlg',{cry:"\u041f\u043b\u0430\u0447\u0443",cool:"\u041a\u0440\u0443\u0442\u043e\u0439",desc:"\u0421\u043c\u0430\u0439\u043b\u044b",title:"\u0412\u044b\u0431\u043e\u0440 \u0441\u043c\u0430\u0439\u043b\u0430",yell:"\u041a\u0440\u0438\u0447\u0443",wink:"\u041f\u043e\u0434\u043c\u0438\u0433\u0438\u0432\u0430\u044e",undecided:"\u0412 \u043d\u0435\u0440\u0435\u0448\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438","tongue_out":"\u0414\u0440\u0430\u0437\u043d\u044e\u0441\u044c",surprised:"\u0423\u0434\u0438\u0432\u043b\u044f\u044e\u0441\u044c",smile:"\u0423\u043b\u044b\u0431\u0430\u044e\u0441\u044c",sealed:"\u041d\u0435\u043c \u043a\u0430\u043a \u0440\u044b\u0431\u0430","money_mouth":"\u0414\u0435\u043d\u044c\u0433\u0438",laughing:"\u0421\u043c\u0435\u044e\u0441\u044c",kiss:"\u041f\u043e\u0446\u0435\u043b\u0443\u0439",innocent:"\u0410\u043d\u0433\u0435\u043b",frown:"\u0425\u043c\u0443\u0440\u044e\u0441\u044c","foot_in_mouth":"\u0412 \u0440\u043e\u0442 \u043c\u043d\u0435 \u043d\u043e\u0433\u0438",embarassed:"\u041a\u0440\u0430\u0441\u043d\u0435\u044e",usage:"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \"\u0412\u043b\u0435\u0432\u043e\" \u0438 \"\u0412\u043f\u0440\u0430\u0432\u043e\" \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/sv_dlg.js deleted file mode 100644 index c36ebee3db..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.emotions_dlg',{cry:"Gr\u00e5ter",cool:"Cool",desc:"Smileys",title:"Infoga smiley",yell:"Skrikandes",wink:"Fl\u00f6rt",undecided:"Obest\u00e4md","tongue_out":"Tungan ute",surprised:"F\u00f6rv\u00e5nad",smile:"Glad",sealed:"Tyst","money_mouth":"Guld i mun",laughing:"Skrattande",kiss:"Kyss",innocent:"Oskyldig",frown:"Rynkar p\u00e5 n\u00e4san","foot_in_mouth":"Foten i munnen",embarassed:"Sk\u00e4ms",usage:"Anv\u00e4nd v\u00e4nster och h\u00f6ger pil f\u00f6r att navigera"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/zh_dlg.js deleted file mode 100644 index f562444f05..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/emotions/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.emotions_dlg',{cry:"\u54ed\u6ce3",cool:"\u9177",desc:"\u8868\u60c5",title:"\u63d2\u5165\u8868\u60c5",yell:"\u5927\u53eb",wink:"\u7728\u773c",undecided:"\u601d\u8003","tongue_out":"\u5410\u820c\u5934",surprised:"\u60ca\u8bb6",smile:"\u5fae\u7b11",sealed:"\u4fdd\u5bc6","money_mouth":"\u53d1\u8d22",laughing:"\u5927\u7b11",kiss:"\u543b",innocent:"\u5929\u771f",frown:"\u76b1\u7709","foot_in_mouth":"\u54a7\u5634",embarassed:"\u5c34\u5c2c",usage:"\u4f7f\u7528\u5de6\u53f3\u65b9\u5411\u952e\u5207\u6362\u3002"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/css/fullpage.css b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/css/fullpage.css deleted file mode 100644 index 28b721f9b3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/css/fullpage.css +++ /dev/null @@ -1,143 +0,0 @@ -/* Hide the advanced tab */ -#advanced_tab { - display: none; -} - -#metatitle, #metakeywords, #metadescription, #metaauthor, #metacopyright { - width: 280px; -} - -#doctype, #docencoding { - width: 200px; -} - -#langcode { - width: 30px; -} - -#bgimage { - width: 220px; -} - -#fontface { - width: 240px; -} - -#leftmargin, #rightmargin, #topmargin, #bottommargin { - width: 50px; -} - -.panel_wrapper div.current { - height: 400px; -} - -#stylesheet, #style { - width: 240px; -} - -#doctypes { - width: 200px; -} - -/* Head list classes */ - -.headlistwrapper { - width: 100%; -} - -.selected { - border: 1px solid #0A246A; - background-color: #B6BDD2; -} - -.toolbar { - width: 100%; -} - -#headlist { - width: 100%; - margin-top: 3px; - font-size: 11px; -} - -#info, #title_element, #meta_element, #script_element, #style_element, #base_element, #link_element, #comment_element, #unknown_element { - display: none; -} - -#addmenu { - position: absolute; - border: 1px solid gray; - display: none; - z-index: 100; - background-color: white; -} - -#addmenu a { - display: block; - width: 100%; - line-height: 20px; - text-decoration: none; - background-color: white; -} - -#addmenu a:hover { - background-color: #B6BDD2; - color: black; -} - -#addmenu span { - padding-left: 10px; - padding-right: 10px; -} - -#updateElementPanel { - display: none; -} - -#script_element .panel_wrapper div.current { - height: 108px; -} - -#style_element .panel_wrapper div.current { - height: 108px; -} - -#link_element .panel_wrapper div.current { - height: 140px; -} - -#element_script_value { - width: 100%; - height: 100px; -} - -#element_comment_value { - width: 100%; - height: 120px; -} - -#element_style_value { - width: 100%; - height: 100px; -} - -#element_title, #element_script_src, #element_meta_name, #element_meta_content, #element_base_href, #element_link_href, #element_link_title { - width: 250px; -} - -.updateElementButton { - margin-top: 3px; -} - -/* MSIE specific styles */ - -* html .addbutton, * html .removebutton, * html .moveupbutton, * html .movedownbutton { - width: 22px; - height: 22px; -} - -textarea { - height: 55px; -} - -.panel_wrapper div.current {height:420px;} \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/editor_plugin.js deleted file mode 100644 index dcf76024dd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var b=tinymce.each,a=tinymce.html.Node;tinymce.create("tinymce.plugins.FullPagePlugin",{init:function(c,d){var e=this;e.editor=c;c.addCommand("mceFullPageProperties",function(){c.windowManager.open({file:d+"/fullpage.htm",width:430+parseInt(c.getLang("fullpage.delta_width",0)),height:495+parseInt(c.getLang("fullpage.delta_height",0)),inline:1},{plugin_url:d,data:e._htmlToData()})});c.addButton("fullpage",{title:"fullpage.desc",cmd:"mceFullPageProperties"});c.onBeforeSetContent.add(e._setContent,e);c.onGetContent.add(e._getContent,e)},getInfo:function(){return{longname:"Fullpage",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_htmlToData:function(){var f=this._parseHeader(),h={},c,i,g,e=this.editor;function d(l,j){var k=l.attr(j);return k||""}h.fontface=e.getParam("fullpage_default_fontface","");h.fontsize=e.getParam("fullpage_default_fontsize","");i=f.firstChild;if(i.type==7){h.xml_pi=true;g=/encoding="([^"]+)"/.exec(i.value);if(g){h.docencoding=g[1]}}i=f.getAll("#doctype")[0];if(i){h.doctype=""}i=f.getAll("title")[0];if(i&&i.firstChild){h.metatitle=i.firstChild.value}b(f.getAll("meta"),function(m){var k=m.attr("name"),j=m.attr("http-equiv"),l;if(k){h["meta"+k.toLowerCase()]=m.attr("content")}else{if(j=="Content-Type"){l=/charset\s*=\s*(.*)\s*/gi.exec(m.attr("content"));if(l){h.docencoding=l[1]}}}});i=f.getAll("html")[0];if(i){h.langcode=d(i,"lang")||d(i,"xml:lang")}i=f.getAll("link")[0];if(i&&i.attr("rel")=="stylesheet"){h.stylesheet=i.attr("href")}i=f.getAll("body")[0];if(i){h.langdir=d(i,"dir");h.style=d(i,"style");h.visited_color=d(i,"vlink");h.link_color=d(i,"link");h.active_color=d(i,"alink")}return h},_dataToHtml:function(g){var f,d,h,j,k,e=this.editor.dom;function c(n,l,m){n.attr(l,m?m:undefined)}function i(l){if(d.firstChild){d.insert(l,d.firstChild)}else{d.append(l)}}f=this._parseHeader();d=f.getAll("head")[0];if(!d){j=f.getAll("html")[0];d=new a("head",1);if(j.firstChild){j.insert(d,j.firstChild,true)}else{j.append(d)}}j=f.firstChild;if(g.xml_pi){k='version="1.0"';if(g.docencoding){k+=' encoding="'+g.docencoding+'"'}if(j.type!=7){j=new a("xml",7);f.insert(j,f.firstChild,true)}j.value=k}else{if(j&&j.type==7){j.remove()}}j=f.getAll("#doctype")[0];if(g.doctype){if(!j){j=new a("#doctype",10);if(g.xml_pi){f.insert(j,f.firstChild)}else{i(j)}}j.value=g.doctype.substring(9,g.doctype.length-1)}else{if(j){j.remove()}}j=f.getAll("title")[0];if(g.metatitle){if(!j){j=new a("title",1);j.append(new a("#text",3)).value=g.metatitle;i(j)}}if(g.docencoding){j=null;b(f.getAll("meta"),function(l){if(l.attr("http-equiv")=="Content-Type"){j=l}});if(!j){j=new a("meta",1);j.attr("http-equiv","Content-Type");j.shortEnded=true;i(j)}j.attr("content","text/html; charset="+g.docencoding)}b("keywords,description,author,copyright,robots".split(","),function(m){var l=f.getAll("meta"),n,p,o=g["meta"+m];for(n=0;n"))},_parseHeader:function(){return new tinymce.html.DomParser({validate:false,root_name:"#document"}).parse(this.head)},_setContent:function(g,d){var m=this,i,c,h=d.content,f,l="",e=m.editor.dom,j;function k(n){return n.replace(/<\/?[A-Z]+/g,function(o){return o.toLowerCase()})}if(d.format=="raw"&&m.head){return}if(d.source_view&&g.getParam("fullpage_hide_in_source_view")){return}h=h.replace(/<(\/?)BODY/gi,"<$1body");i=h.indexOf("",i);m.head=k(h.substring(0,i+1));c=h.indexOf("\n"}f=m._parseHeader();b(f.getAll("style"),function(n){if(n.firstChild){l+=n.firstChild.value}});j=f.getAll("body")[0];if(j){e.setAttribs(m.editor.getBody(),{style:j.attr("style")||"",dir:j.attr("dir")||"",vLink:j.attr("vlink")||"",link:j.attr("link")||"",aLink:j.attr("alink")||""})}e.remove("fullpage_styles");if(l){e.add(m.editor.getDoc().getElementsByTagName("head")[0],"style",{id:"fullpage_styles"},l);j=e.get("fullpage_styles");if(j.styleSheet){j.styleSheet.cssText=l}}},_getDefaultHeader:function(){var f="",c=this.editor,e,d="";if(c.getParam("fullpage_default_xml_pi")){f+='\n'}f+=c.getParam("fullpage_default_doctype",'');f+="\n\n\n";if(e=c.getParam("fullpage_default_title")){f+=""+e+"\n"}if(e=c.getParam("fullpage_default_encoding")){f+='\n'}if(e=c.getParam("fullpage_default_font_family")){d+="font-family: "+e+";"}if(e=c.getParam("fullpage_default_font_size")){d+="font-size: "+e+";"}if(e=c.getParam("fullpage_default_text_color")){d+="color: "+e+";"}f+="\n\n";return f},_getContent:function(d,e){var c=this;if(!e.source_view||!d.getParam("fullpage_hide_in_source_view")){e.content=tinymce.trim(c.head)+"\n"+tinymce.trim(e.content)+"\n"+tinymce.trim(c.foot)}}});tinymce.PluginManager.add("fullpage",tinymce.plugins.FullPagePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/fullpage.htm b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/fullpage.htm deleted file mode 100644 index 200f2b8e6c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/fullpage.htm +++ /dev/null @@ -1,259 +0,0 @@ - - - - {#fullpage_dlg.title} - - - - - - - -
                      - - -
                      -
                      -
                      - {#fullpage_dlg.meta_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
                       
                       
                       
                       
                       
                        - -
                      -
                      - -
                      - {#fullpage_dlg.langprops} - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                        - -
                       
                      - -
                       
                      -
                      -
                      - -
                      -
                      - {#fullpage_dlg.appearance_textprops} - - - - - - - - - - - - - - - - -
                      - -
                      - -
                      - - - - - -
                       
                      -
                      -
                      - -
                      - {#fullpage_dlg.appearance_bgprops} - - - - - - - - - - -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      -
                      - -
                      - {#fullpage_dlg.appearance_marginprops} - - - - - - - - - - - - - - -
                      -
                      - -
                      - {#fullpage_dlg.appearance_linkprops} - - - - - - - - - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                        
                      -
                      - -
                      - {#fullpage_dlg.appearance_style} - - - - - - - - - - -
                      - - - - -
                       
                      -
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/js/fullpage.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/js/fullpage.js deleted file mode 100644 index 66eec2d7b4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/js/fullpage.js +++ /dev/null @@ -1,232 +0,0 @@ -/** - * fullpage.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -(function() { - tinyMCEPopup.requireLangPack(); - - var defaultDocTypes = - 'XHTML 1.0 Transitional=,' + - 'XHTML 1.0 Frameset=,' + - 'XHTML 1.0 Strict=,' + - 'XHTML 1.1=,' + - 'HTML 4.01 Transitional=,' + - 'HTML 4.01 Strict=,' + - 'HTML 4.01 Frameset='; - - var defaultEncodings = - 'Western european (iso-8859-1)=iso-8859-1,' + - 'Central European (iso-8859-2)=iso-8859-2,' + - 'Unicode (UTF-8)=utf-8,' + - 'Chinese traditional (Big5)=big5,' + - 'Cyrillic (iso-8859-5)=iso-8859-5,' + - 'Japanese (iso-2022-jp)=iso-2022-jp,' + - 'Greek (iso-8859-7)=iso-8859-7,' + - 'Korean (iso-2022-kr)=iso-2022-kr,' + - 'ASCII (us-ascii)=us-ascii'; - - var defaultFontNames = 'Arial=arial,helvetica,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,times new roman,times,serif;Tahoma=tahoma,arial,helvetica,sans-serif;Times New Roman=times new roman,times,serif;Verdana=verdana,arial,helvetica,sans-serif;Impact=impact;WingDings=wingdings'; - var defaultFontSizes = '10px,11px,12px,13px,14px,15px,16px'; - - function setVal(id, value) { - var elm = document.getElementById(id); - - if (elm) { - value = value || ''; - - if (elm.nodeName == "SELECT") - selectByValue(document.forms[0], id, value); - else if (elm.type == "checkbox") - elm.checked = !!value; - else - elm.value = value; - } - }; - - function getVal(id) { - var elm = document.getElementById(id); - - if (elm.nodeName == "SELECT") - return elm.options[elm.selectedIndex].value; - - if (elm.type == "checkbox") - return elm.checked; - - return elm.value; - }; - - window.FullPageDialog = { - changedStyle : function() { - var val, styles = tinyMCEPopup.editor.dom.parseStyle(getVal('style')); - - setVal('fontface', styles['font-face']); - setVal('fontsize', styles['font-size']); - setVal('textcolor', styles['color']); - - if (val = styles['background-image']) - setVal('bgimage', val.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1")); - else - setVal('bgimage', ''); - - setVal('bgcolor', styles['background-color']); - - // Reset margin form elements - setVal('topmargin', ''); - setVal('rightmargin', ''); - setVal('bottommargin', ''); - setVal('leftmargin', ''); - - // Expand margin - if (val = styles['margin']) { - val = val.split(' '); - styles['margin-top'] = val[0] || ''; - styles['margin-right'] = val[1] || val[0] || ''; - styles['margin-bottom'] = val[2] || val[0] || ''; - styles['margin-left'] = val[3] || val[0] || ''; - } - - if (val = styles['margin-top']) - setVal('topmargin', val.replace(/px/, '')); - - if (val = styles['margin-right']) - setVal('rightmargin', val.replace(/px/, '')); - - if (val = styles['margin-bottom']) - setVal('bottommargin', val.replace(/px/, '')); - - if (val = styles['margin-left']) - setVal('leftmargin', val.replace(/px/, '')); - - updateColor('bgcolor_pick', 'bgcolor'); - updateColor('textcolor_pick', 'textcolor'); - }, - - changedStyleProp : function() { - var val, dom = tinyMCEPopup.editor.dom, styles = dom.parseStyle(getVal('style')); - - styles['font-face'] = getVal('fontface'); - styles['font-size'] = getVal('fontsize'); - styles['color'] = getVal('textcolor'); - styles['background-color'] = getVal('bgcolor'); - - if (val = getVal('bgimage')) - styles['background-image'] = "url('" + val + "')"; - else - styles['background-image'] = ''; - - delete styles['margin']; - - if (val = getVal('topmargin')) - styles['margin-top'] = val + "px"; - else - styles['margin-top'] = ''; - - if (val = getVal('rightmargin')) - styles['margin-right'] = val + "px"; - else - styles['margin-right'] = ''; - - if (val = getVal('bottommargin')) - styles['margin-bottom'] = val + "px"; - else - styles['margin-bottom'] = ''; - - if (val = getVal('leftmargin')) - styles['margin-left'] = val + "px"; - else - styles['margin-left'] = ''; - - // Serialize, parse and reserialize this will compress redundant styles - setVal('style', dom.serializeStyle(dom.parseStyle(dom.serializeStyle(styles)))); - this.changedStyle(); - }, - - update : function() { - var data = {}; - - tinymce.each(tinyMCEPopup.dom.select('select,input,textarea'), function(node) { - data[node.id] = getVal(node.id); - }); - - tinyMCEPopup.editor.plugins.fullpage._dataToHtml(data); - tinyMCEPopup.close(); - } - }; - - function init() { - var form = document.forms[0], i, item, list, editor = tinyMCEPopup.editor; - - // Setup doctype select box - list = editor.getParam("fullpage_doctypes", defaultDocTypes).split(','); - for (i = 0; i < list.length; i++) { - item = list[i].split('='); - - if (item.length > 1) - addSelectValue(form, 'doctype', item[0], item[1]); - } - - // Setup fonts select box - list = editor.getParam("fullpage_fonts", defaultFontNames).split(';'); - for (i = 0; i < list.length; i++) { - item = list[i].split('='); - - if (item.length > 1) - addSelectValue(form, 'fontface', item[0], item[1]); - } - - // Setup fontsize select box - list = editor.getParam("fullpage_fontsizes", defaultFontSizes).split(','); - for (i = 0; i < list.length; i++) - addSelectValue(form, 'fontsize', list[i], list[i]); - - // Setup encodings select box - list = editor.getParam("fullpage_encodings", defaultEncodings).split(','); - for (i = 0; i < list.length; i++) { - item = list[i].split('='); - - if (item.length > 1) - addSelectValue(form, 'docencoding', item[0], item[1]); - } - - // Setup color pickers - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - document.getElementById('link_color_pickcontainer').innerHTML = getColorPickerHTML('link_color_pick','link_color'); - document.getElementById('visited_color_pickcontainer').innerHTML = getColorPickerHTML('visited_color_pick','visited_color'); - document.getElementById('active_color_pickcontainer').innerHTML = getColorPickerHTML('active_color_pick','active_color'); - document.getElementById('textcolor_pickcontainer').innerHTML = getColorPickerHTML('textcolor_pick','textcolor'); - document.getElementById('stylesheet_browsercontainer').innerHTML = getBrowserHTML('stylesheetbrowser','stylesheet','file','fullpage'); - document.getElementById('bgimage_pickcontainer').innerHTML = getBrowserHTML('bgimage_browser','bgimage','image','fullpage'); - - // Resize some elements - if (isVisible('stylesheetbrowser')) - document.getElementById('stylesheet').style.width = '220px'; - - if (isVisible('link_href_browser')) - document.getElementById('element_link_href').style.width = '230px'; - - if (isVisible('bgimage_browser')) - document.getElementById('bgimage').style.width = '210px'; - - // Update form - tinymce.each(tinyMCEPopup.getWindowArg('data'), function(value, key) { - setVal(key, value); - }); - - FullPageDialog.changedStyle(); - - // Update colors - updateColor('textcolor_pick', 'textcolor'); - updateColor('bgcolor_pick', 'bgcolor'); - updateColor('visited_color_pick', 'visited_color'); - updateColor('active_color_pick', 'active_color'); - updateColor('link_color_pick', 'link_color'); - }; - - tinyMCEPopup.onInit.add(init); -})(); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/bg_dlg.js deleted file mode 100644 index 2076714c33..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.fullpage_dlg',{title:"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","meta_tab":"\u041e\u0431\u0449\u0438","appearance_tab":"\u0412\u044a\u043d\u0448\u0435\u043d \u0432\u0438\u0434","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","meta_props":"Meta \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f",langprops:"\u0415\u0437\u0438\u043a \u0438 \u043a\u043e\u0434\u0438\u0440\u0430\u043d\u0435","meta_title":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435","meta_keywords":"\u041a\u043b\u044e\u0447\u043e\u0432\u0438 \u0434\u0443\u043c\u0438","meta_description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","meta_robots":"\u0420\u043e\u0431\u043e\u0442\u0438",doctypes:"\u0422\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e","xml_pi":"XML \u0434\u0435\u043a\u043b\u0430\u0440\u0430\u0446\u0438\u0438",encoding:"\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0441\u0438\u043c\u0432\u043e\u043b\u0438\u0442\u0435","appearance_bgprops":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0444\u043e\u043d\u0430","appearance_marginprops":"Body margins","appearance_linkprops":"\u0426\u0432\u0435\u0442\u043e\u0432\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","appearance_textprops":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",bgcolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0434\u043e\u043d\u0430",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","left_margin":"\u041b\u044f\u0432 margin","right_margin":"\u0414\u0435\u0430\u0441\u0435\u043d margin","top_margin":"\u0413\u043e\u0440\u0435\u043d margin","bottom_margin":"\u0414\u043e\u043b\u0435\u043d margin","text_color":"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430","font_face":"\u0428\u0440\u0438\u0444\u0442","link_color":"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430","hover_color":"\u0426\u0432\u044f\u0442 \u043f\u0440\u0438 hover","visited_color":"\u0426\u0432\u044f\u0442 \u0437\u0430 \u043f\u043e\u0441\u0435\u0442\u0435\u043d\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438","active_color":"\u0410\u043a\u0442\u0438\u0432\u0435\u043d \u0446\u0432\u044f\u0442",textcolor:"\u0426\u0432\u044f\u0442",fontsize:"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430",fontface:"\u0428\u0440\u0438\u0444\u0442","meta_index_follow":"\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u0438 \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","meta_index_nofollow":"\u0418\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u0438 \u043d\u0435 \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","meta_noindex_follow":"\u041d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u043d\u043e \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","meta_noindex_nofollow":"\u041d\u0435 \u0438\u043d\u0434\u0435\u043a\u0441\u0438\u0440\u0430\u0439 \u0438 \u043d\u0435 \u0441\u043b\u0435\u0434\u0432\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0438\u0442\u0435","appearance_style":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 Stylesheet \u0438 \u0441\u0442\u0438\u043b\u0430",stylesheet:"Stylesheet",style:"\u0421\u0442\u0438\u043b",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"Copyright",add:"\u0414\u043e\u0431\u0430\u0432\u0438 \u043d\u043e\u0432 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u0440\u0438\u0434\u0432\u0438\u0436\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0433\u043e\u0440\u0435",movedown:"\u041f\u0440\u0438\u0434\u0432\u0438\u0436\u0438 \u0438\u0437\u0431\u0440\u0430\u043d\u0438\u044f\u0442 \u0435\u043b\u0435\u043c\u0435\u043d\u0442 \u043d\u0430\u0434\u043e\u043b\u0443","head_elements":"Head elements",info:"Information","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"Style element","base_element":"Base element","link_element":"Link element","meta_element":"Meta element","comment_element":"Comment",src:"Src",language:"Language",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u041e\u0431\u0449\u0438","advanced_props":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/cs_dlg.js deleted file mode 100644 index 7b9d5808d6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.fullpage_dlg',{title:"Vlastnosti dokumentu","meta_tab":"Obecn\u00e9","appearance_tab":"Vzhled","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","meta_props":"Meta informace",langprops:"Jazyk a k\u00f3dov\u00e1n\u00ed","meta_title":"Titulek","meta_keywords":"Kl\u00ed\u010dov\u00e1 slova","meta_description":"Popis","meta_robots":"Roboti",doctypes:"Typ dokumentu",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",ltr:"Zleva doprava",rtl:"Zprava doleva","xml_pi":"XML deklarace",encoding:"K\u00f3dov\u00e1n\u00ed","appearance_bgprops":"Vlastnosti pozad\u00ed","appearance_marginprops":"Okraje t\u011bla dokumentu","appearance_linkprops":"Vlastnosti odkaz\u016f","appearance_textprops":"Vlastnosti textu",bgcolor:"Barva pozad\u00ed",bgimage:"Obr\u00e1zek pozad\u00ed","left_margin":"Lev\u00fd okraj","right_margin":"Prav\u00fd okraj","top_margin":"Horn\u00ed okraj","bottom_margin":"Spodn\u00ed okraj","text_color":"Barva textu","font_size":"Velikost p\u00edsma","font_face":"Typ p\u00edsma","link_color":"Barva odkazu","hover_color":"Barva zvolen\u00e9ho odkazu","visited_color":"Barva nav\u0161t\u00edven\u00e9ho odkazu","active_color":"Barva aktivn\u00edho odkazu",textcolor:"Barva",fontsize:"Velikost p\u00edsma",fontface:"Typ p\u00edsma","meta_index_follow":"Indexovat a sledovat odkazy","meta_index_nofollow":"Indexovat a nesledovat odkazy","meta_noindex_follow":"Neindexovat, ale sledovat odkazy","meta_noindex_nofollow":"Neindexovat a nesledovat odkazy","appearance_style":"Vlastnosti styl\u016f",stylesheet:"Stylopis",style:"Styl",author:"Autor",copyright:"Autorsk\u00e1 pr\u00e1va",add:"P\u0159idat nov\u00fd element",remove:"Odebrat ozna\u010den\u00fd element",moveup:"P\u0159esu\u0148 ozna\u010den\u00fd element v\u00fd\u0161",movedown:"P\u0159esu\u0148 ozna\u010den\u00fd element n\u00ed\u017e","head_elements":"Hlavi\u010dky",info:"Informace","add_title":"Vlo\u017eit titulek","add_meta":"Vlo\u017eit meta informace","add_script":"Vlo\u017eit skript","add_style":"Vlo\u017eit styl","add_link":"Vlo\u017eit nezobrazovan\u00fd odkaz","add_base":"Vlo\u017eit z\u00e1kladn\u00ed um\u00edst\u011bn\u00ed","add_comment":"Vlo\u017eit koment\u00e1\u0159","title_element":"Titulek","script_element":"Skript","style_element":"Styl","base_element":"Z\u00e1kladn\u00ed um\u00edst\u011bn\u00ed","link_element":"Nezobrazovan\u00fd odkaz","meta_element":"Meta informace","comment_element":"Koment\u00e1\u0159",src:"Zdroj",language:"Jazyk",href:"Soubor/URL",target:"C\u00edl",type:"Typ",charset:"Znakov\u00e1 sada",defer:"Odlo\u017eit (defer)",media:"M\u00e9dia",properties:"Vlastnosti",name:"N\u00e1zev",value:"Hodnota",content:"Obsah",rel:"Vztah str\u00e1nky k c\u00edli",rev:"Vztah c\u00edle ke str\u00e1nce",hreflang:"Jazyk odkazu","general_props":"Obecn\u00e9 parametry","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/da_dlg.js deleted file mode 100644 index 79fd65897f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.fullpage_dlg',{title:"Dokumentegenskaber","meta_tab":"Generelt","appearance_tab":"Udseende","advanced_tab":"Advanceret","meta_props":"Meta-information",langprops:"Sprog og kodning","meta_title":"Titel","meta_keywords":"N\u00f8gleord","meta_description":"Beskrivelse","meta_robots":"Robots",doctypes:"Doctype",langcode:"Sprogkode",langdir:"Sprogretning",ltr:"Venstre mod h\u00f8jre",rtl:"H\u00f8jre md venstre","xml_pi":"XML declaration",encoding:"Tegns\u00e6t","appearance_bgprops":"Baggrundsegenskaber","appearance_marginprops":"Body margins","appearance_linkprops":"Link farver","appearance_textprops":"Tekstegenskaber",bgcolor:"Baggrundsfarve",bgimage:"Baggrundsbillede","left_margin":"Venstre margin","right_margin":"H\u00f8jre margin","top_margin":"Topmargin","bottom_margin":"Bundmargin","text_color":"Tekstfarve","font_size":"Skriftst\u00f8rrelse","font_face":"Skrifttype","link_color":"Linkfarve","hover_color":"Farve ved aktivering","visited_color":"Farve efter museklik","active_color":"Farve ved museklik",textcolor:"Farve",fontsize:"Skriftst\u00f8rrelse",fontface:"Skrifttype","meta_index_follow":"Indeks og f\u00f8lg links","meta_index_nofollow":"Indeks og f\u00f8lg ikke links","meta_noindex_follow":"Ingen indeks, men f\u00f8lg links","meta_noindex_nofollow":"Ingen indeks og f\u00f8lg ikke links","appearance_style":"Stylesheet og style-egenskaber",stylesheet:"Stylesheet",style:"Style",author:"Forfatter",copyright:"Copyright",add:"Tilf\u00f8j nyt element",remove:"Slet valgte element",moveup:"Flyt valgte element op",movedown:"Flyt valgte element ned","head_elements":"Hovedelement",info:"Information","add_title":"Titelelement","add_meta":"Meta-element","add_script":"Script-element","add_style":"Style-element","add_link":"Link-element","add_base":"Base-element","add_comment":"Kommentar-node","title_element":"Titelelement","script_element":"Script-element","style_element":"Style-element","base_element":"Base-element","link_element":"Link-element","meta_element":"Meta-element","comment_element":"Kommentar",src:"Src",language:"Sprog",href:"Href",target:"Destination",type:"Type",charset:"Tegns\u00e6t",defer:"Defer",media:"Media",properties:"Egenskaber",name:"Navn",value:"V\u00e6rdi",content:"Indhold",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Generelt","advanced_props":"Advanceret"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/de_dlg.js deleted file mode 100644 index ecdff9ed60..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.fullpage_dlg',{title:"Dokument-Eigenschaften","meta_tab":"Allgemein","appearance_tab":"Aussehen","advanced_tab":"Erweitert","meta_props":"Meta-Information",langprops:"Sprache und Codierung","meta_title":"Titel","meta_keywords":"Keywords","meta_description":"Beschreibung","meta_robots":"Robots",doctypes:"DocType",langcode:"Sprachcode",langdir:"Sprachrichtung",ltr:"Links nach Rechts",rtl:"Rechts nach Links","xml_pi":"XML Deklaration",encoding:"Zeichencodierung","appearance_bgprops":"Hintergrund-Eigenschaften","appearance_marginprops":"Abst\u00e4nde des Body","appearance_linkprops":"Linkfarben","appearance_textprops":"Text-Eigenschaften",bgcolor:"Hintergrundfarbe",bgimage:"Hintergrundbild","left_margin":"Linker Abstand","right_margin":"Rechter Abstand","top_margin":"Oberer Abstand","bottom_margin":"Unterer Abstand","text_color":"Textfarbe","font_size":"Schriftgr\u00f6\u00dfe","font_face":"Schriftart","link_color":"Linkfarbe","hover_color":"Hover-Farbe","visited_color":"Visited-Farbe","active_color":"Active-Farbe",textcolor:"Farbe",fontsize:"Schriftgr\u00f6\u00dfe",fontface:"Schriftart","meta_index_follow":"Indizieren und den Links folgen","meta_index_nofollow":"Indizieren, aber den Links nicht folgen","meta_noindex_follow":"Nicht indizieren, aber den Links folgen","meta_noindex_nofollow":"Nicht indizieren und auch nicht den Links folgen","appearance_style":"CSS-Stylesheet und Stileigenschaften",stylesheet:"CSS-Stylesheet",style:"CSS-Stil",author:"Autor",copyright:"Copyright",add:"Neues Element hinzuf\u00fcgen",remove:"Ausgew\u00e4hltes Element entfernen",moveup:"Ausgew\u00e4hltes Element nach oben bewegen",movedown:"Ausgew\u00e4hltes Element nach unten bewegen","head_elements":"\u00dcberschriftenelemente",info:"Information","add_title":"Titel-Element","add_meta":"Meta-Element","add_script":"Script-Element","add_style":"Style-Element","add_link":"Link-Element","add_base":"Base-Element","add_comment":"HTML-Kommentar","title_element":"Titel-Element","script_element":"Script-Element","style_element":"Style-Element","base_element":"Base-Element","link_element":"Link-Element","meta_element":"Meta_Element","comment_element":"Kommentar",src:"Src",language:"Sprache",href:"Href",target:"Ziel",type:"Typ",charset:"Zeichensatz",defer:"Defer",media:"Media",properties:"Eigenschaften",name:"Name",value:"Wert",content:"Inhalt",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Allgemein","advanced_props":"Erweitert"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/en_dlg.js deleted file mode 100644 index 516edc74fd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.fullpage_dlg',{title:"Document Properties","meta_tab":"General","appearance_tab":"Appearance","advanced_tab":"Advanced","meta_props":"Meta Information",langprops:"Language and Encoding","meta_title":"Title","meta_keywords":"Keywords","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Language Code",langdir:"Language Direction",ltr:"Left to Right",rtl:"Right to Left","xml_pi":"XML Declaration",encoding:"Character Encoding","appearance_bgprops":"Background Properties","appearance_marginprops":"Body Margins","appearance_linkprops":"Link Colors","appearance_textprops":"Text Properties",bgcolor:"Background Color",bgimage:"Background Image","left_margin":"Left Margin","right_margin":"Right Margin","top_margin":"Top Margin","bottom_margin":"Bottom Margin","text_color":"Text Color","font_size":"Font Size","font_face":"Font Face","link_color":"Link Color","hover_color":"Hover Color","visited_color":"Visited Color","active_color":"Active Color",textcolor:"Color",fontsize:"Font Size",fontface:"Font Family","meta_index_follow":"Index and Follow the Links","meta_index_nofollow":"Index and Don\'t Follow the Links","meta_noindex_follow":"Do Not Index but Follow the Links","meta_noindex_nofollow":"Do Not Index and Don\'t Follow the Links","appearance_style":"Stylesheet and Style Properties",stylesheet:"Stylesheet",style:"Style",author:"Author",copyright:"Copyright",add:"Add New Element",remove:"Remove Selected Element",moveup:"Move Selected Element Up",movedown:"Move Selected Element Down","head_elements":"Head Elements",info:"Information","add_title":"Title Element","add_meta":"Meta Element","add_script":"Script Element","add_style":"Style Element","add_link":"Link Element","add_base":"Base Element","add_comment":"Comment Node","title_element":"Title Element","script_element":"Script Element","style_element":"Style Element","base_element":"Base Element","link_element":"Link Element","meta_element":"Meta Element","comment_element":"Comment",src:"Source",language:"Language",href:"HREF",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"HREF Lang","general_props":"General","advanced_props":"Advanced"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/es_dlg.js deleted file mode 100644 index 94e52a71f7..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.fullpage_dlg',{title:"Propiedades del documento","meta_tab":"General","appearance_tab":"Apariencia","advanced_tab":"Avanzado","meta_props":"Informaci\u00f3n Meta",langprops:"Lenguaje y codificaci\u00f3n","meta_title":"T\u00edtulo","meta_keywords":"Palabras clave","meta_description":"Descripci\u00f3n","meta_robots":"Robots",doctypes:"Tipo de doc.",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje",ltr:"Izquierda a derecha",rtl:"Derecha a izquierda","xml_pi":"Declaraci\u00f3n XML",encoding:"Codificaci\u00f3n de caracteres","appearance_bgprops":"Propiedades del fondo","appearance_marginprops":"M\u00e1rgenes","appearance_linkprops":"Colores del v\u00ednculo","appearance_textprops":"Propiedades de texto",bgcolor:"Color de fondo",bgimage:"Imagen de fondo","left_margin":"Margen izquierdo","right_margin":"Margen derecho","top_margin":"Margen superior","bottom_margin":"Margen inferior","text_color":"Color del texto","font_size":"Tama\u00f1o de fuente","font_face":"Fuente","link_color":"Color de v\u00ednculo","hover_color":"Color rat\u00f3n encima","visited_color":"Color visitado","active_color":"Color activo",textcolor:"Color",fontsize:"Tama\u00f1o de fuente",fontface:"Fuente","meta_index_follow":"Indexar y seguir los v\u00ednculos","meta_index_nofollow":"Indexar y no seguir los v\u00ednculos","meta_noindex_follow":"No indexar pero seguir v\u00ednculos","meta_noindex_nofollow":"No indexar y no seguir v\u00ednculos","appearance_style":"Propiedades de hoja de estilos y estilo",stylesheet:"Hoja de estilo",style:"Estilo",author:"Autor",copyright:"Copyright",add:"Agregar nuevo elemento",remove:"Eliminar elemento seleccionado",moveup:"Mover elemento seleccionado hacia arriba",movedown:"Mover elemento seleccionado hacia abajo","head_elements":"Elemento Head",info:"Informaci\u00f3n","add_title":"Elemento Title","add_meta":"Elemento Meta","add_script":"Elemento Script","add_style":"Elemento Style","add_link":"Elemento Link","add_base":"Elemento Base","add_comment":"Nodo Comment","title_element":"Elemento Title","script_element":"Elemento Script","style_element":"Elemento Style","base_element":"Elemento Base","link_element":"Elemento Link","meta_element":"Elemento Meta","comment_element":"Comentario",src:"Src",language:"Lenguaje",href:"Href",target:"Target",type:"Tipo",charset:"Charset",defer:"Defer",media:"Medio",properties:"Propiedades",name:"Nombre",value:"Valor",content:"Contenido",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"General","advanced_props":"Avanzado"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fa_dlg.js deleted file mode 100644 index f826495f03..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.fullpage_dlg',{title:"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0646\u062f","meta_tab":"\u0639\u0645\u0648\u0645\u06cc","appearance_tab":"\u0638\u0627\u0647\u0631","advanced_tab":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","meta_props":"\u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0645\u062a\u0627 (Meta)",langprops:"\u0632\u0628\u0627\u0646 \u0648 \u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc (Encoding)","meta_title":"\u0639\u0646\u0648\u0627\u0646","meta_keywords":"\u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc","meta_description":"\u062a\u0648\u0636\u06cc\u062d","meta_robots":"\u0631\u0648\u0628\u0627\u062a \u0647\u0627 (Robots)",doctypes:"\u0646\u0648\u0639 \u0633\u0646\u062f",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e","xml_pi":"\u0627\u0639\u0644\u0627\u0646 XML",encoding:"\u0631\u0645\u0632\u06af\u0630\u0627\u0631\u06cc (Encoding) \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631","appearance_bgprops":"\u0645\u0634\u062e\u0635\u0627\u062a \u0632\u0645\u06cc\u0646\u0647","appearance_marginprops":"\u062d\u0627\u0634\u06cc\u0647 \u0647\u0627\u06cc \u0628\u062f\u0646\u0647 (Body)","appearance_linkprops":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0644\u06cc\u0646\u06a9","appearance_textprops":"\u0645\u0634\u062e\u0635\u0627\u062a \u0645\u062a\u0646",bgcolor:"\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647",bgimage:"\u062a\u0635\u0648\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647","left_margin":"\u062d\u0627\u0634\u06cc\u0647 \u0686\u067e","right_margin":"\u062d\u0627\u0634\u06cc\u0647 \u0631\u0627\u0633\u062a","top_margin":"\u062d\u0627\u0634\u06cc\u0647 \u0628\u0627\u0644\u0627","bottom_margin":"\u062d\u0627\u0634\u06cc\u0647 \u067e\u0627\u06cc\u06cc\u0646","text_color":"\u0631\u0646\u06af \u0645\u062a\u0646","font_size":"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645","font_face":"\u0638\u0627\u0647\u0631 \u0642\u0644\u0645","link_color":"\u0631\u0646\u06af \u0642\u0644\u0645","hover_color":"\u0631\u0646\u06af \u062f\u0631 \u062d\u0627\u0644\u062a \u0642\u0631\u0627\u0631\u06af\u06cc\u0631\u06cc \u0645\u0648\u0633","visited_color":"\u0631\u0646\u06af \u062f\u0631 \u062d\u0627\u0644\u062a \u0628\u0627\u0632\u062f\u06cc\u062f \u0634\u062f\u0647","active_color":"\u0631\u0646\u06af \u062f\u0631 \u062d\u0627\u0644\u062a \u0641\u0639\u0627\u0644",textcolor:"\u0631\u0646\u06af",fontsize:"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645",fontface:"\u062e\u0627\u0646\u0648\u0627\u062f\u0647 \u0642\u0644\u0645","meta_index_follow":"\u0641\u0647\u0631\u0633\u062a \u0648 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","meta_index_nofollow":"\u0641\u0647\u0631\u0633\u062a \u0648 \u0639\u062f\u0645 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","meta_noindex_follow":"\u0639\u062f\u0645 \u0641\u0647\u0631\u0633\u062a \u0627\u0645\u0627 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","meta_noindex_nofollow":"\u0639\u062f\u0645 \u0641\u0647\u0631\u0633\u062a \u0648 \u0639\u062f\u0645 \u062f\u0646\u0628\u0627\u0644\u0647 \u0631\u0648\u06cc \u0644\u06cc\u0646\u06a9 \u0647\u0627","appearance_style":"\u0648\u0631\u0642\u0647 \u0627\u0633\u062a\u0627\u06cc\u0644 \u0648 \u0645\u0634\u062e\u0635\u0627\u062a \u0627\u0633\u062a\u0627\u06cc\u0644",stylesheet:"\u0648\u0631\u0642\u0647 \u0627\u0633\u062a\u0627\u06cc\u0644",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",author:"\u0645\u0624\u0644\u0641",copyright:"\u062d\u0642 \u0627\u0646\u062d\u0635\u0627\u0631\u06cc",add:"\u0627\u0641\u0632\u0648\u062f\u0646 \u0639\u0646\u0635\u0631 \u062c\u062f\u06cc\u062f",remove:"\u062d\u0630\u0641 \u0639\u0646\u0635\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647",moveup:"\u0627\u0646\u062a\u0642\u0627\u0644 \u0639\u0646\u0635\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0628\u0647 \u0628\u0627\u0644\u0627",movedown:"\u0627\u0646\u062a\u0642\u0627\u0644 \u0639\u0646\u0635\u0631 \u0627\u0646\u062a\u062e\u0627\u0628 \u0634\u062f\u0647 \u0628\u0647 \u067e\u0627\u06cc\u06cc\u0646","head_elements":"\u0639\u0646\u0627\u0635\u0631 \u0633\u0631 (Head)",info:"\u0627\u0637\u0644\u0627\u0639\u0627\u062a","add_title":"\u0639\u0646\u0635\u0631 \u0639\u0646\u0648\u0627\u0646","add_meta":"\u0639\u0646\u0635\u0631 \u0645\u062a\u0627 (Meta)","add_script":"\u0639\u0646\u0635\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a (Script)","add_style":"\u0639\u0646\u0635\u0631 \u0627\u0633\u062a\u0627\u06cc\u0644 (Style)","add_link":"\u0639\u0646\u0635\u0631 \u0644\u06cc\u0646\u06a9 (Link)","add_base":"\u0639\u0646\u0635\u0631 \u067e\u0627\u06cc\u0647 (Base)","add_comment":"\u06af\u0631\u0647 \u062a\u0648\u0636\u06cc\u062d","title_element":"\u0639\u0646\u0635\u0631 \u0639\u0646\u0648\u0627\u0646 (Title)","script_element":"\u0639\u0646\u0635\u0631 \u0627\u0633\u06a9\u0631\u06cc\u067e\u062a (Script)","style_element":"\u0639\u0646\u0635\u0631 \u0627\u0633\u062a\u0627\u06cc\u0644 (Style)","base_element":"\u0639\u0646\u0635\u0631 \u067e\u0627\u06cc\u0647","link_element":"\u0639\u0646\u0635\u0631 \u0644\u06cc\u0646\u06a9","meta_element":"\u0639\u0646\u0635\u0631 \u0645\u062a\u0627 (Meta)","comment_element":"\u062a\u0648\u0636\u06cc\u062d",src:"\u0645\u0646\u0628\u0639 (Src)",language:"\u0632\u0628\u0627\u0646",href:"\u0622\u062f\u0631\u0633 (Href)",target:"\u0645\u0642\u0635\u062f (Target)",type:"\u0646\u0648\u0639",charset:"\u0645\u062c\u0645\u0648\u0639\u0647 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 (Charset)",defer:"Defer",media:"\u0631\u0633\u0627\u0646\u0647 (Media)",properties:"\u0645\u0634\u062e\u0635\u0627\u062a",name:"\u0646\u0627\u0645",value:"\u0645\u0642\u062f\u0627\u0631",content:"\u0645\u062d\u062a\u0648\u0627",rel:"Rel",rev:"Rev",hreflang:"\u0632\u0628\u0627\u0646 Href","general_props":"\u0639\u0645\u0648\u0645\u06cc","advanced_props":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fi_dlg.js deleted file mode 100644 index 3f1fb393ff..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.fullpage_dlg',{title:"Tiedoston asetukset","meta_tab":"Yleinen","appearance_tab":"Ulkoasu","advanced_tab":"Edistynyt","meta_props":"Metatiedot",langprops:"Kieli ja koodaus","meta_title":"Otsikko","meta_keywords":"Avainsanat","meta_description":"Kuvaus","meta_robots":"Robotit",doctypes:"Dokumenttityypit",langcode:"Kielen koodi",langdir:"Kielen suunta",ltr:"Vasemmalta oikealle",rtl:"Oikealta vasemmalle","xml_pi":"XML-ilmoitus",encoding:"Tekstin koodaus","appearance_bgprops":"Taustan asetukset","appearance_marginprops":"Body-marginaalit","appearance_linkprops":"Linkkien v\u00e4rit","appearance_textprops":"Tekstin asetukset",bgcolor:"Taustan v\u00e4ri",bgimage:"Taustakuva","left_margin":"Vasen marginaali","right_margin":"Oikea marginaali","top_margin":"Yl\u00e4marginaali","bottom_margin":"Alamarginaali","text_color":"Tekstin v\u00e4ri","font_size":"Fonttikoko","font_face":"Fontti","link_color":"Linkin v\u00e4ri","hover_color":"Hover-v\u00e4ri","visited_color":"Vierailtu v\u00e4ri","active_color":"Aktiivinen v\u00e4ri",textcolor:"V\u00e4ri",fontsize:"Fonttikoko",fontface:"Fontti","meta_index_follow":"Indeksoi ja seuraa linkkej\u00e4","meta_index_nofollow":"Indeksoi, mutta \u00e4l\u00e4 seuraa linkkej\u00e4","meta_noindex_follow":"\u00c4l\u00e4 indeksoi, mutta seuraa linkkej\u00e4.","meta_noindex_nofollow":"\u00c4l\u00e4 indeksoi, \u00e4l\u00e4k\u00e4 seuraa linkkej\u00e4","appearance_style":"Tyylitiedosto ja tyylin asetukset",stylesheet:"Tyylitiedosto",style:"Tyyli",author:"Kirjoittaja",copyright:"Copyright",add:"Lis\u00e4\u00e4 uusi elementti",remove:"Poista valittu elementti",moveup:"Siirr\u00e4 valittua elementti\u00e4 yl\u00f6s",movedown:"Siirr\u00e4 valittua elementti\u00e4 alas","head_elements":"P\u00e4\u00e4elementti",info:"Informaatio","add_title":"Otsikkoelementti","add_meta":"Meta-elementti","add_script":"Script-elementti","add_style":"Tyylielementti","add_link":"Linkkielementti","add_base":"Base-elementti","add_comment":"Yleinen elementti","title_element":"Otsikkoelementti","script_element":"Script-elementti","style_element":"Tyylielementti","base_element":"Base-elementti","link_element":"Linkkielementti","meta_element":"Meta-elementti","comment_element":"Kommentti",src:"L\u00e4hde",language:"Kieli",href:"Href",target:"Kohde",type:"Tyyppi",charset:"Kirjasintyyppi",defer:"Mukautuminen",media:"Media",properties:"Asetukset",name:"Nimi",value:"Arvo",content:"Sis\u00e4lt\u00f6",rel:"Rel",rev:"Rev",hreflang:"Href-kieli","general_props":"Yleinen","advanced_props":"Edistynyt"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fr_dlg.js deleted file mode 100644 index c2ddc65db0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.fullpage_dlg',{title:"Propri\u00e9t\u00e9s du document","meta_tab":"G\u00e9n\u00e9ral","appearance_tab":"Apparence","advanced_tab":"Avanc\u00e9","meta_props":"Metadonn\u00e9es",langprops:"Langue et encodage","meta_title":"Titre","meta_keywords":"Mots-cl\u00e9s","meta_description":"Description","meta_robots":"Robots",doctypes:"Doctype",langcode:"Code de la langue",langdir:"Sens de lecture",ltr:"De gauche \u00e0 droite",rtl:"De droite \u00e0 gauche","xml_pi":"D\u00e9claration XML",encoding:"Encodage des caract\u00e8res","appearance_bgprops":"Propri\u00e9t\u00e9s du fond","appearance_marginprops":"Marge du corps de la page","appearance_linkprops":"Couleurs des liens","appearance_textprops":"Propri\u00e9t\u00e9s du texte",bgcolor:"Couleur de fond",bgimage:"Image de fond","left_margin":"Marge de gauche","right_margin":"Marge de droite","top_margin":"Marge du haut","bottom_margin":"Marge du bas","text_color":"Couleur du texte","font_size":"Taille de la police","font_face":"Nom de la police","link_color":"Couleur des liens","hover_color":"Couleur au survol","visited_color":"Couleur des liens visit\u00e9s","active_color":"Couleur du lien actif",textcolor:"Couleur",fontsize:"Taille de police",fontface:"Nom de la police","meta_index_follow":"Indexer et suivre les liens","meta_index_nofollow":"Indexer et ne pas suivre les liens","meta_noindex_follow":"Ne pas indexer et suivre les liens","meta_noindex_nofollow":"Ne pas indexer et ne pas suivre les liens","appearance_style":"Propri\u00e9t\u00e9s de la feuille de style et du style",stylesheet:"Feuille de style",style:"Style",author:"Auteur",copyright:"Copyright",add:"Ajouter un nouvel \u00e9l\u00e9ment",remove:"Retirer l\'\u00e9l\u00e9ment s\u00e9lectionn\u00e9",moveup:"D\u00e9placer l\'\u00e9l\u00e9ment s\u00e9lectionn\u00e9 vers le haut",movedown:"D\u00e9placer l\'\u00e9l\u00e9ment s\u00e9lectionn\u00e9 vers le bas","head_elements":"\u00c9l\u00e9ments d\'en-t\u00eate",info:"Information","add_title":"\u00c9l\u00e9ment de titre","add_meta":"\u00c9l\u00e9ment Meta","add_script":"\u00c9l\u00e9ment de script","add_style":"\u00c9l\u00e9ment de style","add_link":"\u00c9l\u00e9ment de lien","add_base":"\u00c9l\u00e9ment de base","add_comment":"Commentaire","title_element":"\u00c9l\u00e9ment de titre","script_element":"\u00c9l\u00e9ment de script","style_element":"\u00c9l\u00e9ment de style","base_element":"\u00c9l\u00e9ment de base","link_element":"\u00c9l\u00e9ment de lien","meta_element":"\u00c9l\u00e9ment Meta","comment_element":"Commentaire",src:"Source",language:"Langue",href:"Href",target:"Cible",type:"Type",charset:"Charset",defer:"D\u00e9f\u00e9rer",media:"M\u00e9dia",properties:"Propri\u00e9t\u00e9s",name:"Nom",value:"Valeur",content:"Contenu",rel:"Rel",rev:"Rev",hreflang:"langue Href","general_props":"G\u00e9n\u00e9ral","advanced_props":"Avanc\u00e9"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/he_dlg.js deleted file mode 100644 index 69faae39a2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.fullpage_dlg',{title:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05e1\u05de\u05da","meta_tab":"\u05db\u05dc\u05dc\u05d9","appearance_tab":"\u05de\u05e8\u05d0\u05d4","advanced_tab":"\u05de\u05ea\u05e7\u05d3\u05dd","meta_props":"\u05ea\u05d2\u05d9 \u05de\u05d8\u05d4",langprops:"\u05e9\u05e4\u05d4 \u05d5\u05e7\u05d9\u05d3\u05d5\u05d3","meta_title":"\u05db\u05d5\u05ea\u05e8\u05ea","meta_keywords":"\u05de\u05d9\u05dc\u05d5\u05ea \u05de\u05e4\u05ea\u05d7","meta_description":"\u05ea\u05d9\u05d0\u05d5\u05e8","meta_robots":"\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd",doctypes:"Doctype",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc","xml_pi":"XML declaration",encoding:"\u05e7\u05d9\u05d3\u05d5\u05d3 \u05ea\u05d5\u05d5\u05d9\u05dd","appearance_bgprops":"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e8\u05e7\u05e2","appearance_marginprops":"Body margins","appearance_linkprops":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd","appearance_textprops":"Text properties",bgcolor:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",bgimage:"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2","left_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e9\u05de\u05d0\u05dc\u05d9\u05d9\u05dd","right_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05d9\u05de\u05e0\u05d9\u05d9\u05dd","top_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e2\u05dc\u05d9\u05d5\u05e0\u05d9\u05dd","bottom_margin":"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05ea\u05d7\u05ea\u05d9\u05d9\u05dd","text_color":"\u05e6\u05d1\u05e2 \u05d8\u05e7\u05e1\u05d8","font_size":"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df","font_face":"\u05e1\u05d5\u05d2 \u05d2\u05d5\u05e4\u05df","link_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8","hover_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05de\u05e2\u05d1\u05e8 \u05e2\u05db\u05d1\u05e8","visited_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05e9\u05e0\u05e6\u05e4\u05d4","active_color":"\u05e6\u05d1\u05e2 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05e4\u05e2\u05d9\u05dc",textcolor:"\u05e6\u05d1\u05e2",fontsize:"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df",fontface:"\u05d2\u05d5\u05e4\u05df","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don\\\'t follow the links","appearance_style":"Stylesheet and style properties",stylesheet:"\u05e1\u05d2\u05e0\u05d5\u05df \u05e2\u05d9\u05e6\u05d5\u05d1",style:"\u05e2\u05d9\u05e6\u05d5\u05d1",author:"\u05db\u05d5\u05ea\u05d1",copyright:"\u05d6\u05db\u05d5\u05d9\u05d5\u05ea \u05d9\u05d5\u05e6\u05e8\u05d9\u05dd",add:"\u05d4\u05d5\u05e1\u05e3 \u05d0\u05dc\u05de\u05e0\u05d8 \u05d7\u05d3\u05e9",remove:"Remove selected element",moveup:"Move selected element up",movedown:"Move selected element down","head_elements":"Head elements",info:"\u05de\u05d9\u05d3\u05e2","add_title":"Title element","add_meta":"Meta element","add_script":"Script element","add_style":"Style element","add_link":"Link element","add_base":"Base element","add_comment":"Comment node","title_element":"Title element","script_element":"Script element","style_element":"\u05d0\u05dc\u05de\u05e0\u05d8 \u05e2\u05d9\u05e6\u05d5\u05d1","base_element":"\u05d0\u05dc\u05de\u05e0\u05d8 \u05d1\u05e1\u05d9\u05e1","link_element":"\u05d0\u05dc\u05de\u05e0\u05d8 \u05e7\u05d9\u05e9\u05d5\u05e8","meta_element":"Meta element","comment_element":"\u05ea\u05d2\u05d5\u05d1\u05d4",src:"\u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05e7\u05d5\u05e8",language:"\u05e9\u05e4\u05d4",href:"HREF",target:"\u05d9\u05e2\u05d3",type:"\u05e1\u05d5\u05d2",charset:"\u05e7\u05d9\u05d3\u05d5\u05d3",defer:"Defer",media:"\u05de\u05d3\u05d9\u05d4",properties:"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9\u05dd",name:"\u05e9\u05dd",value:"\u05e2\u05e8\u05da",content:"\u05ea\u05d5\u05db\u05df",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"\u05db\u05dc\u05dc\u05d9","advanced_props":"\u05de\u05ea\u05e7\u05d3\u05dd"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/it_dlg.js deleted file mode 100644 index d5445e8327..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.fullpage_dlg',{title:"Propriet\u00e0 Documento","meta_tab":"Generale","appearance_tab":"Aspetto","advanced_tab":"Avanzate","meta_props":"Informazioni Metatag",langprops:"Lingua e codifica","meta_title":"Titolo","meta_keywords":"Parole chiave","meta_description":"Descrizione","meta_robots":"Robots",doctypes:"Doctype",langcode:"Codice lingua",langdir:"Direzione testo",ltr:"Sinistra verso destra",rtl:"Destra verso sinistra","xml_pi":"Dichiarazione XML",encoding:"Codifica carattere","appearance_bgprops":"Propriet\u00e0 sfondo","appearance_marginprops":"Margini body","appearance_linkprops":"Colori collegamenti","appearance_textprops":"Propriet\u00e0 testo",bgcolor:"Colore sfondo",bgimage:"Immagine sfondo","left_margin":"Margine sinistro","right_margin":"Margine destro","top_margin":"Margine superiore","bottom_margin":"Margine inferiore","text_color":"Colore testo","font_size":"Dimensione carattere","font_face":"Tipo carattere","link_color":"Colore collegamento","hover_color":"Colore \\\'Hover\\\'","visited_color":"Colore \\\'Visited\\\'","active_color":"Colore \\\'Active\\\'",textcolor:"Colore",fontsize:"Dimensione carattere",fontface:"Famiglia carattere","meta_index_follow":"Indicizzare e seguire collegamenti","meta_index_nofollow":"Indicizzare e non segure collegamenti","meta_noindex_follow":"Non indicizzare ma seguire collegamenti","meta_noindex_nofollow":"Non indicizzare e non seguire collegamenti","appearance_style":"Propriet\u00e0 stili e fogli di stile",stylesheet:"Fogli di stile",style:"Stile",author:"Autore",copyright:"Copyright",add:"Aggiungi nuovo elemento",remove:"Rimuovi elemento selezionato",moveup:"Sposta elemento selezionato in alto",movedown:"Sposta elemento selezionato in basso","head_elements":"Elementi Head",info:"Informazioni","add_title":"Elemento Titolo","add_meta":"Elemento Meta","add_script":"Elemento Script","add_style":"Elemento Style","add_link":"Elemento Link","add_base":"Elemento Base","add_comment":"Nodo Commento","title_element":"Elemento Titolo","script_element":"Elemento Script","style_element":"Elemento Style","base_element":"Elemento Base","link_element":"Elemento Link","meta_element":"Elemento Meta","comment_element":"Commento",src:"Sorgente",language:"Linguaggio",href:"Href",target:"Target",type:"Tipo",charset:"Set caratteri",defer:"Defer",media:"Media",properties:"Propriet\u00e0",name:"Nome",value:"Valore",content:"Contenuto",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Generale","advanced_props":"Avanzate"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/ja_dlg.js deleted file mode 100644 index 6564363051..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.fullpage_dlg',{title:"\u30da\u30fc\u30b8\u306e\u5c5e\u6027","meta_tab":"\u4e00\u822c","appearance_tab":"\u8868\u793a","advanced_tab":"\u9ad8\u5ea6\u306a\u8a2d\u5b9a","meta_props":"\u30e1\u30bf\u60c5\u5831",langprops:"\u8a00\u8a9e\u3068\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","meta_title":"\u30bf\u30a4\u30c8\u30eb","meta_keywords":"\u30ad\u30fc\u30ef\u30fc\u30c9","meta_description":"\u8aac\u660e","meta_robots":"\u691c\u7d22\u30ed\u30dc\u30c3\u30c8\u306e\u5236\u5fa1",doctypes:"\u6587\u66f8\u578b",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411",ltr:"\u5de6\u304b\u3089\u53f3",rtl:"\u53f3\u304b\u3089\u5de6","xml_pi":"XML\u5ba3\u8a00",encoding:"\u6587\u5b57\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0","appearance_bgprops":"\u80cc\u666f\u306e\u5c5e\u6027","appearance_marginprops":"Body\u306e\u4f59\u767d","appearance_linkprops":"\u30ea\u30f3\u30af\u306e\u8272","appearance_textprops":"\u6587\u5b57\u306e\u5c5e\u6027",bgcolor:"\u80cc\u666f\u306e\u8272",bgimage:"\u80cc\u666f\u306e\u753b\u50cf","left_margin":"\u5de6\u306e\u4f59\u767d","right_margin":"\u53f3\u306e\u4f59\u767d","top_margin":"\u4e0a\u306e\u4f59\u767d","bottom_margin":"\u4e0b\u306e\u4f59\u767d","text_color":"\u6587\u5b57\u306e\u8272","font_size":"\u6587\u5b57\u306e\u5927\u304d\u3055","font_face":"\u30d5\u30a9\u30f3\u30c8","link_color":"\u30ea\u30f3\u30af\u306e\u8272","hover_color":"\u30de\u30a6\u30b9\u30ab\u30fc\u30bd\u30eb\u304c\u3042\u308b\u30ea\u30f3\u30af\u306e\u8272(hover)","visited_color":"\u65e2\u306b\u8aad\u3093\u3060\u30ea\u30f3\u30af\u306e\u8272(visited)","active_color":"\u30af\u30ea\u30c3\u30af\u3057\u305f\u77ac\u9593\u306e\u30ea\u30f3\u30af\u306e\u8272(active)",textcolor:"\u8272",fontsize:"\u6587\u5b57\u306e\u5927\u304d\u3055",fontface:"\u30d5\u30a9\u30f3\u30c8","meta_index_follow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u3066\u30ea\u30f3\u30af\u3092\u305f\u3069\u308b","meta_index_nofollow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u3066\u30ea\u30f3\u30af\u306f\u305f\u3069\u3089\u306a\u3044","meta_noindex_follow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u306a\u3044\u304c\u30ea\u30f3\u30af\u3092\u305f\u3069\u308b","meta_noindex_nofollow":"\u30a4\u30f3\u30c7\u30c3\u30af\u30b9\u306b\u4f7f\u7528\u3057\u306a\u3044\u3067\u30ea\u30f3\u30af\u3082\u305f\u3069\u3089\u306a\u3044","appearance_style":"\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8\u3068\u30b9\u30bf\u30a4\u30eb\u306e\u5c5e\u6027",stylesheet:"\u30b9\u30bf\u30a4\u30eb\u30b7\u30fc\u30c8",style:"\u30b9\u30bf\u30a4\u30eb",author:"\u4f5c\u6210\u8005",copyright:"\u8457\u4f5c\u6a29",add:"\u65b0\u3057\u304f\u8981\u7d20\u3092\u8ffd\u52a0",remove:"\u9078\u629e\u3057\u305f\u8981\u7d20\u3092\u524a\u9664",moveup:"\u9078\u629e\u3057\u305f\u8981\u7d20\u3092\u4e0a\u306b\u79fb\u52d5",movedown:"\u9078\u629e\u3057\u305f\u8981\u7d20\u3092\u4e0b\u306b\u79fb\u52d5","head_elements":"Head\u8981\u7d20",info:"\u60c5\u5831","add_title":"Title\u8981\u7d20","add_meta":"Meta\u8981\u7d20","add_script":"Script\u8981\u7d20","add_style":"Style\u8981\u7d20","add_link":"Link\u8981\u7d20","add_base":"Base\u8981\u7d20","add_comment":"Comment\u30ce\u30fc\u30c9","title_element":"Title\u8981\u7d20","script_element":"Script\u8981\u7d20","style_element":"Style\u8981\u7d20","base_element":"Base\u8981\u7d20","link_element":"Link\u8981\u7d20","meta_element":"Meta\u8981\u7d20","comment_element":"\u30b3\u30e1\u30f3\u30c8",src:"src",language:"\u8a00\u8a9e",href:"Href",target:"Target",type:"Type",charset:"Charset",defer:"Defer",media:"Media",properties:"Properties",name:"Name",value:"Value",content:"Content",rel:"Rel",rev:"Rev",hreflang:"Href\u306e\u8a00\u8a9e","general_props":"\u4e00\u822c","advanced_props":"\u8a73\u7d30\u306a\u8a2d\u5b9a"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/nl_dlg.js deleted file mode 100644 index 9124146ce7..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.fullpage_dlg',{title:"Documenteigenschappen","meta_tab":"Algemeen","appearance_tab":"Weergave","advanced_tab":"Geavanceerd","meta_props":"Meta informatie",langprops:"Taal en codering","meta_title":"Titel","meta_keywords":"Sleutelwoorden","meta_description":"Beschrijving","meta_robots":"Robots",doctypes:"Doctype",langcode:"Taalcode",langdir:"Taalrichting",ltr:"Van links naar rechts",rtl:"Van rechts naar links","xml_pi":"XML toewijzing",encoding:"Karaktercodering","appearance_bgprops":"Achtergrondeigenschappen","appearance_marginprops":"Bodymarge","appearance_linkprops":"Linkkleuren","appearance_textprops":"Teksteigenschappen",bgcolor:"Achtergrondkleur",bgimage:"Achtergrondafbeelding","left_margin":"Linkermarge","right_margin":"Rechtermarge","top_margin":"Bovenmarge","bottom_margin":"Ondermarge","text_color":"Tekstkleur","font_size":"Tekengrootte","font_face":"Lettertype","link_color":"Linkkleur","hover_color":"Hoverkleur","visited_color":"Bezocht kleur","active_color":"Actieve kleur",textcolor:"Kleur",fontsize:"Tekengrootte",fontface:"Lettertype","meta_index_follow":"Links indexeren en volgen","meta_index_nofollow":"Links indexeren maar niet volgen","meta_noindex_follow":"Links volgen maar niet indexeren","meta_noindex_nofollow":"Links niet indexeren en niet volgen","appearance_style":"Stijlblad en stijleigenschappen",stylesheet:"Stijlblad",style:"Stijl",author:"Auteur",copyright:"Copyright",add:"Nieuw element toevoegen",remove:"Geselecteerde elementen verwijderen",moveup:"Geselecteerde elementen omhoog verplaatsen",movedown:"Geselecteerde elementen omlaag verplaatsen","head_elements":"Kopelementen",info:"Informatie","add_title":"Titelelement","add_meta":"Meta-element","add_script":"Scriptelement","add_style":"Stijlelement","add_link":"Linkelement","add_base":"Basiselement","add_comment":"Opmerkingknooppunt","title_element":"Titelelement","script_element":"Scriptelement","style_element":"Stijlelement","base_element":"Basiselement","link_element":"Linkelement","meta_element":"Meta-element","comment_element":"Opmerking",src:"Bron",language:"Taal",href:"HREF",target:"Doel",type:"Type",charset:"Karakterset",defer:"Uitstellen",media:"Media",properties:"Eigenschappen",name:"Naam",value:"Waarde",content:"Inhoud",rel:"Rel",rev:"Rev",hreflang:"HREF taal","general_props":"Algemeen","advanced_props":"Geavanceerd"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/nn_dlg.js deleted file mode 100644 index 433cfab064..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.fullpage_dlg',{title:"Dokumenteigenskapar","meta_tab":"Generelt","appearance_tab":"Utsj\u00e5nad","advanced_tab":"Avansert","meta_props":"Metainformasjon",langprops:"Spr\u00e5k og koding","meta_title":"Tittel","meta_keywords":"N\u00f8kkelord","meta_description":"Omtale","meta_robots":"Roboter",doctypes:"Doctype",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",ltr:"Venstre mot h\u00f8gre",rtl:"H\u00f8gre mot venstre","xml_pi":"XML-deklarasjon",encoding:"Teiknkonvertering","appearance_bgprops":"Bakgrunnseigenskapar","appearance_marginprops":"Body-marg","appearance_linkprops":"Lenkjefargar","appearance_textprops":"Teksteigenskapar",bgcolor:"Bakgrunn",bgimage:"Bakgrunnsbilete","left_margin":"Venstre marg","right_margin":"H\u00f8gre marg","top_margin":"Toppmarg","bottom_margin":"Botnmarg","text_color":"Farge","font_size":"Skriftstorleik","font_face":"Skrifttype","link_color":"Lenkjefarge","hover_color":"Mus-over-farge","visited_color":"Bes\u00f8kt-farge","active_color":"Aktiv farge",textcolor:"Farge",fontsize:"Skriftstorleik",fontface:"Skriftfamile","meta_index_follow":"Indekser, og f\u00f8lg lenkjene","meta_index_nofollow":"Indekser, men ikkje f\u00f8lg lenkjene","meta_noindex_follow":"Ikkje indekser, men f\u00f8lg lenkjene","meta_noindex_nofollow":"Ikkje indekser, og ikkje f\u00f8lg lenkjene","appearance_style":"Stilark og stileigenskapar",stylesheet:"Stilark",style:"Stil",author:"Forfattar",copyright:"Copyright",add:"Legg til nytt element",remove:"Fjern",moveup:"Flytt markert element opp",movedown:"Flytt markert element ned","head_elements":"Overskriftselement",info:"Informasjon","add_title":"Tittelelement","add_meta":"Metaelement","add_script":"Skriptelement","add_style":"Stilelement","add_link":"Lenkjeelement","add_base":"Basiselement","add_comment":"Kommentarnode","title_element":"Tittelelement","script_element":"Skriptelement","style_element":"Stilelement","base_element":"Basiselement","link_element":"Lenkjeelement","meta_element":"Metaelement","comment_element":"Kommentar",src:"Skjerm",language:"Spr\u00e5k",href:"Href",target:"M\u00e5l",type:"Type",charset:"Teiknsett",defer:"Defer",media:"Objekt",properties:"Eigenskapar",name:"Namn",value:"Verdi",content:"Nytt lag...",rel:"Sida sitt tilh\u00f8ve til m\u00e5let",rev:"M\u00e5let sitt tilh\u00f8ve til sida",hreflang:"Href lang","general_props":"Generelt","advanced_props":"Generelle eigenskapar"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/pl_dlg.js deleted file mode 100644 index b940052643..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.fullpage_dlg',{title:"W\u0142a\u015bciwo\u015bci dokumentu","meta_tab":"Og\u00f3lne","appearance_tab":"Wygl\u0105d","advanced_tab":"Zaawansowane","meta_props":"Meta informacje",langprops:"J\u0119zyk i kodowanie","meta_title":"Tytu\u0142","meta_keywords":"S\u0142owa kluczowe","meta_description":"Opis","meta_robots":"Roboty",doctypes:"Typ dokumentu",langcode:"Oznaczenie kodowe j\u0119zyka",langdir:"Kierunek czytania tekstu",ltr:"Kierunek z lewej do prawej",rtl:"Kierunek z prawej do lewej","xml_pi":"Deklaracja XML",encoding:"Kodowanie znak\u00f3w","appearance_bgprops":"W\u0142a\u015bciwo\u015bci t\u0142a","appearance_marginprops":"Marginesy strony","appearance_linkprops":"Kolor odno\u015bnik\u00f3w","appearance_textprops":"W\u0142a\u015bciwo\u015bci tekstu",bgcolor:"Kolor t\u0142a",bgimage:"Obrazek t\u0142a","left_margin":"Lewy margines","right_margin":"Prawy margines","top_margin":"G\u00f3rny margines","bottom_margin":"Dolny margines","text_color":"Kolor tekstu","font_size":"Rozmiar czcionki","font_face":"Czcionka","link_color":"Kolor odno\u015bnika","hover_color":"Kolor po najechaniu myszk\u0105","visited_color":"Kolor odwiedzonych link\u00f3w","active_color":"Kolor aktywnych link\u00f3w",textcolor:"Kolor",fontsize:"Rozmiar czcionki",fontface:"Rodzaj czcionki","meta_index_follow":"Indeksuj i pod\u0105\u017caj za linkami","meta_index_nofollow":"Indeksuj i nie pod\u0105\u017caj za odno\u015bnikami","meta_noindex_follow":"Nie indeksuj i pod\u0105\u017caj za odno\u015bnikami","meta_noindex_nofollow":"Nie indeksuj i nie pod\u0105\u017caj za odno\u015bnikami","appearance_style":"Arkusze i w\u0142a\u015bciwo\u015bci styl\u00f3w",stylesheet:"Arkusz styl\u00f3w",style:"Styl",author:"Autor",copyright:"Prawa autorskie",add:"Dodaj nowy element",remove:"Usu\u0144 wybrany element",moveup:"Przesu\u0144 wybrane element do g\u00f3ry",movedown:"Przesu\u0144 wybrane element w d\u00f3\u0142","head_elements":"Elementy nag\u0142\u00f3wka",info:"Informacja","add_title":"Tytu\u0142","add_meta":"Meta tag","add_script":"Skrypt","add_style":"Styl","add_link":"Odno\u015bnik","add_base":"Baza","add_comment":"Komentarz","title_element":"Tytu\u0142","script_element":"Skrypt","style_element":"Styl","base_element":"Baza","link_element":"Odno\u015bnik","meta_element":"Meta tag","comment_element":"Komentarz",src:"\u0179r\u00f3d\u0142o",language:"J\u0119zyk",href:"Odno\u015bnik",target:"Cel",type:"Typ",charset:"Kodowanie",defer:"Defer",media:"Media",properties:"W\u0142a\u015bciwo\u015bci",name:"Nazwa",value:"Warto\u015b\u0107",content:"Zawarto\u015b\u0107",rel:"Rel",rev:"Rev",hreflang:"J\u0119zyk odno\u015bnika","general_props":"G\u0142\u00f3wne","advanced_props":"Zaawansowane"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/pt_dlg.js deleted file mode 100644 index 749f86859f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.fullpage_dlg',{title:"Propriedades do documento","meta_tab":"Geral","appearance_tab":"Apar\u00eancia","advanced_tab":"Avan\u00e7ado","meta_props":"Meta-informa\u00e7\u00e3o",langprops:"Idioma e codifica\u00e7\u00e3o","meta_title":"T\u00edtulo","meta_keywords":"Palavras-chave","meta_description":"Descri\u00e7\u00e3o","meta_robots":"Robots",doctypes:"Doctype",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto",ltr:"Esquerda para direita",rtl:"Direita para esquerda","xml_pi":"Declara\u00e7\u00e3o XML",encoding:"Codifica\u00e7\u00e3o de caracteres","appearance_bgprops":"Propriedades do plano de fundo","appearance_marginprops":"Margens (BODY)","appearance_linkprops":"Cores dos links","appearance_textprops":"Propriedades de texto",bgcolor:"Cor de fundo",bgimage:"Imagem de fundo","left_margin":"Margem esquerda","right_margin":"Margem direita","top_margin":"Margem topo","bottom_margin":"Margem base","text_color":"Cor do texto","font_size":"Tamanho fonte","font_face":"Fonte","link_color":"Cores dos links","hover_color":"Hover","visited_color":"Visitado","active_color":"Ativo",textcolor:"Cor",fontsize:"Tamanho fonte",fontface:"Fonte","meta_index_follow":"Indexar e seguir os hyperlinks","meta_index_nofollow":"Indexar e n\u00e3o seguir os hyperlinks","meta_noindex_follow":"Seguir hyperlinks, mas n\u00e3o indexar","meta_noindex_nofollow":"N\u00e3o indexar / n\u00e3o seguir hyperlinks.","appearance_style":"Propriedades de folhas de estilo",stylesheet:"Folha de estilo",style:"Estilo",author:"Autor",copyright:"Copyright",add:"Acrescentar novo elemento",remove:"Remover elemento selecionado",moveup:"Subir elemento selecionado",movedown:"Descer elemento selecionado","head_elements":"Elementos HEAD",info:"Informa\u00e7\u00e3o","add_title":"TITLE","add_meta":"META","add_script":"SCRIPT","add_style":"STYLE","add_link":"LINK","add_base":"BASE","add_comment":"Coment\u00e1rio","title_element":"TITLE","script_element":"SCRIPT","style_element":"STYLE","base_element":"BASE","link_element":"LINK","meta_element":"META","comment_element":"Coment\u00e1rio",src:"src",language:"Idioma",href:"href",target:"Alvo",type:"Tipo",charset:"Charset",defer:"Adiar",media:"Media",properties:"Propriedades",name:"Nome",value:"Valor",content:"Conte\u00fado",rel:"rel",rev:"rev",hreflang:"href lang","general_props":"Geral","advanced_props":"Avan\u00e7ado"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/ru_dlg.js deleted file mode 100644 index 1ae10de0a0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.fullpage_dlg',{title:"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430","meta_tab":"\u041e\u0431\u0449\u0435\u0435","appearance_tab":"\u0412\u0438\u0434","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","meta_props":"\u0426\u0435\u043b\u044c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438",langprops:"\u042f\u0437\u044b\u043a \u0438 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f","meta_title":"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","meta_keywords":"\u041a\u043b\u044e\u0447\u0435\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430","meta_description":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","meta_robots":"\u0420\u0430\u0431\u043e\u0442\u044b",doctypes:"\u0422\u0438\u043f",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e","xml_pi":"\u041e\u0431\u044a\u044f\u0432\u043b\u0435\u043d\u0438\u0435 XML",encoding:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430","appearance_bgprops":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0444\u043e\u043d\u0430","appearance_marginprops":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b","appearance_linkprops":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043e\u043a","appearance_textprops":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0435\u043a\u0441\u0442\u0430",bgcolor:"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","left_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043b\u0435\u0432\u0430","right_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043f\u0440\u0430\u0432\u0430","top_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u0432\u0435\u0440\u0445\u0443","bottom_margin":"\u041e\u0442\u0441\u0442\u0443\u043f \u0441\u043d\u0438\u0437\u0443","text_color":"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430","font_face":"\u0428\u0440\u0438\u0444\u0442","link_color":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438","hover_color":"\u0426\u0432\u0435\u0442 \u0441\u0441\u044b\u043b\u043a\u0438 \u043f\u0440\u0438 \u043d\u0430\u0432\u0435\u0434\u0435\u043d\u0438\u0438","visited_color":"\u0426\u0432\u0435\u0442 \u043d\u0430\u0436\u0430\u0442\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438","active_color":"\u0426\u0432\u0435\u0442 \u0430\u043a\u0442\u0438\u0432\u043d\u043e\u0439 \u0441\u0441\u044b\u043b\u043a\u0438",textcolor:"\u0426\u0432\u0435\u0442",fontsize:"\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430",fontface:"\u0421\u0435\u043c\u0435\u0439\u0441\u0442\u0432\u043e \u0448\u0440\u0438\u0444\u0442\u043e\u0432","meta_index_follow":"Index and follow the links","meta_index_nofollow":"Index and don\'t follow the links","meta_noindex_follow":"Do not index but follow the links","meta_noindex_nofollow":"Do not index and don \\ \'t follow the links","appearance_style":"\u041b\u0438\u0441\u0442 \u0438 \u0441\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0441\u0442\u0438\u043b\u0435\u0439",stylesheet:"\u041b\u0438\u0441\u0442 \u0441\u0442\u0438\u043b\u0435\u0439",style:"\u0421\u0442\u0438\u043b\u044c",author:"\u0410\u0432\u0442\u043e\u0440",copyright:"\u041a\u043e\u043f\u0438\u0440\u0430\u0439\u0442",add:"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043d\u043e\u0432\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",remove:"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u043d\u044b\u0439 \u044d\u043b\u0435\u043c\u0435\u043d\u0442",moveup:"\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u0432\u0435\u0440\u0445",movedown:"\u041f\u0435\u0440\u0435\u043c\u0435\u0441\u0442\u0438\u0442\u044c \u044d\u043b\u0435\u043c\u0435\u043d\u0442 \u0432\u043d\u0438\u0437","head_elements":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Header",info:"\u0418\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f","add_title":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Title","add_meta":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Meta","add_script":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Script","add_style":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Style","add_link":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Link","add_base":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Base","add_comment":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439","title_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Title","script_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Script","style_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Style","base_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Base","link_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Link","meta_element":"\u042d\u043b\u0435\u043c\u0435\u043d\u0442 Meta","comment_element":"\u041a\u043e\u043c\u043c\u0435\u043d\u0442\u0430\u0440\u0438\u0439",src:"Src",language:"\u042f\u0437\u044b\u043a",href:"\u0441\u0441\u044b\u043b\u043a\u0430",target:"\u0426\u0435\u043b\u044c",type:"Type",charset:"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430",defer:"\u041e\u0442\u0441\u0440\u043e\u0447\u043a\u0430",media:"\u041c\u0435\u0434\u0438\u0430",properties:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",value:"\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435",content:"\u0421\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u0435",rel:"Rel",rev:"Rev",hreflang:"\u042f\u0437\u044b\u043a \u0441\u0441\u044b\u043b\u043a\u0438","general_props":"\u041e\u0431\u0449\u0435\u0435","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/sv_dlg.js deleted file mode 100644 index c141b235ad..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.fullpage_dlg',{title:"Dokumentinst\u00e4llningar","meta_tab":"Generella","appearance_tab":"Utseende","advanced_tab":"Avancerat","meta_props":"Metainformation",langprops:"Spr\u00e5k och kodning","meta_title":"Titel","meta_keywords":"Nyckelord","meta_description":"Bekrivning","meta_robots":"Robots",doctypes:"Doctype",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",ltr:"V\u00e4nster till h\u00f6ger",rtl:"H\u00f6ger till v\u00e4nster","xml_pi":"XML deklaration",encoding:"Teckenkodning","appearance_bgprops":"Bakgrundsinst\u00e4llningar","appearance_marginprops":"Body marginaler","appearance_linkprops":"L\u00e4nkf\u00e4rger","appearance_textprops":"Textinst\u00e4llningar",bgcolor:"Bakgrundsf\u00e4rg",bgimage:"Bakgrundsbild","left_margin":"V\u00e4nstermarginal","right_margin":"H\u00f6germarginal","top_margin":"Toppmarginal","bottom_margin":"Bottenmarginal","text_color":"Textf\u00e4rg","font_size":"Textstorlek","font_face":"Textstil","link_color":"L\u00e4nkf\u00e4rg","hover_color":"Hover f\u00e4rg","visited_color":"Visited f\u00e4rg","active_color":"Active f\u00e4rg",textcolor:"F\u00e4rg",fontsize:"Textstorlek",fontface:"Textstil","meta_index_follow":"Indexera och f\u00f6lj l\u00e4nkar","meta_index_nofollow":"Indexera men f\u00f6lj ej l\u00e4nkar","meta_noindex_follow":"Indexera inte men f\u00f6lj l\u00e4nkar","meta_noindex_nofollow":"Indexera inte och f\u00f6lj ej l\u00e4nkar","appearance_style":"Stilmall och stilegenskaper",stylesheet:"Stilmall",style:"Stil",author:"F\u00f6rfattare",copyright:"Copyright",add:"L\u00e4gg till element",remove:"Radera det markerade elementet",moveup:"Flytta det markerade elementet upp\u00e5t",movedown:"Flytta det markerade elementet ned\u00e5t","head_elements":"Head element",info:"Information","add_title":"Titel-element","add_meta":"Meta-element","add_script":"Script-element","add_style":"Stil-element","add_link":"L\u00e4nk-element","add_base":"Base-element","add_comment":"Kommentarsnod","title_element":"Titel-element","script_element":"Script-element","style_element":"Style-element","base_element":"Base-element","link_element":"Link-element","meta_element":"Meta-element","comment_element":"Comment-element",src:"Src",language:"Spr\u00e5k",href:"Href",target:"M\u00e5l",type:"Typ",charset:"Teckenupps\u00e4ttning",defer:"Defer",media:"Media",properties:"Egenskaper",name:"Name",value:"Value",content:"Inneh\u00e5ll",rel:"Rel",rev:"Rev",hreflang:"Href lang","general_props":"Generellt","advanced_props":"Avancerat"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/zh_dlg.js deleted file mode 100644 index de354562a5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullpage/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.fullpage_dlg',{title:"\u6587\u4ef6\u5c5e\u6027","meta_tab":"\u666e\u901a","appearance_tab":"\u5916\u89c2","advanced_tab":"\u9ad8\u7ea7","meta_props":"Meta\u4fe1\u606f",langprops:"\u8bed\u8a00\u548c\u7f16\u7801","meta_title":"\u6807\u9898","meta_keywords":"\u5173\u952e\u5b57","meta_description":"\u63cf\u8ff0","meta_robots":"Robots",doctypes:"DocType",langcode:"\u8bed\u8a00\u4ee3\u7801",langdir:"\u6587\u5b57\u4e66\u5199\u65b9\u5411",ltr:"\u4ece\u5de6\u5230\u53f3",rtl:"\u4ece\u53f3\u5230\u5de6","xml_pi":"XML\u7533\u660e",encoding:"\u5b57\u7b26\u7f16\u7801","appearance_bgprops":"\u80cc\u666f\u989c\u8272","appearance_marginprops":"\u5916\u8fb9\u8ddd","appearance_linkprops":"\u94fe\u63a5\u989c\u8272","appearance_textprops":"\u6587\u5b57\u5c5e\u6027",bgcolor:"\u80cc\u666f\u989c\u8272",bgimage:"\u80cc\u666f\u56fe\u7247","left_margin":"\u5de6\u8fb9\u8ddd","right_margin":"\u53f3\u8fb9\u8ddd","top_margin":"\u4e0a\u8fb9\u8ddd","bottom_margin":"\u4e0b\u8fb9\u8ddd","text_color":"\u5b57\u4f53\u989c\u8272","font_size":"\u5b57\u4f53\u5927\u5c0f","font_face":"\u5b57\u4f53","link_color":"\u94fe\u63a5\u989c\u8272","hover_color":"\u9f20\u6807\u79fb\u5165\u540e\u94fe\u63a5\u989c\u8272","visited_color":"\u8bbf\u95ee\u8fc7\u7684\u94fe\u63a5\u989c\u8272","active_color":"\u6fc0\u6d3b\u7684\u94fe\u63a5\u989c\u8272",textcolor:"\u5b57\u4f53\u989c\u8272",fontsize:"\u5b57\u4f53\u5927\u5c0f",fontface:"\u5b57\u4f53","meta_index_follow":"\u7d22\u5f15\u5e76\u94fe\u63a5","meta_index_nofollow":"\u7d22\u5f15\u4f46\u4e0d\u94fe\u63a5","meta_noindex_follow":"\u4e0d\u7d22\u5f15\u4f46\u94fe\u63a5","meta_noindex_nofollow":"\u4e0d\u7d22\u5f15\u4e5f\u4e0d\u94fe\u63a5","appearance_style":"\u6837\u5f0f\u8868\u4e0e\u6837\u5f0f\u5c5e\u6027",stylesheet:"\u6837\u5f0f\u8868",style:"\u6837\u5f0f",author:"\u4f5c\u8005",copyright:"\u7248\u6743\u7533\u660e",add:"\u65b0\u589e\u5143\u7d20",remove:"\u5220\u9664\u9009\u62e9\u7684\u5143\u7d20",moveup:"\u4e0a\u79fb\u9009\u62e9\u7684\u5143\u7d20",movedown:"\u4e0b\u79fb\u9009\u62e9\u7684\u5143\u7d20","head_elements":"head\u5143\u7d20",info:"\u4fe1\u606f","add_title":"title\u5143\u7d20","add_meta":"meta\u5143\u7d20","add_script":"script\u5143\u7d20","add_style":"style\u5143\u7d20","add_link":"link\u5143\u7d20","add_base":"base\u5143\u7d20","add_comment":"\u6ce8\u91ca","title_element":"title\u5143\u7d20","script_element":"script\u5143\u7d20","style_element":"style\u5143\u7d20","base_element":"base\u5143\u7d20","link_element":"link\u5143\u7d20","meta_element":"meta\u5143\u7d20","comment_element":"\u6ce8\u91ca",src:"src",language:"\u8bed\u8a00",href:"href",target:"\u76ee\u6807",type:"\u7c7b\u578b",charset:"\u5b57\u5143",defer:"Defer",media:"\u591a\u5a92\u4f53",properties:"\u5c5e\u6027",name:"\u540d\u79f0",value:"\u503c",content:"\u5185\u5bb9",rel:"rel",rev:"rev",hreflang:"href lang","general_props":"\u666e\u901a","advanced_props":"\u9ad8\u7ea7"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullscreen/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/fullscreen/editor_plugin.js deleted file mode 100644 index 1aa8cc443a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullscreen/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var b=tinymce.DOM;var a=function(d,f,e){var c=function(g){var i=d.controlManager.get(g);var h=f.controlManager.get(g);if(i&&h){h.displayColor(i.value)}};c("forecolor");c("backcolor");f.setContent(d.getContent({format:"raw"}),{format:"raw"});f.selection.moveToBookmark(e);if(d.plugins.spellchecker&&f.plugins.spellchecker){f.plugins.spellchecker.setLanguage(d.plugins.spellchecker.selectedLang)}};tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(i,c){var l=this,m={},k=b.doc.documentElement,d,o,h,g,f,e,j;i.addCommand("mceFullScreen",function(){var q,r;if(i.getParam("fullscreen_is_enabled")){if(i.getParam("fullscreen_new_window")){closeFullscreen()}else{b.win.setTimeout(function(){var t=i;var s=tinyMCE.get(t.getParam("fullscreen_editor_id"));s.plugins.fullscreen.saveState(t);tinyMCE.remove(t)},10)}return}if(i.getParam("fullscreen_new_window")){l.fullscreenSettings={bookmark:i.selection.getBookmark()};q=b.win.open(c+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{q.resizeTo(screen.availWidth,screen.availHeight)}catch(p){}}else{o=b.getStyle(b.doc.body,"overflow",1)||"auto";h=b.getStyle(k,"overflow",1);d=b.getViewPort();g=d.x;f=d.y;if(tinymce.isOpera&&o=="visible"){o="auto"}if(tinymce.isIE&&o=="scroll"){o="auto"}if(tinymce.isIE&&(h=="visible"||h=="scroll")){h="auto"}if(o=="0px"){o=""}b.setStyle(b.doc.body,"overflow","hidden");k.style.overflow="hidden";d=b.getViewPort();b.win.scrollTo(0,0);if(tinymce.isIE){d.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){e="absolute;top:"+d.y}else{e="fixed;top:0"}n=b.add(b.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+e+";left:0;width:"+d.w+"px;height:"+d.h+"px;z-index:200000;"});b.add(n,"div",{id:"mce_fullscreen"});tinymce.each(i.settings,function(s,t){m[t]=s});m.id="mce_fullscreen";m.width=n.clientWidth;m.height=n.clientHeight-15;m.fullscreen_is_enabled=true;m.fullscreen_editor_id=i.id;m.theme_advanced_resizing=false;m.save_onsavecallback=function(){i.setContent(tinyMCE.get(m.id).getContent());i.execCommand("mceSave")};tinymce.each(i.getParam("fullscreen_settings"),function(t,s){m[s]=t});l.fullscreenSettings={bookmark:i.selection.getBookmark(),fullscreen_overflow:o,fullscreen_html_overflow:h,fullscreen_scrollx:g,fullscreen_scrolly:f};if(m.theme_advanced_toolbar_location==="external"){m.theme_advanced_toolbar_location="top"}tinyMCE.oldSettings=tinyMCE.settings;l.fullscreenEditor=new tinymce.Editor("mce_fullscreen",m);l.fullscreenEditor.onInit.add(function(){l.loadState(l.fullscreenEditor)});l.fullscreenEditor.render();l.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");l.fullscreenElement.update();l.resizeFunc=tinymce.dom.Event.add(b.win,"resize",function(){var v=tinymce.DOM.getViewPort(),t=l.fullscreenEditor,s,u;s=t.dom.getSize(t.getContainer().getElementsByTagName("table")[0]);u=t.dom.getSize(t.getContainer().getElementsByTagName("iframe")[0]);t.theme.resizeTo(v.w-s.w+u.w,v.h-s.h+u.h)})}});i.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});i.onNodeChange.add(function(q,p){p.setActive("fullscreen",q.getParam("fullscreen_is_enabled"))});l.loadState=function(p){if(!(p&&l.fullscreenSettings)){throw"No fullscreen editor to load to"}a(i,p,l.fullscreenSettings.bookmark);p.focus()};l.saveState=function(q){if(!(q&&l.fullscreenSettings)){throw"No fullscreen editor to restore from"}var p=l.fullscreenSettings;a(q,i,q.selection.getBookmark());if(!i.getParam("fullscreen_new_window")){tinymce.dom.Event.remove(b.win,"resize",l.resizeFunc);delete l.resizeFunc;b.remove("mce_fullscreen_container");b.doc.documentElement.style.overflow=p.fullscreen_html_overflow;b.setStyle(b.doc.body,"overflow",p.fullscreen_overflow);b.win.scrollTo(p.fullscreen_scrollx,p.fullscreen_scrolly)}tinyMCE.settings=tinyMCE.oldSettings;delete tinyMCE.oldSettings;delete l.fullscreenEditor;delete l.fullscreenElement;delete l.fullscreenSettings;b.win.setTimeout(function(){i.selection.moveToBookmark(j);i.focus()},10)}},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/fullscreen/fullscreen.htm b/assets/plugins/tinymce/tiny_mce/plugins/fullscreen/fullscreen.htm deleted file mode 100644 index 35dcb0a4e1..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/fullscreen/fullscreen.htm +++ /dev/null @@ -1,117 +0,0 @@ - - - - - - - - - -
                      - -
                      - - - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/iespell/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/iespell/editor_plugin.js deleted file mode 100644 index e9cba106c6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/iespell/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.IESpell",{init:function(a,b){var c=this,d;if(!tinymce.isIE){return}c.editor=a;a.addCommand("mceIESpell",function(){try{d=new ActiveXObject("ieSpell.ieSpellExtension");d.CheckDocumentNode(a.getDoc().documentElement)}catch(f){if(f.number==-2146827859){a.windowManager.confirm(a.getLang("iespell.download"),function(e){if(e){window.open("http://www.iespell.com/download.php","ieSpellDownload","")}})}else{a.windowManager.alert("Error Loading ieSpell: Exception "+f.number)}}});a.addButton("iespell",{title:"iespell.iespell_desc",cmd:"mceIESpell"})},getInfo:function(){return{longname:"IESpell (IE Only)",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/iespell",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("iespell",tinymce.plugins.IESpell)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/editor_plugin.js deleted file mode 100644 index 2d71a2e174..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId("mce_inlinepopups_");h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","
                      "));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceClose"){z.close(null,i);return a.cancel(t)}else{if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;gf){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif deleted file mode 100644 index 219139857e..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/alert.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif deleted file mode 100644 index f957e49a3d..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/button.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif deleted file mode 100644 index 6baf64ad32..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/buttons.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif deleted file mode 100644 index 20acbbf7ae..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/confirm.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif deleted file mode 100644 index d5de1cc236..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/corners.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif deleted file mode 100644 index c2a2ad454d..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/horizontal.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif deleted file mode 100644 index 0b4cc3682a..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/img/vertical.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css deleted file mode 100644 index a50d4fc573..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/skins/clearlooks2/window.css +++ /dev/null @@ -1,90 +0,0 @@ -/* Clearlooks 2 */ - -/* Reset */ -.clearlooks2, .clearlooks2 div, .clearlooks2 span, .clearlooks2 a {vertical-align:baseline; text-align:left; position:absolute; border:0; padding:0; margin:0; background:transparent; font-family:Arial,Verdana; font-size:11px; color:#000; text-decoration:none; font-weight:normal; width:auto; height:auto; overflow:hidden; display:block} - -/* General */ -.clearlooks2 {position:absolute; direction:ltr} -.clearlooks2 .mceWrapper {position:static} -.mceEventBlocker {position:fixed; left:0; top:0; background:url(img/horizontal.gif) no-repeat 0 -75px; width:100%; height:100%} -.clearlooks2 .mcePlaceHolder {border:1px solid #000; background:#888; top:0; left:0; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50)} -.clearlooks2_modalBlocker {position:fixed; left:0; top:0; width:100%; height:100%; background:#FFF; opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60); display:none} - -/* Top */ -.clearlooks2 .mceTop, .clearlooks2 .mceTop div {top:0; width:100%; height:23px} -.clearlooks2 .mceTop .mceLeft {width:6px; background:url(img/corners.gif)} -.clearlooks2 .mceTop .mceCenter {right:6px; width:100%; height:23px; background:url(img/horizontal.gif) 12px 0; clip:rect(auto auto auto 12px)} -.clearlooks2 .mceTop .mceRight {right:0; width:6px; height:23px; background:url(img/corners.gif) -12px 0} -.clearlooks2 .mceTop span {width:100%; text-align:center; vertical-align:middle; line-height:23px; font-weight:bold} -.clearlooks2 .mceFocus .mceTop .mceLeft {background:url(img/corners.gif) -6px 0} -.clearlooks2 .mceFocus .mceTop .mceCenter {background:url(img/horizontal.gif) 0 -23px} -.clearlooks2 .mceFocus .mceTop .mceRight {background:url(img/corners.gif) -18px 0} -.clearlooks2 .mceFocus .mceTop span {color:#FFF} - -/* Middle */ -.clearlooks2 .mceMiddle, .clearlooks2 .mceMiddle div {top:0} -.clearlooks2 .mceMiddle {width:100%; height:100%; clip:rect(23px auto auto auto)} -.clearlooks2 .mceMiddle .mceLeft {left:0; width:5px; height:100%; background:url(img/vertical.gif) -5px 0} -.clearlooks2 .mceMiddle span {top:23px; left:5px; width:100%; height:100%; background:#FFF} -.clearlooks2 .mceMiddle .mceRight {right:0; width:5px; height:100%; background:url(img/vertical.gif)} - -/* Bottom */ -.clearlooks2 .mceBottom, .clearlooks2 .mceBottom div {height:6px} -.clearlooks2 .mceBottom {left:0; bottom:0; width:100%} -.clearlooks2 .mceBottom div {top:0} -.clearlooks2 .mceBottom .mceLeft {left:0; width:5px; background:url(img/corners.gif) -34px -6px} -.clearlooks2 .mceBottom .mceCenter {left:5px; width:100%; background:url(img/horizontal.gif) 0 -46px} -.clearlooks2 .mceBottom .mceRight {right:0; width:5px; background: url(img/corners.gif) -34px 0} -.clearlooks2 .mceBottom span {display:none} -.clearlooks2 .mceStatusbar .mceBottom, .clearlooks2 .mceStatusbar .mceBottom div {height:23px} -.clearlooks2 .mceStatusbar .mceBottom .mceLeft {background:url(img/corners.gif) -29px 0} -.clearlooks2 .mceStatusbar .mceBottom .mceCenter {background:url(img/horizontal.gif) 0 -52px} -.clearlooks2 .mceStatusbar .mceBottom .mceRight {background:url(img/corners.gif) -24px 0} -.clearlooks2 .mceStatusbar .mceBottom span {display:block; left:7px; font-family:Arial, Verdana; font-size:11px; line-height:23px} - -/* Actions */ -.clearlooks2 a {width:29px; height:16px; top:3px;} -.clearlooks2 .mceClose {right:6px; background:url(img/buttons.gif) -87px 0} -.clearlooks2 .mceMin {display:none; right:68px; background:url(img/buttons.gif) 0 0} -.clearlooks2 .mceMed {display:none; right:37px; background:url(img/buttons.gif) -29px 0} -.clearlooks2 .mceMax {display:none; right:37px; background:url(img/buttons.gif) -58px 0} -.clearlooks2 .mceMove {display:none;width:100%;cursor:move;background:url(img/corners.gif) no-repeat -100px -100px} -.clearlooks2 .mceMovable .mceMove {display:block} -.clearlooks2 .mceFocus .mceClose {right:6px; background:url(img/buttons.gif) -87px -16px} -.clearlooks2 .mceFocus .mceMin {right:68px; background:url(img/buttons.gif) 0 -16px} -.clearlooks2 .mceFocus .mceMed {right:37px; background:url(img/buttons.gif) -29px -16px} -.clearlooks2 .mceFocus .mceMax {right:37px; background:url(img/buttons.gif) -58px -16px} -.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} -.clearlooks2 .mceFocus .mceClose:hover {right:6px; background:url(img/buttons.gif) -87px -32px} -.clearlooks2 .mceFocus .mceMin:hover {right:68px; background:url(img/buttons.gif) 0 -32px} -.clearlooks2 .mceFocus .mceMed:hover {right:37px; background:url(img/buttons.gif) -29px -32px} -.clearlooks2 .mceFocus .mceMax:hover {right:37px; background:url(img/buttons.gif) -58px -32px} - -/* Resize */ -.clearlooks2 .mceResize {top:auto; left:auto; display:none; width:5px; height:5px; background:url(img/horizontal.gif) no-repeat 0 -75px} -.clearlooks2 .mceResizable .mceResize {display:block} -.clearlooks2 .mceResizable .mceMin, .clearlooks2 .mceMax {display:none} -.clearlooks2 .mceMinimizable .mceMin {display:block} -.clearlooks2 .mceMaximizable .mceMax {display:block} -.clearlooks2 .mceMaximized .mceMed {display:block} -.clearlooks2 .mceMaximized .mceMax {display:none} -.clearlooks2 a.mceResizeN {top:0; left:0; width:100%; cursor:n-resize} -.clearlooks2 a.mceResizeNW {top:0; left:0; cursor:nw-resize} -.clearlooks2 a.mceResizeNE {top:0; right:0; cursor:ne-resize} -.clearlooks2 a.mceResizeW {top:0; left:0; height:100%; cursor:w-resize;} -.clearlooks2 a.mceResizeE {top:0; right:0; height:100%; cursor:e-resize} -.clearlooks2 a.mceResizeS {bottom:0; left:0; width:100%; cursor:s-resize} -.clearlooks2 a.mceResizeSW {bottom:0; left:0; cursor:sw-resize} -.clearlooks2 a.mceResizeSE {bottom:0; right:0; cursor:se-resize} - -/* Alert/Confirm */ -.clearlooks2 .mceButton {font-weight:bold; bottom:10px; width:80px; height:30px; background:url(img/button.gif); line-height:30px; vertical-align:middle; text-align:center; outline:0} -.clearlooks2 .mceMiddle .mceIcon {left:15px; top:35px; width:32px; height:32px} -.clearlooks2 .mceAlert .mceMiddle span, .clearlooks2 .mceConfirm .mceMiddle span {background:transparent;left:60px; top:35px; width:320px; height:50px; font-weight:bold; overflow:auto; white-space:normal} -.clearlooks2 a:hover {font-weight:bold;} -.clearlooks2 .mceAlert .mceMiddle, .clearlooks2 .mceConfirm .mceMiddle {background:#D6D7D5} -.clearlooks2 .mceAlert .mceOk {left:50%; top:auto; margin-left: -40px} -.clearlooks2 .mceAlert .mceIcon {background:url(img/alert.gif)} -.clearlooks2 .mceConfirm .mceOk {left:50%; top:auto; margin-left: -90px} -.clearlooks2 .mceConfirm .mceCancel {left:50%; top:auto} -.clearlooks2 .mceConfirm .mceIcon {background:url(img/confirm.gif)} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/template.htm b/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/template.htm deleted file mode 100644 index c98fe41a67..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/inlinepopups/template.htm +++ /dev/null @@ -1,387 +0,0 @@ - - - -Template for dialogs - - - - -
                      -
                      -
                      -
                      -
                      -
                      -
                      - Blured -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Focused -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Statusbar -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Statusbar, Resizable -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Resizable, Maximizable -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Blurred, Maximizable, Statusbar, Resizable -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Maximized, Maximizable, Minimizable -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Blured -
                      - -
                      -
                      - Content -
                      -
                      - -
                      -
                      -
                      -
                      - Statusbar text. -
                      - - - - - - - - - - - - - - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Alert -
                      - -
                      -
                      - - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - -
                      -
                      -
                      - -
                      -
                      -
                      -
                      -
                      - - - Ok - -
                      -
                      - -
                      -
                      -
                      -
                      -
                      -
                      - Confirm -
                      - -
                      -
                      - - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - This is a very long error message. This is a very long error message. - -
                      -
                      -
                      - -
                      -
                      -
                      -
                      -
                      - - - Ok - Cancel - -
                      -
                      -
                      - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/insertdatetime/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/insertdatetime/editor_plugin.js deleted file mode 100644 index 938ce6b17d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/insertdatetime/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.InsertDateTime",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceInsertDate",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_dateFormat",a.getLang("insertdatetime.date_fmt")));a.execCommand("mceInsertContent",false,d)});a.addCommand("mceInsertTime",function(){var d=c._getDateTime(new Date(),a.getParam("plugin_insertdate_timeFormat",a.getLang("insertdatetime.time_fmt")));a.execCommand("mceInsertContent",false,d)});a.addButton("insertdate",{title:"insertdatetime.insertdate_desc",cmd:"mceInsertDate"});a.addButton("inserttime",{title:"insertdatetime.inserttime_desc",cmd:"mceInsertTime"})},getInfo:function(){return{longname:"Insert date/time",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/insertdatetime",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_getDateTime:function(e,a){var c=this.editor;function b(g,d){g=""+g;if(g.length-1){b[e].style.zIndex=h[k];b[k].style.zIndex=h[e]}else{if(h[e]>0){b[e].style.zIndex=h[e]-1}}}else{for(g=0;gh[e]){k=g;break}}if(k>-1){b[e].style.zIndex=h[k];b[k].style.zIndex=h[e]}else{b[e].style.zIndex=h[e]+1}}c.execCommand("mceRepaint")},_getParentLayer:function(b){return this.editor.dom.getParent(b,function(c){return c.nodeType==1&&/^(absolute|relative|static)$/i.test(c.style.position)})},_insertLayer:function(){var c=this.editor,e=c.dom,d=e.getPos(e.getParent(c.selection.getNode(),"*")),b=c.getBody();c.dom.add(b,"div",{style:{position:"absolute",left:d.x,top:(d.y>20?d.y:20),width:100,height:100},"class":"mceItemVisualAid mceItemLayer"},c.selection.getContent()||c.getLang("layer.content"));if(tinymce.isIE){e.setHTML(b,b.innerHTML)}},_toggleAbsolute:function(){var b=this.editor,c=this._getParentLayer(b.selection.getNode());if(!c){c=b.dom.getParent(b.selection.getNode(),"DIV,P,IMG")}if(c){if(c.style.position.toLowerCase()=="absolute"){b.dom.setStyles(c,{position:"",left:"",top:"",width:"",height:""});b.dom.removeClass(c,"mceItemVisualAid");b.dom.removeClass(c,"mceItemLayer")}else{if(c.style.left==""){c.style.left=20+"px"}if(c.style.top==""){c.style.top=20+"px"}if(c.style.width==""){c.style.width=c.width?(c.width+"px"):"100px"}if(c.style.height==""){c.style.height=c.height?(c.height+"px"):"100px"}c.style.position="absolute";b.dom.setAttrib(c,"data-mce-style","");b.addVisual(b.getBody())}b.execCommand("mceRepaint");b.nodeChanged()}}});tinymce.PluginManager.add("layer",tinymce.plugins.Layer)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/legacyoutput/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/legacyoutput/editor_plugin.js deleted file mode 100644 index 2ed5f41ae4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/legacyoutput/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(a){a.onAddEditor.addToTop(function(c,b){b.settings.inline_styles=false});a.create("tinymce.plugins.LegacyOutput",{init:function(b){b.onInit.add(function(){var c="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table,img",e=a.explode(b.settings.font_size_style_values),d=b.schema;b.formatter.register({alignleft:{selector:c,attributes:{align:"left"}},aligncenter:{selector:c,attributes:{align:"center"}},alignright:{selector:c,attributes:{align:"right"}},alignfull:{selector:c,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all"},{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all"},{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all"},{inline:"span",styles:{textDecoration:"underline"},exact:true}],strikethrough:[{inline:"strike",remove:"all"},{inline:"span",styles:{textDecoration:"line-through"},exact:true}],fontname:{inline:"font",attributes:{face:"%value"}},fontsize:{inline:"font",attributes:{size:function(f){return a.inArray(e,f.value)+1}}},forecolor:{inline:"font",attributes:{color:"%value"}},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"}}});a.each("b,i,u,strike".split(","),function(f){d.addValidElements(f+"[*]")});if(!d.getElementRule("font")){d.addValidElements("font[face|size|color|style]")}a.each(c.split(","),function(f){var h=d.getElementRule(f),g;if(h){if(!h.attributes.align){h.attributes.align={};h.attributesOrder.push("align")}}});b.onNodeChange.add(function(g,k){var j,f,h,i;f=g.dom.getParent(g.selection.getNode(),"font");if(f){h=f.face;i=f.size}if(j=k.get("fontselect")){j.select(function(l){return l==h})}if(j=k.get("fontsizeselect")){j.select(function(m){var l=a.inArray(e,m.fontSize);return l+1==i})}})})},getInfo:function(){return{longname:"LegacyOutput",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/legacyoutput",version:a.majorVersion+"."+a.minorVersion}}});a.PluginManager.add("legacyoutput",a.plugins.LegacyOutput)})(tinymce); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/lists/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/lists/editor_plugin.js deleted file mode 100644 index ec21b256ec..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/lists/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var e=tinymce.each,r=tinymce.dom.Event,g;function p(t,s){while(t&&(t.nodeType===8||(t.nodeType===3&&/^[ \t\n\r]*$/.test(t.nodeValue)))){t=s(t)}return t}function b(s){return p(s,function(t){return t.previousSibling})}function i(s){return p(s,function(t){return t.nextSibling})}function d(s,u,t){return s.dom.getParent(u,function(v){return tinymce.inArray(t,v)!==-1})}function n(s){return s&&(s.tagName==="OL"||s.tagName==="UL")}function c(u,v){var t,w,s;t=b(u.lastChild);while(n(t)){w=t;t=b(w.previousSibling)}if(w){s=v.create("li",{style:"list-style-type: none;"});v.split(u,w);v.insertAfter(s,w);s.appendChild(w);s.appendChild(w);u=s.previousSibling}return u}function m(t,s,u){t=a(t,s,u);return o(t,s,u)}function a(u,s,v){var t=b(u.previousSibling);if(t){return h(t,u,s?t:false,v)}else{return u}}function o(u,t,v){var s=i(u.nextSibling);if(s){return h(u,s,t?s:false,v)}else{return u}}function h(u,s,t,v){if(l(u,s,!!t,v)){return f(u,s,t)}else{if(u&&u.tagName==="LI"&&n(s)){u.appendChild(s)}}return s}function l(u,t,s,v){if(!u||!t){return false}else{if(u.tagName==="LI"&&t.tagName==="LI"){return t.style.listStyleType==="none"||j(t)}else{if(n(u)){return(u.tagName===t.tagName&&(s||u.style.listStyleType===t.style.listStyleType))||q(t)}else{return v&&u.tagName==="P"&&t.tagName==="P"}}}}function q(t){var s=i(t.firstChild),u=b(t.lastChild);return s&&u&&n(t)&&s===u&&(n(s)||s.style.listStyleType==="none"||j(s))}function j(u){var t=i(u.firstChild),s=b(u.lastChild);return t&&s&&t===s&&n(t)}function f(w,v,s){var u=b(w.lastChild),t=i(v.firstChild);if(w.tagName==="P"){w.appendChild(w.ownerDocument.createElement("br"))}while(v.firstChild){w.appendChild(v.firstChild)}if(s){w.style.listStyleType=s.style.listStyleType}v.parentNode.removeChild(v);h(u,t,false);return w}function k(t,u){var s;if(!u.is(t,"li,ol,ul")){s=u.getParent(t,"li");if(s){t=s}}return t}tinymce.create("tinymce.plugins.Lists",{init:function(y){var v="TABBING";var s="EMPTY";var J="ESCAPE";var z="PARAGRAPH";var N="UNKNOWN";var x=N;function E(U){return U.keyCode===tinymce.VK.TAB&&!(U.altKey||U.ctrlKey)&&(y.queryCommandState("InsertUnorderedList")||y.queryCommandState("InsertOrderedList"))}function w(){var U=B();var W=U.parentNode.parentNode;var V=U.parentNode.lastChild===U;return V&&!t(W)&&P(U)}function t(U){if(n(U)){return U.parentNode&&U.parentNode.tagName==="LI"}else{return U.tagName==="LI"}}function F(){return y.selection.isCollapsed()&&P(B())}function B(){var U=y.selection.getStart();return((U.tagName=="BR"||U.tagName=="")&&U.parentNode.tagName=="LI")?U.parentNode:U}function P(U){var V=U.childNodes.length;if(U.tagName==="LI"){return V==0?true:V==1&&(U.firstChild.tagName==""||U.firstChild.tagName=="BR"||H(U))}return false}function H(U){var V=tinymce.grep(U.parentNode.childNodes,function(Y){return Y.tagName=="LI"});var W=U==V[V.length-1];var X=U.firstChild;return tinymce.isIE9&&W&&(X.nodeValue==String.fromCharCode(160)||X.nodeValue==String.fromCharCode(32))}function T(U){return U.keyCode===tinymce.VK.ENTER}function A(U){return T(U)&&!U.shiftKey}function M(U){if(E(U)){return v}else{if(A(U)&&w()){return N}else{if(A(U)&&F()){return s}else{return N}}}}function D(U,V){if(x==v||x==s||tinymce.isGecko&&x==J){r.cancel(V)}}function C(){var U=y.selection.getRng(true);var V=U.startContainer;if(V.nodeType==3){var W=V.nodeValue;if(tinymce.isIE9&&W.length>1&&W.charCodeAt(W.length-1)==32){return(U.endOffset==W.length-1)}else{return(U.endOffset==W.length)}}else{if(V.nodeType==1){return U.endOffset==V.childNodes.length}}return false}function I(){var W=y.selection.getNode();var V="h1,h2,h3,h4,h5,h6,p,div";var U=y.dom.is(W,V)&&W.parentNode.tagName==="LI"&&W.parentNode.lastChild===W;return y.selection.isCollapsed()&&U&&C()}function K(W,Y){if(A(Y)&&I()){var X=W.selection.getNode();var V=W.dom.create("li");var U=W.dom.getParent(X,"li");W.dom.insertAfter(V,U);if(tinymce.isIE6||tinymce.isIE7||tinyMCE.isIE8){W.selection.setCursorLocation(V,1)}else{W.selection.setCursorLocation(V,0)}Y.preventDefault()}}function u(X,Z){var ac;if(!tinymce.isGecko){return}var V=X.selection.getStart();if(Z.keyCode!=tinymce.VK.BACKSPACE||V.tagName!=="IMG"){return}function W(ag){var ah=ag.firstChild;var af=null;do{if(!ah){break}if(ah.tagName==="LI"){af=ah}}while(ah=ah.nextSibling);return af}function ae(ag,af){while(ag.childNodes.length>0){af.appendChild(ag.childNodes[0])}}ac=V.parentNode.previousSibling;if(!ac){return}var aa;if(ac.tagName==="UL"||ac.tagName==="OL"){aa=ac}else{if(ac.previousSibling&&(ac.previousSibling.tagName==="UL"||ac.previousSibling.tagName==="OL")){aa=ac.previousSibling}else{return}}var ad=W(aa);var U=X.dom.createRng();U.setStart(ad,1);U.setEnd(ad,1);X.selection.setRng(U);X.selection.collapse(true);var Y=X.selection.getBookmark();var ab=V.parentNode.cloneNode(true);if(ab.tagName==="P"||ab.tagName==="DIV"){ae(ab,ad)}else{ad.appendChild(ab)}V.parentNode.parentNode.removeChild(V.parentNode);X.selection.moveToBookmark(Y)}function G(U){var V=y.dom.getParent(U,"ol,ul");if(V!=null){var W=V.lastChild;y.selection.setCursorLocation(W,0)}}this.ed=y;y.addCommand("Indent",this.indent,this);y.addCommand("Outdent",this.outdent,this);y.addCommand("InsertUnorderedList",function(){this.applyList("UL","OL")},this);y.addCommand("InsertOrderedList",function(){this.applyList("OL","UL")},this);y.onInit.add(function(){y.editorCommands.addCommands({outdent:function(){var V=y.selection,W=y.dom;function U(X){X=W.getParent(X,W.isBlock);return X&&(parseInt(y.dom.getStyle(X,"margin-left")||0,10)+parseInt(y.dom.getStyle(X,"padding-left")||0,10))>0}return U(V.getStart())||U(V.getEnd())||y.queryCommandState("InsertOrderedList")||y.queryCommandState("InsertUnorderedList")}},"state")});y.onKeyUp.add(function(V,W){if(x==v){V.execCommand(W.shiftKey?"Outdent":"Indent",true,null);x=N;return r.cancel(W)}else{if(x==s){var U=B();var Y=V.settings.list_outdent_on_enter===true||W.shiftKey;V.execCommand(Y?"Outdent":"Indent",true,null);if(tinymce.isIE){G(U)}return r.cancel(W)}else{if(x==J){if(tinymce.isIE6||tinymce.isIE7||tinymce.isIE8){var X=V.getDoc().createTextNode("\uFEFF");V.selection.getNode().appendChild(X)}else{if(tinymce.isIE9||tinymce.isGecko){V.execCommand("Outdent");return r.cancel(W)}}}}}});function L(V,U){var W=y.getDoc().createTextNode("\uFEFF");V.insertBefore(W,U);y.selection.setCursorLocation(W,0);y.execCommand("mceRepaint")}function R(V,X){if(T(X)){var U=B();if(U){var W=U.parentNode;var Y=W&&W.parentNode;if(Y&&Y.nodeName=="LI"&&Y.firstChild==W&&U==W.firstChild){L(Y,W)}}}}function S(V,X){if(T(X)){var U=B();if(V.dom.select("ul li",U).length===1){var W=U.firstChild;L(U,W)}}}function Q(W,aa){function X(ab){var ad=[];var ae=new tinymce.dom.TreeWalker(ab.firstChild,ab);for(var ac=ae.current();ac;ac=ae.next()){if(W.dom.is(ac,"ol,ul,li")){ad.push(ac)}}return ad}if(aa.keyCode==tinymce.VK.BACKSPACE){var U=B();if(U){var Z=W.dom.getParent(U,"ol,ul"),V=W.selection.getRng();if(Z&&Z.firstChild===U&&V.startOffset==0){var Y=X(U);Y.unshift(U);W.execCommand("Outdent",false,Y);W.undoManager.add();return r.cancel(aa)}}}}function O(V,X){var U=B();if(X.keyCode===tinymce.VK.BACKSPACE&&V.dom.is(U,"li")&&U.parentNode.firstChild!==U){if(V.dom.select("ul,ol",U).length===1){var Z=U.previousSibling;V.dom.remove(V.dom.select("br",U));V.dom.remove(U,true);var W=tinymce.grep(Z.childNodes,function(aa){return aa.nodeType===3});if(W.length===1){var Y=W[0];V.selection.setCursorLocation(Y,Y.length)}V.undoManager.add();return r.cancel(X)}}}y.onKeyDown.add(function(U,V){x=M(V)});y.onKeyDown.add(D);y.onKeyDown.add(u);y.onKeyDown.add(K);if(tinymce.isGecko){y.onKeyUp.add(R)}if(tinymce.isIE8){y.onKeyUp.add(S)}if(tinymce.isGecko||tinymce.isWebKit){y.onKeyDown.add(Q)}if(tinymce.isWebKit){y.onKeyDown.add(O)}},applyList:function(y,v){var C=this,z=C.ed,I=z.dom,s=[],H=false,u=false,w=false,B,G=z.selection.getSelectedBlocks();function E(t){if(t&&t.tagName==="BR"){I.remove(t)}}function F(M){var N=I.create(y),t;function L(O){if(O.style.marginLeft||O.style.paddingLeft){C.adjustPaddingFunction(false)(O)}}if(M.tagName==="LI"){}else{if(M.tagName==="P"||M.tagName==="DIV"||M.tagName==="BODY"){K(M,function(P,O){J(P,O,M.tagName==="BODY"?null:P.parentNode);t=P.parentNode;L(t);E(O)});if(t){if(t.tagName==="LI"&&(M.tagName==="P"||G.length>1)){I.split(t.parentNode.parentNode,t.parentNode)}m(t.parentNode,true)}return}else{t=I.create("li");I.insertAfter(t,M);t.appendChild(M);L(M);M=t}}I.insertAfter(N,M);N.appendChild(M);m(N,true);s.push(M)}function J(P,L,N){var t,O=P,M;while(!I.isBlock(P.parentNode)&&P.parentNode!==I.getRoot()){P=I.split(P.parentNode,P.previousSibling);P=P.nextSibling;O=P}if(N){t=N.cloneNode(true);P.parentNode.insertBefore(t,P);while(t.firstChild){I.remove(t.firstChild)}t=I.rename(t,"li")}else{t=I.create("li");P.parentNode.insertBefore(t,P)}while(O&&O!=L){M=O.nextSibling;t.appendChild(O);O=M}if(t.childNodes.length===0){t.innerHTML='
                      '}F(t)}function K(Q,T){var N,R,O=3,L=1,t="br,ul,ol,p,div,h1,h2,h3,h4,h5,h6,table,blockquote,address,pre,form,center,dl";function P(X,U){var V=I.createRng(),W;g.keep=true;z.selection.moveToBookmark(g);g.keep=false;W=z.selection.getRng(true);if(!U){U=X.parentNode.lastChild}V.setStartBefore(X);V.setEndAfter(U);return !(V.compareBoundaryPoints(O,W)>0||V.compareBoundaryPoints(L,W)<=0)}function S(U){if(U.nextSibling){return U.nextSibling}if(!I.isBlock(U.parentNode)&&U.parentNode!==I.getRoot()){return S(U.parentNode)}}N=Q.firstChild;var M=false;e(I.select(t,Q),function(U){if(U.hasAttribute&&U.hasAttribute("_mce_bogus")){return true}if(P(N,U)){I.addClass(U,"_mce_tagged_br");N=S(U)}});M=(N&&P(N,undefined));N=Q.firstChild;e(I.select(t,Q),function(V){var U=S(V);if(V.hasAttribute&&V.hasAttribute("_mce_bogus")){return true}if(I.hasClass(V,"_mce_tagged_br")){T(N,V,R);R=null}else{R=V}N=U});if(M){T(N,undefined,R)}}function D(t){K(t,function(M,L,N){J(M,L);E(L);E(N)})}function A(t){if(tinymce.inArray(s,t)!==-1){return}if(t.parentNode.tagName===v){I.split(t.parentNode,t);F(t);o(t.parentNode,false)}s.push(t)}function x(M){var O,N,L,t;if(tinymce.inArray(s,M)!==-1){return}M=c(M,I);while(I.is(M.parentNode,"ol,ul,li")){I.split(M.parentNode,M)}s.push(M);M=I.rename(M,"p");L=m(M,false,z.settings.force_br_newlines);if(L===M){O=M.firstChild;while(O){if(I.isBlock(O)){O=I.split(O.parentNode,O);t=true;N=O.nextSibling&&O.nextSibling.firstChild}else{N=O.nextSibling;if(t&&O.tagName==="BR"){I.remove(O)}t=false}O=N}}}e(G,function(t){t=k(t,I);if(t.tagName===v||(t.tagName==="LI"&&t.parentNode.tagName===v)){u=true}else{if(t.tagName===y||(t.tagName==="LI"&&t.parentNode.tagName===y)){H=true}else{w=true}}});if(w&&!H||u||G.length===0){B={LI:A,H1:F,H2:F,H3:F,H4:F,H5:F,H6:F,P:F,BODY:F,DIV:G.length>1?F:D,defaultAction:D,elements:this.selectedBlocks()}}else{B={defaultAction:x,elements:this.selectedBlocks(),processEvenIfEmpty:true}}this.process(B)},indent:function(){var u=this.ed,w=u.dom,x=[];function s(z){var y=w.create("li",{style:"list-style-type: none;"});w.insertAfter(y,z);return y}function t(B){var y=s(B),D=w.getParent(B,"ol,ul"),C=D.tagName,E=w.getStyle(D,"list-style-type"),A={},z;if(E!==""){A.style="list-style-type: "+E+";"}z=w.create(C,A);y.appendChild(z);return z}function v(z){if(!d(u,z,x)){z=c(z,w);var y=t(z);y.appendChild(z);m(y.parentNode,false);m(y,false);x.push(z)}}this.process({LI:v,defaultAction:this.adjustPaddingFunction(true),elements:this.selectedBlocks()})},outdent:function(y,x){var w=this,u=w.ed,z=u.dom,s=[];function A(t){var C,B,D;if(!d(u,t,s)){if(z.getStyle(t,"margin-left")!==""||z.getStyle(t,"padding-left")!==""){return w.adjustPaddingFunction(false)(t)}D=z.getStyle(t,"text-align",true);if(D==="center"||D==="right"){z.setStyle(t,"text-align","left");return}t=c(t,z);C=t.parentNode;B=t.parentNode.parentNode;if(B.tagName==="P"){z.split(B,t.parentNode)}else{z.split(C,t);if(B.tagName==="LI"){z.split(B,t)}else{if(!z.is(B,"ol,ul")){z.rename(t,"p")}}}s.push(t)}}var v=x&&tinymce.is(x,"array")?x:this.selectedBlocks();this.process({LI:A,defaultAction:this.adjustPaddingFunction(false),elements:v});e(s,m)},process:function(y){var F=this,w=F.ed.selection,z=F.ed.dom,E,u;function B(t){var s=tinymce.grep(t.childNodes,function(H){return !(H.nodeName==="BR"||H.nodeName==="SPAN"&&z.getAttrib(H,"data-mce-type")=="bookmark"||H.nodeType==3&&(H.nodeValue==String.fromCharCode(160)||H.nodeValue==""))});return s.length===0}function x(s){z.removeClass(s,"_mce_act_on");if(!s||s.nodeType!==1||!y.processEvenIfEmpty&&E.length>1&&B(s)){return}s=k(s,z);var t=y[s.tagName];if(!t){t=y.defaultAction}t(s)}function v(s){F.splitSafeEach(s.childNodes,x,true)}function C(s,t){return t>=0&&s.hasChildNodes()&&t0){t=s.shift();w.removeClass(t,"_mce_act_on");u(t);s=w.select("._mce_act_on")}},adjustPaddingFunction:function(u){var s,v,t=this.ed;s=t.settings.indentation;v=/[a-z%]+/i.exec(s);s=parseInt(s,10);return function(w){var y,x;y=parseInt(t.dom.getStyle(w,"margin-left")||0,10)+parseInt(t.dom.getStyle(w,"padding-left")||0,10);if(u){x=y+s}else{x=y-s}t.dom.setStyle(w,"padding-left","");t.dom.setStyle(w,"margin-left",x>0?x+v:"")}},selectedBlocks:function(){var s=this.ed,t=s.selection.getSelectedBlocks();return t.length==0?[s.dom.getRoot()]:t},getInfo:function(){return{longname:"Lists",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/lists",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("lists",tinymce.plugins.Lists)}()); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/css/media.css b/assets/plugins/tinymce/tiny_mce/plugins/media/css/media.css deleted file mode 100644 index fd04898ca5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/css/media.css +++ /dev/null @@ -1,17 +0,0 @@ -#id, #name, #hspace, #vspace, #class_name, #align { width: 100px } -#hspace, #vspace { width: 50px } -#flash_quality, #flash_align, #flash_scale, #flash_salign, #flash_wmode { width: 100px } -#flash_base, #flash_flashvars, #html5_altsource1, #html5_altsource2, #html5_poster { width: 240px } -#width, #height { width: 40px } -#src, #media_type { width: 250px } -#class { width: 120px } -#prev { margin: 0; border: 1px solid black; width: 380px; height: 260px; overflow: auto } -.panel_wrapper div.current { height: 420px; overflow: auto } -#flash_options, #shockwave_options, #qt_options, #wmp_options, #rmp_options { display: none } -.mceAddSelectValue { background-color: #DDDDDD } -#qt_starttime, #qt_endtime, #qt_fov, #qt_href, #qt_moveid, #qt_moviename, #qt_node, #qt_pan, #qt_qtsrc, #qt_qtsrcchokespeed, #qt_target, #qt_tilt, #qt_urlsubstituten, #qt_volume { width: 70px } -#wmp_balance, #wmp_baseurl, #wmp_captioningid, #wmp_currentmarker, #wmp_currentposition, #wmp_defaultframe, #wmp_playcount, #wmp_rate, #wmp_uimode, #wmp_volume { width: 70px } -#rmp_console, #rmp_numloop, #rmp_controls, #rmp_scriptcallbacks { width: 70px } -#shockwave_swvolume, #shockwave_swframe, #shockwave_swurl, #shockwave_swstretchvalign, #shockwave_swstretchhalign, #shockwave_swstretchstyle { width: 90px } -#qt_qtsrc { width: 200px } -iframe {border: 1px solid gray} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/media/editor_plugin.js deleted file mode 100644 index 9ac42e0d21..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var b=tinymce.explode("id,name,width,height,style,align,class,hspace,vspace,bgcolor,type"),a=tinymce.makeMap(b.join(",")),f=tinymce.html.Node,d,i,h=tinymce.util.JSON,g;d=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Iframe"],["Video"],["EmbeddedAudio"],["Audio"]];function e(j){return typeof(j)=="string"?j.replace(/[^0-9%]/g,""):j}function c(m){var l,j,k;if(m&&!m.splice){j=[];for(k=0;true;k++){if(m[k]){j[k]=m[k]}else{break}}return j}return m}tinymce.create("tinymce.plugins.MediaPlugin",{init:function(n,j){var r=this,l={},m,p,q,k;function o(s){return s&&s.nodeName==="IMG"&&n.dom.hasClass(s,"mceItemMedia")}r.editor=n;r.url=j;i="";for(m=0;m0){O+=(O?"&":"")+P+"="+escape(Q)}});if(O.length){G.params.flashvars=O}L=p.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(L,function(Q,P){G.params[P]=""+Q})}}G=z.attr("data-mce-json");if(!G){return}G=h.parse(G);q=this.getType(z.attr("class"));B=z.attr("data-mce-style");if(!B){B=z.attr("style");if(B){B=p.dom.serializeStyle(p.dom.parseStyle(B,"img"))}}G.width=z.attr("width")||G.width;G.height=z.attr("height")||G.height;if(q.name==="Iframe"){x=new f("iframe",1);tinymce.each(b,function(n){var J=z.attr(n);if(n=="class"&&J){J=J.replace(/mceItem.+ ?/g,"")}if(J&&J.length>0){x.attr(n,J)}});for(I in G.params){x.attr(I,G.params[I])}x.attr({style:B,src:G.params.src});z.replace(x);return}if(this.editor.settings.media_use_script){x=new f("script",1).attr("type","text/javascript");y=new f("#text",3);y.value="write"+q.name+"("+h.serialize(tinymce.extend(G.params,{width:z.attr("width"),height:z.attr("height")}))+");";x.append(y);z.replace(x);return}if(q.name==="Video"&&G.video.sources[0]){C=new f("video",1).attr(tinymce.extend({id:z.attr("id"),width:e(z.attr("width")),height:e(z.attr("height")),style:B},G.video.attrs));if(G.video.attrs){l=G.video.attrs.poster}k=G.video.sources=c(G.video.sources);for(A=0;A'; - - h += ''); - - function get(id) { - return document.getElementById(id); - } - - function clone(obj) { - var i, len, copy, attr; - - if (null == obj || "object" != typeof obj) - return obj; - - // Handle Array - if ('length' in obj) { - copy = []; - - for (i = 0, len = obj.length; i < len; ++i) { - copy[i] = clone(obj[i]); - } - - return copy; - } - - // Handle Object - copy = {}; - for (attr in obj) { - if (obj.hasOwnProperty(attr)) - copy[attr] = clone(obj[attr]); - } - - return copy; - } - - function getVal(id) { - var elm = get(id); - - if (elm.nodeName == "SELECT") - return elm.options[elm.selectedIndex].value; - - if (elm.type == "checkbox") - return elm.checked; - - return elm.value; - } - - function setVal(id, value, name) { - if (typeof(value) != 'undefined' && value != null) { - var elm = get(id); - - if (elm.nodeName == "SELECT") - selectByValue(document.forms[0], id, value); - else if (elm.type == "checkbox") { - if (typeof(value) == 'string') { - value = value.toLowerCase(); - value = (!name && value === 'true') || (name && value === name.toLowerCase()); - } - elm.checked = !!value; - } else - elm.value = value; - } - } - - window.Media = { - init : function() { - var html, editor, self = this; - - self.editor = editor = tinyMCEPopup.editor; - - // Setup file browsers and color pickers - get('filebrowsercontainer').innerHTML = getBrowserHTML('filebrowser','src','media','media'); - get('qtsrcfilebrowsercontainer').innerHTML = getBrowserHTML('qtsrcfilebrowser','quicktime_qtsrc','media','media'); - get('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - get('video_altsource1_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource1','video_altsource1','media','media'); - get('video_altsource2_filebrowser').innerHTML = getBrowserHTML('video_filebrowser_altsource2','video_altsource2','media','media'); - get('audio_altsource1_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource1','audio_altsource1','media','media'); - get('audio_altsource2_filebrowser').innerHTML = getBrowserHTML('audio_filebrowser_altsource2','audio_altsource2','media','media'); - get('video_poster_filebrowser').innerHTML = getBrowserHTML('filebrowser_poster','video_poster','image','media'); - - html = self.getMediaListHTML('medialist', 'src', 'media', 'media'); - if (html == "") - get("linklistrow").style.display = 'none'; - else - get("linklistcontainer").innerHTML = html; - - if (isVisible('filebrowser')) - get('src').style.width = '230px'; - - if (isVisible('video_filebrowser_altsource1')) - get('video_altsource1').style.width = '220px'; - - if (isVisible('video_filebrowser_altsource2')) - get('video_altsource2').style.width = '220px'; - - if (isVisible('audio_filebrowser_altsource1')) - get('audio_altsource1').style.width = '220px'; - - if (isVisible('audio_filebrowser_altsource2')) - get('audio_altsource2').style.width = '220px'; - - if (isVisible('filebrowser_poster')) - get('video_poster').style.width = '220px'; - - editor.dom.setOuterHTML(get('media_type'), self.getMediaTypeHTML(editor)); - - self.setDefaultDialogSettings(editor); - self.data = clone(tinyMCEPopup.getWindowArg('data')); - self.dataToForm(); - self.preview(); - - updateColor('bgcolor_pick', 'bgcolor'); - }, - - insert : function() { - var editor = tinyMCEPopup.editor; - - this.formToData(); - editor.execCommand('mceRepaint'); - tinyMCEPopup.restoreSelection(); - editor.selection.setNode(editor.plugins.media.dataToImg(this.data)); - tinyMCEPopup.close(); - }, - - preview : function() { - get('prev').innerHTML = this.editor.plugins.media.dataToHtml(this.data, true); - }, - - moveStates : function(to_form, field) { - var data = this.data, editor = this.editor, - mediaPlugin = editor.plugins.media, ext, src, typeInfo, defaultStates, src; - - defaultStates = { - // QuickTime - quicktime_autoplay : true, - quicktime_controller : true, - - // Flash - flash_play : true, - flash_loop : true, - flash_menu : true, - - // WindowsMedia - windowsmedia_autostart : true, - windowsmedia_enablecontextmenu : true, - windowsmedia_invokeurls : true, - - // RealMedia - realmedia_autogotourl : true, - realmedia_imagestatus : true - }; - - function parseQueryParams(str) { - var out = {}; - - if (str) { - tinymce.each(str.split('&'), function(item) { - var parts = item.split('='); - - out[unescape(parts[0])] = unescape(parts[1]); - }); - } - - return out; - }; - - function setOptions(type, names) { - var i, name, formItemName, value, list; - - if (type == data.type || type == 'global') { - names = tinymce.explode(names); - for (i = 0; i < names.length; i++) { - name = names[i]; - formItemName = type == 'global' ? name : type + '_' + name; - - if (type == 'global') - list = data; - else if (type == 'video' || type == 'audio') { - list = data.video.attrs; - - if (!list && !to_form) - data.video.attrs = list = {}; - } else - list = data.params; - - if (list) { - if (to_form) { - setVal(formItemName, list[name], type == 'video' || type == 'audio' ? name : ''); - } else { - delete list[name]; - - value = getVal(formItemName); - if ((type == 'video' || type == 'audio') && value === true) - value = name; - - if (defaultStates[formItemName]) { - if (value !== defaultStates[formItemName]) { - value = "" + value; - list[name] = value; - } - } else if (value) { - value = "" + value; - list[name] = value; - } - } - } - } - } - } - - if (!to_form) { - data.type = get('media_type').options[get('media_type').selectedIndex].value; - data.width = getVal('width'); - data.height = getVal('height'); - - // Switch type based on extension - src = getVal('src'); - if (field == 'src') { - ext = src.replace(/^.*\.([^.]+)$/, '$1'); - if (typeInfo = mediaPlugin.getType(ext)) - data.type = typeInfo.name.toLowerCase(); - - setVal('media_type', data.type); - } - - if (data.type == "video" || data.type == "audio") { - if (!data.video.sources) - data.video.sources = []; - - data.video.sources[0] = {src: getVal('src')}; - } - } - - // Hide all fieldsets and show the one active - get('video_options').style.display = 'none'; - get('audio_options').style.display = 'none'; - get('flash_options').style.display = 'none'; - get('quicktime_options').style.display = 'none'; - get('shockwave_options').style.display = 'none'; - get('windowsmedia_options').style.display = 'none'; - get('realmedia_options').style.display = 'none'; - get('embeddedaudio_options').style.display = 'none'; - - if (get(data.type + '_options')) - get(data.type + '_options').style.display = 'block'; - - setVal('media_type', data.type); - - setOptions('flash', 'play,loop,menu,swliveconnect,quality,scale,salign,wmode,base,flashvars'); - setOptions('quicktime', 'loop,autoplay,cache,controller,correction,enablejavascript,kioskmode,autohref,playeveryframe,targetcache,scale,starttime,endtime,target,qtsrcchokespeed,volume,qtsrc'); - setOptions('shockwave', 'sound,progress,autostart,swliveconnect,swvolume,swstretchstyle,swstretchhalign,swstretchvalign'); - setOptions('windowsmedia', 'autostart,enabled,enablecontextmenu,fullscreen,invokeurls,mute,stretchtofit,windowlessvideo,balance,baseurl,captioningid,currentmarker,currentposition,defaultframe,playcount,rate,uimode,volume'); - setOptions('realmedia', 'autostart,loop,autogotourl,center,imagestatus,maintainaspect,nojava,prefetch,shuffle,console,controls,numloop,scriptcallbacks'); - setOptions('video', 'poster,autoplay,loop,muted,preload,controls'); - setOptions('audio', 'autoplay,loop,preload,controls'); - setOptions('embeddedaudio', 'autoplay,loop,controls'); - setOptions('global', 'id,name,vspace,hspace,bgcolor,align,width,height'); - - if (to_form) { - if (data.type == 'video') { - if (data.video.sources[0]) - setVal('src', data.video.sources[0].src); - - src = data.video.sources[1]; - if (src) - setVal('video_altsource1', src.src); - - src = data.video.sources[2]; - if (src) - setVal('video_altsource2', src.src); - } else if (data.type == 'audio') { - if (data.video.sources[0]) - setVal('src', data.video.sources[0].src); - - src = data.video.sources[1]; - if (src) - setVal('audio_altsource1', src.src); - - src = data.video.sources[2]; - if (src) - setVal('audio_altsource2', src.src); - } else { - // Check flash vars - if (data.type == 'flash') { - tinymce.each(editor.getParam('flash_video_player_flashvars', {url : '$url', poster : '$poster'}), function(value, name) { - if (value == '$url') - data.params.src = parseQueryParams(data.params.flashvars)[name] || data.params.src || ''; - }); - } - - setVal('src', data.params.src); - } - } else { - src = getVal("src"); - - // YouTube Embed - if (src.match(/youtube\.com\/embed\/\w+/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 350; - data.params.frameborder = '0'; - data.type = 'iframe'; - setVal('src', src); - setVal('media_type', data.type); - } else { - // YouTube *NEW* - if (src.match(/youtu\.be\/[a-z1-9.-_]+/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 350; - data.params.frameborder = '0'; - data.type = 'iframe'; - src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1]; - setVal('src', src); - setVal('media_type', data.type); - } - - // YouTube - if (src.match(/youtube\.com(.+)v=([^&]+)/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 350; - data.params.frameborder = '0'; - data.type = 'iframe'; - src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1]; - setVal('src', src); - setVal('media_type', data.type); - } - } - - // Google video - if (src.match(/video\.google\.com(.+)docid=([^&]+)/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 326; - data.type = 'flash'; - src = 'http://video.google.com/googleplayer.swf?docId=' + src.match(/docid=([^&]+)/)[1] + '&hl=en'; - setVal('src', src); - setVal('media_type', data.type); - } - - // Vimeo - if (src.match(/vimeo\.com\/([0-9]+)/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 350; - data.params.frameborder = '0'; - data.type = 'iframe'; - src = 'http://player.vimeo.com/video/' + src.match(/vimeo.com\/([0-9]+)/)[1]; - setVal('src', src); - setVal('media_type', data.type); - } - - // stream.cz - if (src.match(/stream\.cz\/((?!object).)*\/([0-9]+)/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 350; - data.params.frameborder = '0'; - data.type = 'iframe'; - src = 'http://www.stream.cz/object/' + src.match(/stream.cz\/[^/]+\/([0-9]+)/)[1]; - setVal('src', src); - setVal('media_type', data.type); - } - - // Google maps - if (src.match(/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/)) { - if(!data.width) data.width = 425; - if(!data.height) data.height = 350; - data.params.frameborder = '0'; - data.type = 'iframe'; - src = 'http://maps.google.com/maps/ms?msid=' + src.match(/msid=(.+)/)[1] + "&output=embed"; - setVal('src', src); - setVal('media_type', data.type); - } - - if (data.type == 'video') { - if (!data.video.sources) - data.video.sources = []; - - data.video.sources[0] = {src : src}; - - src = getVal("video_altsource1"); - if (src) - data.video.sources[1] = {src : src}; - - src = getVal("video_altsource2"); - if (src) - data.video.sources[2] = {src : src}; - } else if (data.type == 'audio') { - if (!data.video.sources) - data.video.sources = []; - - data.video.sources[0] = {src : src}; - - src = getVal("audio_altsource1"); - if (src) - data.video.sources[1] = {src : src}; - - src = getVal("audio_altsource2"); - if (src) - data.video.sources[2] = {src : src}; - } else - data.params.src = src; - - // Set default size - setVal('width', data.width || (data.type == 'audio' ? 300 : 320)); - setVal('height', data.height || (data.type == 'audio' ? 32 : 240)); - } - }, - - dataToForm : function() { - this.moveStates(true); - }, - - formToData : function(field) { - if (field == "width" || field == "height") - this.changeSize(field); - - if (field == 'source') { - this.moveStates(false, field); - setVal('source', this.editor.plugins.media.dataToHtml(this.data)); - this.panel = 'source'; - } else { - if (this.panel == 'source') { - this.data = clone(this.editor.plugins.media.htmlToData(getVal('source'))); - this.dataToForm(); - this.panel = ''; - } - - this.moveStates(false, field); - this.preview(); - } - }, - - beforeResize : function() { - this.width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10); - this.height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10); - }, - - changeSize : function(type) { - var width, height, scale, size; - - if (get('constrain').checked) { - width = parseInt(getVal('width') || (this.data.type == 'audio' ? "300" : "320"), 10); - height = parseInt(getVal('height') || (this.data.type == 'audio' ? "32" : "240"), 10); - - if (type == 'width') { - this.height = Math.round((width / this.width) * height); - setVal('height', this.height); - } else { - this.width = Math.round((height / this.height) * width); - setVal('width', this.width); - } - } - }, - - getMediaListHTML : function() { - if (typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length > 0) { - var html = ""; - - html += ''; - - return html; - } - - return ""; - }, - - getMediaTypeHTML : function(editor) { - function option(media_type, element) { - if (!editor.schema.getElementRule(element || media_type)) { - return ''; - } - - return '' - } - - var html = ""; - - html += ''; - return html; - }, - - setDefaultDialogSettings : function(editor) { - var defaultDialogSettings = editor.getParam("media_dialog_defaults", {}); - tinymce.each(defaultDialogSettings, function(v, k) { - setVal(k, v); - }); - } - }; - - tinyMCEPopup.requireLangPack(); - tinyMCEPopup.onInit.add(function() { - Media.init(); - }); -})(); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/bg_dlg.js deleted file mode 100644 index 0b16481f92..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.media_dlg',{list:"\u0421\u043f\u0438\u0441\u044a\u043a",file:"\u0424\u0430\u0439\u043b/URL",advanced:"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438",general:"\u041e\u0431\u0449\u0438",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043c\u0435\u0434\u0438\u044f","align_top_left":"\u0413\u043e\u0440\u0435 \u043b\u044f\u0432\u043e","align_center":"\u0426\u0435\u043d\u0442\u044a\u0440","align_left":"\u041b\u044f\u0432\u043e","align_bottom":"\u0414\u043e\u043b\u0443","align_right":"\u0414\u044f\u0441\u043d\u043e","align_top":"\u0413\u043e\u0440\u0435","qt_stream_warn":"\u041f\u043e\u0442\u043e\u0447\u043d\u0438\u0442\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u0438 \u0442\u0440\u044f\u0431\u0432\u0430 \u0434\u0430 \u0441\u0435 \u0434\u043e\u0431\u0430\u0432\u044f\u0442 \u0432 QT Src \u043f\u043e\u043b\u0435\u0442\u043e \u0432 \u0440\u0430\u0437\u0434\u0435\u043b\u0430 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438.\n\u0422\u0440\u044f\u0431\u0432\u0430 \u0441\u044a\u0449\u043e \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435 \u043f\u043e\u0442\u043e\u0447\u043d\u0430 \u0432\u0435\u0440\u0441\u0438\u044f \u0432 Src \u043f\u043e\u043b\u0435\u0442\u043e..",qtsrc:"QT \u0418\u0437\u0442\u043e\u0447\u043d\u0438\u043a",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 V-Align",swstretchhalign:"\u0420\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435 H-Align",swstretchstyle:"\u0421\u0442\u0438\u043b \u043d\u0430 \u0440\u0430\u0437\u043f\u044a\u0432\u0430\u043d\u0435",scriptcallbacks:"\u0421\u043a\u0440\u0438\u043f\u0442 \u043e\u0431\u0440\u0430\u0442\u043d\u0438 \u0438\u0437\u0432\u0438\u043a\u0432\u0430\u043d\u0438\u044f","align_top_right":"\u0413\u043e\u0440\u0435 \u0434\u044f\u0441\u043d\u043e",uimode:"UI \u0440\u0435\u0436\u0438\u043c",rate:"\u0411\u044a\u0440\u0437\u0438\u043d\u0430",playcount:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",defaultframe:"\u041d\u0430\u0447\u0430\u043b\u0435\u043d \u043a\u0430\u0434\u044a\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u041d\u0430\u0434\u043f\u0438\u0441\u0432\u0430\u043d\u0435 id",baseurl:"\u0411\u0430\u0437\u043e\u0432\u043e URL",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u0412\u0438\u0434\u0435\u043e \u0431\u0435\u0437 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446",stretchtofit:"\u0420\u0430\u0437\u043f\u044a\u043d\u0438",mute:"\u0417\u0430\u0433\u043b\u0443\u0448\u0438",invokeurls:"\u0418\u0437\u0432\u0438\u043a\u0430\u0439\u0442\u0435 URL-\u0442\u0430",fullscreen:"\u0426\u044f\u043b \u0435\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d",autostart:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",volume:"\u0421\u0438\u043b\u0430 \u043d\u0430 \u0437\u0432\u0443\u043a\u0430",target:"\u0426\u0435\u043b",qtsrcchokespeed:"\u041f\u0440\u0435\u0434\u0435\u043b\u043d\u0430 \u0441\u043a\u043e\u0440\u043e\u0441\u0442",href:"Href",endtime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u043a\u0440\u0430\u0439",starttime:"\u0412\u0440\u0435\u043c\u0435 \u0437\u0430 \u0441\u0442\u0430\u0440\u0442\u0438\u0440\u0430\u043d\u0435",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438 JavaScript",correction:"\u0411\u0435\u0437 \u043f\u043e\u043f\u0440\u0430\u0432\u043a\u0438",targetcache:"\u0426\u0435\u043b\u0435\u0432\u0438 \u043a\u0435\u0448",playeveryframe:"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u0439 \u0432\u0441\u0435\u043a\u0438 \u043a\u0430\u0434\u044a\u0440",kioskmode:"Kiosk \u0440\u0435\u0436\u0438\u043c",controller:"\u041a\u043e\u043d\u0442\u0440\u043e\u043b\u0435\u0440",menu:"\u041f\u043e\u043a\u0430\u0436\u0438 \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u0430\u0440\u044f\u0439",play:"\u0410\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u043d\u043e \u043f\u0443\u0441\u043a\u0430\u043d\u0435",hspace:"H-Space",vspace:"V-Space","class_name":"\u041a\u043b\u0430\u0441",name:"\u0418\u043c\u0435",id:"Id",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u0438",preview:"\u041f\u0440\u0435\u0433\u043b\u0435\u0434","constrain_proportions":"\u041e\u0433\u0440\u0430\u043d\u0438\u0447\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u0411\u0440\u043e\u0439 \u043f\u043e\u0432\u0442\u043e\u0440\u0435\u043d\u0438\u044f",console:"\u041a\u043e\u043d\u0437\u043e\u043b\u0430",cache:"\u041a\u0435\u0448",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"\u0424\u043b\u0430\u0448 \u043f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432\u0438",base:"\u041e\u0441\u043d\u043e\u0432\u0430",bgcolor:"\u0424\u043e\u043d",wmode:"WMode",salign:"SAlign",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",scale:"\u041f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u0438",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0420\u0430\u0437\u0431\u044a\u0440\u043a\u0430\u0439",prefetch:"\u0421\u0432\u0430\u043b\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e",nojava:"\u0411\u0435\u0437 JAVA",maintainaspect:"\u041f\u043e\u0434\u0434\u044a\u0440\u0436\u0430\u0439 \u0441\u044a\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435\u0442\u043e",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",center:"\u0426\u0435\u043d\u0442\u044a\u0440",autogotourl:"\u041e\u0442\u0438\u0434\u0438 \u043d\u0430 URL","shockwave_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Shockwave","rmp_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Real media player","wmp_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Windows media player","qt_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Quicktime","flash_options":"\u041e\u043f\u0446\u0438\u0438 \u0437\u0430 Flash",hidden:"\u0421\u043a\u0440\u0438\u0442","align_bottom_left":"\u0414\u043e\u043b\u0443 \u043b\u044f\u0432\u043e","align_bottom_right":"\u0414\u043e\u043b\u0443 \u0434\u044f\u0441\u043d\u043e",flash:"\u0424\u043b\u0430\u0448 \u0444\u0430\u0439\u043b",quicktime:"Quick Time","embedded_audio_options":"\u0412\u0433\u0440\u0430\u0434\u0435\u043d\u0438 \u0430\u0443\u0434\u0438\u043e \u043e\u043f\u0446\u0438\u0438",windowsmedia:"Windows Media Player",realmedia:"Real Media",shockwave:"Shockwave",audio:"\u0417\u0432\u0443\u043a",video:"\u0412\u0438\u0434\u0435\u043e","html5_video_options":"HTML5 \u0412\u0438\u0434\u0435\u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438",altsource1:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0442\u043e\u0447\u043d\u0438\u043a 1",altsource2:"\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0438\u0437\u0442\u043e\u0447\u043d\u0438\u043a 2",preload:"\u041f\u0440\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u043d\u0435",poster:"\u041f\u043b\u0430\u043a\u0430\u0442",source:"\u0418\u0437\u0442\u043e\u0447\u043d\u0438\u043a","html5_audio_options":"\u0410\u0443\u0434\u0438\u043e \u041e\u043f\u0446\u0438\u0438","preload_none":"\u041d\u0435 \u0437\u0430\u0440\u0435\u0436\u0434\u0430\u0439 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e","preload_metadata":"\u0417\u0430\u0440\u0435\u0434\u0438 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0432\u0438\u0435\u0434\u043e \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u0438\u0442\u0435","preload_auto":"\u041d\u0435\u043a\u0430 \u0431\u0440\u0430\u0443\u0437\u044a\u0440\u044a\u0442 \u043d\u0430 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u044f \u0440\u0435\u0448\u0438",iframe:"\u041b\u043e\u043a\u0430\u043b\u0435\u043d \u0444\u0440\u0435\u0439\u043c(iframe)",embeddedaudio:"\u0412\u0433\u0440\u0430\u0434\u0435\u043d\u043e \u0430\u0443\u0434\u0438\u043e"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/cs_dlg.js deleted file mode 100644 index b1268617fe..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.media_dlg',{list:"Seznam",file:"Soubor/URL",advanced:"Roz\u0161\u00ed\u0159en\u00e9",general:"Obecn\u00e9",title:"Vlo\u017eit/upravit vkl\u00e1dan\u00e1 m\u00e9dia","align_top_left":"Nahoru vlevo","align_center":"Na st\u0159ed","align_left":"Vlevo","align_bottom":"Dol\u016f","align_right":"Vpravo","align_top":"Nahoru","qt_stream_warn":"Streamovan\u00e9 rtsp zdroje mohou b\u00fdt p\u0159id\u00e1ny do pole \'Soubor/URL streamu pro QT\' na z\u00e1lo\u017ece \'Roz\u0161\u00ed\u0159en\u00e9\'.\nYM\u016f\u017eete tak\u00e9 p\u0159idat nestreamovanou verzi do pole \'Soubor/URL\'.",qtsrc:"Soubor/URL streamu pro QT",progress:"Pr\u016fb\u011bh",sound:"Zvuk",swstretchvalign:"Zarovn\u00e1n\u00ed vert. rozta\u017een\u00ed",swstretchhalign:"Zarovn\u00e1n\u00ed horiz. rozta\u017een\u00ed",swstretchstyle:"Styl rozta\u017een\u00ed",scriptcallbacks:"Skripty zp\u011btn\u00fdch vol\u00e1n\u00ed","align_top_right":"Nahoru vpravo",uimode:"Re\u017eim ovl\u00e1dac\u00edho panelu",rate:"Relativn\u00ed rychlost",playcount:"Po\u010det p\u0159ehr\u00e1n\u00ed",defaultframe:"V\u00fdchoz\u00ed sn\u00edmek",currentposition:"Aktu\u00e1ln\u00ed pozice",currentmarker:"Aktu\u00e1ln\u00ed z\u00e1lo\u017eka",captioningid:"ID popisku m\u00e9dia",baseurl:"Z\u00e1kladn\u00ed URL",balance:"Vyv\u00e1\u017een\u00ed",windowlessvideo:"Video bez okna",stretchtofit:"Rozt\u00e1hnout do okna",mute:"Ztlumit",invokeurls:"Po\u017eadovat URL",fullscreen:"Cel\u00e1 obrazovka",enabled:"Povolit ovl\u00e1dac\u00ed panel",autostart:"Automatick\u00e9 spu\u0161t\u011bn\u00ed",volume:"Hlasitost",target:"C\u00edl",qtsrcchokespeed:"Sn\u00ed\u017een\u00ed rychlosti",href:"Odkaz",endtime:"\u010cas ukon\u010den\u00ed",starttime:"Po\u010d\u00e1te\u010dn\u00ed \u010das",enablejavascript:"Povolit Javascript",correction:"Bez korekc\u00ed",targetcache:"C\u00edlov\u00e1 mezipam\u011b\u0165",playeveryframe:"P\u0159ehr\u00e1t ka\u017ed\u00fd sn\u00edmek",kioskmode:"Zak\u00e1zat ukl\u00e1d\u00e1n\u00ed",controller:"Ovl\u00e1dac\u00ed panel",menu:"Zobrazit nab\u00eddku",loop:"Opakov\u00e1n\u00ed",play:"Automatick\u00e9 p\u0159ehr\u00e1v\u00e1n\u00ed",hspace:"Horizont\u00e1ln\u00ed odsazen\u00ed",vspace:"Vertik\u00e1ln\u00ed odsazen\u00ed","class_name":"T\u0159\u00edda",name:"N\u00e1zev",id:"ID",type:"Typ",size:"Rozm\u011bry",preview:"N\u00e1hled","constrain_proportions":"Zachovat proporce",controls:"Ovl\u00e1dac\u00ed panel",numloop:"Po\u010det opakov\u00e1n\u00ed",console:"Konzola",cache:"Mezipam\u011b\u0165",autohref:"Automatick\u00e9 na\u010dten\u00ed",liveconnect:"Spustit Javu (SWLiveConnect)",flashvars:"Parametry (Flashvars)",base:"Z\u00e1kladn\u00ed slo\u017eka",bgcolor:"Pozad\u00ed",wmode:"Re\u017eim okna",salign:"Zarovn\u00e1n\u00ed okna",align:"Zarovn\u00e1n\u00ed",scale:"Pom\u011br",quality:"Kvalita",shuffle:"N\u00e1hodn\u011b",prefetch:"P\u0159edna\u010dten\u00ed",nojava:"Nespout\u011bt Javu",maintainaspect:"Zachovat pom\u011br stran",imagestatus:"Stav obrazu",center:"Na st\u0159ed",autogotourl:"Automatick\u00fd p\u0159echod na URL","shockwave_options":"Mo\u017enosti Shockwave","rmp_options":"Mo\u017enosti p\u0159ehr\u00e1va\u010de Real media","wmp_options":"Mo\u017enosti p\u0159ehr\u00e1va\u010de Windows media","qt_options":"Mo\u017enosti Quicktime","flash_options":"Mo\u017enosti Flashe",hidden:"Skr\u00fdt","align_bottom_left":"Dol\u016f vlevo","align_bottom_right":"Dol\u016f vpravo",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Volby vlo\u017een\u00e9ho audio souboru",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Mo\u017enosti HTML5 video",altsource1:"Alternativn\u00ed zdroj 1",altsource2:"Alternativn\u00ed zdroj 2",preload:"P\u0159edna\u010d\u00edst",poster:"Obr\u00e1zek (zobraz\u00ed se p\u0159i nedostupnosti videa)",source:"Zdroj","html5_audio_options":"Parametry zvuku","preload_none":"Nena\u010d\u00edtat p\u0159edem","preload_metadata":"Na\u010d\u00edst video metadata p\u0159edem","preload_auto":"Ur\u010d\u00ed prohl\u00ed\u017ee\u010d",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/da_dlg.js deleted file mode 100644 index d9a88d1fa5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avanceret",general:"Generelt",title:"Inds\u00e6t/rediger indlejret mediefil","align_top_left":"\u00d8verste venstre hj\u00f8rne","align_center":"Centreret","align_left":"Venstre","align_bottom":"Bund","align_right":"H\u00f8jret","align_top":"Top","qt_stream_warn":"Streamede rtsp resourcer skal tilf\u00f8jes til QT Src feltet under tabben avanceret.\nDu skal ogs\u00e5 tilf\u00f8je en ikke streamet version til Src feltet..",qtsrc:"QT Src",progress:"Fremskridt",sound:"Lyd",swstretchvalign:"Str\u00e6k V-justering",swstretchhalign:"Str\u00e6k H-justering",swstretchstyle:"Str\u00e6k stil",scriptcallbacks:"Script callbacks","align_top_right":"\u00d8verste h\u00f8jre hj\u00f8rne",uimode:"UI-tilstand",rate:"Vurder",playcount:"Afspil indhold",defaultframe:"Standard ramme",currentposition:"Aktuel position",currentmarker:"Aktuel mark\u00f8r",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Vinduesl\u00f8s video",stretchtofit:"Str\u00e6k for at tilpasse",mute:"Lydl\u00f8s",invokeurls:"Aktiver URL\'er",fullscreen:"Fuldsk\u00e6rm",enabled:"Valgt",autostart:"Afspil automatisk",volume:"Lydstyrke",target:"M\u00e5l",qtsrcchokespeed:"Choke-hastighed",href:"Href",endtime:"Sluttidspunkt",starttime:"Starttidspunkt",enablejavascript:"Tillad JavaScript",correction:"Ingen korrektion",targetcache:"M\u00e5l-cache",playeveryframe:"Afsplil alle rammer",kioskmode:"Kiosk-tilstand",controller:"Controller",menu:"Vis menu",loop:"Gentag",play:"Start",hspace:"H-afstand",vspace:"V-afstand","class_name":"Klasse",name:"Navn",id:"Id",type:"Type",size:"Dimensioner",preview:"Vis udskrift","constrain_proportions":"Bevar proportioner",controls:"Kontroller",numloop:"Antal loops",console:"Konsol",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Baggrund",wmode:"WMode",salign:"SAlign",align:"Juster",scale:"Skaler",quality:"Kvalitet",shuffle:"Bland",prefetch:"Forh\u00e5ndshent",nojava:"Ingen java",maintainaspect:"Bevar aspekt",imagestatus:"Billedstatus",center:"Center",autogotourl:"Auto g\u00e5 til URL","shockwave_options":"Shockwave options","rmp_options":"Real media player egenskaber","wmp_options":"Windows media player egenskaber","qt_options":"Quicktime egenskaber","flash_options":"Flash egenskaber",hidden:"Skjul","align_bottom_left":"Nederste venstre hj\u00f8rne","align_bottom_right":"\u00d8verste h\u00f8jre hj\u00f8rne",flash:"Flash",quicktime:"Quicktime","embedded_audio_options":"Indstillinger for indlejret audio",windowsmedia:"Windows Media",realmedia:"Realmedia",shockwave:"Shockwave",audio:"Lyd",video:"Video","html5_video_options":"HTML5 Video Indstillinger",altsource1:"Alternativ kilde 1",altsource2:"Alternativ kilde 2",preload:"Forudindl\u00e6s",poster:"Poster",source:"Kilde","html5_audio_options":"Audio indstillinger","preload_none":"Preindl\u00e6s ikke","preload_metadata":"Preindl\u00e6s video metadata","preload_auto":"Lad brugerens browser v\u00e6lge",iframe:"iframe",embeddedaudio:"Indlejret lyd"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/de_dlg.js deleted file mode 100644 index e64e083f3b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.media_dlg',{list:"Liste",file:"Datei/URL",advanced:"Erweitert",general:"Allgemein",title:"Multimedia-Inhalte einf\u00fcgen/bearbeiten","align_top_left":"Oben Links","align_center":"Zentriert","align_left":"Links","align_bottom":"Unten","align_right":"Rechts","align_top":"Oben","qt_stream_warn":"In den Erweiterten Einstellungen sollten im Feld \'QT Src\' gestreamte RTSP Resourcen hinzugef\u00fcgt werden.\nZus\u00e4tzlich sollte dort auch eine nicht-gestreamte Resource angegeben werden.",qtsrc:"Angabe zu QT Src",progress:"Fortschritt",sound:"Ton",swstretchvalign:"Stretch V-Ausrichtung",swstretchhalign:"Stretch H-Ausrichtung",swstretchstyle:"Stretch-Art",scriptcallbacks:"Script callbacks","align_top_right":"Oben Rechts",uimode:"UI Modus",rate:"Rate",playcount:"Z\u00e4hler",defaultframe:"Frame-Voreinstellung",currentposition:"Aktuelle Position",currentmarker:"Aktueller Marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Fensterloses Video",stretchtofit:"Anzeigefl\u00e4che an verf\u00fcgbaren Platz anpassen",mute:"Stumm",invokeurls:"Invoke URLs",fullscreen:"Vollbild",enabled:"Aktiviert",autostart:"Autostart",volume:"Lautst\u00e4rke",target:"Ziel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Endzeitpunkt",starttime:"Startzeitpunkt",enablejavascript:"JavaScript aktivieren",correction:"Ohne Korrektur",targetcache:"Ziel zwischenspeichern",playeveryframe:"Jeden Frame abspielen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Men\u00fc anzeigen",loop:"Wiederholung",play:"Automatisches Abspielen",hspace:"Horizontaler Abstand",vspace:"Vertikaler Abstand","class_name":"CSS-Klasse",name:"Name",id:"Id",type:"Typ",size:"Abmessungen",preview:"Vorschau","constrain_proportions":"Proportionen erhalten",controls:"Steuerung",numloop:"Anzahl Wiederholungen",console:"Konsole",cache:"Zwischenspeicher",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvariablen",base:"Base",bgcolor:"Hintergrund",wmode:"WMode",salign:"S-Ausrichtung",align:"Ausrichtung",scale:"Skalierung",quality:"Qualit\u00e4t",shuffle:"Zuf\u00e4llige Wiedergabe",prefetch:"Prefetch",nojava:"Kein Java",maintainaspect:"Bildverh\u00e4ltnis beibehalten",imagestatus:"Bildstatus",center:"Zentriert",autogotourl:"Auto goto URL","shockwave_options":"Shockwave-Optionen","rmp_options":"Optionen f\u00fcr Real Media Player","wmp_options":"Optionen f\u00fcr Windows Media Player","qt_options":"Quicktime-Optionen","flash_options":"Flash-Optionen",hidden:"Versteckt","align_bottom_left":"Unten Links","align_bottom_right":"Unten Rechts",flash:"Flash",quicktime:"QuickTime","embedded_audio_options":"Integrierte Audio Optionen",windowsmedia:"WindowsMedia",realmedia:"RealMedia",shockwave:"ShockWave",audio:"Audio",video:"Video","html5_video_options":"HTML5 Video Optionen",altsource1:"Alternative Quelle 1",altsource2:"Alternative Quelle 2",preload:"Preload",poster:"Poster",source:"Quelle","html5_audio_options":"Audio Optionen","preload_none":"Nicht vorladen","preload_metadata":"Video Metadaten vorladen","preload_auto":"Benutzer Browser entscheidet automatisch",iframe:"iFrame",embeddedaudio:"Audio (eingebunden)"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/en_dlg.js deleted file mode 100644 index ecef3a8013..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide", "embedded_audio_options":"Embedded Audio Options", video:"HTML5 Video", audio:"HTML5 Audio", flash:"Flash", quicktime:"QuickTime", shockwave:"Shockwave", windowsmedia:"Windows Media", realmedia:"Real Media", iframe:"Iframe", embeddedaudio:"Embedded Audio" }); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/es_dlg.js deleted file mode 100644 index 4d84bb156b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.media_dlg',{list:"Lista",file:"Archivo/URL",advanced:"Avanzado",general:"General",title:"Insertar/editar medio embebido","align_top_left":"Arriba Izda.","align_center":"Centrado","align_left":"Izquierda","align_bottom":"Debajo","align_right":"Derecha","align_top":"Arriba","qt_stream_warn":"Los recursos rtsp de Streaming deber\u00edan a\u00f1adirse en el campo QT Src de la pesta\u00f1a avanzada.\nAdem\u00e1s deber\u00eda a\u00f1adir una versi\u00f3n no Streaming en el campo Src.",qtsrc:"QT Src",progress:"Progreso",sound:"Sonido",swstretchvalign:"Alin. V. Estiramiento",swstretchhalign:"Alin. H. Estiramiento",swstretchstyle:"Estilo estiramiento",scriptcallbacks:"Script callbacks","align_top_right":"Arriba Dcha.",uimode:"Modo UI",rate:"Ratio",playcount:"Cuantas reproducciones",defaultframe:"Frame predet.",currentposition:"Posici\u00f3n actual",currentmarker:"Marcador actual",captioningid:"Captioning id",baseurl:"URL Base",balance:"Balance",windowlessvideo:"Video sin ventana",stretchtofit:"Estirar para ajustar",mute:"Silencio",invokeurls:"Invocar URLs",fullscreen:"Pantalla Completa",enabled:"Habilitado",autostart:"Comienzo Autom\u00e1tico",volume:"Volumen",target:"Target",qtsrcchokespeed:"Vel. de choque",href:"Href",endtime:"Fin",starttime:"Inicio",enablejavascript:"Habilitar JavaScript",correction:"Sin correci\u00f3n",targetcache:"Cach\u00e9 de destino",playeveryframe:"Reproducir todo los frames",kioskmode:"Modo Kiosko",controller:"Controlador",menu:"Mostrar Men\u00fa",loop:"Repetitivo",play:"Comienzo Autom\u00e1tico",hspace:"H-Space",vspace:"V-Space","class_name":"Clase",name:"Nombre",id:"Id",type:"Tipo",size:"Dimensiones",preview:"Vista Previa","constrain_proportions":"Bloquear relaci\u00f3n de aspecto",controls:"Controles",numloop:"N\u00fam. repeticiones",console:"Consola",cache:"Cach\u00e9",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variables de flash",base:"Base",bgcolor:"Fondo",wmode:"WMode",salign:"SAlign",align:"Alineaci\u00f3n",scale:"Escalar",quality:"Calidad",shuffle:"Aleatorio",prefetch:"Preb\u00fasqueda",nojava:"Sin java",maintainaspect:"Mantener aspecto",imagestatus:"Estado de imagen",center:"Centrado",autogotourl:"Ir a URL autom\u00e1t.","shockwave_options":"Opciones Shockwave","rmp_options":"Opciones Real media player","wmp_options":"Opciones Windows media player","qt_options":"Opciones Quicktime","flash_options":"Opciones Flash",hidden:"Oculto","align_bottom_left":"Debajo Izda.","align_bottom_right":"Debajo Dcha.",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opciones sobre Audio incrustado",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opciones Video HTML5",altsource1:"Fuente alternativa 1",altsource2:"Fuente alternativa 2",preload:"Precarga",poster:"P\u00f3ster",source:"Fuente","html5_audio_options":"Opciones de audio","preload_none":"No recargar","preload_metadata":"Metadatos de la precarga de v\u00eddeo","preload_auto":"Permitir que decida el navegador del usuario",iframe:"iframe",embeddedaudio:"audio incrustado"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fa_dlg.js deleted file mode 100644 index 13ac8b4f74..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.media_dlg',{list:"\u0644\u06cc\u0633\u062a",file:"\u0641\u0627\u06cc\u0644/\u0622\u062f\u0631\u0633 \u0648\u0628",advanced:"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647",general:"\u0639\u0645\u0648\u0645\u06cc",title:"\u062f\u0631\u062c / \u0648\u06cc\u0631\u0627\u06cc\u0634 \u0631\u0633\u0627\u0646\u0647 \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647 (Embeded Media)","align_top_left":"\u0628\u0627\u0644\u0627 \u0686\u067e","align_center":"\u0648\u0633\u0637","align_left":"\u0686\u067e","align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","align_right":"\u0631\u0627\u0633\u062a","align_top":"\u0628\u0627\u0644\u0627","qt_stream_warn":"\u0645\u0646\u0627\u0628\u0639 Streamed rtsp \u0628\u0627\u06cc\u062f \u062f\u0631 \u0628\u0631\u06af\u0647 (Tab) \u067e\u06cc\u0634\u0631\u0641\u062a\u0647 \u062f\u0631 \u0641\u06cc\u0644\u062f \u0645\u0646\u0628\u0639 QT \u0627\u0636\u0627\u0641\u0647 \u0634\u0648\u062f.\n\u0634\u0645\u0627 \u0628\u0627\u06cc\u062f \u0647\u0645\u0686\u0646\u06cc\u0646 \u06cc\u06a9 \u0646\u0633\u062e\u0647 \u063a\u06cc\u0631 streamed \u0631\u0627 \u062f\u0631 \u0641\u06cc\u0644\u062f \u0645\u0646\u0628\u0639 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f..",qtsrc:"\u0645\u0646\u0628\u0639 QT",progress:"\u067e\u06cc\u0634\u0631\u0641\u062a",sound:"\u0635\u062f\u0627",swstretchvalign:"\u06a9\u0634\u06cc\u062f\u0646 \u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc",swstretchhalign:"\u06a9\u0634\u06cc\u062f\u0646 \u062a\u0631\u0627\u0632 \u0627\u0641\u0642\u06cc",swstretchstyle:"\u06a9\u0634\u06cc\u062f\u0646 \u0627\u0633\u062a\u0627\u06cc\u0644",scriptcallbacks:"\u0627\u0633\u06a9\u0631\u06cc\u067e\u062a Callbacks","align_top_right":"\u0628\u0627\u0644\u0627 \u0631\u0627\u0633\u062a",uimode:"\u062d\u0627\u0644\u062a UI",rate:"\u0646\u0631\u062e",playcount:"\u062a\u0639\u062f\u0627\u062f \u067e\u062e\u0634",defaultframe:"\u0641\u0631\u06cc\u0645 \u067e\u06cc\u0634\u0641\u0631\u0636",currentposition:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0641\u0639\u0644\u06cc",currentmarker:"\u0646\u0634\u0627\u0646\u06af\u0631 \u0641\u0639\u0644\u06cc",captioningid:"\u0634\u0646\u0627\u0633\u0647 \u0639\u0646\u0648\u0627\u0646",baseurl:"\u0622\u062f\u0631\u0633 \u067e\u0627\u06cc\u0647",balance:"\u062a\u0648\u0627\u0632\u0646 (Balance)",windowlessvideo:"\u0648\u06cc\u062f\u0626\u0648\u06cc \u0628\u062f\u0648\u0646 \u067e\u0646\u062c\u0631\u0647",stretchtofit:"\u06a9\u0634\u06cc\u062f\u0646 \u062c\u0647\u062a \u06af\u0646\u062c\u0627\u0646\u062f\u0646 \u06a9\u0627\u0645\u0644",mute:"\u0628\u06cc \u0635\u062f\u0627",invokeurls:"\u0641\u0631\u0627\u062e\u0648\u0627\u0646\u06cc \u0622\u062f\u0631\u0633 \u0647\u0627",fullscreen:"\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647",enabled:"\u0641\u0639\u0627\u0644 \u0634\u062f\u0647",autostart:"\u0634\u0631\u0648\u0639 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",volume:"\u0628\u0644\u0646\u062f\u06cc \u0635\u062f\u0627",target:"\u0645\u0642\u0635\u062f (Target)",qtsrcchokespeed:"\u0633\u0631\u0639\u062a Choke",href:"HREF",endtime:"\u0632\u0645\u0627\u0646 \u067e\u0627\u06cc\u0627\u0646",starttime:"\u0632\u0645\u0627\u0646 \u0634\u0631\u0648\u0639",enablejavascript:"\u0641\u0639\u0627\u0644 \u0628\u0648\u062f\u0646 JavaScript",correction:"\u0628\u062f\u0648\u0646 \u062a\u0635\u062d\u06cc\u062d",targetcache:"\u06a9\u0634 \u0645\u0642\u0635\u062f (Target Cache)",playeveryframe:"\u067e\u062e\u0634 \u0647\u0631 \u0641\u0631\u06cc\u0645 (Frame)",kioskmode:"\u062d\u0627\u0644\u062a \u06a9\u06cc\u0648\u0633\u06a9",controller:"\u06a9\u0646\u062a\u0631\u0644 \u06a9\u0646\u0646\u062f\u0647",menu:"\u0646\u0645\u0627\u06cc\u0634 \u0645\u0646\u0648",loop:"\u062d\u0644\u0642\u0647 (Loop)",play:"\u067e\u062e\u0634 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",hspace:"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc",vspace:"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc","class_name":"\u06a9\u0644\u0627\u0633",name:"\u0646\u0627\u0645",id:"\u0634\u0646\u0627\u0633\u0647",type:"\u0646\u0648\u0639",size:"\u0627\u0628\u0639\u0627\u062f",preview:"\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634","constrain_proportions":"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628",controls:"\u06a9\u0646\u062a\u0631\u0644 \u0647\u0627",numloop:"\u062a\u0639\u062f\u0627\u062f \u062d\u0644\u0642\u0647 \u0647\u0627",console:"\u06a9\u0646\u0633\u0648\u0644",cache:"\u06a9\u0634",autohref:"HREF \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9",liveconnect:"\u0627\u0631\u062a\u0628\u0627\u0637 SWLive",flashvars:"\u0645\u062a\u063a\u06cc\u0631\u0647\u0627\u06cc Flash",base:"\u067e\u0627\u06cc\u0647 (Base)",bgcolor:"\u067e\u0633 \u0632\u0645\u06cc\u0646\u0647",wmode:"WMode",salign:"SAlign",align:"\u062a\u0631\u0627\u0632",scale:"\u0645\u0642\u06cc\u0627\u0633",quality:"\u06a9\u06cc\u0641\u06cc\u062a",shuffle:"\u062f\u0631 \u0647\u0645 \u0622\u0645\u06cc\u062e\u062a\u0647",prefetch:"\u067e\u06cc\u0634 \u0648\u0627\u06a9\u0634\u06cc",nojava:"\u0628\u062f\u0648\u0646 java",maintainaspect:"\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628 \u0648\u062c\u0648\u0647",imagestatus:"\u0648\u0636\u0639\u06cc\u062a \u062a\u0635\u0648\u06cc\u0631",center:"\u0648\u0633\u0637",autogotourl:"\u0631\u0641\u062a\u0646 \u0627\u062a\u0648\u0645\u0627\u062a\u06cc\u06a9 \u0628\u0647 URL","shockwave_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Shockwave","rmp_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Real media player","wmp_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Windows media player","qt_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Quicktime","flash_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a Flash",hidden:"\u0645\u062e\u0641\u06cc","align_bottom_left":"\u067e\u0627\u06cc\u06cc\u0646 \u0686\u067e","align_bottom_right":"\u067e\u0627\u06cc\u06cc\u0646 \u0631\u0627\u0633\u062a",flash:"flash",quicktime:"quicktime","embedded_audio_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0635\u062f\u0627\u06cc \u062c\u0627\u0633\u0627\u0632\u06cc \u0634\u062f\u0647",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"\u0635\u062f\u0627",video:"\u0648\u06cc\u062f\u0626\u0648","html5_video_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0648\u06cc\u062f\u0626\u0648\u06cc HTML5",altsource1:"\u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 1",altsource2:"\u0645\u0646\u0628\u0639 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 2",preload:"\u067e\u06cc\u0634\u200c \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc",poster:"\u067e\u0648\u0633\u062a\u0631",source:"\u0645\u0646\u0628\u0639","html5_audio_options":"\u062a\u0646\u0638\u06cc\u0645\u0627\u062a \u0635\u062f\u0627","preload_none":"\u067e\u06cc\u0634 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u0646\u06a9\u0646","preload_metadata":" \u067e\u06cc\u0634 \u0628\u0627\u0631\u06af\u06cc\u0631\u06cc \u062f\u0627\u062f\u0647 \u0647\u0627\u06cc \u0648\u06cc\u062f\u0626\u0648\u06cc\u06cc","preload_auto":"\u062a\u0635\u0645\u06cc\u0645 \u0628\u0627 \u0645\u0631\u0648\u0631\u06af\u0631 \u06a9\u0627\u0631\u0628\u0631",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fi_dlg.js deleted file mode 100644 index 2ac2fcac13..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.media_dlg',{list:"Lista",file:"Tiedosto/URL",advanced:"Edistyneet",general:"Yleiset",title:"Lis\u00e4\u00e4/muokkaa upotettua mediaa","align_top_left":"Yl\u00e4-vasemmalla","align_center":"Keskell\u00e4","align_left":"Vasemmalla","align_bottom":"Alhaalla","align_right":"Oikealla","align_top":"Ylh\u00e4\u00e4ll\u00e4","qt_stream_warn":"Streamatut rtsp-resurssit tulisi lis\u00e4t\u00e4 QT Src -kentt\u00e4\u00e4n edistynyt-v\u00e4lilehdelle.\nSinun kannattaa lis\u00e4t\u00e4 my\u00f6s ei-streamattu versio Src-kentt\u00e4\u00e4n.",qtsrc:"QT Src",progress:"Eteneminen",sound:"\u00c4\u00e4ni",swstretchvalign:"Venyt\u00e4 pystysuunnassa",swstretchhalign:"Venyt\u00e4 vaakasuunnassa",swstretchstyle:"Venytystyyli",scriptcallbacks:"Skriptin takaisinkutsut","align_top_right":"Yl\u00e4-oikealla",uimode:"UI-moodi",rate:"Rate",playcount:"Toistolaskin",defaultframe:"Oletusruutu",currentposition:"T\u00e4m\u00e4nhetkinen sijainti",currentmarker:"T\u00e4m\u00e4nhetkinen merkki",captioningid:"Otsikointi-id",baseurl:"Perus URL-osoitteet",balance:"Tasapaino",windowlessvideo:"Ikkunaton video",stretchtofit:"Venyt\u00e4 sopimaan",mute:"Hiljennys",invokeurls:"Kutsu URL-osoitteet",fullscreen:"Kokoruutu",enabled:"P\u00e4\u00e4ll\u00e4",autostart:"Automaattinen aloitus",volume:"\u00c4\u00e4nen voimakkuus",target:"Kohde",qtsrcchokespeed:"Choke-nopeus",href:"Href",endtime:"Lopetusaika",starttime:"Aloitusaika",enablejavascript:"Salli JavaScript",correction:"Ei korjausta",targetcache:"Kohteen v\u00e4limuisti",playeveryframe:"Toista jokainen ruutu",kioskmode:"Kioskitila",controller:"Ohjain",menu:"N\u00e4yt\u00e4 valikko",loop:"Silmukka",play:"Automaattinen toisto",hspace:"Vaakatason tila",vspace:"Pystytason tila","class_name":"Luokka",name:"Nimi",id:"Tunniste",type:"Tyyppi",size:"Mitat",preview:"Esikatselu","constrain_proportions":"S\u00e4ilyt\u00e4 mittasuhteet",controls:"Kontrollit",numloop:"Toistojen m\u00e4\u00e4r\u00e4",console:"Konsoli",cache:"V\u00e4limuisti",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-muuttujat",base:"Perusta",bgcolor:"Tausta",wmode:"WMode",salign:"SAlign",align:"Tasaus",scale:"Skaala",quality:"Laatu",shuffle:"Sekoita",prefetch:"Esinouda",nojava:"Ei Javaa",maintainaspect:"S\u00e4ilyt\u00e4 kuvasuhde",imagestatus:"Kuvan tila",center:"Keskit\u00e4",autogotourl:"Mene automaattisesti URL:iin","shockwave_options":"Shockwaven asetukset","rmp_options":"Real media playerin asetukset","wmp_options":"Windows media playerin asetukset","qt_options":"Quicktimen asetukset","flash_options":"Flashin asetukset",hidden:"Piilotettu","align_bottom_left":"Ala-vasemmalla","align_bottom_right":"Ala-oikealla",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Upotetun \u00e4\u00e4nen asetukset",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"HTML5 videoasetukset",altsource1:"Vaihtoehtoinen l\u00e4hde 1",altsource2:"Vaihtoehtoinen l\u00e4hde 2",preload:"Esilataa",poster:"Posteri",source:"L\u00e4hde","html5_audio_options":"\u00c4\u00e4niasetukset","preload_none":"\u00c4l\u00e4 esilataa","preload_metadata":"Esilataa videon metatiedot","preload_auto":"Anna k\u00e4ytt\u00e4j\u00e4n selaimen p\u00e4\u00e4tt\u00e4\u00e4",iframe:"iframe",embeddedaudio:"upotettu audio"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fr_dlg.js deleted file mode 100644 index 90b0102dd3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.media_dlg',{list:"Liste",file:"Fichier / URL",advanced:"Avanc\u00e9",general:"G\u00e9n\u00e9ral",title:"Ins\u00e9rer / \u00e9diter un fichier m\u00e9dia","align_top_left":"En haut \u00e0 gauche","align_center":"Centr\u00e9","align_left":"Gauche","align_bottom":"Bas","align_right":"Droite","align_top":"Haut","qt_stream_warn":"Les ressources rtsp en streaming doivent \u00eatre ajout\u00e9es au champ \u00ab Source QT \u00bb dans l\'onglet avanc\u00e9.\nVous devriez aussi ajouter une version n\'\u00e9tant pas en streaming au champ \u00ab source QT \u00bb.",qtsrc:"Source QT",progress:"Progression",sound:"Son",swstretchvalign:"Stretch vertical",swstretchhalign:"Stretch horizontal",swstretchstyle:"Stretch style",scriptcallbacks:"Callback de script","align_top_right":"En haut \u00e0 droite",uimode:"Mode UI",rate:"Taux",playcount:"Compteur",defaultframe:"Image par d\u00e9faut",currentposition:"Position actuelle",currentmarker:"Marqueur actuel",captioningid:"ID sous-titrage",baseurl:"Adresse de base",balance:"Balance",windowlessvideo:"Vid\u00e9o sans fen\u00eatre",stretchtofit:"\u00c9tendre pour adapter la taille",mute:"Muet",invokeurls:"Invoquer URLs",fullscreen:"Plein \u00e9cran",enabled:"Activ\u00e9",autostart:"Lire automatiquement",volume:"Volume",target:"Cible",qtsrcchokespeed:"D\u00e9bit maximum",href:"Href",endtime:"Fin",starttime:"D\u00e9but",enablejavascript:"Activer le JavaScript",correction:"Pas de correction",targetcache:"Cache cible",playeveryframe:"Jouer toutes les images",kioskmode:"Mode kiosque",controller:"Contr\u00f4leur",menu:"Afficher le menu",loop:"Lire en boucle",play:"Lecture automatique",hspace:"Espacement horizontal",vspace:"Espacement vertical","class_name":"Classe",name:"Nom",id:"Id",type:"Type",size:"Dimensions",preview:"Pr\u00e9visualisation","constrain_proportions":"Conserver les proportions",controls:"Contr\u00f4les",numloop:"Nombre de tours",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variables flash",base:"Base",bgcolor:"Fond",wmode:"WMode",salign:"SAlign",align:"Alignement",scale:"\u00c9chelle",quality:"Qualit\u00e9",shuffle:"Al\u00e9atoire",prefetch:"Pr\u00e9chargement",nojava:"Pas java",maintainaspect:"Maintenir l\'aspect",imagestatus:"Statut de l\'image",center:"Centrer",autogotourl:"Aller automatiquement \u00e0 l\'URL","shockwave_options":"Options Shockwave","rmp_options":"Options Real media player","wmp_options":"Windows media player options","qt_options":"Options Quicktime","flash_options":"Options Flash",hidden:"Cach\u00e9","align_bottom_left":"En bas \u00e0 gauche","align_bottom_right":"En bas \u00e0 droite",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Options audio int\u00e9gr\u00e9es",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"vid\u00e9o","html5_video_options":"Options Vid\u00e9o HTML 5",altsource1:"Source alternative 1",altsource2:"Source alternative 2",preload:"Pr\u00e9chargement",poster:"Poster",source:"Source","html5_audio_options":"Options audio","preload_none":"Ne pas pr\u00e9charger","preload_metadata":"Pr\u00e9charger les m\u00e9tadonn\u00e9es vid\u00e9o","preload_auto":"Laisser le fureteur de l\'utilisateur d\u00e9cider",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/he_dlg.js deleted file mode 100644 index 4bd005821b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.media_dlg',{list:"\u05e8\u05e9\u05d9\u05de\u05d4",file:"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d5\u05d1\u05e5",advanced:"\u05de\u05ea\u05e7\u05d3\u05dd",general:"\u05db\u05dc\u05dc\u05d9",title:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05e8\u05d8\u05d5\u05df","align_top_left":"\u05e9\u05de\u05d0\u05dc \u05dc\u05de\u05e2\u05dc\u05d4","align_center":"\u05de\u05e8\u05db\u05d6","align_left":"\u05dc\u05e9\u05de\u05d0\u05dc","align_bottom":"\u05dc\u05de\u05d8\u05d4","align_right":"\u05d9\u05de\u05d9\u05df","align_top":"\u05dc\u05de\u05e2\u05dc\u05d4","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"\u05d4\u05ea\u05e7\u05d3\u05de\u05d5\u05ea",sound:"\u05e6\u05dc\u05d9\u05dc",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"\u05d9\u05de\u05d9\u05df \u05dc\u05de\u05e2\u05dc\u05d4",uimode:"\u05de\u05e6\u05d1 \u05ea\u05e6\u05d5\u05d2\u05d4",rate:"\u05e7\u05e6\u05d1",playcount:"\u05de\u05e1\u05e4\u05e8 \u05d4\u05e9\u05de\u05e2\u05d5\u05ea",defaultframe:"\u05e4\u05e8\u05d9\u05d9\u05dd \u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc",currentposition:"\u05de\u05d9\u05e7\u05d5\u05dd \u05e0\u05d5\u05db\u05d7\u05d9",currentmarker:"\u05e1\u05de\u05df \u05e0\u05d5\u05db\u05d7\u05d9",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"\u05de\u05ea\u05d7 \u05dc\u05d4\u05ea\u05d0\u05de\u05d4",mute:"\u05d4\u05e9\u05ea\u05e7",invokeurls:"Invoke URLs",fullscreen:"\u05de\u05e1\u05da \u05de\u05dc\u05d0",enabled:"\u05de\u05d5\u05e4\u05e2\u05dc",autostart:"\u05d4\u05ea\u05d7\u05dc \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea",volume:"\u05e2\u05d5\u05e6\u05de\u05d4",target:"\u05de\u05d8\u05e8\u05d4",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"\u05d6\u05de\u05df \u05e1\u05d9\u05d5\u05dd",starttime:"\u05d6\u05de\u05df \u05d4\u05ea\u05d7\u05dc\u05d4",enablejavascript:"\u05d0\u05e4\u05e9\u05e8 JavaScript",correction:"\u05dc\u05dc\u05d0 \u05ea\u05d9\u05e7\u05d5\u05df",targetcache:"Target cache",playeveryframe:"\u05e0\u05d2\u05df \u05db\u05dc \u05e4\u05e8\u05d9\u05d9\u05dd",kioskmode:"Kiosk mode",controller:"Controller",menu:"\u05d4\u05e6\u05d2\u05ea \u05ea\u05e4\u05e8\u05d9\u05d8",loop:"\u05e0\u05d2\u05d9\u05e0\u05d4 \u05de\u05d7\u05d6\u05d5\u05e8\u05d9\u05ea",play:"\u05e0\u05d2\u05d9\u05e0\u05d4 \u05d0\u05d5\u05d8\u05d5\u05de\u05d8\u05d9\u05ea \u05e2\u05dd \u05d4\u05d8\u05e2\u05d9\u05e0\u05d4",hspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9",vspace:"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9","class_name":"\u05de\u05d7\u05dc\u05e7\u05d4",name:"\u05e9\u05dd",id:"Id",type:"\u05e1\u05d5\u05d2",size:"\u05e8\u05d5\u05d7\u05d1 \u05d5\u05d2\u05d5\u05d1\u05d4",preview:"\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4","constrain_proportions":"\u05e9\u05de\u05d5\u05e8 \u05e2\u05dc \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"\u05de\u05e7\u05d5\u05e8",bgcolor:"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2",wmode:"WMode",salign:"SAlign",align:"\u05d9\u05d9\u05e9\u05d5\u05e8",scale:"Scale",quality:"\u05d0\u05d9\u05db\u05d5\u05ea \u05d4\u05e1\u05e8\u05d8\u05d5\u05df",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Image status",center:"\u05de\u05e8\u05db\u05d6",autogotourl:"Auto goto URL","shockwave_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea Shockwave","rmp_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e0\u05d2\u05df Real Media","wmp_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05de\u05d3\u05d9\u05d4 \u05e4\u05dc\u05d9\u05d9\u05e8","qt_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea Quicktime","flash_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05e4\u05dc\u05d0\u05e9",hidden:"Hidden","align_bottom_left":"\u05dc\u05de\u05d8\u05d4 \u05de\u05e9\u05de\u05d0\u05dc","align_bottom_right":"\u05dc\u05de\u05d8\u05d4 \u05de\u05d9\u05de\u05d9\u05df",flash:"Flash",quicktime:"quicktime","embedded_audio_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d0\u05d5\u05d3\u05d9\u05d5 \u05de\u05e9\u05d5\u05dc\u05d1",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d5\u05d9\u05d3\u05d0\u05d5 HTML5",altsource1:"\u05de\u05e7\u05d5\u05e8 \u05d7\u05dc\u05d5\u05e4\u05d9 1",altsource2:"\u05de\u05e7\u05d5\u05e8 \u05d7\u05dc\u05d5\u05e4\u05d9 2",preload:"Preload",poster:"\u05e4\u05d5\u05e1\u05d8\u05e8",source:"\u05de\u05e7\u05d5\u05e8","html5_audio_options":"\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05d0\u05d5\u05d3\u05d9\u05d5","preload_none":"Don\'t Preload","preload_metadata":"\u05d8\u05e2\u05df \u05de\u05d8\u05d4-\u05d8\u05d0\u05d2 \u05dc\u05d5\u05d5\u05d9\u05d3\u05d0\u05d5","preload_auto":"\u05d0\u05ea\u05df \u05dc\u05d3\u05e4\u05d3\u05e4\u05df \u05dc\u05d1\u05d7\u05d5\u05e8",iframe:"iframe",embeddedaudio:"embeddedaudio "}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/it_dlg.js deleted file mode 100644 index f335edebb3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.media_dlg',{list:"Lista",file:"File/URL",advanced:"Avanzate",general:"Generale",title:"Inserisci/modifica file multimediale","align_top_left":"Alto a sinistra","align_center":"Centro","align_left":"Sinistra","align_bottom":"Basso","align_right":"Destra","align_top":"Alto","qt_stream_warn":"Le risorse rstp \'streamed\' devono essere aggiunte al campo Sorgente QT nella tabella Avanzate.\nSi dovrebbe inserire anche una versione non \'streamed\' al campo Sorgente..",qtsrc:"Sorgente QT",progress:"Avanzamento",sound:"Suono",swstretchvalign:"Tratto V-Allineamento",swstretchhalign:"Tratto H-Allineamento",swstretchstyle:"Stile Tratto",scriptcallbacks:"Script richiamato","align_top_right":"Alto a destra",uimode:"Modalit\u00e0 Interfaccia Utente",rate:"Qualit\u00e0",playcount:"Conteggio esecuzione",defaultframe:"Frame predefinito",currentposition:"Posizione corrente",currentmarker:"Indicatore corrente",captioningid:"Didascalia dell\'Id",baseurl:"URL base",balance:"Bilanciamento",windowlessvideo:"Video senza finestra",stretchtofit:"Adatta dimensioni",mute:"Muto",invokeurls:"Invoca URLs",fullscreen:"Tutto schermo",enabled:"Abilitato",autostart:"Avvio automatico",volume:"Volume",target:"Target",qtsrcchokespeed:"Velocit\u00e0 cursore",href:"Href",endtime:"Ora fine",starttime:"Ora inizio",enablejavascript:"Abilita JavaScript",correction:"Nessuna Correzione",targetcache:"Cache del target",playeveryframe:"Esegui ogni frame",kioskmode:"Modalit\u00e0 Kiosk",controller:"Controller",menu:"Mostra menu",loop:"Riproduzione ciclica",play:"Esecuzione automatica",hspace:"H-Spazio",vspace:"V-Spazio","class_name":"Classe",name:"Nome",id:"Id",type:"Tipo",size:"Dimensioni",preview:"Anteprima","constrain_proportions":"Mantieni Proporzioni",controls:"Controlli",numloop:"Numero Cicli",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Sfondo",wmode:"WMode",salign:"SAlign",align:"Allineamento",scale:"Scala",quality:"Qualit\u00e0",shuffle:"Shuffle",prefetch:"Precaricamento",nojava:"No java",maintainaspect:"Mantieni Aspetto",imagestatus:"Stato Immagine",center:"Centra",autogotourl:"Vai a URL automatico","shockwave_options":"Opzioni Shockwave","rmp_options":"Opzioni Real media player","wmp_options":"Opzioni Windows media player","qt_options":"Opzioni Quicktime","flash_options":"Opzioni Flash",hidden:"Nascosto","align_bottom_left":"Basso a Sinistra","align_bottom_right":"Basso a Destra",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opzioni Audio Embedded",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opzioni Video HTML5",altsource1:"Sorgente alternativa 1",altsource2:"Sorgente alternativa 2",preload:"Precarica",poster:"Poster",source:"Sorgente","html5_audio_options":"Opzioni Audio","preload_none":"Non Precaricare","preload_metadata":"Precarica i metadati video","preload_auto":"Lascia decidere al browser dell\'utente",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/ja_dlg.js deleted file mode 100644 index 9752ca22e5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.media_dlg',{list:"\u4e00\u89a7",file:"\u30d5\u30a1\u30a4\u30eb\u3084URL",advanced:"\u8a73\u7d30",general:"\u4e00\u822c",title:"\u57cb\u3081\u8fbc\u307f\u30e1\u30c7\u30a3\u30a2\u306e\u633f\u5165\u3084\u7de8\u96c6","align_top_left":"\u5de6\u4e0a","align_center":"\u4e2d\u592e","align_left":"\u5de6","align_bottom":"\u4e0b","align_right":"\u53f3","align_top":"\u4e0a","qt_stream_warn":"RTSP\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u30ea\u30bd\u30fc\u30b9\u3092\u300c\u9ad8\u5ea6\u300d\u306e\u30bf\u30d6\u306e\u300cQT\u306e\u30bd\u30fc\u30b9\u300d\u6b04\u306b\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002\n\u307e\u305f\u3001\u300c\u30bd\u30fc\u30b9\u300d\u6b04\u306b\u306f\u30b9\u30c8\u30ea\u30fc\u30df\u30f3\u30b0\u3067\u306f\u306a\u3044\u30d0\u30fc\u30b8\u30e7\u30fc\u30f3\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002",qtsrc:"QT\u306e\u30bd\u30fc\u30b9",progress:"\u9032\u5c55",sound:"\u30b5\u30a6\u30f3\u30c9",swstretchvalign:"\u5782\u76f4\u306e\u914d\u7f6e",swstretchhalign:"\u6c34\u5e73\u306e\u914d\u7f6e",swstretchstyle:"\u4f38\u7e2e\u306e\u30b9\u30bf\u30a4\u30eb",scriptcallbacks:"\u30b9\u30af\u30ea\u30d7\u30c8\u306e\u30b3\u30fc\u30eb\u30d0\u30c3\u30af","align_top_right":"\u53f3\u4e0a",uimode:"UI\u3092\u8868\u793a\u3059\u308b\u30e2\u30fc\u30c9",rate:"\u518d\u751f\u30ec\u30fc\u30c8",playcount:"\u518d\u751f\u56de\u6570",defaultframe:"\u521d\u671f\u72b6\u614b\u306e\u30d5\u30ec\u30fc\u30e0",currentposition:"\u518d\u751f\u4f4d\u7f6e(\u79d2\u5358\u4f4d)",currentmarker:"\u30de\u30fc\u30ab\u30fc\u756a\u53f7",captioningid:"\u30ad\u30e3\u30d7\u30b7\u30e7\u30f3\u8868\u793a\u8981\u7d20ID",baseurl:"\u57fa\u6e96\u306eURL",balance:"\u30b9\u30c6\u30ec\u30aa\u306e\u30d0\u30e9\u30f3\u30b9",windowlessvideo:"\u30a6\u30a3\u30f3\u30c9\u30a6\u306a\u3057\u306e\u52d5\u753b",stretchtofit:"\u5408\u308f\u305b\u3066\u62e1\u5927",mute:"\u6d88\u97f3",invokeurls:"URL\u3092\u958b\u304f",fullscreen:"\u5168\u753b\u9762",enabled:"\u6709\u52b9",autostart:"\u81ea\u52d5\u518d\u751f",volume:"\u97f3\u91cf",target:"\u30bf\u30fc\u30b2\u30c3\u30c8",qtsrcchokespeed:"\u518d\u751f\u30c7\u30fc\u30bf\u30ec\u30fc\u30c8",href:"\u30ea\u30f3\u30af\u5148URL",endtime:"\u7d42\u4e86\u6642\u9593",starttime:"\u958b\u59cb\u6642\u9593",enablejavascript:"JavaScript\u3092\u6709\u52b9",correction:"\u8a02\u6b63\u306a\u3057",targetcache:"\u30bf\u30fc\u30b2\u30c3\u30c8\u3092\u30ad\u30e3\u30c3\u30b7\u30e5",playeveryframe:"\u3059\u3079\u3066\u306e\u30d5\u30ec\u30fc\u30e0\u3092\u518d\u751f",kioskmode:"Kiosk\u30e2\u30fc\u30c9",controller:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u8868\u793a",menu:"\u30e1\u30cb\u30e5\u30fc\u3092\u8868\u793a",loop:"\u7e70\u308a\u8fd4\u3057",play:"\u81ea\u52d5\u518d\u751f",hspace:"\u5de6\u53f3\u306e\u4f59\u767d",vspace:"\u4e0a\u4e0b\u306e\u4f59\u767d","class_name":"\u30af\u30e9\u30b9",name:"\u540d\u524d",id:"ID",type:"\u30bf\u30a4\u30d7",size:"\u5bf8\u6cd5",preview:"\u30d7\u30ec\u30d3\u30e5\u30fc","constrain_proportions":"\u7e26\u6a2a\u6bd4\u3092\u7dad\u6301",controls:"\u30b3\u30f3\u30c8\u30ed\u30fc\u30e9\u306e\u8868\u793a",numloop:"\u7e70\u308a\u8fd4\u3057\u306e\u56de\u6570",console:"\u30b3\u30f3\u30bd\u30fc\u30eb",cache:"\u30ad\u30e3\u30c3\u30b7\u30e5",autohref:"\u81ea\u52d5\u8aad\u8fbc",liveconnect:"SWLiveConnect\u5c5e\u6027",flashvars:"Flash Vars",base:"Base",bgcolor:"\u80cc\u666f\u8272",wmode:"WMode",salign:"SAlign",align:"\u914d\u7f6e",scale:"\u4f38\u7e2e",quality:"\u54c1\u8cea",shuffle:"\u30b7\u30e3\u30c3\u30d5\u30eb",prefetch:"\u5148\u8aad\u307f",nojava:"Java\u3092\u7981\u6b62",maintainaspect:"\u7e26\u6a2a\u6bd4\u306e\u7dad\u6301",imagestatus:"\u753b\u50cf\u306e\u72b6\u614b",center:"\u4e2d\u592e\u63c3\u3048",autogotourl:"URL\u306b\u81ea\u52d5\u79fb\u52d5","shockwave_options":"Shockwave\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","rmp_options":"Real media player\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","wmp_options":"Windows media player\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","qt_options":"Quicktime\u306e\u30aa\u30d7\u30b7\u30e7\u30f3","flash_options":"Flash\u306e\u30aa\u30d7\u30b7\u30e7\u30f3",hidden:"\u975e\u8868\u793a","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b",flash:"flash",quicktime:"quicktime","embedded_audio_options":"\u57cb\u3081\u8fbc\u307fAudio\u306e\u30aa\u30d7\u30b7\u30e7\u30f3",windowsmedia:"Windows\u30e1\u30c7\u30a3\u30a2",realmedia:"realmedia",shockwave:"shockwave",audio:"\u30aa\u30fc\u30c7\u30a3\u30aa",video:"\u52d5\u753b","html5_video_options":"HTML5 Video\u306e\u30aa\u30d7\u30b7\u30e7\u30f3",altsource1:"\u4ee3\u66ff\u30bd\u30fc\u30b91",altsource2:"\u4ee3\u66ff\u30bd\u30fc\u30b92",preload:"preload\u5c5e\u6027",poster:"poster\u5c5e\u6027",source:"HTML","html5_audio_options":"Audio \u30aa\u30d7\u30b7\u30e7\u30f3","preload_none":"\u5148\u8aad\u307f\u3057\u306a\u3044","preload_metadata":"\u52d5\u753b\u306e\u30e1\u30bf\u30c7\u30fc\u30bf\u3092\u5148\u8aad\u307f","preload_auto":"\u30e6\u30fc\u30b6\u30fc\u306e\u30d6\u30e9\u30a6\u30b6\u30fc\u306b\u5f93\u3046",iframe:"iframe",embeddedaudio:"\u57cb\u3081\u8fbc\u307f\u97f3\u58f0"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/nl_dlg.js deleted file mode 100644 index 68ae6b0088..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.media_dlg',{list:"Lijst",file:"Bestand/URL",advanced:"Geavanceerd",general:"Algemeen",title:"Media invoegen/bewerken","align_top_left":"Linksboven","align_center":"Centreren","align_left":"Links","align_bottom":"Onder","align_right":"Rechts","align_top":"Boven","qt_stream_warn":"Gestreamde RTSP bronnen dienen op het tabblad geavanceerd bij Quicktime bron te worden opgegeven.\nDe niet-gestreamde versie kan dan bij het tabblad algemeen worden opgegeven.",qtsrc:"Quicktime bron",progress:"Voortgang",sound:"Geluid",swstretchvalign:"V-Schaal",swstretchhalign:"H-Schaal",swstretchstyle:"Schaal",scriptcallbacks:"Script callbacks","align_top_right":"Rechtsboven",uimode:"UI Modus",rate:"Snelheid",playcount:"Afspeelteller",defaultframe:"Standaard frame",currentposition:"Huidige positie",currentmarker:"Huidige markering",captioningid:"Ondertiteling id",baseurl:"Basis URL",balance:"Balans",windowlessvideo:"Video zonder venster",stretchtofit:"Passend maken",mute:"Dempen",invokeurls:"URLs laden",fullscreen:"Volledig scherm",enabled:"Ingeschakeld",autostart:"Automatisch afspelen",volume:"Volume",target:"Doel",qtsrcchokespeed:"Chokesnelheid",href:"Href",endtime:"Eindtijd",starttime:"Starttijd",enablejavascript:"JavaScript Inschakelen",correction:"Geen correctie",targetcache:"Doelcache",playeveryframe:"Elk frame afspelen",kioskmode:"Kioskmodus",controller:"Controller",menu:"Menu weergeven",loop:"Herhalen",play:"Automatisch afspelen",hspace:"H-Ruimte",vspace:"V-Ruimte","class_name":"Klasse",name:"Naam",id:"Id",type:"Type",size:"Afmetingen",preview:"Voorbeeld","constrain_proportions":"Verhouding bewaren",controls:"Bediening",numloop:"Aantal herhalingen",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Variabelen",base:"Basis",bgcolor:"Achtergrond",wmode:"WMode",salign:"Schaaluitlijning",align:"Uitlijning",scale:"Schaal",quality:"Kwaliteit",shuffle:"Willekeurige volgorde",prefetch:"Voorladen",nojava:"Geen Java",maintainaspect:"Verhouding bewaren",imagestatus:"Afbeeldingstatus",center:"Centreren",autogotourl:"Automatisch naar URL","shockwave_options":"Shockwave opties","rmp_options":"Real Media Player Opties","wmp_options":"Windows Media Player Opties","qt_options":"Quicktime opties","flash_options":"Flash opties",hidden:"Verborgen","align_bottom_left":"Linksonder","align_bottom_right":"Rechtsonder",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Ge\u00efntegreerd Geluid Opties",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"geluid",video:"video","html5_video_options":"HTML5 Video Opties",altsource1:"Alternatieve bron 1",altsource2:"Alternatieve bron 2",preload:"Voorladen",poster:"Poster",source:"Bron","html5_audio_options":"Audio Opties","preload_none":"Niet voorladen","preload_metadata":"Video metadata voorladen","preload_auto":"Laat browser beslissen",iframe:"iframe",embeddedaudio:"ge\u00efntegreerd geluid"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/nn_dlg.js deleted file mode 100644 index dc37b11bc1..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.media_dlg',{list:"Liste",file:"Fil/URL",advanced:"Avansert",general:"Generelt",title:"Set inn / rediger inkludert objekt","align_top_left":"Topp venstre","align_center":"Midt","align_left":"Venstre","align_bottom":"Botn","align_right":"H\u00f8gre","align_top":"Topp","qt_stream_warn":"Streama rtsp-ressursar b\u00f8r leggsst til QT Src field i avansert-fana.\nDu b\u00f8r ogs\u00e5 leggje til ein ikkje-streama versjon i src field",qtsrc:"QT Src",progress:"Framdrift",sound:"Lyd",swstretchvalign:"Strekk V-justering",swstretchhalign:"Strekk H-justering",swstretchstyle:"Strekkstil",scriptcallbacks:"Skript-referanser","align_top_right":"Top h\u00f8gre",uimode:"UI-modus",rate:"Rate",playcount:"Tellar",defaultframe:"Standardramme",currentposition:"Aktiv posisjon",currentmarker:"Aktiv mark\u00f8r",captioningid:"Fange opp id",baseurl:"Base URL",balance:"Balanse",windowlessvideo:"Video utan vindauge",stretchtofit:"Strekk for \u00e5 passe inn",mute:"Demp",invokeurls:"Aktiviser URL-ar",fullscreen:"Fullskjerm",enabled:"K\u00f8yrbar",autostart:"Autostart",volume:"Volum",target:"M\u00e5l",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Stopptid",starttime:"Starttid",enablejavascript:"Tillat Javaskript",correction:"Ingen korreksjon",targetcache:"M\u00e5l-cache",playeveryframe:"Spel kvar ramme",kioskmode:"Kiosk-modus",controller:"Kontroller",menu:"Vis meny",loop:"Lykkje",play:"Autostart",hspace:"Horisontal avstand",vspace:"Vertikal avstand","class_name":"Klasse",name:"Namn",id:"Id",type:"Type",size:"Storleik",preview:"Sj\u00e5 f\u00f8rebels utkast","constrain_proportions":"Behald proporsjonar",controls:"Kontroller",numloop:"Antal gjennoml\u00f8p",console:"Konsoll",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash-variablar",base:"Base",bgcolor:"Bakgrunn",wmode:"W-modus",salign:"S-justering",align:"Justering",scale:"Skalering",quality:"Kvalitet",shuffle:"Miks",prefetch:"Registrer p\u00e5 f\u00f8rehand",nojava:"Ikke Java",maintainaspect:"Behald proporsjonar",imagestatus:"Status for bilete",center:"Midtstill",autogotourl:"Auto-g\u00e5-til-URL","shockwave_options":"Shockwave-innstillinger","rmp_options":"Real mediaplayer-innstillingar","wmp_options":"Windows mediaplayer-innstillingar","qt_options":"Quicktime-innstillingar","flash_options":"Flash-eigenskapar",hidden:"Skjult","align_bottom_left":"Botn venste","align_bottom_right":"Botn h\u00f8gre","embedded_audio_options":"Embedded Audio Options","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",flash:"",quicktime:"",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"",iframe:"",embeddedaudio:""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/pl_dlg.js deleted file mode 100644 index 9e054b21da..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.media_dlg',{list:"Lista",file:"Plik/URL",advanced:"Zaawansowane",general:"G\u0142\u00f3wne",title:"Wstaw/Edytuj wbudowane media","align_top_left":"G\u00f3rny lewy","align_center":"\u015arodek","align_left":"Lewo","align_bottom":"D\u00f3\u0142","align_right":"Prawo","align_top":"G\u00f3ra","qt_stream_warn":"Emitowane \u017ar\u00f3d\u0142a rtsp powinny by\u0107 dodane do pola QT Src w zak\u0142adce zaawansowane.nPowiniene\u015b r\u00f3wnie\u017c doda\u0107 niestrumieniow\u0105 wersj\u0119 do pola Src.",qtsrc:"QT Src",progress:"Post\u0119p",sound:"D\u017awi\u0119k",swstretchvalign:"Wyr\u00f3wnaj w pionie",swstretchhalign:"Wyr\u00f3wnaj w poziomie",swstretchstyle:"Styl rozci\u0105gania",scriptcallbacks:"Funkcje zwrotne skryptu","align_top_right":"G\u00f3rny prawy",uimode:"Tryb UI",rate:"Tempo",playcount:"Ilo\u015b\u0107 odtworze\u0144",defaultframe:"Domy\u015blna ramka",currentposition:"Aktualna pozycja",currentmarker:"Aktualny znacznik",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balans",windowlessvideo:"Wideo bez okienka",stretchtofit:"Rozci\u0105gnij aby dopasowa\u0107",mute:"Wycisz",invokeurls:"Odwo\u0142aj si\u0119 do URLi",fullscreen:"Pe\u0142ny ekran",enabled:"Aktywny",autostart:"Auto start",volume:"G\u0142o\u015bno\u015b\u0107",target:"Cel",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Ko\u0144cowy czas",starttime:"Pocz\u0105tkowy czas",enablejavascript:"W\u0142\u0105cz JavaScript",correction:"Bez korekcji",targetcache:"Target cache",playeveryframe:"Odtwarzaj ka\u017cd\u0105 ramk\u0119",kioskmode:"Tryb kiosku",controller:"Kontroler",menu:"Poka\u017c menu",loop:"Zap\u0119tlenie",play:"Autoodtwarzanie",hspace:"H-Space",vspace:"V-Space","class_name":"Klasa",name:"Nazwa",id:"Id",type:"Typ",size:"Wymiary",preview:"Podgl\u0105d","constrain_proportions":"Zachowaj proporcje",controls:"Controls",numloop:"Liczba powt\u00f3rze\u0144",console:"Konsola",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Baza",bgcolor:"T\u0142o",wmode:"WMode",salign:"SAlign",align:"Wyr\u00f3wnaj",scale:"Skala",quality:"Jako\u015b\u0107",shuffle:"Losuj",prefetch:"Prze\u0142aduj",nojava:"Bez javy",maintainaspect:"Utrzymaj aspekt",imagestatus:"Obraz statusu",center:"Wy\u015brodkuj",autogotourl:"Automatycznie przejd\u017a pod adres","shockwave_options":"Opcje Shockwave","rmp_options":"Opcje Real media player","wmp_options":"Opcje Windows media player","qt_options":"Opcje Quicktime","flash_options":"Opcje flasha",hidden:"Ukryty","align_bottom_left":"Dolny lewy","align_bottom_right":"Dolny prawy",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Opcje Embedded Audio",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockwave",audio:"audio",video:"video","html5_video_options":"Opcje HTML5 Video",altsource1:"Alternatywne \u017ar\u00f3d\u0142o 1",altsource2:"Alternatywne \u017ar\u00f3d\u0142o 2",preload:"Prze\u0142aduj",poster:"Obraz",source:"\u0179r\u00f3d\u0142o","html5_audio_options":"Opcje audio","preload_none":"Nie \u0142\u0105duj wst\u0119pnie","preload_metadata":"\u0141aduj wst\u0119pnie metadane video","preload_auto":"Pozw\u00f3l zdecydowa\u0107 przegl\u0105darce u\u017cytkownika",iframe:"iframe",embeddedaudio:"embeddedaudio"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/pt_dlg.js deleted file mode 100644 index f578cd750f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.media_dlg',{list:"Lista",file:"Arquivo/URL",advanced:"Avan\u00e7ado",general:"Geral",title:"Inserir/Editar m\u00eddia embutida","align_top_left":"Topo esquerda","align_center":"Centro","align_left":"Esquerda","align_bottom":"Abaixo","align_right":"Direita","align_top":"Topo","qt_stream_warn":"Fluxos de recursos RTSP devem ser acrescentados ao campo QT Src no Modo Avan\u00e7ado.\nUma vers\u00e3o sem fluxo tamb\u00e9m deve ser acrescentada ao campo Src.",qtsrc:"QT Src",progress:"Progresso",sound:"Som",swstretchvalign:"For\u00e7ar V-Alinhamento",swstretchhalign:"For\u00e7ar H-Alinhamento",swstretchstyle:"For\u00e7ar Estilo",scriptcallbacks:"Retornos de chamada de script","align_top_right":"Topo direita",uimode:"Modo UI",rate:"Taxa",playcount:"Contagem de ouvintes",defaultframe:"Frame padr\u00e3o",currentposition:"Posi\u00e7\u00e3o atual",currentmarker:"Marcador atual",captioningid:"Id de legenda",baseurl:"URL Base",balance:"Stereo",windowlessvideo:"V\u00eddeo sem janela",stretchtofit:"Estender",mute:"Mudo",invokeurls:"Chamar URLs",fullscreen:"Tela inteira",enabled:"Ativado",autostart:"Execu\u00e7\u00e3o autom\u00e1tica",volume:"Volume",target:"Alvo",qtsrcchokespeed:"Diminuir Velocidade",href:"Link",endtime:"Hora do fim",starttime:"Hora de in\u00edcio",enablejavascript:"Permitir JavaScript",correction:"Sem correc\u00e7\u00f5es",targetcache:"Cache alvo",playeveryframe:"Executar todas as frames",kioskmode:"Modo Kiosk",controller:"Controlador",menu:"Mostrar menu",loop:"Repeti\u00e7\u00e3o autom\u00e1tica",play:"Execu\u00e7\u00e3o autom\u00e1tica",hspace:"Espa\u00e7o horizontal",vspace:"Espa\u00e7o vertical","class_name":"Classe",name:"Nome",id:"ID",type:"Tipo",size:"Dimens\u00f5es",preview:"Previs\u00e3o","constrain_proportions":"Manter propor\u00e7\u00f5es",controls:"Controles",numloop:"Repeti\u00e7\u00f5es",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Fundo",wmode:"WMode",salign:"SAlign",align:"Alinhamento",scale:"Escala",quality:"Qualidade",shuffle:"Aleat\u00f3rio",prefetch:"Pr\u00e9-buscar",nojava:"Sem Java",maintainaspect:"Manter aspecto",imagestatus:"Status da imagem",center:"Centro",autogotourl:"Auto abrir URL","shockwave_options":"Op\u00e7\u00f5es Shockwave","rmp_options":"Op\u00e7\u00f5es Real Media Player","wmp_options":"Op\u00e7\u00f5es Windows Media Player","qt_options":"Op\u00e7\u00f5es Quicktime","flash_options":"Op\u00e7\u00f5es Flash",hidden:"Oculto","align_bottom_left":"Abaixo esquerda","align_bottom_right":"Abaixo direita",flash:"flash",quicktime:"quicktime","embedded_audio_options":"Op\u00e7\u00f5es de \u00c1udio Embutido",windowsmedia:"windowsmedia",realmedia:"realmedia",shockwave:"shockware",audio:"\u00e1udio",video:"v\u00eddeo","html5_video_options":"Op\u00e7\u00f5es de v\u00eddeo HTML5",altsource1:"C\u00f3digo alternativo 1",altsource2:"C\u00f3digo alternativo 2",preload:"Pr\u00e9-carregar",poster:"Poster",source:"Fonte","html5_audio_options":"Op\u00e7\u00f5es de Audio","preload_none":"N\u00e3o Pr\u00e9-carregar","preload_metadata":"Pr\u00e9-carregar metadata de v\u00eddeo","preload_auto":"Deixar que navegador do usu\u00e1rio decida",iframe:"iframe",embeddedaudio:"\u00e1udio embutido"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/ru_dlg.js deleted file mode 100644 index fbb186b9ba..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.media_dlg',{list:"\u0421\u043f\u0438\u0441\u043e\u043a",file:"\u0410\u0434\u0440\u0435\u0441",advanced:"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e",general:"\u041e\u0431\u0449\u0435\u0435",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u043a\u043b\u0438\u043f\u0430","align_top_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_center":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","qt_stream_warn":"\u041f\u043e\u0442\u043e\u043a\u043e\u0432\u044b\u0435 rtsp \u0440\u0435\u0441\u0443\u0440\u0441\u044b \u0434\u043e\u043b\u0436\u043d\u044b \u0431\u044b\u0442\u044c \u0432 \u043f\u043e\u043b\u0435 QT Src.",qtsrc:"QT Src",progress:"\u041f\u0440\u043e\u0433\u0440\u0435\u0441\u0441",sound:"\u0417\u0432\u0443\u043a",swstretchvalign:"\u0412\u0435\u0440. \u0432\u044b\u0440-\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u044f",swstretchhalign:"\u0413\u043e\u0440. \u0432\u044b\u0440-\u0435 \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u044f",swstretchstyle:"\u0421\u0442\u0438\u043b\u044c \u0440\u0430\u0441\u0442\u044f\u0436\u0435\u043d\u0438\u0435",scriptcallbacks:"\u041f\u043e\u0434\u0434\u0435\u0440\u0436\u043a\u0430 \u0441\u043a\u0440\u0438\u043f\u0442\u0430","align_top_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",uimode:"\u0420\u0435\u0436\u0438\u043c \u0438\u043d\u0442\u0435\u0440\u0444\u0435\u0439\u0441\u0430",rate:"\u0420\u0435\u0439\u0442\u0438\u043d\u0433",playcount:"\u0429\u0435\u0442\u0447\u0438\u043a \u0432\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0434\u0435\u043d\u0438\u0439",defaultframe:"\u041e\u0441\u043d\u043e\u0432\u043d\u043e\u0439 \u043a\u0430\u0434\u0440",currentposition:"\u0422\u0435\u043a\u0443\u0449\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f",currentmarker:"\u0422\u0435\u043a\u0443\u0449\u0438\u0439 \u043c\u0430\u0440\u043a\u0435\u0440",captioningid:"\u0418\u043c\u044f \u0441\u0443\u0431\u0442\u0438\u0442\u0440\u043e\u0432",baseurl:"\u0411\u0430\u0437\u043e\u0440\u0432\u044b\u0439 \u0430\u0434\u0440\u0435\u0441",balance:"\u0411\u0430\u043b\u0430\u043d\u0441",windowlessvideo:"\u041e\u043a\u043e\u043d\u043d\u043e\u0435 \u0432\u0438\u0434\u0435\u043e",stretchtofit:"\u041f\u043e\u0434 \u0440\u0430\u0437\u043c\u0435\u0440 \u043e\u043a\u043d\u0430",mute:"\u0411\u0435\u0437 \u0437\u0432\u0443\u043a\u0430",invokeurls:"\u0412\u044b\u0437\u0432\u0430\u0442\u044c \u0430\u0434\u0440\u0435\u0441",fullscreen:"\u041d\u0430 \u0432\u0435\u0441\u044c \u044d\u043a\u0440\u0430\u043d",enabled:"\u0412\u043a\u043b\u044e\u0447\u0435\u043d\u043e",autostart:"\u0410\u0432\u0442\u043e\u0437\u0430\u043f\u0443\u0441\u043a",volume:"\u0413\u0440\u043e\u043c\u043a\u043e\u0441\u0442\u044c",target:"\u0426\u0435\u043b\u044c",qtsrcchokespeed:"Choke speed",href:"\u0421\u0441\u044b\u043b\u043a\u0430",endtime:"\u0412\u0440\u0435\u043c\u044f \u043e\u043a\u043e\u043d\u0447\u0430\u043d\u0438\u044f",starttime:"\u0412\u0440\u0435\u043c\u044f \u043d\u0430\u0447\u0430\u043b\u0430",enablejavascript:"\u0412\u043a\u043b\u044e\u0447\u0438\u0442\u044c JavaScript",correction:"\u0411\u0435\u0437 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u043a\u0438",targetcache:"\u041a\u044d\u0448 \u0446\u0435\u043b\u0438",playeveryframe:"\u0412\u043e\u0441\u043f\u0440\u043e\u0438\u0437\u0432\u0435\u0441\u0442\u0438 \u043a\u0430\u0436\u0434\u044b\u0439 \u043a\u0430\u0434\u0440",kioskmode:"\u0420\u0435\u0436\u0438\u043c \u043a\u0438\u043e\u0441\u043a",controller:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",menu:"\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e",loop:"\u041f\u043e\u0432\u0442\u043e\u0440",play:"\u0410\u0432\u0442\u0437\u0430\u043f\u0443\u0441\u043a",hspace:"\u0413\u043e\u0440. \u043e\u0442\u0441\u0442\u0443\u043f",vspace:"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","class_name":"\u041a\u043b\u0430\u0441\u0441",name:"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435",id:"\u0418\u043c\u044f",type:"\u0422\u0438\u043f",size:"\u0420\u0430\u0437\u043c\u0435\u0440\u044b",preview:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440","constrain_proportions":"\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438",controls:"\u0423\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",numloop:"\u041f\u043e\u0432\u0442\u043e\u0440\u044b",console:"\u041a\u043e\u043d\u0441\u043e\u043b\u044c",cache:"\u041a\u044d\u0448",autohref:"\u0410\u0432\u0442\u043e-\u0441\u0441\u044b\u043b\u043a\u0430",liveconnect:"SWLiveConnect",flashvars:"Flash \u043a\u043e\u043c\u0430\u043d\u0434\u044b",base:"Base",bgcolor:"\u0424\u043e\u043d",wmode:"\u041e\u043a\u043d\u043e",salign:"\u0412\u044b\u0440-\u0435",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",scale:"\u041e\u0431\u043b\u0430\u0441\u0442\u044c",quality:"\u041a\u0430\u0447\u0435\u0441\u0442\u0432\u043e",shuffle:"\u0412 \u0440\u0430\u0437\u0431\u0440\u043e\u0441",prefetch:"\u0423\u043f\u0440\u0435\u0436\u0434\u0430\u044e\u0449\u0430\u044f \u0432\u044b\u0431\u043e\u0440\u043a\u0430",nojava:"\u0411\u0435\u0437 Java",maintainaspect:"\u0417\u0430\u043f\u043e\u043c\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440",imagestatus:"\u0421\u0442\u0430\u0442\u0443\u0441 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",center:"\u0426\u0435\u043d\u0442\u0440",autogotourl:"\u0410\u0432\u0442\u043e\u043f\u0435\u0440\u0435\u0445\u043e\u0434 \u043d\u0430 \u0430\u0434\u0440\u0435\u0441","shockwave_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Shockwave","rmp_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Real Media","wmp_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Windows Media","qt_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Quicktime","flash_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b Flash",hidden:"\u0421\u043a\u0440\u044b\u0442\u044b\u0439","align_bottom_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_bottom_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",flash:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Flash \u0444\u0430\u0439\u043b\u0430",quicktime:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Quick Time \u0444\u0430\u0439\u043b\u0430","embedded_audio_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0432\u043d\u0435\u0434\u0440\u0451\u043d\u043d\u043e\u0433\u043e \u0430\u0443\u0434\u0438\u043e",windowsmedia:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Windows Media \u0444\u0430\u0439\u043b\u0430",realmedia:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Real Media \u0444\u0430\u0439\u043b\u0430",shockwave:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 Shockwave \u0444\u0430\u0439\u043b\u0430",audio:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 HTML5 \u0437\u0432\u0443\u043a\u043e\u0432\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430",video:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 HTML5 \u0432\u0438\u0434\u0435\u043e \u0444\u0430\u0439\u043b\u0430","html5_video_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b HTML5 Video",altsource1:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 1",altsource2:"\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a 2",preload:"\u041f\u0440\u0435\u0434\u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430",poster:"\u041f\u043e\u0441\u0442\u0435\u0440",source:"\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a","html5_audio_options":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0430\u0443\u0434\u0438\u043e","preload_none":"\u0411\u0435\u0437 \u043f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0438","preload_metadata":"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u0430\u044f \u0437\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043c\u0435\u0442\u0430\u0434\u0430\u043d\u043d\u044b\u0445 \u0432\u0438\u0434\u0435\u043e","preload_auto":"\u041d\u0430 \u0443\u0441\u043c\u043e\u0442\u0440\u0435\u043d\u0438\u0435 \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u0430",iframe:"\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0441\u0441\u044b\u043b\u043a\u0438 \u043d\u0430 \u0440\u0435\u0441\u0443\u0440\u0441 \u0432 IFrame",embeddedaudio:"\u0412\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u0417\u0432\u0443\u043a"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/sv_dlg.js deleted file mode 100644 index 4f71780a96..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.media_dlg',{list:"Lista",file:"Fil/URL",advanced:"Avancerat",general:"Generellt",title:"Infoga/redigera inb\u00e4ddad media","align_top_left":"Top left","align_center":"Center","align_left":"V\u00e4nster","align_bottom":"Botten","align_right":"H\u00f6ger","align_top":"Toppen","qt_stream_warn":"Streamed rtsp resources should be added to the QT Src field under the advanced tab.\nYou should also add a non streamed version to the Src field..",qtsrc:"QT Src",progress:"Progress",sound:"Ljud",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch style",scriptcallbacks:"Script callbacks","align_top_right":"Top right",uimode:"UI Mode",rate:"Rate",playcount:"Play count",defaultframe:"Default frame",currentposition:"Current position",currentmarker:"Current marker",captioningid:"Captioning id",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless video",stretchtofit:"Stretch to fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Fullsk\u00e4rm",enabled:"Aktiverad",autostart:"Starta automatiskt",volume:"Volym",target:"M\u00e5l",qtsrcchokespeed:"Choke speed",href:"Href",endtime:"Slut tid",starttime:"Start tid",enablejavascript:"Aktivera JavaScript",correction:"No correction",targetcache:"Target cache",playeveryframe:"Spela varje bildruta",kioskmode:"Kiosk mode",controller:"Controller",menu:"Visa menyn",loop:"Loopa",play:"Spela upp automatiskt",hspace:"H-Space",vspace:"V-Space","class_name":"Klass",name:"Namn",id:"Id",type:"Typ",size:"Dimensioner",preview:"F\u00f6rhandsvisning","constrain_proportions":"Bibeh\u00e5ll proportionerna",controls:"Controls",numloop:"Num loops",console:"Console",cache:"Cache",autohref:"AutoHREF",liveconnect:"SWLiveConnect",flashvars:"Flashvars",base:"Base",bgcolor:"Bakgrundsf\u00e4rg",wmode:"WMode",salign:"SAlign",align:"Justera",scale:"Skala",quality:"Kvalit\u00e9",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No java",maintainaspect:"Maintain aspect",imagestatus:"Bild status",center:"Center",autogotourl:"Auto goto URL","shockwave_options":"Inst\u00e4llningar f\u00f6r Shockwave","rmp_options":"Real media player options","wmp_options":"Windows media player options","qt_options":"Quicktime options","flash_options":"Flash options",hidden:"G\u00f6md","align_bottom_left":"Bottom left","align_bottom_right":"Bottom right",flash:"flash",quicktime:"quicktime ","embedded_audio_options":"Inst\u00e4llningar f\u00f6r inb\u00e4ddatljud",windowsmedia:"windowsmedia ",realmedia:"realmedia ",shockwave:"shockwave ",audio:"ljud",video:"video","html5_video_options":"HTML5 Filmegenskaper",altsource1:"Alternativk\u00e4lla 1",altsource2:"Alternativk\u00e4lla 2",preload:"F\u00f6rladda",poster:"Poster",source:"K\u00e4lla","html5_audio_options":"Ljudinst\u00e4llningar","preload_none":"F\u00f6rladda inte","preload_metadata":"F\u00f6rladda metadata","preload_auto":"L\u00e5t webbl\u00e4saren v\u00e4lja",iframe:"iframe",embeddedaudio:"inb\u00e4ddat ljud"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/media/langs/zh_dlg.js deleted file mode 100644 index bb7ef2247c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.media_dlg',{list:"\u5217\u8868",file:"\u6587\u4ef6/URL",advanced:"\u9ad8\u7ea7",general:"\u666e\u901a",title:"\u63d2\u5165/\u7f16\u8f91\u5d4c\u5165\u5a92\u4f53","align_top_left":"\u5de6\u4e0a","align_center":"\u5c45\u4e2d","align_left":"\u9760\u5de6","align_bottom":"\u9760\u4e0b","align_right":"\u9760\u53f3","align_top":"\u9760\u4e0a","qt_stream_warn":"\u6d41\u5a92\u4f53RTSP\u8d44\u6e90\u5e94\u5728\u2018\u9ad8\u7ea7\u2019\u4e2d\u7684QT src\u680f\u76ee\u4e2d\u586b\u5199\u3002\n\u540c\u65f6\u5728src\u680f\u4f4d\u4e2d\u586b\u5199\u975e\u6d41\u5a92\u4f53\u7f51\u5740\u3002",qtsrc:"QT src",progress:"\u8fdb\u5ea6",sound:"\u58f0\u97f3",swstretchvalign:"\u8c03\u6574\u81f3\u5782\u76f4\u5bf9\u9f50",swstretchhalign:"\u8c03\u6574\u81f3\u6c34\u5e73\u5bf9\u9f50",swstretchstyle:"\u8c03\u6574\u6837\u5f0f",scriptcallbacks:"Script\u8c03\u7528","align_top_right":"\u53f3\u4e0a",uimode:"\u9762\u677f\u6a21\u5f0f",rate:"\u6bd4\u4f8b",playcount:"\u64ad\u653e\u6b21\u6570",defaultframe:"\u9884\u8bbe\u753b\u9762",currentposition:"\u5f53\u524d\u4f4d\u7f6e",currentmarker:"\u5f53\u524d\u6807\u8bb0",captioningid:"\u5b57\u5e55ID",baseurl:"\u6839URL",balance:"\u5e73\u8861",windowlessvideo:"\u65e0\u7a97\u53e3\u64ad\u653e",stretchtofit:"\u8c03\u81f3\u6700\u4f73\u5927\u5c0f",mute:"\u9759\u97f3",invokeurls:"\u5f15\u7528\u7684URLs",fullscreen:"\u5168\u5c4f",enabled:"\u53ef\u7528",autostart:"\u81ea\u52a8\u64ad\u653e",volume:"\u97f3\u91cf",target:"\u76ee\u6807",qtsrcchokespeed:"\u9650\u5236\u901f\u5ea6",href:"\u8d85\u94fe\u63a5",endtime:"\u7ed3\u675f\u65f6\u95f4",starttime:"\u5f00\u59cb\u65f6\u95f4",enablejavascript:"\u542f\u7528JavaScript",correction:"\u66f4\u6b63",targetcache:"\u76ee\u6807\u7f13\u5b58",playeveryframe:"\u9010\u683c\u64ad\u653e",kioskmode:"Kiosk\u6a21\u5f0f",controller:"\u63a7\u5236\u53f0",menu:"\u663e\u793a\u83dc\u5355",loop:"\u5faa\u73af\u64ad\u653e",play:"\u81ea\u52a8\u64ad\u653e",hspace:"\u6c34\u5e73\u95f4\u8ddd",vspace:"\u5782\u76f4\u95f4\u8ddd","class_name":"\u7c7b",name:"\u540d\u79f0",id:"ID",type:"\u7c7b\u578b",size:"\u5927\u5c0f",preview:"\u9884\u89c8","constrain_proportions":"\u56fa\u5b9a\u6bd4\u4f8b",controls:"\u63a7\u5236",numloop:"\u5faa\u73af\u6b21\u6570",console:"\u63a7\u5236\u53f0",cache:"\u7f13\u5b58",autohref:"\u81ea\u52a8\u8bbe\u7f6e\u8d85\u94fe\u63a5",liveconnect:"SWLiveConnect",flashvars:"Flash\u53c2\u6570",base:"\u6839",bgcolor:"\u80cc\u666f\u989c\u8272",wmode:"\u7a97\u53e3\u6a21\u5f0f",salign:"\u5bf9\u9f50\u4f4d\u7f6e",align:"\u5bf9\u9f50",scale:"\u7f29\u653e",quality:"\u54c1\u8d28",shuffle:"\u968f\u673a",prefetch:"\u9884\u8f7d",nojava:"\u7981\u6b62Java",maintainaspect:"\u56fa\u5b9a\u6bd4\u4f8b",imagestatus:"\u56fe\u7247\u72b6\u6001",center:"\u5c45\u4e2d",autogotourl:"\u81ea\u52a8\u8df3\u8f6cURL","shockwave_options":"Shockwave\u9009\u9879","rmp_options":"Real Media Player\u9009\u9879","wmp_options":"Windows Media Player\u9009\u9879","qt_options":"Quick Time\u9009\u9879","flash_options":"Flash\u9009\u9879",hidden:"\u9690\u85cf","align_bottom_left":"\u5de6\u4e0b","align_bottom_right":"\u53f3\u4e0b",flash:"Flash",quicktime:"QuickTime","embedded_audio_options":"\u5d4c\u5165\u58f0\u97f3\u9009\u9879",windowsmedia:"Windows Media",realmedia:"Real Media",shockwave:"Shockwave",audio:"HTML5\u97f3\u9891",video:"HTML5\u89c6\u9891","html5_video_options":"HTML5\u89c6\u9891\u9009\u9879",altsource1:"\u66ff\u4ee3\u6765\u6e901",altsource2:"\u66ff\u4ee3\u6765\u6e902",preload:"\u9884\u8f7d\u5165",poster:"\u5f71\u7247\u7f29\u56fe",source:"\u6e90","html5_audio_options":"\u58f0\u97f3\u9009\u9879","preload_none":"\u4e0d\u9884\u8f7d\u5165","preload_metadata":"\u9884\u8f7d\u5165\u89c6\u9891Metadata","preload_auto":"\u8ba9\u7528\u6237\u6d4f\u89c8\u5668\u51b3\u5b9a",iframe:"Iframe",embeddedaudio:"\u5d4c\u5165\u58f0\u97f3"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/media.htm b/assets/plugins/tinymce/tiny_mce/plugins/media/media.htm deleted file mode 100644 index 50efe9182d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/media/media.htm +++ /dev/null @@ -1,922 +0,0 @@ - - - - {#media_dlg.title} - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#media_dlg.general} - - - - - - - - - - - - - - - - - - -
                      - -
                      - - - - - -
                       
                      -
                      - - - - - - -
                      x   
                      -
                      -
                      - -
                      - {#media_dlg.preview} - -
                      -
                      - -
                      -
                      - {#media_dlg.advanced} - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - - - -
                       
                      -
                      -
                      - -
                      - {#media_dlg.html5_video_options} - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      - -
                      - - - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -
                      - -
                      - {#media_dlg.embedded_audio_options} - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -
                      - -
                      - {#media_dlg.html5_audio_options} - - - - - - - - - - - - - - - - -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      - -
                      - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -
                      - -
                      - {#media_dlg.flash_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - -
                      - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - - - - - - - -
                      -
                      - -
                      - {#media_dlg.qt_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -  
                      - - - - - -
                       
                      -
                      -
                      - -
                      - {#media_dlg.wmp_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -
                      - -
                      - {#media_dlg.rmp_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -   -
                      -
                      - -
                      - {#media_dlg.shockwave_options} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - - - -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      - - - - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#media_dlg.source} - -
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/media/moxieplayer.swf b/assets/plugins/tinymce/tiny_mce/plugins/media/moxieplayer.swf deleted file mode 100644 index 585d772d6d..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/media/moxieplayer.swf and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/nonbreaking/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/nonbreaking/editor_plugin.js deleted file mode 100644 index 687f548669..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/nonbreaking/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.Nonbreaking",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceNonBreaking",function(){a.execCommand("mceInsertContent",false,(a.plugins.visualchars&&a.plugins.visualchars.state)?' ':" ")});a.addButton("nonbreaking",{title:"nonbreaking.nonbreaking_desc",cmd:"mceNonBreaking"});if(a.getParam("nonbreaking_force_tab")){a.onKeyDown.add(function(d,f){if(f.keyCode==9){f.preventDefault();d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking");d.execCommand("mceNonBreaking")}})}},getInfo:function(){return{longname:"Nonbreaking space",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/nonbreaking",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("nonbreaking",tinymce.plugins.Nonbreaking)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/noneditable/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/noneditable/editor_plugin.js deleted file mode 100644 index da411ebc09..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/noneditable/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var c=tinymce.dom.TreeWalker;var a="contenteditable",d="data-mce-"+a;var e=tinymce.VK;function b(n){var j=n.dom,p=n.selection,r,o="mce_noneditablecaret",r="\uFEFF";function m(t){var s;if(t.nodeType===1){s=t.getAttribute(d);if(s&&s!=="inherit"){return s}s=t.contentEditable;if(s!=="inherit"){return s}}return null}function g(s){var t;while(s){t=m(s);if(t){return t==="false"?s:null}s=s.parentNode}}function l(s){while(s){if(s.id===o){return s}s=s.parentNode}}function k(s){var t;if(s){t=new c(s,s);for(s=t.current();s;s=t.next()){if(s.nodeType===3){return s}}}}function f(v,u){var s,t;if(m(v)==="false"){if(j.isBlock(v)){p.select(v);return}}t=j.createRng();if(m(v)==="true"){if(!v.firstChild){v.appendChild(n.getDoc().createTextNode("\u00a0"))}v=v.firstChild;u=true}s=j.create("span",{id:o,"data-mce-bogus":true},r);if(u){v.parentNode.insertBefore(s,v)}else{j.insertAfter(s,v)}t.setStart(s.firstChild,1);t.collapse(true);p.setRng(t);return s}function i(s){var v,t,u;if(s){rng=p.getRng(true);rng.setStartBefore(s);rng.setEndBefore(s);v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true);p.setRng(rng)}else{t=l(p.getStart());while((s=j.get(o))&&s!==u){if(t!==s){v=k(s);if(v&&v.nodeValue.charAt(0)==r){v=v.deleteData(0,1)}j.remove(s,true)}u=s}}}function q(){var s,w,u,t,v;function x(B,D){var A,F,E,C,z;A=t.startContainer;F=t.startOffset;if(A.nodeType==3){z=A.nodeValue.length;if((F>0&&F0?F-1:F;A=A.childNodes[G];if(A.hasChildNodes()){A=A.firstChild}}else{return !D?B:null}}E=new c(A,B);while(C=E[D?"prev":"next"]()){if(C.nodeType===3&&C.nodeValue.length>0){return}else{if(m(C)==="true"){return C}}}return B}i();u=p.isCollapsed();s=g(p.getStart());w=g(p.getEnd());if(s||w){t=p.getRng(true);if(u){s=s||w;var y=p.getStart();if(v=x(s,true)){f(v,true)}else{if(v=x(s,false)){f(v,false)}else{p.select(s)}}}else{t=p.getRng(true);if(s){t.setStartBefore(s)}if(w){t.setEndAfter(w)}p.setRng(t)}}}function h(z,B){var F=B.keyCode,x,C,D,v;function u(H,G){while(H=H[G?"previousSibling":"nextSibling"]){if(H.nodeType!==3||H.nodeValue.length>0){return H}}}function y(G,H){p.select(G);p.collapse(H)}function t(K){var J,I,M,H;function G(O){var N=I;while(N){if(N===O){return}N=N.parentNode}j.remove(O);q()}function L(){var O,P,N=z.schema.getNonEmptyElements();P=new tinymce.dom.TreeWalker(I,z.getBody());while(O=(K?P.prev():P.next())){if(N[O.nodeName.toLowerCase()]){break}if(O.nodeType===3&&tinymce.trim(O.nodeValue).length>0){break}if(m(O)==="false"){G(O);return true}}if(g(O)){return true}return false}if(p.isCollapsed()){J=p.getRng(true);I=J.startContainer;M=J.startOffset;I=l(I)||I;if(H=g(I)){G(H);return false}if(I.nodeType==3&&(K?M>0:M124)&&F!=e.DELETE&&F!=e.BACKSPACE){if((tinymce.isMac?B.metaKey:B.ctrlKey)&&(F==67||F==88||F==86)){return}B.preventDefault();if(F==e.LEFT||F==e.RIGHT){var w=F==e.LEFT;if(z.dom.isBlock(x)){var A=w?x.previousSibling:x.nextSibling;var s=new c(A,A);var E=w?s.prev():s.next();y(E,!w)}else{y(x,w)}}}else{if(F==e.LEFT||F==e.RIGHT||F==e.BACKSPACE||F==e.DELETE){C=l(D);if(C){if(F==e.LEFT||F==e.BACKSPACE){x=u(C,true);if(x&&m(x)==="false"){B.preventDefault();if(F==e.LEFT){y(x,true)}else{j.remove(x);return}}else{i(C)}}if(F==e.RIGHT||F==e.DELETE){x=u(C);if(x&&m(x)==="false"){B.preventDefault();if(F==e.RIGHT){y(x,false)}else{j.remove(x);return}}else{i(C)}}}if((F==e.BACKSPACE||F==e.DELETE)&&!t(F==e.BACKSPACE)){B.preventDefault();return false}}}}n.onMouseDown.addToTop(function(s,u){var t=s.selection.getNode();if(m(t)==="false"&&t==u.target){q()}});n.onMouseUp.addToTop(q);n.onKeyDown.addToTop(h);n.onKeyUp.addToTop(q)}tinymce.create("tinymce.plugins.NonEditablePlugin",{init:function(i,k){var h,g,j;function f(m,n){var o=j.length,p=n.content,l=tinymce.trim(g);if(n.format=="raw"){return}while(o--){p=p.replace(j[o],function(s){var r=arguments,q=r[r.length-2];if(q>0&&p.charAt(q-1)=='"'){return s}return''+m.dom.encode(typeof(r[1])==="string"?r[1]:r[0])+""})}n.content=p}h=" "+tinymce.trim(i.getParam("noneditable_editable_class","mceEditable"))+" ";g=" "+tinymce.trim(i.getParam("noneditable_noneditable_class","mceNonEditable"))+" ";j=i.getParam("noneditable_regexp");if(j&&!j.length){j=[j]}i.onPreInit.add(function(){b(i);if(j){i.selection.onBeforeSetContent.add(f);i.onBeforeSetContent.add(f)}i.parser.addAttributeFilter("class",function(l){var m=l.length,n,o;while(m--){o=l[m];n=" "+o.attr("class")+" ";if(n.indexOf(h)!==-1){o.attr(d,"true")}else{if(n.indexOf(g)!==-1){o.attr(d,"false")}}}});i.serializer.addAttributeFilter(d,function(l,m){var n=l.length,o;while(n--){o=l[n];if(j&&o.attr("data-mce-content")){o.name="#text";o.type=3;o.raw=true;o.value=o.attr("data-mce-content")}else{o.attr(a,null);o.attr(d,null)}}});i.parser.addAttributeFilter(a,function(l,m){var n=l.length,o;while(n--){o=l[n];o.attr(d,o.attr(a));o.attr(a,null)}})})},getInfo:function(){return{longname:"Non editable elements",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/noneditable",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("noneditable",tinymce.plugins.NonEditablePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/pagebreak/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/pagebreak/editor_plugin.js deleted file mode 100644 index 35085e8adc..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/pagebreak/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.PageBreakPlugin",{init:function(b,d){var f='',a="mcePageBreak",c=b.getParam("pagebreak_separator",""),e;e=new RegExp(c.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(g){return"\\"+g}),"g");b.addCommand("mcePageBreak",function(){b.execCommand("mceInsertContent",0,f)});b.addButton("pagebreak",{title:"pagebreak.desc",cmd:a});b.onInit.add(function(){if(b.theme.onResolveName){b.theme.onResolveName.add(function(g,h){if(h.node.nodeName=="IMG"&&b.dom.hasClass(h.node,a)){h.name="pagebreak"}})}});b.onClick.add(function(g,h){h=h.target;if(h.nodeName==="IMG"&&g.dom.hasClass(h,a)){g.selection.select(h)}});b.onNodeChange.add(function(h,g,i){g.setActive("pagebreak",i.nodeName==="IMG"&&h.dom.hasClass(i,a))});b.onBeforeSetContent.add(function(g,h){h.content=h.content.replace(e,f)});b.onPostProcess.add(function(g,h){if(h.get){h.content=h.content.replace(/]+>/g,function(i){if(i.indexOf('class="mcePageBreak')!==-1){i=c}return i})}})},getInfo:function(){return{longname:"PageBreak",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/pagebreak",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("pagebreak",tinymce.plugins.PageBreakPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/editor_plugin.js deleted file mode 100644 index 5d06261884..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_max_consecutive_linebreaks:2,paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"
                      ")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="

                      "+o.encode(r).replace(/\r?\n\r?\n/g,"

                      ").replace(/\r?\n/g,"
                      ")+"

                      "}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:
                       [\s\r\n]+|
                      )*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:
                       [\s\r\n]+|
                      )*/g,"$1"]]);d([[/

                      /g,"

                      "],[/
                      /g," "],[/

                      /g,"
                      "]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*( )+/gi,/( |]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/

                      ]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"

                      $1

                      ")}if(b(k,"paste_convert_middot_lists")){d([[//gi,"$&__MCE_ITEM__"],[/(]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([//gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/ /gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1");j=j.replace(/(<(ol|ul)[^>]*\s)(?:id|name|language|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/"/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/]*>/gi,"

                      "],[/<\/h[1-6][^>]*>/gi,"

                      "]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/ /g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.( |\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*( |\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*[\w|'<'|'>']+\.( |\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(j){var h=this.editor,f=b(h,"paste_text_linebreaktype"),k=b(h,"paste_text_replacements"),g=tinymce.is;function e(m){c(m,function(n){if(n.constructor==RegExp){j=j.replace(n,"")}else{j=j.replace(n[0],n[1])}})}if((typeof(j)==="string")&&(j.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(j)){e([/[\n\r]+/g])}else{e([/\r+/g])}e([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/ /gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"]]);var d=Number(b(h,"paste_max_consecutive_linebreaks"));if(d>-1){var l=new RegExp("\n{"+(d+1)+",}","g");var i="";while(i.length"]])}else{if(f=="p"){e([[/\n+/g,"

                      "],[/^(.*<\/p>)(

                      )$/,"

                      $1"]])}else{e([[/\n\n/g,"

                      "],[/^(.*<\/p>)(

                      )$/,"

                      $1"],[/\n/g,"
                      "]])}}}h.execCommand("mceInsertContent",false,j)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/js/pastetext.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/js/pastetext.js deleted file mode 100644 index 81b1d6a01e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/js/pastetext.js +++ /dev/null @@ -1,36 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var PasteTextDialog = { - init : function() { - this.resize(); - }, - - insert : function() { - var h = tinyMCEPopup.dom.encode(document.getElementById('content').value), lines; - - // Convert linebreaks into paragraphs - if (document.getElementById('linebreaks').checked) { - lines = h.split(/\r?\n/); - if (lines.length > 1) { - h = ''; - tinymce.each(lines, function(row) { - h += '

                      ' + row + '

                      '; - }); - } - } - - tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h}); - tinyMCEPopup.close(); - }, - - resize : function() { - var vp = tinyMCEPopup.dom.getViewPort(window), el; - - el = document.getElementById('content'); - - el.style.width = (vp.w - 20) + 'px'; - el.style.height = (vp.h - 90) + 'px'; - } -}; - -tinyMCEPopup.onInit.add(PasteTextDialog.init, PasteTextDialog); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/js/pasteword.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/js/pasteword.js deleted file mode 100644 index 959bf3992d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/js/pasteword.js +++ /dev/null @@ -1,51 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var PasteWordDialog = { - init : function() { - var ed = tinyMCEPopup.editor, el = document.getElementById('iframecontainer'), ifr, doc, css, cssHTML = ''; - - // Create iframe - el.innerHTML = ''; - ifr = document.getElementById('iframe'); - doc = ifr.contentWindow.document; - - // Force absolute CSS urls - css = [ed.baseURI.toAbsolute("themes/" + ed.settings.theme + "/skins/" + ed.settings.skin + "/content.css")]; - css = css.concat(tinymce.explode(ed.settings.content_css) || []); - tinymce.each(css, function(u) { - cssHTML += ''; - }); - - // Write content into iframe - doc.open(); - doc.write('' + cssHTML + ''); - doc.close(); - - doc.designMode = 'on'; - this.resize(); - - window.setTimeout(function() { - ifr.contentWindow.focus(); - }, 10); - }, - - insert : function() { - var h = document.getElementById('iframe').contentWindow.document.body.innerHTML; - - tinyMCEPopup.editor.execCommand('mceInsertClipboardContent', false, {content : h, wordContent : true}); - tinyMCEPopup.close(); - }, - - resize : function() { - var vp = tinyMCEPopup.dom.getViewPort(window), el; - - el = document.getElementById('iframe'); - - if (el) { - el.style.width = (vp.w - 20) + 'px'; - el.style.height = (vp.h - 90) + 'px'; - } - } -}; - -tinyMCEPopup.onInit.add(PasteWordDialog.init, PasteWordDialog); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/bg_dlg.js deleted file mode 100644 index 722ecdc561..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.paste_dlg',{"word_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043e\u0442 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430.","text_linebreaks":"\u0417\u0430\u043f\u0430\u0437\u0438 \u0437\u043d\u0430\u0446\u0438\u0442\u0435 \u0437\u0430 \u043d\u043e\u0432\u0438 \u0440\u0435\u0434\u043e\u0432\u0435","text_title":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 CTRL V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0430\u0442\u0430, \u0437\u0430 \u0434\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u0438\u0442\u0435 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446\u0430."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/cs_dlg.js deleted file mode 100644 index 66936bbabf..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.paste_dlg',{"word_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna.","text_linebreaks":"Zachovat zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","text_title":"Pou\u017eijte CTRL+V pro vlo\u017een\u00ed textu do okna."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/da_dlg.js deleted file mode 100644 index 7e1b961830..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.paste_dlg',{"word_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten.","text_linebreaks":"Bevar linieskift","text_title":"Anvend CTRL+V p\u00e5 tastaturet for at inds\u00e6tte teksten."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/de_dlg.js deleted file mode 100644 index d7bbe93d03..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.paste_dlg',{"word_title":"Strg V auf der Tastatur dr\u00fccken, um den Text einzuf\u00fcgen.","text_linebreaks":"Zeilenumbr\u00fcche beibehalten","text_title":"Strg V auf der Tastatur dr\u00fccken, um den Text einzuf\u00fcgen."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/en_dlg.js deleted file mode 100644 index bc74daf85c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.paste_dlg',{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/es_dlg.js deleted file mode 100644 index aa54f98ccf..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.paste_dlg',{"word_title":"Use CTRL+V en su teclado para pegar el texto en la ventana.","text_linebreaks":"Mantener saltos de l\u00ednea","text_title":"Use CTRL+V en su teclado para pegar el texto en la ventana."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fa_dlg.js deleted file mode 100644 index cb554bcadd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.paste_dlg',{"word_title":"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f.","text_linebreaks":"\u062d\u0641\u0638 \u0642\u0637\u0639 \u062e\u0637\u0648\u0637","text_title":"\u062c\u0647\u062a \u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0645\u062a\u0646 \u062f\u0631 \u067e\u0646\u062c\u0631\u0647 \u0627\u0632 CTRL+V \u0628\u0631 \u0631\u0648\u06cc \u0635\u0641\u062d\u0647 \u06a9\u0644\u06cc\u062f \u062e\u0648\u062f \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fi_dlg.js deleted file mode 100644 index 530e507cd8..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.paste_dlg',{"word_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan.","text_linebreaks":"S\u00e4ilyt\u00e4 rivinvaihdot","text_title":"Paina Ctrl+V liitt\u00e4\u00e4ksesi sis\u00e4ll\u00f6n ikkunaan."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fr_dlg.js deleted file mode 100644 index acc5d639f0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.paste_dlg',{"word_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre.","text_linebreaks":"Conserver les retours \u00e0 la ligne","text_title":"Utilisez CTRL+V sur votre clavier pour coller le texte dans la fen\u00eatre."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/he_dlg.js deleted file mode 100644 index 5fe796a6a9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.paste_dlg',{"word_title":"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V.","text_linebreaks":"\u05d4\u05e9\u05d0\u05e8 \u05d0\u05ea \u05e9\u05d5\u05e8\u05d5\u05ea \u05d4\u05e8\u05d5\u05d5\u05d7","text_title":"\u05d4\u05d3\u05d1\u05d9\u05e7\u05d5 \u05d1\u05d7\u05dc\u05d5\u05df \u05d6\u05d4 \u05d0\u05ea \u05d4\u05d8\u05e7\u05e1\u05d8 \u05d1\u05d0\u05de\u05e6\u05e2\u05d5\u05ea \u05d4\u05de\u05e7\u05e9\u05d9\u05dd CTRL+V."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/it_dlg.js deleted file mode 100644 index f1b8dc7e06..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.paste_dlg',{"word_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra.","text_linebreaks":"Mantieni interruzioni di riga","text_title":"Premere CTRL+V sulla tastiera per incollare il testo nella finestra."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/ja_dlg.js deleted file mode 100644 index 5af5982271..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.paste_dlg',{"word_title":"Ctrl V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002","text_linebreaks":"\u6539\u884c\u3092\u4fdd\u6301","text_title":"Ctrl V(\u30ad\u30fc\u30dc\u30fc\u30c9)\u3092\u4f7f\u7528\u3057\u3066\u3001\u30c6\u30ad\u30b9\u30c8\u3092\u30a6\u30a3\u30f3\u30c9\u30a6\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/nl_dlg.js deleted file mode 100644 index bac8ac046b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.paste_dlg',{"word_title":"Gebruik Ctrl+V om tekst in het venster te plakken.","text_linebreaks":"Regelafbreking bewaren","text_title":"Gebruik Ctrl+V om tekst in het venster te plakken."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/nn_dlg.js deleted file mode 100644 index be58ae5724..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.paste_dlg',{"word_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget.","text_linebreaks":"Behald tekstbryting","text_title":"Bruk CTRL+V p\u00e5 tastaturet for \u00e5 lime inn i dette vindauget."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/pl_dlg.js deleted file mode 100644 index 54fd41c37b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.paste_dlg',{"word_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna.","text_linebreaks":"Zachowaj ko\u0144ce linii.","text_title":"U\u017cyj CTRL+V na swojej klawiaturze \u017ceby wklei\u0107 tekst do okna."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/pt_dlg.js deleted file mode 100644 index c9601cf945..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.paste_dlg',{"word_title":"Use CTRL+V para colar o texto na janela.","text_linebreaks":"Manter quebras de linha","text_title":"Use CTRL+V para colar o texto na janela."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/ru_dlg.js deleted file mode 100644 index b360b075d6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.paste_dlg',{"word_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e.","text_linebreaks":"\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0435\u0440\u0435\u043d\u043e\u0441\u044b \u0441\u0442\u0440\u043e\u043a","text_title":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 CTRL+V \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438 \u0442\u0435\u043a\u0441\u0442\u0430 \u0432 \u043e\u043a\u043d\u043e."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/sv_dlg.js deleted file mode 100644 index 1c99e2b1b2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.paste_dlg',{"word_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster.","text_linebreaks":"Spara radbrytningar","text_title":"Anv\u00e4nd ctrl-v p\u00e5 ditt tangentbord f\u00f6r att klistra in i detta f\u00f6nster."}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/zh_dlg.js deleted file mode 100644 index b1f8b38621..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.paste_dlg',{"word_title":"\u8bf7\u4f7f\u7528CTRL V\u5c06\u5185\u5bb9\u7c98\u8d34\u4e0a\u3002","text_linebreaks":"\u4fdd\u7559\u5206\u884c\u7b26","text_title":"\u8bf7\u4f7f\u7528CTRL V\u5c06\u5185\u5bb9\u7c98\u8d34\u4e0a\u3002"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/pastetext.htm b/assets/plugins/tinymce/tiny_mce/plugins/paste/pastetext.htm deleted file mode 100644 index 8ccfbb970f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/pastetext.htm +++ /dev/null @@ -1,27 +0,0 @@ - - - {#paste.paste_text_desc} - - - - -
                      -
                      {#paste.paste_text_desc}
                      - -
                      - -
                      - -
                      - -
                      {#paste_dlg.text_title}
                      - - - -
                      - - -
                      -
                      - - \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/paste/pasteword.htm b/assets/plugins/tinymce/tiny_mce/plugins/paste/pasteword.htm deleted file mode 100644 index 7731f39c48..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/paste/pasteword.htm +++ /dev/null @@ -1,21 +0,0 @@ - - - {#paste.paste_word_desc} - - - - -
                      -
                      {#paste.paste_word_desc}
                      - -
                      {#paste_dlg.word_title}
                      - -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/preview/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/preview/editor_plugin.js deleted file mode 100644 index 507909c5f0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/preview/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.Preview",{init:function(a,b){var d=this,c=tinymce.explode(a.settings.content_css);d.editor=a;tinymce.each(c,function(f,e){c[e]=a.documentBaseURI.toAbsolute(f)});a.addCommand("mcePreview",function(){a.windowManager.open({file:a.getParam("plugin_preview_pageurl",b+"/preview.html"),width:parseInt(a.getParam("plugin_preview_width","550")),height:parseInt(a.getParam("plugin_preview_height","600")),resizable:"yes",scrollbars:"yes",popup_css:c?c.join(","):a.baseURI.toAbsolute("themes/"+a.settings.theme+"/skins/"+a.settings.skin+"/content.css"),inline:a.getParam("plugin_preview_inline",1)},{base:a.documentBaseURI.getURI()})});a.addButton("preview",{title:"preview.preview_desc",cmd:"mcePreview"})},getInfo:function(){return{longname:"Preview",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("preview",tinymce.plugins.Preview)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/preview/example.html b/assets/plugins/tinymce/tiny_mce/plugins/preview/example.html deleted file mode 100644 index 48202224dd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/preview/example.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - -Example of a custom preview page - - - -Editor contents:
                      -
                      - -
                      - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/preview/jscripts/embed.js b/assets/plugins/tinymce/tiny_mce/plugins/preview/jscripts/embed.js deleted file mode 100644 index 6fe25de090..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/preview/jscripts/embed.js +++ /dev/null @@ -1,73 +0,0 @@ -/** - * This script contains embed functions for common plugins. This scripts are complety free to use for any purpose. - */ - -function writeFlash(p) { - writeEmbed( - 'D27CDB6E-AE6D-11cf-96B8-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'application/x-shockwave-flash', - p - ); -} - -function writeShockWave(p) { - writeEmbed( - '166B1BCA-3F9C-11CF-8075-444553540000', - 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0', - 'application/x-director', - p - ); -} - -function writeQuickTime(p) { - writeEmbed( - '02BF25D5-8C17-4B23-BC80-D3488ABDDC6B', - 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0', - 'video/quicktime', - p - ); -} - -function writeRealMedia(p) { - writeEmbed( - 'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA', - 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0', - 'audio/x-pn-realaudio-plugin', - p - ); -} - -function writeWindowsMedia(p) { - p.url = p.src; - writeEmbed( - '6BF52A52-394A-11D3-B153-00C04F79FAA6', - 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701', - 'application/x-mplayer2', - p - ); -} - -function writeEmbed(cls, cb, mt, p) { - var h = '', n; - - h += ''; - - h += ' - - - - - -{#preview.preview_desc} - - - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/print/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/print/editor_plugin.js deleted file mode 100644 index b5b3a55edf..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/print/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.Print",{init:function(a,b){a.addCommand("mcePrint",function(){a.getWin().print()});a.addButton("print",{title:"print.print_desc",cmd:"mcePrint"})},getInfo:function(){return{longname:"Print",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/print",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("print",tinymce.plugins.Print)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/save/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/save/editor_plugin.js deleted file mode 100644 index 8e93996671..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/save/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.Save",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceSave",c._save,c);a.addCommand("mceCancel",c._cancel,c);a.addButton("save",{title:"save.save_desc",cmd:"mceSave"});a.addButton("cancel",{title:"save.cancel_desc",cmd:"mceCancel"});a.onNodeChange.add(c._nodeChange,c);a.addShortcut("ctrl+s",a.getLang("save.save_desc"),"mceSave")},getInfo:function(){return{longname:"Save",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/save",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_nodeChange:function(b,a,c){var b=this.editor;if(b.getParam("save_enablewhendirty")){a.setDisabled("save",!b.isDirty());a.setDisabled("cancel",!b.isDirty())}},_save:function(){var c=this.editor,a,e,d,b;a=tinymce.DOM.get(c.id).form||tinymce.DOM.getParent(c.id,"form");if(c.getParam("save_enablewhendirty")&&!c.isDirty()){return}tinyMCE.triggerSave();if(e=c.getParam("save_onsavecallback")){if(c.execCallback("save_onsavecallback",c)){c.startContent=tinymce.trim(c.getContent({format:"raw"}));c.nodeChanged()}return}if(a){c.isNotDirty=true;if(a.onsubmit==null||a.onsubmit()!=false){a.submit()}c.nodeChanged()}else{c.windowManager.alert("Error: No form element found.")}},_cancel:function(){var a=this.editor,c,b=tinymce.trim(a.startContent);if(c=a.getParam("save_oncancelcallback")){a.execCallback("save_oncancelcallback",a);return}a.setContent(b);a.undoManager.clear();a.nodeChanged()}});tinymce.PluginManager.add("save",tinymce.plugins.Save)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/css/searchreplace.css b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/css/searchreplace.css deleted file mode 100644 index 3e2eaf34b3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/css/searchreplace.css +++ /dev/null @@ -1,6 +0,0 @@ -.panel_wrapper {height:85px;} -.panel_wrapper div.current {height:85px;} - -/* IE */ -* html .panel_wrapper {height:100px;} -* html .panel_wrapper div.current {height:100px;} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/editor_plugin.js deleted file mode 100644 index 165bc12df5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.SearchReplacePlugin",{init:function(a,c){function b(d){window.focus();a.windowManager.open({file:c+"/searchreplace.htm",width:420+parseInt(a.getLang("searchreplace.delta_width",0)),height:170+parseInt(a.getLang("searchreplace.delta_height",0)),inline:1,auto_focus:0},{mode:d,search_string:a.selection.getContent({format:"text"}),plugin_url:c})}a.addCommand("mceSearch",function(){b("search")});a.addCommand("mceReplace",function(){b("replace")});a.addButton("search",{title:"searchreplace.search_desc",cmd:"mceSearch"});a.addButton("replace",{title:"searchreplace.replace_desc",cmd:"mceReplace"});a.addShortcut("ctrl+f","searchreplace.search_desc","mceSearch")},getInfo:function(){return{longname:"Search/Replace",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/searchreplace",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("searchreplace",tinymce.plugins.SearchReplacePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/js/searchreplace.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/js/searchreplace.js deleted file mode 100644 index 85c542ee5c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/js/searchreplace.js +++ /dev/null @@ -1,152 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var SearchReplaceDialog = { - init : function(ed) { - var t = this, f = document.forms[0], m = tinyMCEPopup.getWindowArg("mode"); - - t.switchMode(m); - - f[m + '_panel_searchstring'].value = tinyMCEPopup.getWindowArg("search_string"); - - // Focus input field - f[m + '_panel_searchstring'].focus(); - - mcTabs.onChange.add(function(tab_id, panel_id) { - t.switchMode(tab_id.substring(0, tab_id.indexOf('_'))); - }); - - }, - - switchMode : function(m) { - var f, lm = this.lastMode; - - if (lm != m) { - f = document.forms[0]; - - if (lm) { - f[m + '_panel_searchstring'].value = f[lm + '_panel_searchstring'].value; - f[m + '_panel_backwardsu'].checked = f[lm + '_panel_backwardsu'].checked; - f[m + '_panel_backwardsd'].checked = f[lm + '_panel_backwardsd'].checked; - f[m + '_panel_casesensitivebox'].checked = f[lm + '_panel_casesensitivebox'].checked; - } - - mcTabs.displayTab(m + '_tab', m + '_panel'); - document.getElementById("replaceBtn").style.display = (m == "replace") ? "inline" : "none"; - document.getElementById("replaceAllBtn").style.display = (m == "replace") ? "inline" : "none"; - this.lastMode = m; - } - }, - - searchNext : function(a) { - var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0; - - if (tinymce.isIE11 && !window.find) { - ed.windowManager.alert("This feature is not available in IE 11+. Upgrade TinyMCE to 4.x to get this functionallity back."); - return; - } - - // Get input - f = document.forms[0]; - s = f[m + '_panel_searchstring'].value; - b = f[m + '_panel_backwardsu'].checked; - ca = f[m + '_panel_casesensitivebox'].checked; - rs = f['replace_panel_replacestring'].value; - - if (tinymce.isIE) { - r = ed.getDoc().selection.createRange(); - } - - if (s == '') - return; - - function fix() { - // Correct Firefox graphics glitches - // TODO: Verify if this is actually needed any more, maybe it was for very old FF versions? - r = se.getRng().cloneRange(); - ed.getDoc().execCommand('SelectAll', false, null); - se.setRng(r); - }; - - function replace() { - ed.selection.setContent(rs); // Needs to be duplicated due to selection bug in IE - }; - - // IE flags - if (ca) - fl = fl | 4; - - switch (a) { - case 'all': - // Move caret to beginning of text - ed.execCommand('SelectAll'); - ed.selection.collapse(true); - - if (tinymce.isIE) { - ed.focus(); - r = ed.getDoc().selection.createRange(); - - while (r.findText(s, b ? -1 : 1, fl)) { - r.scrollIntoView(); - r.select(); - replace(); - fo = 1; - - if (b) { - r.moveEnd("character", -(rs.length)); // Otherwise will loop forever - } else { - // to avoid looping for ever in MSIE 9/10 when just - // changing the case - r.moveStart("character", rs.length); - } - } - - tinyMCEPopup.storeSelection(); - } else { - while (w.find(s, ca, b, false, false, false, false)) { - replace(); - fo = 1; - } - } - - if (fo) - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.allreplaced')); - else - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); - - return; - - case 'current': - if (!ed.selection.isCollapsed()) - replace(); - - break; - } - - se.collapse(b); - r = se.getRng(); - - // Whats the point - if (!s) - return; - - if (tinymce.isIE) { - ed.focus(); - r = ed.getDoc().selection.createRange(); - - if (r.findText(s, b ? -1 : 1, fl)) { - r.scrollIntoView(); - r.select(); - } else - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); - - tinyMCEPopup.storeSelection(); - } else { - if (!w.find(s, ca, b, false, false, false, false)) - tinyMCEPopup.alert(ed.getLang('searchreplace_dlg.notfound')); - else - fix(); - } - } -}; - -tinyMCEPopup.onInit.add(SearchReplaceDialog.init, SearchReplaceDialog); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/bg_dlg.js deleted file mode 100644 index 6560e0f873..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.searchreplace_dlg',{findwhat:"\u0422\u044a\u0440\u0441\u0438",replacewith:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438 \u0441",direction:"\u041f\u043e\u0441\u043e\u043a\u0430",up:"\u041d\u0430\u0433\u043e\u0440\u0435",down:"\u041d\u0430\u0434\u043e\u043b\u0443",mcase:"\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430",findnext:"\u0422\u044a\u0440\u0441\u0438 \u0441\u043b\u0435\u0434\u0432\u0430\u0449\u0438",allreplaced:"\u0412\u0441\u0438\u0447\u043a\u0438 \u043d\u0430\u043c\u0435\u0440\u0435\u043d\u0438 \u0434\u0443\u043c\u0438 \u0431\u044f\u0445\u0430 \u0437\u0430\u043c\u0435\u0441\u0442\u0435\u043d\u0438.","searchnext_desc":"\u0422\u044a\u0440\u0441\u0438 \u043e\u0442\u043d\u043e\u0432\u043e",notfound:"\u0422\u044a\u0440\u0441\u0435\u043d\u0435\u0442\u043e \u0437\u0430\u0432\u044a\u0440\u0448\u0438. \u0422\u044a\u0440\u0441\u0435\u043d\u0438\u0442\u0435 \u0434\u0443\u043c\u0438 \u043d\u0435 \u0431\u044f\u0445\u0430 \u043e\u0442\u043a\u0440\u0438\u0442\u0438.","search_title":"\u0422\u044a\u0440\u0441\u0438","replace_title":"\u0422\u044a\u0440\u0441\u0438/\u0417\u0430\u043c\u0435\u0441\u0442\u0438",replaceall:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438 \u0432\u0441\u0438\u0447\u043a\u0438",replace:"\u0417\u0430\u043c\u0435\u0441\u0442\u0438"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/cs_dlg.js deleted file mode 100644 index 81654085b7..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.searchreplace_dlg',{findwhat:"Co hledat",replacewith:"\u010c\u00edm nahradit",direction:"Sm\u011br",up:"Nahoru",down:"Dol\u016f",mcase:"Rozli\u0161ovat velikost",findnext:"Naj\u00edt dal\u0161\u00ed",allreplaced:"V\u0161echny v\u00fdskyty byly nahrazeny.","searchnext_desc":"Naj\u00edt dal\u0161\u00ed",notfound:"Hled\u00e1n\u00ed bylo dokon\u010deno. Hledan\u00fd text nebyl nalezen.","search_title":"Naj\u00edt","replace_title":"Naj\u00edt/nahradit",replaceall:"Nahradit v\u0161e",replace:"Nahradit"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/da_dlg.js deleted file mode 100644 index b551cea041..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.searchreplace_dlg',{findwhat:"S\u00f8g efter",replacewith:"Erstat med",direction:"Retning",up:"Op",down:"Ned",mcase:"Forskel p\u00e5 store og sm\u00e5 bogstaver",findnext:"Find n\u00e6ste",allreplaced:"Alle forekomster af s\u00f8gestrengen er erstattet.","searchnext_desc":"S\u00f8g igen",notfound:"S\u00f8gningen gav intet resultat.","search_title":"S\u00f8g","replace_title":"S\u00f8g / erstat",replaceall:"Erstat alle",replace:"Erstat"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/de_dlg.js deleted file mode 100644 index 7c40acd9e0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.searchreplace_dlg',{findwhat:"Zu suchender Text",replacewith:"Ersetzen durch",direction:"Suchrichtung",up:"Aufw\u00e4rts",down:"Abw\u00e4rts",mcase:"Gro\u00df-/Kleinschreibung beachten",findnext:"Weitersuchen",allreplaced:"Alle Vorkommen der Zeichenkette wurden ersetzt.","searchnext_desc":"Weitersuchen",notfound:"Die Suche ist am Ende angelangt. Die Zeichenkette konnte nicht gefunden werden.","search_title":"Suchen","replace_title":"Suchen/Ersetzen",replaceall:"Alle ersetzen",replace:"Ersetzen"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/en_dlg.js deleted file mode 100644 index 8a65900977..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.searchreplace_dlg',{findwhat:"Find What",replacewith:"Replace with",direction:"Direction",up:"Up",down:"Down",mcase:"Match Case",findnext:"Find Next",allreplaced:"All occurrences of the search string were replaced.","searchnext_desc":"Find Again",notfound:"The search has been completed. The search string could not be found.","search_title":"Find","replace_title":"Find/Replace",replaceall:"Replace All",replace:"Replace"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/es_dlg.js deleted file mode 100644 index 62e178de61..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.searchreplace_dlg',{findwhat:"Qu\u00e9 buscar",replacewith:"Reemplazar por",direction:"Direcci\u00f3n",up:"Arriba",down:"Abajo",mcase:"Min\u00fas./May\u00fas.",findnext:"Buscar siguiente",allreplaced:"Se ha reemplazado el texto.","searchnext_desc":"Buscar de nuevo",notfound:"La b\u00fasqueda se ha completado. No se encontr\u00f3 el texto introducido.","search_title":"Buscar","replace_title":"Buscar/Reemplazar",replaceall:"Reemplazar todo",replace:"Reemplazar"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fa_dlg.js deleted file mode 100644 index d8c5d4b729..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.searchreplace_dlg',{findwhat:"\u062c\u0633\u062a\u062c\u0648\u06cc",replacewith:"\u062a\u0639\u0648\u06cc\u0636 \u0628\u0627",direction:"\u062c\u0647\u062a",up:"\u0628\u0627\u0644\u0627",down:"\u067e\u0627\u06cc\u06cc\u0646",mcase:"\u0647\u0645\u0633\u0627\u0646 \u0628\u0648\u062f\u0646 \u062d\u0631\u0648\u0641",findnext:"\u062c\u0633\u062a\u062c\u0648\u06cc \u0628\u0639\u062f\u06cc",allreplaced:"\u062a\u0645\u0627\u0645\u06cc \u06a9\u0644\u0645\u0627\u062a \u06cc\u0627\u0641\u062a \u0634\u062f\u0647 \u062a\u063a\u06cc\u06cc\u0631 \u06cc\u0627\u0641\u062a\u0646\u062f","searchnext_desc":"\u062c\u0633\u062a\u062c\u0648\u06cc \u0645\u062c\u062f\u062f",notfound:"\u062c\u0633\u062a\u062c\u0648 \u06a9\u0627\u0645\u0644 \u0634\u062f. \u06a9\u0644\u0645\u0647 \u062c\u0633\u062a\u062c\u0648 \u0634\u062f\u0647 \u06cc\u0627\u0641\u062a \u0646\u0634\u062f","search_title":"\u062c\u0633\u062a\u062c\u0648","replace_title":"\u062c\u0633\u062a\u062c\u0648/\u062a\u0639\u0648\u06cc\u0636",replaceall:"\u062a\u0639\u0648\u06cc\u0636 \u0647\u0645\u0647",replace:"\u062a\u0639\u0648\u06cc\u0636"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fi_dlg.js deleted file mode 100644 index c2617c3371..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.searchreplace_dlg',{findwhat:"Etsit\u00e4\u00e4n",replacewith:"Korvataan",direction:"Suunta",up:"Yl\u00f6s",down:"Alas",mcase:"Huomioi isot ja pienet kirjaimet",findnext:"Etsi seuraavaa",allreplaced:"Kaikki l\u00f6ydetyt merkkijonot korvattiin.","searchnext_desc":"Etsi uudestaan",notfound:"Haku on valmis. Haettua teksti\u00e4 ei l\u00f6ytynyt.","search_title":"Haku","replace_title":"Etsi ja korvaa",replaceall:"Korvaa kaikki",replace:"Korvaa"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fr_dlg.js deleted file mode 100644 index 707b5c2a9e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.searchreplace_dlg',{findwhat:"Rechercher ceci",replacewith:"Remplacer par",direction:"Direction",up:"Vers le haut",down:"Vers le bas",mcase:"Sensible \u00e0 la casse",findnext:"Rechercher le suivant",allreplaced:"Toutes les occurrences de la cha\u00eene recherch\u00e9e ont \u00e9t\u00e9 remplac\u00e9es.","searchnext_desc":"Suivant",notfound:"La recherche est termin\u00e9e. La cha\u00eene recherch\u00e9e n\'a pas \u00e9t\u00e9 trouv\u00e9e.","search_title":"Rechercher","replace_title":"Rechercher / remplacer",replaceall:"Tout remplacer",replace:"Remplacer"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/he_dlg.js deleted file mode 100644 index c5861bbd4e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.searchreplace_dlg',{findwhat:"\u05dc\u05d7\u05e4\u05e9 \u05d0\u05ea",replacewith:"\u05dc\u05d4\u05d7\u05dc\u05d9\u05e3 \u05d1",direction:"\u05db\u05d9\u05d5\u05d5\u05df",up:"\u05dc\u05de\u05e2\u05dc\u05d4",down:"\u05dc\u05de\u05d8\u05d4",mcase:"\u05d4\u05ea\u05d0\u05dd \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e8\u05d9\u05e9\u05d9\u05d5\u05ea",findnext:"\u05d7\u05e4\u05e9 \u05d0\u05ea \u05d4\u05d1\u05d0",allreplaced:"\u05db\u05dc \u05e4\u05e8\u05d9\u05d8\u05d9 \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d4\u05d5\u05d7\u05dc\u05e4\u05d5","searchnext_desc":"\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d4\u05d1\u05d0",notfound:"\u05d4\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d4\u05e1\u05ea\u05d9\u05d9\u05dd. \u05e4\u05e8\u05d9\u05d8 \u05d4\u05d7\u05d9\u05e4\u05d5\u05e9 \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0.","search_title":"\u05d7\u05d9\u05e4\u05d5\u05e9","replace_title":"\u05d7\u05d9\u05e4\u05d5\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e4\u05d4",replaceall:"\u05d4\u05d7\u05dc\u05e4\u05ea \u05d4\u05db\u05dc",replace:"\u05d4\u05d7\u05dc\u05e4\u05d4"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/it_dlg.js deleted file mode 100644 index da34e5d837..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.searchreplace_dlg',{findwhat:"Trova:",replacewith:"Sostituisci con:",direction:"Direzione",up:"Avanti",down:"Indietro",mcase:"Maiuscole/minuscole",findnext:"Trova succ.",allreplaced:"Tutte le occorrenze del criterio di ricerca sono state sostituite.","searchnext_desc":"Trova successivo",notfound:"Ricerca completata. Nessun risultato trovato.","search_title":"Trova","replace_title":"Trova/Sostituisci",replaceall:"Sost. tutto",replace:"Sostituisci"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/ja_dlg.js deleted file mode 100644 index a12eb7830c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.searchreplace_dlg',{findwhat:"\u691c\u7d22\u3059\u308b\u6587\u5b57\u5217",replacewith:"\u7f6e\u63db\u5f8c\u306e\u6587\u5b57\u5217",direction:"\u65b9\u5411",up:"\u4e0a\u3078",down:"\u4e0b\u3078",mcase:"\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u306e\u533a\u5225",findnext:"\u6b21\u3092\u691c\u7d22",allreplaced:"\u3059\u3079\u3066\u7f6e\u63db\u3057\u307e\u3057\u305f\u3002","searchnext_desc":"\u518d\u691c\u7d22",notfound:"\u691c\u7d22\u3092\u5b8c\u4e86\u3057\u307e\u3057\u305f\u3002\u691c\u7d22\u6587\u5b57\u5217\u306f\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002","search_title":"\u691c\u7d22","replace_title":"\u691c\u7d22\u3068\u7f6e\u63db",replaceall:"\u3059\u3079\u3066\u7f6e\u63db",replace:"\u7f6e\u63db"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/nl_dlg.js deleted file mode 100644 index afda5f032a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.searchreplace_dlg',{findwhat:"Zoeken naar",replacewith:"Vervangen door",direction:"Richting",up:"Omhoog",down:"Omlaag",mcase:"Identieke hoofdletters/kleine letters",findnext:"Zoeken",allreplaced:"Alle instanties van de zoekterm zijn vervangen.","searchnext_desc":"Opnieuw zoeken",notfound:"Het doorzoeken is voltooid. De zoekterm kon niet meer worden gevonden.","search_title":"Zoeken","replace_title":"Zoeken/Vervangen",replaceall:"Alles verv.",replace:"Vervangen"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/nn_dlg.js deleted file mode 100644 index 3dddb7fc07..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.searchreplace_dlg',{findwhat:"Finn kva",replacewith:"Erstatt med",direction:"Retning",up:"Oppover",down:"Nedover",mcase:"Skill mellom store og sm\u00e5 teikn",findnext:"Finn neste",allreplaced:"Alle f\u00f8rekomstar av s\u00f8kjestrengen er erstatta.","searchnext_desc":"S\u00f8k igjen",notfound:"S\u00f8ket avslutta. Fann ikkje s\u00f8kjestrengen.","search_title":"S\u00f8k","replace_title":"S\u00f8k/Erstatt",replaceall:"Erstatt alt",replace:"Erstatt"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/pl_dlg.js deleted file mode 100644 index df815de1cf..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.searchreplace_dlg',{findwhat:"Znajd\u017a...",replacewith:"Zamie\u0144 na...",direction:"Kierunek",up:"W g\u00f3r\u0119",down:"W d\u00f3\u0142",mcase:"Uwzgl\u0119dniaj wielko\u015b\u0107 liter",findnext:"Znajd\u017a nast\u0119pny",allreplaced:"Wszystkie wyst\u0105pienia szukanego fragmentu zosta\u0142y zast\u0105pione.","searchnext_desc":"Znajd\u017a ponownie",notfound:"Wyszukiwanie zako\u0144czone. Poszukiwany fragment nie zosta\u0142 znaleziony.","search_title":"Znajd\u017a","replace_title":"Znajd\u017a/zamie\u0144",replaceall:"Zamie\u0144 wszystko",replace:"Zamie\u0144"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/pt_dlg.js deleted file mode 100644 index 25c9a42c5d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.searchreplace_dlg',{findwhat:"Localizar",replacewith:"Substituir com",direction:"Dire\u00e7\u00e3o",up:"Acima",down:"Abaixo",mcase:"Diferenciar mai\u00fasculas",findnext:"Localizar pr\u00f3x.",allreplaced:"Todas as substitui\u00e7\u00f5es foram efetuadas.","searchnext_desc":"Localizar novamente",notfound:"A pesquisa foi conclu\u00edda sem resultados.","search_title":"Localizar","replace_title":"Localizar/substituir",replaceall:"Subst. todos",replace:"Substituir"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/ru_dlg.js deleted file mode 100644 index 3cc2af8d49..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.searchreplace_dlg',{findwhat:"\u041f\u043e\u0438\u0441\u043a",replacewith:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430",direction:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435",up:"\u0412\u0432\u0435\u0440\u0445 ",down:"\u0412\u043d\u0438\u0437",mcase:"\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440",findnext:"\u041d\u0430\u0439\u0442\u0438 \u0434\u0430\u043b\u0435\u0435",allreplaced:"\u0412\u0441\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0438\u044f \u043f\u043e\u0438\u0441\u043a\u0430 \u0431\u044b\u043b\u0438 \u0437\u0430\u043c\u0435\u043d\u0435\u043d\u044b.","searchnext_desc":"\u041d\u0430\u0439\u0442\u0438 \u0435\u0449\u0435",notfound:"\u041f\u043e\u0438\u0441\u043a \u0437\u0430\u0432\u0435\u0440\u0448\u0435\u043d. \u0421\u043e\u043e\u0442\u0432\u0435\u0441\u0442\u0432\u0438\u0439 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u043e.","search_title":"\u041f\u043e\u0438\u0441\u043a","replace_title":"\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430",replaceall:"\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435",replace:"\u0417\u0430\u043c\u0435\u043d\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/sv_dlg.js deleted file mode 100644 index d503ec86d2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.searchreplace_dlg',{findwhat:"Hitta vad",replacewith:"Ers\u00e4tt med",direction:"Riktning",up:"Upp\u00e5t",down:"Ner\u00e5t",mcase:"Matcha gemener/versaler",findnext:"Hitta n\u00e4sta",allreplaced:"Alla st\u00e4llen d\u00e4r s\u00f6kstr\u00e4ngen kunde hittas har ersatts.","searchnext_desc":"S\u00f6k igen",notfound:"S\u00f6kningen har slutf\u00f6rts. S\u00f6kstr\u00e4ngen kunde inte hittas.","search_title":"S\u00f6k","replace_title":"S\u00f6k/ers\u00e4tt",replaceall:"Ers\u00e4tt alla",replace:"Ers\u00e4tt"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/zh_dlg.js deleted file mode 100644 index 6b01dcd238..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.searchreplace_dlg',{findwhat:"\u67e5\u627e\u76ee\u6807",replacewith:"\u66ff\u6362\u4e3a",direction:"\u5bfb\u627e\u65b9\u5411",up:"\u5411\u4e0a",down:"\u5411\u4e0b",mcase:"\u533a\u5206\u5927\u5c0f\u5199",findnext:"\u67e5\u627e\u4e0b\u4e00\u4e2a",allreplaced:"\u6240\u6709\u7b26\u5408\u7684\u5b57\u7b26\u4e32\u90fd\u5df2\u88ab\u66ff\u6362\u3002","searchnext_desc":"\u7ee7\u7eed\u67e5\u627e",notfound:"\u5b8c\u6210\u641c\u7d22\uff0c\u672a\u627e\u5230\u641c\u7d22\u9879\u3002","search_title":"\u67e5\u627e","replace_title":"\u67e5\u627e/\u66ff\u6362",replaceall:"\u5168\u90e8\u66ff\u6362",replace:"\u66ff\u6362"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/searchreplace.htm b/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/searchreplace.htm deleted file mode 100644 index f5bafc4c95..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/searchreplace/searchreplace.htm +++ /dev/null @@ -1,100 +0,0 @@ - - - - {#searchreplace_dlg.replace_title} - - - - - - - - -
                      - - -
                      -
                      - - - - - - - - - - - -
                      - - - - - - - - - -
                      - - - - - -
                      -
                      -
                      - -
                      - - - - - - - - - - - - - - - -
                      - - - - - - - - - -
                      - - - - - -
                      -
                      -
                      - -
                      - -
                      - - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/css/content.css b/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/css/content.css deleted file mode 100644 index 24efa02170..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/css/content.css +++ /dev/null @@ -1 +0,0 @@ -.mceItemHiddenSpellWord {background:url(../img/wline.gif) repeat-x bottom left; cursor:default;} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/editor_plugin.js deleted file mode 100644 index 6b57241a90..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);f.menuItems={};c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}f._updateMenu(l);f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);f.menuItems[n]=l;if(n==f.selectedLang){f.selectedItem=l}})});return g}},setLanguage:function(e){var d=this;if(e==d.selectedLang){return}if(tinymce.grep(d.languages,function(f){return f===e}).length===0){throw"Unknown language: "+e}d.selectedLang=e;if(d.menuItems){d._updateMenu(d.menuItems[e])}if(d.active){d._done()}},_updateMenu:function(d){d.setSelected(1);this.selectedItem.setSelected(0);this.selectedItem=d},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}\u201d\u201c');for(d=0;d$2");while((s=p.indexOf(""))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(g.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(g.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(g.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(f,'$1$2')}g.replace(q,t)}});i.setRng(d)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/img/wline.gif b/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/img/wline.gif deleted file mode 100644 index 7d0a4dbca0..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/spellchecker/img/wline.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/css/props.css b/assets/plugins/tinymce/tiny_mce/plugins/style/css/props.css deleted file mode 100644 index 51a3b1f2f0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/css/props.css +++ /dev/null @@ -1,14 +0,0 @@ -#text_font {width:250px;} -#text_size {width:70px;} -.mceAddSelectValue {background:#DDD;} -select, #block_text_indent, #box_width, #box_height, #box_padding_top, #box_padding_right, #box_padding_bottom, #box_padding_left {width:70px;} -#box_margin_top, #box_margin_right, #box_margin_bottom, #box_margin_left, #positioning_width, #positioning_height, #positioning_zindex {width:70px;} -#positioning_placement_top, #positioning_placement_right, #positioning_placement_bottom, #positioning_placement_left {width:70px;} -#positioning_clip_top, #positioning_clip_right, #positioning_clip_bottom, #positioning_clip_left {width:70px;} -.panel_toggle_insert_span {padding-top:10px;} -.panel_wrapper div.current {padding-top:10px;height:230px;} -.delim {border-left:1px solid gray;} -.tdelim {border-bottom:1px solid gray;} -#block_display {width:145px;} -#list_type {width:115px;} -.disabled {background:#EEE;} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/style/editor_plugin.js deleted file mode 100644 index dda9f928b9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.StylePlugin",{init:function(a,b){a.addCommand("mceStyleProps",function(){var c=false;var f=a.selection.getSelectedBlocks();var d=[];if(f.length===1){d.push(a.selection.getNode().style.cssText)}else{tinymce.each(f,function(g){d.push(a.dom.getAttrib(g,"style"))});c=true}a.windowManager.open({file:b+"/props.htm",width:480+parseInt(a.getLang("style.delta_width",0)),height:340+parseInt(a.getLang("style.delta_height",0)),inline:1},{applyStyleToBlocks:c,plugin_url:b,styles:d})});a.addCommand("mceSetElementStyle",function(d,c){if(e=a.selection.getNode()){a.dom.setAttrib(e,"style",c);a.execCommand("mceRepaint")}});a.onNodeChange.add(function(d,c,f){c.setDisabled("styleprops",f.nodeName==="BODY")});a.addButton("styleprops",{title:"style.desc",cmd:"mceStyleProps"})},getInfo:function(){return{longname:"Style",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/style",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("style",tinymce.plugins.StylePlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/js/props.js b/assets/plugins/tinymce/tiny_mce/plugins/style/js/props.js deleted file mode 100644 index 853222bee5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/js/props.js +++ /dev/null @@ -1,709 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var defaultFonts = "" + - "Arial, Helvetica, sans-serif=Arial, Helvetica, sans-serif;" + - "Times New Roman, Times, serif=Times New Roman, Times, serif;" + - "Courier New, Courier, mono=Courier New, Courier, mono;" + - "Times New Roman, Times, serif=Times New Roman, Times, serif;" + - "Georgia, Times New Roman, Times, serif=Georgia, Times New Roman, Times, serif;" + - "Verdana, Arial, Helvetica, sans-serif=Verdana, Arial, Helvetica, sans-serif;" + - "Geneva, Arial, Helvetica, sans-serif=Geneva, Arial, Helvetica, sans-serif"; - -var defaultSizes = "9;10;12;14;16;18;24;xx-small;x-small;small;medium;large;x-large;xx-large;smaller;larger"; -var defaultMeasurement = "+pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; -var defaultSpacingMeasurement = "pixels=px;points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;+ems=em;exs=ex;%"; -var defaultIndentMeasurement = "pixels=px;+points=pt;inches=in;centimetres=cm;millimetres=mm;picas=pc;ems=em;exs=ex;%"; -var defaultWeight = "normal;bold;bolder;lighter;100;200;300;400;500;600;700;800;900"; -var defaultTextStyle = "normal;italic;oblique"; -var defaultVariant = "normal;small-caps"; -var defaultLineHeight = "normal"; -var defaultAttachment = "fixed;scroll"; -var defaultRepeat = "no-repeat;repeat;repeat-x;repeat-y"; -var defaultPosH = "left;center;right"; -var defaultPosV = "top;center;bottom"; -var defaultVAlign = "baseline;sub;super;top;text-top;middle;bottom;text-bottom"; -var defaultDisplay = "inline;block;list-item;run-in;compact;marker;table;inline-table;table-row-group;table-header-group;table-footer-group;table-row;table-column-group;table-column;table-cell;table-caption;none"; -var defaultBorderStyle = "none;solid;dashed;dotted;double;groove;ridge;inset;outset"; -var defaultBorderWidth = "thin;medium;thick"; -var defaultListType = "disc;circle;square;decimal;lower-roman;upper-roman;lower-alpha;upper-alpha;none"; - -function aggregateStyles(allStyles) { - var mergedStyles = {}; - - tinymce.each(allStyles, function(style) { - if (style !== '') { - var parsedStyles = tinyMCEPopup.editor.dom.parseStyle(style); - for (var name in parsedStyles) { - if (parsedStyles.hasOwnProperty(name)) { - if (mergedStyles[name] === undefined) { - mergedStyles[name] = parsedStyles[name]; - } - else if (name === 'text-decoration') { - if (mergedStyles[name].indexOf(parsedStyles[name]) === -1) { - mergedStyles[name] = mergedStyles[name] +' '+ parsedStyles[name]; - } - } - } - } - } - }); - - return mergedStyles; -} - -var applyActionIsInsert; -var existingStyles; - -function init(ed) { - var ce = document.getElementById('container'), h; - - existingStyles = aggregateStyles(tinyMCEPopup.getWindowArg('styles')); - ce.style.cssText = tinyMCEPopup.editor.dom.serializeStyle(existingStyles); - - applyActionIsInsert = ed.getParam("edit_css_style_insert_span", false); - document.getElementById('toggle_insert_span').checked = applyActionIsInsert; - - h = getBrowserHTML('background_image_browser','background_image','image','advimage'); - document.getElementById("background_image_browser").innerHTML = h; - - document.getElementById('text_color_pickcontainer').innerHTML = getColorPickerHTML('text_color_pick','text_color'); - document.getElementById('background_color_pickcontainer').innerHTML = getColorPickerHTML('background_color_pick','background_color'); - document.getElementById('border_color_top_pickcontainer').innerHTML = getColorPickerHTML('border_color_top_pick','border_color_top'); - document.getElementById('border_color_right_pickcontainer').innerHTML = getColorPickerHTML('border_color_right_pick','border_color_right'); - document.getElementById('border_color_bottom_pickcontainer').innerHTML = getColorPickerHTML('border_color_bottom_pick','border_color_bottom'); - document.getElementById('border_color_left_pickcontainer').innerHTML = getColorPickerHTML('border_color_left_pick','border_color_left'); - - fillSelect(0, 'text_font', 'style_font', defaultFonts, ';', true); - fillSelect(0, 'text_size', 'style_font_size', defaultSizes, ';', true); - fillSelect(0, 'text_size_measurement', 'style_font_size_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'text_case', 'style_text_case', "capitalize;uppercase;lowercase", ';', true); - fillSelect(0, 'text_weight', 'style_font_weight', defaultWeight, ';', true); - fillSelect(0, 'text_style', 'style_font_style', defaultTextStyle, ';', true); - fillSelect(0, 'text_variant', 'style_font_variant', defaultVariant, ';', true); - fillSelect(0, 'text_lineheight', 'style_font_line_height', defaultLineHeight, ';', true); - fillSelect(0, 'text_lineheight_measurement', 'style_font_line_height_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'background_attachment', 'style_background_attachment', defaultAttachment, ';', true); - fillSelect(0, 'background_repeat', 'style_background_repeat', defaultRepeat, ';', true); - - fillSelect(0, 'background_hpos_measurement', 'style_background_hpos_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'background_vpos_measurement', 'style_background_vpos_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'background_hpos', 'style_background_hpos', defaultPosH, ';', true); - fillSelect(0, 'background_vpos', 'style_background_vpos', defaultPosV, ';', true); - - fillSelect(0, 'block_wordspacing', 'style_wordspacing', 'normal', ';', true); - fillSelect(0, 'block_wordspacing_measurement', 'style_wordspacing_measurement', defaultSpacingMeasurement, ';', true); - fillSelect(0, 'block_letterspacing', 'style_letterspacing', 'normal', ';', true); - fillSelect(0, 'block_letterspacing_measurement', 'style_letterspacing_measurement', defaultSpacingMeasurement, ';', true); - fillSelect(0, 'block_vertical_alignment', 'style_vertical_alignment', defaultVAlign, ';', true); - fillSelect(0, 'block_text_align', 'style_text_align', "left;right;center;justify", ';', true); - fillSelect(0, 'block_whitespace', 'style_whitespace', "normal;pre;nowrap", ';', true); - fillSelect(0, 'block_display', 'style_display', defaultDisplay, ';', true); - fillSelect(0, 'block_text_indent_measurement', 'style_text_indent_measurement', defaultIndentMeasurement, ';', true); - - fillSelect(0, 'box_width_measurement', 'style_box_width_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_height_measurement', 'style_box_height_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_float', 'style_float', 'left;right;none', ';', true); - fillSelect(0, 'box_clear', 'style_clear', 'left;right;both;none', ';', true); - fillSelect(0, 'box_padding_left_measurement', 'style_padding_left_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_top_measurement', 'style_padding_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_bottom_measurement', 'style_padding_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_padding_right_measurement', 'style_padding_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_left_measurement', 'style_margin_left_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_top_measurement', 'style_margin_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_bottom_measurement', 'style_margin_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'box_margin_right_measurement', 'style_margin_right_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'border_style_top', 'style_border_style_top', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_right', 'style_border_style_right', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_bottom', 'style_border_style_bottom', defaultBorderStyle, ';', true); - fillSelect(0, 'border_style_left', 'style_border_style_left', defaultBorderStyle, ';', true); - - fillSelect(0, 'border_width_top', 'style_border_width_top', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_right', 'style_border_width_right', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_bottom', 'style_border_width_bottom', defaultBorderWidth, ';', true); - fillSelect(0, 'border_width_left', 'style_border_width_left', defaultBorderWidth, ';', true); - - fillSelect(0, 'border_width_top_measurement', 'style_border_width_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_right_measurement', 'style_border_width_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_bottom_measurement', 'style_border_width_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'border_width_left_measurement', 'style_border_width_left_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'list_type', 'style_list_type', defaultListType, ';', true); - fillSelect(0, 'list_position', 'style_list_position', "inside;outside", ';', true); - - fillSelect(0, 'positioning_type', 'style_positioning_type', "absolute;relative;static", ';', true); - fillSelect(0, 'positioning_visibility', 'style_positioning_visibility', "inherit;visible;hidden", ';', true); - - fillSelect(0, 'positioning_width_measurement', 'style_positioning_width_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_height_measurement', 'style_positioning_height_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_overflow', 'style_positioning_overflow', "visible;hidden;scroll;auto", ';', true); - - fillSelect(0, 'positioning_placement_top_measurement', 'style_positioning_placement_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_right_measurement', 'style_positioning_placement_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_bottom_measurement', 'style_positioning_placement_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_placement_left_measurement', 'style_positioning_placement_left_measurement', defaultMeasurement, ';', true); - - fillSelect(0, 'positioning_clip_top_measurement', 'style_positioning_clip_top_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_right_measurement', 'style_positioning_clip_right_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_bottom_measurement', 'style_positioning_clip_bottom_measurement', defaultMeasurement, ';', true); - fillSelect(0, 'positioning_clip_left_measurement', 'style_positioning_clip_left_measurement', defaultMeasurement, ';', true); - - TinyMCE_EditableSelects.init(); - setupFormData(); - showDisabledControls(); -} - -function setupFormData() { - var ce = document.getElementById('container'), f = document.forms[0], s, b, i; - - // Setup text fields - - selectByValue(f, 'text_font', ce.style.fontFamily, true, true); - selectByValue(f, 'text_size', getNum(ce.style.fontSize), true, true); - selectByValue(f, 'text_size_measurement', getMeasurement(ce.style.fontSize)); - selectByValue(f, 'text_weight', ce.style.fontWeight, true, true); - selectByValue(f, 'text_style', ce.style.fontStyle, true, true); - selectByValue(f, 'text_lineheight', getNum(ce.style.lineHeight), true, true); - selectByValue(f, 'text_lineheight_measurement', getMeasurement(ce.style.lineHeight)); - selectByValue(f, 'text_case', ce.style.textTransform, true, true); - selectByValue(f, 'text_variant', ce.style.fontVariant, true, true); - f.text_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.color); - updateColor('text_color_pick', 'text_color'); - f.text_underline.checked = inStr(ce.style.textDecoration, 'underline'); - f.text_overline.checked = inStr(ce.style.textDecoration, 'overline'); - f.text_linethrough.checked = inStr(ce.style.textDecoration, 'line-through'); - f.text_blink.checked = inStr(ce.style.textDecoration, 'blink'); - f.text_none.checked = inStr(ce.style.textDecoration, 'none'); - updateTextDecorations(); - - // Setup background fields - - f.background_color.value = tinyMCEPopup.editor.dom.toHex(ce.style.backgroundColor); - updateColor('background_color_pick', 'background_color'); - f.background_image.value = ce.style.backgroundImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - selectByValue(f, 'background_repeat', ce.style.backgroundRepeat, true, true); - selectByValue(f, 'background_attachment', ce.style.backgroundAttachment, true, true); - selectByValue(f, 'background_hpos', getNum(getVal(ce.style.backgroundPosition, 0)), true, true); - selectByValue(f, 'background_hpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 0))); - selectByValue(f, 'background_vpos', getNum(getVal(ce.style.backgroundPosition, 1)), true, true); - selectByValue(f, 'background_vpos_measurement', getMeasurement(getVal(ce.style.backgroundPosition, 1))); - - // Setup block fields - - selectByValue(f, 'block_wordspacing', getNum(ce.style.wordSpacing), true, true); - selectByValue(f, 'block_wordspacing_measurement', getMeasurement(ce.style.wordSpacing)); - selectByValue(f, 'block_letterspacing', getNum(ce.style.letterSpacing), true, true); - selectByValue(f, 'block_letterspacing_measurement', getMeasurement(ce.style.letterSpacing)); - selectByValue(f, 'block_vertical_alignment', ce.style.verticalAlign, true, true); - selectByValue(f, 'block_text_align', ce.style.textAlign, true, true); - f.block_text_indent.value = getNum(ce.style.textIndent); - selectByValue(f, 'block_text_indent_measurement', getMeasurement(ce.style.textIndent)); - selectByValue(f, 'block_whitespace', ce.style.whiteSpace, true, true); - selectByValue(f, 'block_display', ce.style.display, true, true); - - // Setup box fields - - f.box_width.value = getNum(ce.style.width); - selectByValue(f, 'box_width_measurement', getMeasurement(ce.style.width)); - - f.box_height.value = getNum(ce.style.height); - selectByValue(f, 'box_height_measurement', getMeasurement(ce.style.height)); - selectByValue(f, 'box_float', ce.style.cssFloat || ce.style.styleFloat, true, true); - - selectByValue(f, 'box_clear', ce.style.clear, true, true); - - setupBox(f, ce, 'box_padding', 'padding', ''); - setupBox(f, ce, 'box_margin', 'margin', ''); - - // Setup border fields - - setupBox(f, ce, 'border_style', 'border', 'Style'); - setupBox(f, ce, 'border_width', 'border', 'Width'); - setupBox(f, ce, 'border_color', 'border', 'Color'); - - updateColor('border_color_top_pick', 'border_color_top'); - updateColor('border_color_right_pick', 'border_color_right'); - updateColor('border_color_bottom_pick', 'border_color_bottom'); - updateColor('border_color_left_pick', 'border_color_left'); - - f.elements.border_color_top.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_top.value); - f.elements.border_color_right.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_right.value); - f.elements.border_color_bottom.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_bottom.value); - f.elements.border_color_left.value = tinyMCEPopup.editor.dom.toHex(f.elements.border_color_left.value); - - // Setup list fields - - selectByValue(f, 'list_type', ce.style.listStyleType, true, true); - selectByValue(f, 'list_position', ce.style.listStylePosition, true, true); - f.list_bullet_image.value = ce.style.listStyleImage.replace(new RegExp("url\\('?([^']*)'?\\)", 'gi'), "$1"); - - // Setup box fields - - selectByValue(f, 'positioning_type', ce.style.position, true, true); - selectByValue(f, 'positioning_visibility', ce.style.visibility, true, true); - selectByValue(f, 'positioning_overflow', ce.style.overflow, true, true); - f.positioning_zindex.value = ce.style.zIndex ? ce.style.zIndex : ""; - - f.positioning_width.value = getNum(ce.style.width); - selectByValue(f, 'positioning_width_measurement', getMeasurement(ce.style.width)); - - f.positioning_height.value = getNum(ce.style.height); - selectByValue(f, 'positioning_height_measurement', getMeasurement(ce.style.height)); - - setupBox(f, ce, 'positioning_placement', '', '', ['top', 'right', 'bottom', 'left']); - - s = ce.style.clip.replace(new RegExp("rect\\('?([^']*)'?\\)", 'gi'), "$1"); - s = s.replace(/,/g, ' '); - - if (!hasEqualValues([getVal(s, 0), getVal(s, 1), getVal(s, 2), getVal(s, 3)])) { - f.positioning_clip_top.value = getNum(getVal(s, 0)); - selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); - f.positioning_clip_right.value = getNum(getVal(s, 1)); - selectByValue(f, 'positioning_clip_right_measurement', getMeasurement(getVal(s, 1))); - f.positioning_clip_bottom.value = getNum(getVal(s, 2)); - selectByValue(f, 'positioning_clip_bottom_measurement', getMeasurement(getVal(s, 2))); - f.positioning_clip_left.value = getNum(getVal(s, 3)); - selectByValue(f, 'positioning_clip_left_measurement', getMeasurement(getVal(s, 3))); - } else { - f.positioning_clip_top.value = getNum(getVal(s, 0)); - selectByValue(f, 'positioning_clip_top_measurement', getMeasurement(getVal(s, 0))); - f.positioning_clip_right.value = f.positioning_clip_bottom.value = f.positioning_clip_left.value; - } - -// setupBox(f, ce, '', 'border', 'Color'); -} - -function getMeasurement(s) { - return s.replace(/^([0-9.]+)(.*)$/, "$2"); -} - -function getNum(s) { - if (new RegExp('^(?:[0-9.]+)(?:[a-z%]+)$', 'gi').test(s)) - return s.replace(/[^0-9.]/g, ''); - - return s; -} - -function inStr(s, n) { - return new RegExp(n, 'gi').test(s); -} - -function getVal(s, i) { - var a = s.split(' '); - - if (a.length > 1) - return a[i]; - - return ""; -} - -function setValue(f, n, v) { - if (f.elements[n].type == "text") - f.elements[n].value = v; - else - selectByValue(f, n, v, true, true); -} - -function setupBox(f, ce, fp, pr, sf, b) { - if (typeof(b) == "undefined") - b = ['Top', 'Right', 'Bottom', 'Left']; - - if (isSame(ce, pr, sf, b)) { - f.elements[fp + "_same"].checked = true; - - setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); - f.elements[fp + "_top"].disabled = false; - - f.elements[fp + "_right"].value = ""; - f.elements[fp + "_right"].disabled = true; - f.elements[fp + "_bottom"].value = ""; - f.elements[fp + "_bottom"].disabled = true; - f.elements[fp + "_left"].value = ""; - f.elements[fp + "_left"].disabled = true; - - if (f.elements[fp + "_top_measurement"]) { - selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); - f.elements[fp + "_left_measurement"].disabled = true; - f.elements[fp + "_bottom_measurement"].disabled = true; - f.elements[fp + "_right_measurement"].disabled = true; - } - } else { - f.elements[fp + "_same"].checked = false; - - setValue(f, fp + "_top", getNum(ce.style[pr + b[0] + sf])); - f.elements[fp + "_top"].disabled = false; - - setValue(f, fp + "_right", getNum(ce.style[pr + b[1] + sf])); - f.elements[fp + "_right"].disabled = false; - - setValue(f, fp + "_bottom", getNum(ce.style[pr + b[2] + sf])); - f.elements[fp + "_bottom"].disabled = false; - - setValue(f, fp + "_left", getNum(ce.style[pr + b[3] + sf])); - f.elements[fp + "_left"].disabled = false; - - if (f.elements[fp + "_top_measurement"]) { - selectByValue(f, fp + '_top_measurement', getMeasurement(ce.style[pr + b[0] + sf])); - selectByValue(f, fp + '_right_measurement', getMeasurement(ce.style[pr + b[1] + sf])); - selectByValue(f, fp + '_bottom_measurement', getMeasurement(ce.style[pr + b[2] + sf])); - selectByValue(f, fp + '_left_measurement', getMeasurement(ce.style[pr + b[3] + sf])); - f.elements[fp + "_left_measurement"].disabled = false; - f.elements[fp + "_bottom_measurement"].disabled = false; - f.elements[fp + "_right_measurement"].disabled = false; - } - } -} - -function isSame(e, pr, sf, b) { - var a = [], i, x; - - if (typeof(b) == "undefined") - b = ['Top', 'Right', 'Bottom', 'Left']; - - if (typeof(sf) == "undefined" || sf == null) - sf = ""; - - a[0] = e.style[pr + b[0] + sf]; - a[1] = e.style[pr + b[1] + sf]; - a[2] = e.style[pr + b[2] + sf]; - a[3] = e.style[pr + b[3] + sf]; - - for (i=0; i 0 ? s.substring(1) : s; - - if (f.text_none.checked) - s = "none"; - - ce.style.textDecoration = s; - - // Build background styles - - ce.style.backgroundColor = f.background_color.value; - ce.style.backgroundImage = f.background_image.value != "" ? "url(" + f.background_image.value + ")" : ""; - ce.style.backgroundRepeat = f.background_repeat.value; - ce.style.backgroundAttachment = f.background_attachment.value; - - if (f.background_hpos.value != "") { - s = ""; - s += f.background_hpos.value + (isNum(f.background_hpos.value) ? f.background_hpos_measurement.value : "") + " "; - s += f.background_vpos.value + (isNum(f.background_vpos.value) ? f.background_vpos_measurement.value : ""); - ce.style.backgroundPosition = s; - } - - // Build block styles - - ce.style.wordSpacing = f.block_wordspacing.value + (isNum(f.block_wordspacing.value) ? f.block_wordspacing_measurement.value : ""); - ce.style.letterSpacing = f.block_letterspacing.value + (isNum(f.block_letterspacing.value) ? f.block_letterspacing_measurement.value : ""); - ce.style.verticalAlign = f.block_vertical_alignment.value; - ce.style.textAlign = f.block_text_align.value; - ce.style.textIndent = f.block_text_indent.value + (isNum(f.block_text_indent.value) ? f.block_text_indent_measurement.value : ""); - ce.style.whiteSpace = f.block_whitespace.value; - ce.style.display = f.block_display.value; - - // Build box styles - - ce.style.width = f.box_width.value + (isNum(f.box_width.value) ? f.box_width_measurement.value : ""); - ce.style.height = f.box_height.value + (isNum(f.box_height.value) ? f.box_height_measurement.value : ""); - ce.style.styleFloat = f.box_float.value; - ce.style.cssFloat = f.box_float.value; - - ce.style.clear = f.box_clear.value; - - if (!f.box_padding_same.checked) { - ce.style.paddingTop = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); - ce.style.paddingRight = f.box_padding_right.value + (isNum(f.box_padding_right.value) ? f.box_padding_right_measurement.value : ""); - ce.style.paddingBottom = f.box_padding_bottom.value + (isNum(f.box_padding_bottom.value) ? f.box_padding_bottom_measurement.value : ""); - ce.style.paddingLeft = f.box_padding_left.value + (isNum(f.box_padding_left.value) ? f.box_padding_left_measurement.value : ""); - } else - ce.style.padding = f.box_padding_top.value + (isNum(f.box_padding_top.value) ? f.box_padding_top_measurement.value : ""); - - if (!f.box_margin_same.checked) { - ce.style.marginTop = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); - ce.style.marginRight = f.box_margin_right.value + (isNum(f.box_margin_right.value) ? f.box_margin_right_measurement.value : ""); - ce.style.marginBottom = f.box_margin_bottom.value + (isNum(f.box_margin_bottom.value) ? f.box_margin_bottom_measurement.value : ""); - ce.style.marginLeft = f.box_margin_left.value + (isNum(f.box_margin_left.value) ? f.box_margin_left_measurement.value : ""); - } else - ce.style.margin = f.box_margin_top.value + (isNum(f.box_margin_top.value) ? f.box_margin_top_measurement.value : ""); - - // Build border styles - - if (!f.border_style_same.checked) { - ce.style.borderTopStyle = f.border_style_top.value; - ce.style.borderRightStyle = f.border_style_right.value; - ce.style.borderBottomStyle = f.border_style_bottom.value; - ce.style.borderLeftStyle = f.border_style_left.value; - } else - ce.style.borderStyle = f.border_style_top.value; - - if (!f.border_width_same.checked) { - ce.style.borderTopWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); - ce.style.borderRightWidth = f.border_width_right.value + (isNum(f.border_width_right.value) ? f.border_width_right_measurement.value : ""); - ce.style.borderBottomWidth = f.border_width_bottom.value + (isNum(f.border_width_bottom.value) ? f.border_width_bottom_measurement.value : ""); - ce.style.borderLeftWidth = f.border_width_left.value + (isNum(f.border_width_left.value) ? f.border_width_left_measurement.value : ""); - } else - ce.style.borderWidth = f.border_width_top.value + (isNum(f.border_width_top.value) ? f.border_width_top_measurement.value : ""); - - if (!f.border_color_same.checked) { - ce.style.borderTopColor = f.border_color_top.value; - ce.style.borderRightColor = f.border_color_right.value; - ce.style.borderBottomColor = f.border_color_bottom.value; - ce.style.borderLeftColor = f.border_color_left.value; - } else - ce.style.borderColor = f.border_color_top.value; - - // Build list styles - - ce.style.listStyleType = f.list_type.value; - ce.style.listStylePosition = f.list_position.value; - ce.style.listStyleImage = f.list_bullet_image.value != "" ? "url(" + f.list_bullet_image.value + ")" : ""; - - // Build positioning styles - - ce.style.position = f.positioning_type.value; - ce.style.visibility = f.positioning_visibility.value; - - if (ce.style.width == "") - ce.style.width = f.positioning_width.value + (isNum(f.positioning_width.value) ? f.positioning_width_measurement.value : ""); - - if (ce.style.height == "") - ce.style.height = f.positioning_height.value + (isNum(f.positioning_height.value) ? f.positioning_height_measurement.value : ""); - - ce.style.zIndex = f.positioning_zindex.value; - ce.style.overflow = f.positioning_overflow.value; - - if (!f.positioning_placement_same.checked) { - ce.style.top = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); - ce.style.right = f.positioning_placement_right.value + (isNum(f.positioning_placement_right.value) ? f.positioning_placement_right_measurement.value : ""); - ce.style.bottom = f.positioning_placement_bottom.value + (isNum(f.positioning_placement_bottom.value) ? f.positioning_placement_bottom_measurement.value : ""); - ce.style.left = f.positioning_placement_left.value + (isNum(f.positioning_placement_left.value) ? f.positioning_placement_left_measurement.value : ""); - } else { - s = f.positioning_placement_top.value + (isNum(f.positioning_placement_top.value) ? f.positioning_placement_top_measurement.value : ""); - ce.style.top = s; - ce.style.right = s; - ce.style.bottom = s; - ce.style.left = s; - } - - if (!f.positioning_clip_same.checked) { - s = "rect("; - s += (isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_right.value) ? f.positioning_clip_right.value + f.positioning_clip_right_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_bottom.value) ? f.positioning_clip_bottom.value + f.positioning_clip_bottom_measurement.value : "auto") + " "; - s += (isNum(f.positioning_clip_left.value) ? f.positioning_clip_left.value + f.positioning_clip_left_measurement.value : "auto"); - s += ")"; - - if (s != "rect(auto auto auto auto)") - ce.style.clip = s; - } else { - s = "rect("; - t = isNum(f.positioning_clip_top.value) ? f.positioning_clip_top.value + f.positioning_clip_top_measurement.value : "auto"; - s += t + " "; - s += t + " "; - s += t + " "; - s += t + ")"; - - if (s != "rect(auto auto auto auto)") - ce.style.clip = s; - } - - ce.style.cssText = ce.style.cssText; -} - -function isNum(s) { - return new RegExp('[0-9]+', 'g').test(s); -} - -function showDisabledControls() { - var f = document.forms, i, a; - - for (i=0; i 1) { - addSelectValue(f, s, p[0], p[1]); - - if (se) - selectByValue(f, s, p[1]); - } else { - addSelectValue(f, s, p[0], p[0]); - - if (se) - selectByValue(f, s, p[0]); - } - } -} - -function toggleSame(ce, pre) { - var el = document.forms[0].elements, i; - - if (ce.checked) { - el[pre + "_top"].disabled = false; - el[pre + "_right"].disabled = true; - el[pre + "_bottom"].disabled = true; - el[pre + "_left"].disabled = true; - - if (el[pre + "_top_measurement"]) { - el[pre + "_top_measurement"].disabled = false; - el[pre + "_right_measurement"].disabled = true; - el[pre + "_bottom_measurement"].disabled = true; - el[pre + "_left_measurement"].disabled = true; - } - } else { - el[pre + "_top"].disabled = false; - el[pre + "_right"].disabled = false; - el[pre + "_bottom"].disabled = false; - el[pre + "_left"].disabled = false; - - if (el[pre + "_top_measurement"]) { - el[pre + "_top_measurement"].disabled = false; - el[pre + "_right_measurement"].disabled = false; - el[pre + "_bottom_measurement"].disabled = false; - el[pre + "_left_measurement"].disabled = false; - } - } - - showDisabledControls(); -} - -function synch(fr, to) { - var f = document.forms[0]; - - f.elements[to].value = f.elements[fr].value; - - if (f.elements[fr + "_measurement"]) - selectByValue(f, to + "_measurement", f.elements[fr + "_measurement"].value); -} - -function updateTextDecorations(){ - var el = document.forms[0].elements; - - var textDecorations = ["text_underline", "text_overline", "text_linethrough", "text_blink"]; - var noneChecked = el["text_none"].checked; - tinymce.each(textDecorations, function(id) { - el[id].disabled = noneChecked; - if (noneChecked) { - el[id].checked = false; - } - }); -} - -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/bg_dlg.js deleted file mode 100644 index 1be3bbab87..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.style_dlg',{"text_lineheight":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","text_variant":"\u041f\u0440\u043e\u043c\u0435\u043d\u043b\u0438\u0432","text_style":"\u0421\u0442\u0438\u043b","text_weight":"\u0422\u0435\u0433\u043b\u043e","text_size":"\u0420\u0430\u0437\u043c\u0435\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u0437\u0438\u0446\u0438\u043e\u043d\u0438\u0440\u0430\u043d\u0435","list_tab":"\u0421\u043f\u0438\u0441\u044a\u043a","border_tab":"\u0420\u0430\u043c\u043a\u0430","box_tab":"\u041a\u0443\u0442\u0438\u044f","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u043e\u0442\u0432\u044a\u0440\u0434\u0438",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 CSS \u0441\u0442\u0438\u043b",clip:"\u041e\u0442\u0440\u0435\u0436\u0438",placement:"\u0420\u0430\u0437\u043f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435",overflow:"Overflow",zindex:"Z-\u0438\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f","bullet_image":"\u0413\u0440\u0430\u0444\u0438\u043a\u0430 \u043d\u0430 \u0432\u043e\u0434\u0430\u0447\u0438\u0442\u0435","list_type":"\u0422\u0438\u043f",color:"\u0426\u0432\u044f\u0442",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b",margin:"\u041e\u0442\u0441\u0442\u044a\u043f \u043e\u0442\u0432\u044a\u043d",left:"\u041b\u044f\u0432\u043e",bottom:"\u0414\u043e\u043b\u0443",right:"\u0414\u044f\u0441\u043d\u043e",top:"\u0413\u043e\u0440\u0435",same:"\u0417\u0430 \u0432\u0441\u0438\u0447\u043a\u0438",padding:"\u041e\u0442\u0441\u0442\u044a\u043f \u043d\u0430\u0432\u044a\u0442\u0440\u0435","box_clear":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438","box_float":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","box_height":"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435","block_whitespace":"\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b","block_text_indent":"\u041e\u0442\u0441\u0442\u044a\u043f \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","block_text_align":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","block_letterspacing":"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0438\u0442\u0435","block_wordspacing":"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u0434\u0443\u043c\u0438\u0442\u0435","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_hpos":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_attachment":"\u041f\u0440\u0438\u043a\u0440\u0435\u043f\u0438","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440\u0438","background_image":"\u041a\u0430\u0440\u0442\u0438\u043d\u043a\u0430 \u0437\u0430 \u0444\u043e\u043d","background_color":"\u0426\u0432\u044f\u0442 \u0437\u0430 \u0444\u043e\u043d","text_none":"\u043d\u0438\u0449\u043e","text_blink":"\u043c\u0438\u0433\u0430","text_case":"\u0420\u0435\u0433\u0438\u0441\u0442\u044a\u0440","text_striketrough":"\u0437\u0430\u0447\u0435\u0440\u0442\u0430\u043d","text_underline":"\u043f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d","text_overline":"\u043d\u0430\u0434\u0447\u0435\u0440\u0442\u0430\u043d","text_decoration":"\u0414\u0435\u043a\u043e\u0440\u0430\u0446\u0438\u044f","text_color":"\u0426\u0432\u044f\u0442",text:"\u0422\u0435\u043a\u0441\u0442",background:"\u0424\u043e\u043d",block:"\u0411\u043b\u043e\u043a",box:"\u041a\u0443\u0442\u0438\u044f",border:"\u0420\u0430\u043c\u043a\u0430",list:"\u0421\u043f\u0438\u0441\u044a\u043a"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/cs_dlg.js deleted file mode 100644 index 8e6dc60cc5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.style_dlg',{"text_lineheight":"V\u00fd\u0161ka \u0159\u00e1dku","text_variant":"Varianta","text_style":"Styl textu","text_weight":"Tu\u010dnost p\u00edsma","text_size":"Velikost","text_font":"P\u00edsmo","text_props":"Text","positioning_tab":"Um\u00edst\u011bn\u00ed","list_tab":"Seznam","border_tab":"Ohrani\u010den\u00ed","box_tab":"Box","block_tab":"Blok","background_tab":"Pozad\u00ed","text_tab":"Text",apply:"Pou\u017e\u00edt",title:"Upravit CSS styl",clip:"O\u0159ez\u00e1n\u00ed (clip)",placement:"Um\u00edst\u011bni",overflow:"P\u0159ete\u010den\u00ed (overflow)",zindex:"Z-index",visibility:"Viditelnost","positioning_type":"Typ",position:"Um\u00edst\u011bn\u00ed","bullet_image":"Styl odr\u00e1\u017eek","list_type":"Typ",color:"Barva",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",style:"Styl",margin:"Okraje (margin)",left:"Vlevo",bottom:"Dole",right:"Vpravo",top:"Naho\u0159e",same:"Stejn\u00e9 pro v\u0161echny",padding:"Odsazen\u00ed (padding)","box_clear":"Vy\u010distit","box_float":"Plovouc\u00ed","box_height":"V\u00fd\u0161ka","box_width":"\u0160\u00ed\u0159ka","block_display":"Blokov\u00e9 zobrazen\u00ed","block_whitespace":"Zalamov\u00e1n\u00ed textu","block_text_indent":"Odsazen\u00ed textu","block_text_align":"Zarovn\u00e1n\u00ed textu","block_vertical_alignment":"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed","block_letterspacing":"Rozestup znak\u016f","block_wordspacing":"Rozestup slov","background_vpos":"Vertik\u00e1ln\u00ed um\u00edst\u011bn\u00ed","background_hpos":"Horizont\u00e1ln\u00ed um\u00edst\u011bn\u00ed","background_attachment":"Rolov\u00e1n\u00ed","background_repeat":"Opakov\u00e1n\u00ed","background_image":"Obr\u00e1zek pozad\u00ed","background_color":"Barva pozad\u00ed","text_none":"\u017d\u00e1dn\u00e1","text_blink":"Blik\u00e1n\u00ed","text_case":"Velk\u00e1 p\u00edsmena","text_striketrough":"P\u0159e\u0161krtnut\u00ed","text_underline":"Podtr\u017een\u00ed","text_overline":"Nadtr\u017een\u00ed","text_decoration":"Dekorace","text_color":"Barva",text:"Text",background:"Pozad\u00ed",block:"Blok",box:"Box",border:"Okraj",list:"Seznam"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/da_dlg.js deleted file mode 100644 index 733249f1df..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.style_dlg',{"text_lineheight":"Linieh\u00f8jde","text_variant":"Variant","text_style":"Stil","text_weight":"V\u00e6gt","text_size":"St\u00f8rrelse","text_font":"Skrifttype","text_props":"Tekst","positioning_tab":"Positionering","list_tab":"Liste","border_tab":"Kant","box_tab":"Boks","block_tab":"Blok","background_tab":"Baggrund","text_tab":"Tekst",apply:"Anvend",title:"Rediger CSS stil",clip:"Klip",placement:"Placering",overflow:"Overl\u00f8b",zindex:"Z-index",visibility:"Synlighed","positioning_type":"Type",position:"Position","bullet_image":"Punktopstillings-billede","list_type":"Type",color:"Farve",height:"H\u00f8jde",width:"Bredde",style:"Style",margin:"Margin",left:"Venstre",bottom:"Bund",right:"H\u00f8jre",top:"Top",same:"Ens for alle",padding:"Afstand til indhold","box_clear":"Ryd","box_float":"Flydende","box_height":"H\u00f8jde","box_width":"Bredde","block_display":"Vis","block_whitespace":"Mellemrum","block_text_indent":"Tekstindrykning","block_text_align":"Tekstjustering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Afstand mellem bogstaver","block_wordspacing":"Afstand mellem ord","background_vpos":"Vertikal position","background_hpos":"Horisontal position","background_attachment":"Vedh\u00e6ftede fil","background_repeat":"Gentag","background_image":"Baggrundsbillede","background_color":"Baggrundsfarve","text_none":"ingen","text_blink":"blink","text_case":"Vesaltilstand","text_striketrough":"gennemstreget","text_underline":"understreget","text_overline":"overstreget","text_decoration":"Dekoration","text_color":"Farve",text:"Tekst",background:"Baggrund",block:"Blok",box:"Boks",border:"Kant",list:"Liste"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/de_dlg.js deleted file mode 100644 index ad04664e18..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.style_dlg',{"text_lineheight":"Zeilenh\u00f6he","text_variant":"Variante","text_style":"Stil","text_weight":"Dicke","text_size":"Gr\u00f6\u00dfe","text_font":"Schriftart","text_props":"Text","positioning_tab":"Positionierung","list_tab":"Liste","border_tab":"Rahmen","box_tab":"Box","block_tab":"Block","background_tab":"Hintergrund","text_tab":"Text",apply:"\u00dcbernehmen",title:"CSS-Styles bearbeiten",clip:"Ausschnitt",placement:"Platzierung",overflow:"Verhalten bei \u00dcbergr\u00f6\u00dfe",zindex:"Z-Wert",visibility:"Sichtbar","positioning_type":"Art der Positionierung",position:"Positionierung","bullet_image":"Listenpunkt-Grafik","list_type":"Listenpunkt-Art",color:"Textfarbe",height:"H\u00f6he",width:"Breite",style:"Format",margin:"\u00c4u\u00dferer Abstand",left:"Links",bottom:"Unten",right:"Rechts",top:"Oben",same:"Alle gleich",padding:"Innerer Abstand","box_clear":"Umflie\u00dfung verhindern","box_float":"Umflie\u00dfung","box_height":"H\u00f6he","box_width":"Breite","block_display":"Umbruchverhalten","block_whitespace":"Automatischer Umbruch","block_text_indent":"Einr\u00fcckung","block_text_align":"Ausrichtung","block_vertical_alignment":"Vertikale Ausrichtung","block_letterspacing":"Buchstabenabstand","block_wordspacing":"Wortabstand","background_vpos":"Position Y","background_hpos":"Position X","background_attachment":"Wasserzeicheneffekt","background_repeat":"Wiederholung","background_image":"Hintergrundbild","background_color":"Hintergrundfarbe","text_none":"keine","text_blink":"blinkend","text_case":"Schreibung","text_striketrough":"durchgestrichen","text_underline":"unterstrichen","text_overline":"\u00fcberstrichen","text_decoration":"Gestaltung","text_color":"Farbe",text:"Text",background:"Hintergrund",block:"Block",box:"Box",border:"Rahmen",list:"Liste"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/en_dlg.js deleted file mode 100644 index 35881b3aca..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",toggle_insert_span:"Insert span at selection",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/es_dlg.js deleted file mode 100644 index 7a63754a79..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.style_dlg',{"text_lineheight":"Ancho de la fila","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tama\u00f1o","text_font":"Fuente","text_props":"Texto","positioning_tab":"Posicionamiento","list_tab":"Lista","border_tab":"Borde","box_tab":"Caja","block_tab":"Bloque","background_tab":"Fondo","text_tab":"Texto",apply:"Aplicar",title:"Editar Estilo CSS",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidad","positioning_type":"Tipo",position:"Posici\u00f3n","bullet_image":"Imagen de la vi\u00f1eta","list_type":"Tipo",color:"Color",height:"Alto",width:"Ancho",style:"Estilo",margin:"Margen",left:"Izquierda",bottom:"Inferior",right:"Derecha",top:"Superior",same:"Lo mismo en todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Alto","box_width":"Ancho","block_display":"Display","block_whitespace":"Espacio en blanco","block_text_indent":"Sangr\u00eda","block_text_align":"Alineaci\u00f3n del texto","block_vertical_alignment":"Alineaci\u00f3n vertical","block_letterspacing":"Espacio entre letra","block_wordspacing":"Espacio entre palabra","background_vpos":"Posici\u00f3n vertical","background_hpos":"Posici\u00f3n horizontal","background_attachment":"Adjunto","background_repeat":"Repetici\u00f3n","background_image":"Imagen de fondo","background_color":"Color de fondo","text_none":"Ninguno","text_blink":"Parpadeo","text_case":"Min\u00fas./May\u00fas.","text_striketrough":"Tachado","text_underline":"Subrayado","text_overline":"Subrayado superior","text_decoration":"Decorativos","text_color":"Color",text:"Texto",background:"Fondo",block:"Bloque",box:"Caja",border:"Borde",list:"Lista"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fa_dlg.js deleted file mode 100644 index d00a708b40..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.style_dlg',{"text_lineheight":"\u0628\u0644\u0646\u062f\u06cc \u062e\u0637","text_variant":"\u0646\u0648\u0639 \u062a\u063a\u06cc\u06cc\u0631","text_style":"\u0627\u0633\u062a\u0627\u06cc\u0644","text_weight":"\u062d\u0627\u0644\u062a","text_size":"\u0627\u0646\u062f\u0627\u0632\u0647","text_font":"\u0642\u0644\u0645","text_props":"\u0645\u062a\u0646","positioning_tab":"\u0645\u0648\u0642\u0639\u06cc\u062a","list_tab":"\u0644\u06cc\u0633\u062a","border_tab":"\u062d\u0627\u0634\u06cc\u0647","box_tab":"\u062c\u0639\u0628\u0647","block_tab":"\u0628\u0644\u0648\u06a9","background_tab":"\u067e\u0633 \u0632\u0645\u06cc\u0646\u0647","text_tab":"\u0645\u062a\u0646",apply:"\u0628\u06a9\u0627\u0631\u06af\u06cc\u0631\u06cc",title:"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0627\u0633\u062a\u0627\u06cc\u0644 CSS",clip:"\u0628\u0631\u0634 (Clip)",placement:"\u0645\u0648\u0642\u0639\u06cc\u062a \u0645\u06a9\u0627\u0646\u06cc",overflow:"\u0633\u0631 \u0631\u06cc\u0632",zindex:"\u0645\u062d\u0648\u0631 Z",visibility:"\u0642\u0627\u0628\u0644\u06cc\u062a \u0631\u0648\u06cc\u062a","positioning_type":"\u0646\u0648\u0639",position:"\u0645\u0648\u0642\u0639\u06cc\u062a","bullet_image":"\u062a\u0635\u0648\u06cc\u0631 \u06af\u0644\u0648\u0644\u0647","list_type":"\u0646\u0648\u0639",color:"\u0631\u0646\u06af",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u067e\u0647\u0646\u0627",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",margin:"\u0644\u0628\u0647",left:"\u0686\u067e",bottom:"\u067e\u0627\u06cc\u06cc\u0646",right:"\u0631\u0627\u0633\u062a",top:"\u0628\u0627\u0644\u0627",same:"\u0647\u0645\u0633\u0627\u0646 \u0628\u0631\u0627\u06cc \u0647\u0645\u0647",padding:"\u0644\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc","box_clear":"\u067e\u0627\u06a9 \u0633\u0627\u0632\u06cc","box_float":"\u0634\u0646\u0627\u0648\u0631","box_height":"\u0627\u0631\u062a\u0641\u0627\u0639","box_width":"\u067e\u0647\u0646\u0627","block_display":"\u0646\u0645\u0627\u06cc\u0634","block_whitespace":"\u0641\u0627\u0635\u0644\u0647 \u0633\u0641\u06cc\u062f","block_text_indent":"\u062a\u0648\u0631\u0641\u062a\u06af\u06cc \u0645\u062a\u0646","block_text_align":"\u062a\u0631\u0627\u0632 \u0645\u062a\u0646","block_vertical_alignment":"\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc","block_letterspacing":"\u0641\u0627\u0635\u0644\u0647 \u062d\u0631\u0648\u0641","block_wordspacing":"\u0641\u0627\u0635\u0644\u0647 \u06a9\u0644\u0645\u0627\u062a","background_vpos":"\u0645\u0648\u0642\u0639\u06cc\u062a \u0639\u0645\u0648\u062f\u06cc","background_hpos":"\u0645\u0648\u0642\u0639\u06cc\u062a \u0627\u0641\u0642\u06cc","background_attachment":"\u0641\u0627\u06cc\u0644 \u0636\u0645\u06cc\u0645\u0647","background_repeat":"\u062a\u06a9\u0631\u0627\u0631","background_image":"\u062a\u0635\u0648\u06cc\u0631 \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647","background_color":"\u0631\u0646\u06af \u067e\u0633 \u0632\u0645\u06cc\u0646\u0647","text_none":"\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645","text_blink":"\u0686\u0634\u0645\u06a9 \u0632\u0646","text_case":"\u062d\u0627\u0644\u062a","text_striketrough":"\u062e\u0637 \u062e\u0648\u0631\u062f\u0647","text_underline":"\u0632\u06cc\u0631 \u062e\u0637","text_overline":"\u0628\u0627\u0644\u0627 \u062e\u0637","text_decoration":"\u0622\u0631\u0627\u06cc\u0634","text_color":"\u0631\u0646\u06af",text:"\u0645\u062a\u0646",background:"\u067e\u0633 \u0632\u0645\u06cc\u0646\u0647",block:"\u0628\u0644\u0648\u06a9",box:"\u062c\u0639\u0628\u0647",border:"\u062d\u0627\u0634\u06cc\u0647",list:"\u0644\u06cc\u0633\u062a"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fi_dlg.js deleted file mode 100644 index 4f174cc71d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.style_dlg',{"text_lineheight":"Rivin korkeus","text_variant":"Variantti","text_style":"Tyyli","text_weight":"Paino","text_size":"Koko","text_font":"Kirjasin","text_props":"Teksti","positioning_tab":"Sijainti","list_tab":"Lista","border_tab":"Kehys","box_tab":"Laatikko","block_tab":"Palkki","background_tab":"Tausta","text_tab":"Teksti",apply:"K\u00e4yt\u00e4",title:"Muokkaa CSS-tyyli\u00e4",clip:"Leike",placement:"Sijoittelu",overflow:"Ylivuoto",zindex:"Z-indeksi",visibility:"N\u00e4kyvyys","positioning_type":"Tyyppi",position:"Sijainti","bullet_image":"Listauskuva","list_type":"Tyyppi",color:"V\u00e4ri",height:"Korkeus",width:"Leveys",style:"Tyyli",margin:"Marginaali",left:"Vasemmalla",bottom:"Alhaalla",right:"Oikealla",top:"Ylh\u00e4\u00e4ll\u00e4",same:"Sama kaikille",padding:"Tyhj\u00e4 tila","box_clear":"Nollaus","box_float":"Kellunta","box_height":"Korkeus","box_width":"Leveys","block_display":"N\u00e4ytt\u00f6","block_whitespace":"Tyhj\u00e4 tila","block_text_indent":"Tekstin sisennys","block_text_align":"Tekstin asettelu","block_vertical_alignment":"Pystyasettelu","block_letterspacing":"Kirjainten v\u00e4listys","block_wordspacing":"Sanojen v\u00e4listys","background_vpos":"Pystyasettelu","background_hpos":"Vaaka-asettelu","background_attachment":"Liite","background_repeat":"Toistuvuus","background_image":"Taustakuva","background_color":"Taustav\u00e4ri","text_none":"ei mit\u00e4\u00e4n","text_blink":"V\u00e4l\u00e4hdys","text_case":"Isot/pienet kirjaimet","text_striketrough":"Yliviivattu","text_underline":"Alleviivattu (Ctrl+U)","text_overline":"Yliviivattu","text_decoration":"Koristelu","text_color":"V\u00e4ri",text:"Teksti",background:"Tausta",block:"Lohko",box:"Laatikko",border:"Reunus",list:"Lista"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fr_dlg.js deleted file mode 100644 index 3f7bdb92d0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.style_dlg',{"text_lineheight":"Hauteur de ligne","text_variant":"Variante","text_style":"Style","text_weight":"Gras","text_size":"Taille","text_font":"Police","text_props":"Texte","positioning_tab":"Positionnement","list_tab":"Liste","border_tab":"Bordure","box_tab":"Bo\u00eete","block_tab":"Bloc","background_tab":"Fond","text_tab":"Texte",apply:"Appliquer",title:"\u00c9diter la feuille de style",clip:"Clip",placement:"Placement",overflow:"D\u00e9bordement",zindex:"Z-index",visibility:"Visibilit\u00e9","positioning_type":"Type",position:"Position","bullet_image":"Image de puce","list_type":"Type",color:"Couleur",height:"Hauteur",width:"Largeur",style:"Style",margin:"Marge",left:"Gauche",bottom:"Bas",right:"Droit",top:"Haut",same:"Identique pour tous",padding:"Espacement","box_clear":"Vider","box_float":"Flottant","box_height":"Hauteur","box_width":"Largeur","block_display":"Affichage","block_whitespace":"Fin de ligne","block_text_indent":"Indentation du texte","block_text_align":"Alignement du texte","block_vertical_alignment":"Alignement vertical","block_letterspacing":"Espacement des lettres","block_wordspacing":"Espacement des mots ","background_vpos":"Position verticale","background_hpos":"Position horizontale","background_attachment":"Attachement","background_repeat":"R\u00e9p\u00e9ter","background_image":"Image de fond","background_color":"Couleur de fond","text_none":"aucun","text_blink":"clignotant","text_case":"Casse","text_striketrough":"barr\u00e9","text_underline":"soulign\u00e9","text_overline":"ligne au-dessus","text_decoration":"D\u00e9coration","text_color":"Couleur",text:"Texte",background:"Fond",block:"Bloc",box:"Bo\u00eete",border:"Bordure",list:"Liste"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/he_dlg.js deleted file mode 100644 index 22680ba671..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.style_dlg',{"text_lineheight":"\u05d2\u05d5\u05d1\u05d4 \u05e9\u05d5\u05e8\u05d4","text_variant":"\u05de\u05e9\u05ea\u05e0\u05d4","text_style":"\u05e1\u05d2\u05e0\u05d5\u05df","text_weight":"\u05e2\u05d5\u05d1\u05d9","text_size":"\u05d2\u05d5\u05d3\u05dc","text_font":"\u05e4\u05d5\u05e0\u05d8","text_props":"\u05d8\u05e7\u05e1\u05d8","positioning_tab":"\u05de\u05d9\u05e7\u05d5\u05dd","list_tab":"\u05e8\u05e9\u05d9\u05de\u05d4","border_tab":"\u05d2\u05d1\u05d5\u05dc","box_tab":"\u05e7\u05d5\u05e4\u05e1\u05d0","block_tab":"\u05d7\u05e1\u05d5\u05dd","background_tab":"\u05e8\u05e7\u05e2","text_tab":"\u05d8\u05e7\u05e1\u05d8",apply:"\u05d4\u05d7\u05dc",title:"\u05e2\u05d3\u05db\u05d5\u05df \u05d4\u05d2\u05d3\u05e8\u05d5\u05ea CSS",clip:"\u05e7\u05dc\u05d9\u05e4",placement:"\u05de\u05d9\u05e7\u05d5\u05dd",overflow:"\u05d2\u05dc\u05d9\u05e9\u05d4",zindex:"Z-index",visibility:"\u05e8\u05d0\u05d5\u05ea","positioning_type":"\u05e1\u05d5\u05d2",position:"\u05de\u05d9\u05e7\u05d5\u05dd","bullet_image":"\u05ea\u05de\u05d5\u05e0\u05ea \u05ea\u05d1\u05dc\u05d9\u05d8","list_type":"\u05e1\u05d5\u05d2",color:"\u05e6\u05d1\u05e2",height:"\u05d2\u05d5\u05d1\u05d4",width:"\u05e8\u05d5\u05d7\u05d1",style:"\u05e1\u05d2\u05e0\u05d5\u05df",margin:"\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd",left:"\u05e9\u05de\u05d0\u05dc",bottom:"\u05ea\u05d7\u05ea\u05d9\u05ea",right:"\u05d9\u05de\u05d9\u05df",top:"\u05e2\u05dc\u05d9\u05d5\u05df",same:"\u05d0\u05d5\u05ea\u05d5 \u05d3\u05d1\u05e8 \u05e2\u05d1\u05d5\u05e8 \u05db\u05d5\u05dc\u05dd",padding:"\u05e8\u05d9\u05e4\u05d5\u05d3","box_clear":"\u05e0\u05e7\u05d4","box_float":"\u05d4\u05e6\u05e4\u05d4","box_height":"\u05d2\u05d5\u05d1\u05d4","box_width":"\u05e8\u05d5\u05d7\u05d1","block_display":"\u05d4\u05e6\u05d2","block_whitespace":"\u05e8\u05d5\u05d5\u05d7","block_text_indent":"\u05d4\u05d6\u05d7\u05d4","block_text_align":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8","block_vertical_alignment":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9","block_letterspacing":"\u05de\u05e8\u05d7\u05e7 \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea","block_wordspacing":"\u05de\u05e8\u05d7\u05e7 \u05d1\u05d9\u05df \u05de\u05d9\u05dc\u05d9\u05dd","background_vpos":"\u05de\u05d9\u05e7\u05d5\u05dd \u05e8\u05d5\u05d7\u05d1\u05d9","background_hpos":"\u05de\u05d9\u05e7\u05d5\u05dd \u05d0\u05d5\u05e4\u05e7\u05d9","background_attachment":"\u05e7\u05d1\u05e6\u05d9\u05dd \u05de\u05e6\u05d5\u05e8\u05e4\u05d9\u05dd","background_repeat":"\u05d7\u05d6\u05d5\u05e8","background_image":"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2","background_color":"\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2","text_none":"\u05dc\u05dc\u05d0","text_blink":"\u05d4\u05d1\u05d4\u05d5\u05d1","text_case":"Case","text_striketrough":"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4","text_underline":"\u05e9\u05d5\u05e8\u05d4 \u05de\u05ea\u05d7\u05ea","text_overline":"\u05e9\u05d5\u05e8\u05d4 \u05de\u05e2\u05dc","text_decoration":"\u05e2\u05d9\u05e6\u05d5\u05d1","text_color":"\u05e6\u05d1\u05e2",text:"\u05d8\u05e7\u05e1\u05d8",background:"\u05e8\u05e7\u05e2",block:"\u05d1\u05dc\u05d5\u05e7",box:"\u05ea\u05d9\u05d1\u05d4",border:"\u05d2\u05d1\u05d5\u05dc",list:"\u05e8\u05e9\u05d9\u05de\u05d4"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/it_dlg.js deleted file mode 100644 index 401b727704..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.style_dlg',{"text_lineheight":"Altezza linea","text_variant":"Variante","text_style":"Stile","text_weight":"Spessore","text_size":"Dimensione","text_font":"Carattere","text_props":"Testo","positioning_tab":"Posizionamento","list_tab":"Liste","border_tab":"Bordi","box_tab":"Contenitore","block_tab":"Blocco","background_tab":"Sfondo","text_tab":"Testo",apply:"Applica",title:"Modifica stile CSS",clip:"Clip",placement:"Piazzamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilit\u00e0","positioning_type":"Tipo",position:"Posizione","bullet_image":"Immagine Punto","list_type":"Tipo",color:"Colore",height:"Altezza",width:"Larghezza",style:"Stile",margin:"Margine",left:"Sinistro",bottom:"Inferiore",right:"Destro",top:"Superiore",same:"Uguale per tutti",padding:"Spazio dal bordo","box_clear":"Pulito","box_float":"Fluttuante","box_height":"Altezza","box_width":"Larghezza","block_display":"Visualizzazione","block_whitespace":"Whitespace","block_text_indent":"Indentazione testo","block_text_align":"Allineamento testo","block_vertical_alignment":"Allineamento verticale","block_letterspacing":"Spaziatura caratteri","block_wordspacing":"Spaziatura parole","background_vpos":"Posizione verticale","background_hpos":"Posizione orizzontale","background_attachment":"Allegato","background_repeat":"Repetizione","background_image":"Immagine sfondo","background_color":"Colore sfondo","text_none":"nessuna","text_blink":"lampeggiante","text_case":"Tipo","text_striketrough":"barrato","text_underline":"sottolineato","text_overline":"sopralineato","text_decoration":"Decorazione","text_color":"Colore",text:"Testo",background:"Sfondo",block:"Blocco",box:"Box",border:"Bordo",list:"Lista"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/ja_dlg.js deleted file mode 100644 index a96df7f919..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.style_dlg',{"text_lineheight":"\u884c\u306e\u9ad8\u3055","text_variant":"\u5909\u5f62","text_style":"\u30b9\u30bf\u30a4\u30eb","text_weight":"\u592a\u3055","text_size":"\u5927\u304d\u3055","text_font":"\u30d5\u30a9\u30f3\u30c8","text_props":"\u30c6\u30ad\u30b9\u30c8","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u7b87\u6761\u66f8\u304d","border_tab":"\u67a0\u7dda","box_tab":"\u30dc\u30c3\u30af\u30b9","block_tab":"\u30d6\u30ed\u30c3\u30af","background_tab":"\u80cc\u666f","text_tab":"\u6587\u5b57",apply:"\u9069\u7528",toggle_insert_span:"Insert span at selection",title:"CSS\u306e\u30b9\u30bf\u30a4\u30eb\u3092\u7de8\u96c6",clip:"\u5207\u308a\u629c\u304d",placement:"\u914d\u7f6e",overflow:"\u30aa\u30fc\u30d0\u30fc\u30d5\u30ed\u30fc",zindex:"Z-index",visibility:"\u53ef\u8996\u6027","positioning_type":"\u914d\u7f6e\u65b9\u6cd5",position:"\u8868\u793a\u4f4d\u7f6e","bullet_image":"\u884c\u982d\u6587\u5b57","list_type":"\u7b87\u6761\u66f8\u304d\u306e\u7a2e\u985e",color:"\u8272",height:"\u9ad8\u3055",width:"\u5e45",style:"\u30b9\u30bf\u30a4\u30eb",margin:"\u30de\u30fc\u30b8\u30f3",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u3059\u3079\u3066\u540c\u3058",padding:"\u30d1\u30c7\u30a3\u30f3\u30b0","box_clear":"\u56de\u308a\u8fbc\u307f\u89e3\u9664","box_float":"\u56de\u308a\u8fbc\u307f","box_height":"\u9ad8\u3055","box_width":"\u5e45","block_display":"\u30c7\u30a3\u30b9\u30d7\u30ec\u30a4","block_whitespace":"\u7a7a\u767d\u6587\u5b57","block_text_indent":"\u30c6\u30ad\u30b9\u30c8\u306e\u5b57\u4e0b\u3052","block_text_align":"\u30c6\u30ad\u30b9\u30c8\u306e\u6c34\u5e73\u914d\u7f6e","block_vertical_alignment":"\u5782\u76f4\u914d\u7f6e","block_letterspacing":"\u6587\u5b57\u9593\u9694","block_wordspacing":"\u5358\u8a9e\u9593\u9694","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u6dfb\u4ed8","background_repeat":"\u7e70\u308a\u8fd4\u3057","background_image":"\u80cc\u666f\u753b\u50cf","background_color":"\u80cc\u666f\u8272","text_none":"\u306a\u3057","text_blink":"\u70b9\u6ec5","text_case":"\u5927\u6587\u5b57/\u5c0f\u6587\u5b57","text_striketrough":"\u6253\u6d88\u3057\u7dda","text_underline":"\u4e0b\u7dda","text_overline":"\u4e0a\u7dda","text_decoration":"\u88c5\u98fe","text_color":"\u8272",text:"\u6587\u5b57",background:"\u80cc\u666f",block:"\u30d6\u30ed\u30c3\u30af",box:"\u30dc\u30c3\u30af\u30b9",border:"\u67a0\u7dda",list:"\u7b87\u6761\u66f8\u304d"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/nl_dlg.js deleted file mode 100644 index ad81f8f858..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.style_dlg',{"text_lineheight":"Lijnhoogte","text_variant":"Variant","text_style":"Stijl","text_weight":"Gewicht","text_size":"Tekengrootte","text_font":"Lettertype","text_props":"Tekst","positioning_tab":"Positionering","list_tab":"Lijst","border_tab":"Rand","box_tab":"Box","block_tab":"Blok","background_tab":"Achtergrond","text_tab":"Tekst",apply:"Toepassen",title:"CSS Stijl bewerken",clip:"Clip",placement:"Plaatsing",overflow:"Overvloeien",zindex:"Z-index",visibility:"Zichtbaarheid","positioning_type":"Type",position:"Positie","bullet_image":"Opsommingsteken","list_type":"Type",color:"Kleur",height:"Hoogte",width:"Breedte",style:"Stijl",margin:"Marge",left:"Links",bottom:"Onder",right:"Rechts",top:"Boven",same:"Alles hetzelfde",padding:"Opening","box_clear":"Vrijhouden","box_float":"Zweven","box_height":"Hoogte","box_width":"Breedte","block_display":"Weergave","block_whitespace":"Witruimte","block_text_indent":"Inspringen","block_text_align":"Tekstuitlijning","block_vertical_alignment":"Verticale uitlijning","block_letterspacing":"Letterruimte","block_wordspacing":"Woordruimte","background_vpos":"Verticale positie","background_hpos":"Horizontale positie","background_attachment":"Bijlage","background_repeat":"Herhalen","background_image":"Achtergrondafbeelding","background_color":"Achtergrondkleur","text_none":"Niets","text_blink":"Knipperen","text_case":"Hoofdlettergebruik","text_striketrough":"Doorhalen","text_underline":"Onderstrepen","text_overline":"Overhalen","text_decoration":"Decoratie","text_color":"Kleur",text:"Tekst",background:"Achtergrond",block:"Blok",box:"Box",border:"Rand",list:"Lijst"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/nn_dlg.js deleted file mode 100644 index 8b891c1311..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.style_dlg',{"text_lineheight":"Linjeh\u00f8gd","text_variant":"Variant","text_style":"Skriftstil","text_weight":"Skriftvekt","text_size":"Skriftstorleik","text_font":"Skrifttype","text_props":"Eigenskapar for skrift","positioning_tab":"Posisjon","list_tab":"Liste","border_tab":"Ramme","box_tab":"Boks","block_tab":"Blokk","background_tab":"Bakgrunn","text_tab":"Tekst",apply:"Legg til",title:"Rediger CSS-stil",clip:"Klipp",placement:"Plassering",overflow:"Overfylt",zindex:"Z-indeks",visibility:"Synlegheit","positioning_type":"Type",position:"Posisjon","bullet_image":"Kulepunktbilete","list_type":"Type",color:"Farge",height:"H\u00f8gd",width:"Breidd",style:"Stil",margin:"Marg",left:"Venstre",bottom:"Bunn",right:"H\u00f8gre",top:"Topp",same:"Likt i alle",padding:"Utfylling","box_clear":"Slett","box_float":"Flyt","box_height":"H\u00f8gd","box_width":"Breidd","block_display":"Framsyning","block_whitespace":"Mellomrom","block_text_indent":"Innrykk","block_text_align":"Justering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Bokstavmellomrom","block_wordspacing":"Ordmellomrom","background_vpos":"Vertikal posisjon","background_hpos":"Horisontal posisjon","background_attachment":"Vedlegg","background_repeat":"Gjenta","background_image":"Bakgrunnsbilete","background_color":"Bakgrunnsfarge","text_none":"Ingen","text_blink":"Blink","text_case":"Kapitelar/minusklar","text_striketrough":"Gjennomstreking","text_underline":"Senka skrift","text_overline":"Heva skrift","text_decoration":"Dekorasjon","text_color":"Farge",text:"Tekst",background:"Bakgrunn",block:"Blokk",box:"Boks",border:"Ramme",list:"Liste"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/pl_dlg.js deleted file mode 100644 index 1dd01ce035..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.style_dlg',{"text_lineheight":"Wysoko\u015b\u0107 linii","text_variant":"Wariant","text_style":"Styl","text_weight":"Waga","text_size":"Rozmiar","text_font":"Wz\u00f3r czcionki","text_props":"Tekst","positioning_tab":"Pozycjonowanie","list_tab":"Lista","border_tab":"Obramowanie","box_tab":"Pud\u0142o (box)","block_tab":"Blok","background_tab":"T\u0142o","text_tab":"Text",apply:"Zastosuj",title:"Edytuj style CSS",clip:"Klip",placement:"Umieszczenie",overflow:"Przepe\u0142niony",zindex:"Z-index",visibility:"Widoczno\u015b\u0107","positioning_type":"Typ",position:"Pozycja","bullet_image":"Obrazek listy","list_type":"Typ",color:"Kolor",height:"Wysoko\u015b\u0107",width:"Szeroko\u015b\u0107",style:"Styl",margin:"Margines",left:"Lewy",bottom:"D\u00f3\u0142",right:"Prawy",top:"G\u00f3ra",same:"To samo dla wszystkich",padding:"Odst\u0119py","box_clear":"Op\u0142ywanie (Clear)","box_float":"Op\u0142ywanie (Float)","box_height":"Wysoko\u015b\u0107","box_width":"Szeroko\u015b\u0107","block_display":"Spos\u00f3b wy\u015bwietlania","block_whitespace":"Bia\u0142e znaki","block_text_indent":"Przesuni\u0119cie tekstu","block_text_align":"Wyr\u00f3wnanie tekstu","block_vertical_alignment":"Pionowe wyr\u00f3wnanie","block_letterspacing":"Odst\u0119p mi\u0119dzy literami","block_wordspacing":"Odst\u0119p mi\u0119dzy wyrazami","background_vpos":"Pozycja pionowa","background_hpos":"Pozycja pozioma","background_attachment":"Za\u0142\u0105cznik","background_repeat":"Powt\u00f3rz","background_image":"Obrazek t\u0142a","background_color":"Kolor t\u0142a","text_none":"\u017caden","text_blink":"miganie","text_case":"Znaki","text_striketrough":"przekre\u015blenie","text_underline":"podkre\u015blenie","text_overline":"nadkre\u015blenie","text_decoration":"Dekoracja","text_color":"Kolor",text:"Tekst",background:"T\u0142o",block:"Blok",box:"Pud\u0142o (box)",border:"Obramowanie",list:"Lista"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/pt_dlg.js deleted file mode 100644 index 21c6b5e162..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.style_dlg',{"text_lineheight":"Altura da linha","text_variant":"Variante","text_style":"Estilo","text_weight":"Peso","text_size":"Tamanho","text_font":"Fonte","text_props":"Texto","positioning_tab":"Posicionamento","list_tab":"Lista","border_tab":"Limites","box_tab":"Caixa","block_tab":"Bloco","background_tab":"Fundo","text_tab":"Texto",apply:"Aplicar",title:"Editar CSS",clip:"Clip",placement:"Posicionamento",overflow:"Overflow",zindex:"Z-index",visibility:"Visibilidade","positioning_type":"Tipo",position:"Posi\u00e7\u00e3o","bullet_image":"Imagem de lista","list_type":"Tipo",color:"Cor",height:"Altura",width:"Largura",style:"Estilo",margin:"Margem",left:"Esquerda",bottom:"Abaixo",right:"Direita",top:"Topo",same:"O mesmo para todos",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Altura","box_width":"Largura","block_display":"Display","block_whitespace":"Espa\u00e7o","block_text_indent":"Indent","block_text_align":"Alinhamento de texto","block_vertical_alignment":"Alinhamento vertical","block_letterspacing":"Espa\u00e7amento de letras","block_wordspacing":"Espa\u00e7amento de palavras","background_vpos":"Posi\u00e7\u00e3o vertical","background_hpos":"Posi\u00e7\u00e3o horizontal","background_attachment":"Fixar","background_repeat":"Repetir","background_image":"Imagem de fundo","background_color":"Cor de fundo","text_none":"nenhum","text_blink":"Piscar","text_case":"Mai\u00fascula","text_striketrough":"Riscado","text_underline":"Sublinhado","text_overline":"Sobrelinha","text_decoration":"Decora\u00e7\u00e3o","text_color":"Cor",text:"Texto",background:"Fundo",block:"Bloco",box:"Caixa",border:"Borda",list:"Lista"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/ru_dlg.js deleted file mode 100644 index 857077c93f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.style_dlg',{"text_lineheight":"\u0412\u044b\u0441\u043e\u0442\u0430 \u0441\u0442\u0440\u043e\u043a\u0438","text_variant":"\u0412\u0430\u0440\u0438\u0430\u043d\u0442","text_style":"\u0421\u0442\u0438\u043b\u044c","text_weight":"\u0422\u043e\u043b\u0449\u0438\u043d\u0430","text_size":"\u0420\u0430\u0437\u043c\u0435\u0440","text_font":"\u0428\u0440\u0438\u0444\u0442","text_props":"\u0422\u0435\u043a\u0441\u0442","positioning_tab":"\u041f\u043e\u043b\u043e\u0436\u0435\u043d\u0438\u0435","list_tab":"\u0421\u043f\u0438\u0441\u043e\u043a","border_tab":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430","box_tab":"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440","block_tab":"\u0411\u043b\u043e\u043a","background_tab":"\u0424\u043e\u043d","text_tab":"\u0422\u0435\u043a\u0441\u0442",apply:"\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c",title:"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 CSS \u0441\u0442\u0438\u043b\u044f",clip:"\u041e\u0442\u0441\u0435\u0447\u0435\u043d\u0438\u0435",placement:"\u0420\u0430\u0437\u043c\u0435\u0449\u0435\u043d\u0438\u0435",overflow:"\u041f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435",zindex:"Z-\u0438\u043d\u0434\u0435\u043a\u0441",visibility:"\u0412\u0438\u0434\u0438\u043c\u043e\u0441\u0442\u044c","positioning_type":"\u0422\u0438\u043f",position:"\u041f\u043e\u0437\u0438\u0446\u0438\u044f","bullet_image":"\u041c\u0430\u0440\u043a\u0435\u0440","list_type":"\u0422\u0438\u043f",color:"\u0426\u0432\u0435\u0442",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",style:"\u0421\u0442\u0438\u043b\u044c",margin:"\u041e\u0442\u0441\u0442\u0443\u043f",left:"\u0421\u043b\u0435\u0432\u0430",bottom:"\u0421\u043d\u0438\u0437\u0443",right:"\u0421\u043f\u0440\u0430\u0432\u0430",top:"\u0412\u0432\u0435\u0440\u0445",same:"\u041e\u0434\u0438\u043d\u0430\u043a\u043e\u0432\u043e \u0434\u043b\u044f \u0432\u0441\u0435\u0445",padding:"\u041f\u043e\u043b\u044f","box_clear":"\u042f\u0432\u043d\u044b\u0439","box_float":"\u041f\u043b\u0430\u0432\u0430\u044e\u0449\u0438\u0439","box_height":"\u0412\u044b\u0441\u043e\u0442\u0430","box_width":"\u0428\u0438\u0440\u0438\u043d\u0430","block_display":"\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","block_whitespace":"\u041f\u0440\u043e\u0431\u0435\u043b","block_text_indent":"\u041e\u0442\u0441\u0442\u0443\u043f \u0442\u0435\u043a\u0441\u0442\u0430","block_text_align":"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430","block_vertical_alignment":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","block_letterspacing":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0431\u0443\u043a\u0432\u0430\u043c\u0438","block_wordspacing":"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u043c\u0435\u0436\u0434\u0443 \u0441\u043b\u043e\u0432\u0430\u043c\u0438","background_vpos":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_hpos":"\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043f\u043e\u0437\u0438\u0446\u0438\u044f","background_attachment":"\u041f\u0440\u0438\u0432\u044f\u0437\u043a\u0430","background_repeat":"\u041f\u043e\u0432\u0442\u043e\u0440","background_image":"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","background_color":"\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430","text_none":"\u0411\u0435\u0437 \u0432\u0441\u0435\u0433\u043e","text_blink":"\u041c\u0435\u0440\u0446\u0430\u044e\u0449\u0438\u0439","text_case":"\u0420\u0435\u0433\u0438\u0441\u0442\u0440","text_striketrough":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text_underline":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","text_overline":"\u0421 \u0432\u0435\u0440\u0445\u043d\u0435\u0439 \u0447\u0435\u0440\u0442\u043e\u0439","text_decoration":"\u041e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u0438\u0435","text_color":"\u0426\u0432\u0435\u0442",text:"\u0422\u0435\u043a\u0441\u0442",background:"\u0424\u043e\u043d",block:"\u0411\u043b\u043e\u043a",box:"\u041a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",list:"\u0421\u043f\u0438\u0441\u043e\u043a"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/sv_dlg.js deleted file mode 100644 index 4a529541e7..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.style_dlg',{"text_lineheight":"Radh\u00f6jd","text_variant":"Variant","text_style":"Stil","text_weight":"Tjocklek","text_size":"Storlek","text_font":"Typsnitt","text_props":"Text","positioning_tab":"Positionering","list_tab":"Listor","border_tab":"Ramar","box_tab":"Box","block_tab":"Block","background_tab":"Bakgrund","text_tab":"Text",apply:"Applicera",title:"Redigera inline CSS",clip:"Besk\u00e4rning",placement:"Placering",overflow:"\u00d6\u0096verfl\u00f6de",zindex:"Z-index",visibility:"Synlighet","positioning_type":"Positionstyp",position:"Position","bullet_image":"Punktbild","list_type":"Listtyp",color:"F\u00e4rg",height:"H\u00f6jd",width:"Bredd",style:"Stil",margin:"Marginal",left:"V\u00e4nster",bottom:"Botten",right:"H\u00f6ger",top:"Toppen",same:"Samma f\u00f6r alla",padding:"Padding","box_clear":"Rensa","box_float":"Flyt","box_height":"H\u00f6jd","box_width":"Bredd","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Textindrag","block_text_align":"Textjustering","block_vertical_alignment":"Vertikal justering","block_letterspacing":"Teckenmellanrum","block_wordspacing":"Ordavbrytning","background_vpos":"Vertikal position","background_hpos":"Horisontell position","background_attachment":"F\u00e4stpunkt","background_repeat":"Upprepning","background_image":"Bakgrundsbild","background_color":"Bakgrundsf\u00e4rg","text_none":"Inget","text_blink":"Blinka","text_case":"Sm\u00e5/stora","text_striketrough":"Genomstruken","text_underline":"Understruken","text_overline":"\u00d6verstruken","text_decoration":"Dekoration","text_color":"F\u00e4rg",text:"Text",background:"Bakgrund",block:"Block",box:"Box",border:"Ram",list:"Lista"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/style/langs/zh_dlg.js deleted file mode 100644 index b01f9fe49e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.style_dlg',{"text_lineheight":"\u884c\u9ad8","text_variant":"\u7279\u6b8a\u5b57\u4f53","text_style":"\u6837\u5f0f","text_weight":"\u7c97\u4f53","text_size":"\u5b57\u4f53\u5927\u5c0f","text_font":"\u5b57\u4f53","text_props":"\u6587\u5b57","positioning_tab":"\u4f4d\u7f6e","list_tab":"\u5217\u8868","border_tab":"\u8fb9\u6846","box_tab":"\u65b9\u76d2","block_tab":"\u533a\u5757","background_tab":"\u80cc\u666f","text_tab":"\u6587\u5b57",apply:"\u5e94\u7528",title:"\u7f16\u8f91CSS",clip:"\u526a\u8f91",placement:"\u653e\u7f6e",overflow:"\u6ea2\u51fa",zindex:"Z\u8f74\u5750\u6807",visibility:"\u53ef\u89c1","positioning_type":"\u7c7b\u578b",position:"\u4f4d\u7f6e","bullet_image":"\u56fe\u7247\u9879\u76ee\u7b26\u53f7","list_type":"\u7c7b\u578b",color:"\u989c\u8272",height:"\u9ad8",width:"\u5bbd",style:"\u6837\u5f0f",margin:"\u5916\u8fb9\u8ddd",left:"\u5de6",bottom:"\u4e0b",right:"\u53f3",top:"\u4e0a",same:"\u4e00\u81f4",padding:"\u5185\u8fb9\u8ddd","box_clear":"\u6e05\u9664\u6d6e\u52a8","box_float":"\u6d6e\u52a8","box_height":"\u9ad8","box_width":"\u5bbd","block_display":"\u663e\u793a","block_whitespace":"\u7a7a\u683c","block_text_indent":"\u6587\u5b57\u7f29\u8fdb","block_text_align":"\u6587\u5b57\u5bf9\u9f50","block_vertical_alignment":"\u5782\u76f4\u5bf9\u9f50","block_letterspacing":"\u5b57\u95f4\u8ddd","block_wordspacing":"\u8bcd\u95f4\u8ddd","background_vpos":"\u5782\u76f4\u4f4d\u7f6e","background_hpos":"\u6c34\u5e73\u4f4d\u7f6e","background_attachment":"\u9644\u4ef6","background_repeat":"\u91cd\u590d","background_image":"\u80cc\u666f\u56fe\u7247","background_color":"\u80cc\u666f\u989c\u8272","text_none":"\u65e0","text_blink":"\u95ea\u70c1","text_case":"\u5b57\u578b","text_striketrough":"\u5220\u9664\u7ebf","text_underline":"\u4e0b\u5212\u7ebf","text_overline":"\u4e0a\u5212\u7ebf","text_decoration":"\u88c5\u9970","text_color":"\u989c\u8272",text:"\u6587\u5b57",background:"\u80cc\u666f",block:"\u533a\u5757",box:"\u65b9\u76d2",border:"\u8fb9\u6846",list:"\u5217\u8868"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/props.htm b/assets/plugins/tinymce/tiny_mce/plugins/style/props.htm deleted file mode 100644 index 7dc087a307..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/props.htm +++ /dev/null @@ -1,845 +0,0 @@ - - - - {#style_dlg.title} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#style_dlg.text} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - - - - - - -
                        - - -
                      -
                      - -
                      - - - -
                      - - - - - - -
                      - -   - - -
                      -
                      - -
                      - - - - - -
                       
                      -
                      {#style_dlg.text_decoration} - - - - - - - - - - - - - - - - - - - - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.background} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - -
                       
                      -
                      - - - - -
                       
                      -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.block} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.box} - - - - - - - - - - - - - - -
                      - - - - - - -
                        - - -
                      -
                         
                      - - - - - - -
                        - - -
                      -
                         
                      -
                      - -
                      -
                      - {#style_dlg.padding} - - - - - - - - - - - - - - - - - - - - - - -
                       
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.margin} - - - - - - - - - - - - - - - - - - - - - - -
                       
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      - - - - - - -
                        - - -
                      -
                      -
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.border} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                        {#style_dlg.style} {#style_dlg.width} {#style_dlg.color}
                            
                      {#style_dlg.top}   - - - - - - -
                        - - -
                      -
                        - - - - - -
                       
                      -
                      {#style_dlg.right}   - - - - - - -
                        - - -
                      -
                        - - - - - -
                       
                      -
                      {#style_dlg.bottom}   - - - - - - -
                        - - -
                      -
                        - - - - - -
                       
                      -
                      {#style_dlg.left}   - - - - - - -
                        - - -
                      -
                        - - - - - -
                       
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.list} - - - - - - - - - - - - - - - -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.position} - - - - - - - - - - - - - - - - - - - - - -
                         
                      - - - - - - -
                        - - -
                      -
                         
                      - - - - - - -
                        - - -
                      -
                         
                      -
                      - -
                      -
                      - {#style_dlg.placement} - - - - - - - - - - - - - - - - - - - - - - -
                       
                      {#style_dlg.top} - - - - - - -
                        - - -
                      -
                      {#style_dlg.right} - - - - - - -
                        - - -
                      -
                      {#style_dlg.bottom} - - - - - - -
                        - - -
                      -
                      {#style_dlg.left} - - - - - - -
                        - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#style_dlg.clip} - - - - - - - - - - - - - - - - - - - - - - -
                       
                      {#style_dlg.top} - - - - - - -
                        - - -
                      -
                      {#style_dlg.right} - - - - - - -
                        - - -
                      -
                      {#style_dlg.bottom} - - - - - - -
                        - - -
                      -
                      {#style_dlg.left} - - - - - - -
                        - - -
                      -
                      -
                      -
                      -
                      -
                      -
                      - -
                      - - -
                      - -
                      - - - -
                      -
                      - -
                      -
                      -
                      - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/style/readme.txt b/assets/plugins/tinymce/tiny_mce/plugins/style/readme.txt deleted file mode 100644 index 5bac30202e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/style/readme.txt +++ /dev/null @@ -1,19 +0,0 @@ -Edit CSS Style plug-in notes -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Unlike WYSIWYG editor functionality that operates only on the selected text, -typically by inserting new HTML elements with the specified styles. -This plug-in operates on the HTML blocks surrounding the selected text. -No new HTML elements are created. - -This plug-in only operates on the surrounding blocks and not the nearest -parent node. This means that if a block encapsulates a node, -e.g

                      text

                      , then only the styles in the block are -recognized, not those in the span. - -When selecting text that includes multiple blocks at the same level (peers), -this plug-in accumulates the specified styles in all of the surrounding blocks -and populates the dialogue checkboxes accordingly. There is no differentiation -between styles set in all the blocks versus styles set in some of the blocks. - -When the [Update] or [Apply] buttons are pressed, the styles selected in the -checkboxes are applied to all blocks that surround the selected text. diff --git a/assets/plugins/tinymce/tiny_mce/plugins/tabfocus/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/tabfocus/editor_plugin.js deleted file mode 100644 index 2c51291615..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/tabfocus/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var c=tinymce.DOM,a=tinymce.dom.Event,d=tinymce.each,b=tinymce.explode;tinymce.create("tinymce.plugins.TabFocusPlugin",{init:function(f,g){function e(i,j){if(j.keyCode===9){return a.cancel(j)}}function h(l,p){var j,m,o,n,k;function q(t){n=c.select(":input:enabled,*[tabindex]:not(iframe)");function s(v){return v.nodeName==="BODY"||(v.type!="hidden"&&!(v.style.display=="none")&&!(v.style.visibility=="hidden")&&s(v.parentNode))}function i(v){return v.attributes.tabIndex.specified||v.nodeName=="INPUT"||v.nodeName=="TEXTAREA"}function u(){return tinymce.isIE6||tinymce.isIE7}function r(v){return((!u()||i(v)))&&v.getAttribute("tabindex")!="-1"&&s(v)}d(n,function(w,v){if(w.id==l.id){j=v;return false}});if(t>0){for(m=j+1;m=0;m--){if(r(n[m])){return n[m]}}}return null}if(p.keyCode===9){k=b(l.getParam("tab_focus",l.getParam("tabfocus_elements",":prev,:next")));if(k.length==1){k[1]=k[0];k[0]=":prev"}if(p.shiftKey){if(k[0]==":prev"){n=q(-1)}else{n=c.get(k[0])}}else{if(k[1]==":next"){n=q(1)}else{n=c.get(k[1])}}if(n){if(n.id&&(l=tinymce.get(n.id||n.name))){l.focus()}else{window.setTimeout(function(){if(!tinymce.isWebKit){window.focus()}n.focus()},10)}return a.cancel(p)}}}f.onKeyUp.add(e);if(tinymce.isGecko){f.onKeyPress.add(h);f.onKeyDown.add(e)}else{f.onKeyDown.add(h)}},getInfo:function(){return{longname:"Tabfocus",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/tabfocus",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("tabfocus",tinymce.plugins.TabFocusPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/cell.htm b/assets/plugins/tinymce/tiny_mce/plugins/table/cell.htm deleted file mode 100644 index 2922f7a2dd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/cell.htm +++ /dev/null @@ -1,180 +0,0 @@ - - - - {#table_dlg.cell_title} - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - -
                      - - - -
                      - -
                      -
                      -
                      - -
                      -
                      - {#table_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      -
                      -
                      -
                      - -
                      -
                      - -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/css/cell.css b/assets/plugins/tinymce/tiny_mce/plugins/table/css/cell.css deleted file mode 100644 index a47cc1a1ef..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/css/cell.css +++ /dev/null @@ -1,17 +0,0 @@ -/* CSS file for cell dialog in the table plugin */ - -.panel_wrapper div.current { - height: 200px; -} - -.advfield { - width: 200px; -} - -#action { - margin-bottom: 3px; -} - -#class { - width: 150px; -} \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/css/row.css b/assets/plugins/tinymce/tiny_mce/plugins/table/css/row.css deleted file mode 100644 index 0e397db3e2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/css/row.css +++ /dev/null @@ -1,25 +0,0 @@ -/* CSS file for row dialog in the table plugin */ - -.panel_wrapper div.current { - height: 200px; -} - -.advfield { - width: 200px; -} - -#action { - margin-bottom: 3px; -} - -#rowtype,#align,#valign,#class,#height { - width: 150px; -} - -#height { - width: 50px; -} - -.col2 { - padding-left: 20px; -} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/css/table.css b/assets/plugins/tinymce/tiny_mce/plugins/table/css/table.css deleted file mode 100644 index 8f107831ef..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/css/table.css +++ /dev/null @@ -1,13 +0,0 @@ -/* CSS file for table dialog in the table plugin */ - -.panel_wrapper div.current { - height: 245px; -} - -.advfield { - width: 200px; -} - -#class { - width: 150px; -} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/table/editor_plugin.js deleted file mode 100644 index 4a92e1b364..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE||d.isIE11){M.innerHTML='
                      '}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){if(!O){return}var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;iN){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){var T=S&&S[R?"lastChild":"firstChild"];return T&&T.nodeName==="BR"?C.dom.getParent(T,"td,th"):T}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){if(r.settings.forced_root_block){r.dom.add(r.getBody(),r.settings.forced_root_block,null,d.isIE&&!d.isIE11?" ":'
                      ')}else{r.dom.add(r.getBody(),"br",{"data-mce-bogus":"1"})}}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&(z.nodeName=="BR"||(z.childNodes.length==1&&(z.firstChild.nodeName=="BR"||z.firstChild.nodeValue=="\u00a0")))&&z.previousSibling&&z.previousSibling.nodeName=="TABLE"){w.dom.remove(z)}});s();r.startContent=r.getContent({format:"raw"})});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/js/cell.js b/assets/plugins/tinymce/tiny_mce/plugins/table/js/cell.js deleted file mode 100644 index 6f77e67072..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/js/cell.js +++ /dev/null @@ -1,319 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var ed; - -function init() { - ed = tinyMCEPopup.editor; - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor') - - var inst = ed; - var tdElm = ed.dom.getParent(ed.selection.getStart(), "td,th"); - var formObj = document.forms[0]; - var st = ed.dom.parseStyle(ed.dom.getAttrib(tdElm, "style")); - - // Get table cell data - var celltype = tdElm.nodeName.toLowerCase(); - var align = ed.dom.getAttrib(tdElm, 'align'); - var valign = ed.dom.getAttrib(tdElm, 'valign'); - var width = trimSize(getStyle(tdElm, 'width', 'width')); - var height = trimSize(getStyle(tdElm, 'height', 'height')); - var bordercolor = convertRGBToHex(getStyle(tdElm, 'bordercolor', 'borderLeftColor')); - var bgcolor = convertRGBToHex(getStyle(tdElm, 'bgcolor', 'backgroundColor')); - var className = ed.dom.getAttrib(tdElm, 'class'); - var backgroundimage = getStyle(tdElm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); - var id = ed.dom.getAttrib(tdElm, 'id'); - var lang = ed.dom.getAttrib(tdElm, 'lang'); - var dir = ed.dom.getAttrib(tdElm, 'dir'); - var scope = ed.dom.getAttrib(tdElm, 'scope'); - - // Setup form - addClassesToList('class', 'table_cell_styles'); - TinyMCE_EditableSelects.init(); - - if (!ed.dom.hasClass(tdElm, 'mceSelected')) { - formObj.bordercolor.value = bordercolor; - formObj.bgcolor.value = bgcolor; - formObj.backgroundimage.value = backgroundimage; - formObj.width.value = width; - formObj.height.value = height; - formObj.id.value = id; - formObj.lang.value = lang; - formObj.style.value = ed.dom.serializeStyle(st); - selectByValue(formObj, 'align', align); - selectByValue(formObj, 'valign', valign); - selectByValue(formObj, 'class', className, true, true); - selectByValue(formObj, 'celltype', celltype); - selectByValue(formObj, 'dir', dir); - selectByValue(formObj, 'scope', scope); - - // Resize some elements - if (isVisible('backgroundimagebrowser')) - document.getElementById('backgroundimage').style.width = '180px'; - - updateColor('bordercolor_pick', 'bordercolor'); - updateColor('bgcolor_pick', 'bgcolor'); - } else - tinyMCEPopup.dom.hide('action'); -} - -function updateAction() { - var el, inst = ed, tdElm, trElm, tableElm, formObj = document.forms[0]; - - if (!AutoValidator.validate(formObj)) { - tinyMCEPopup.alert(AutoValidator.getErrorMessages(formObj).join('. ') + '.'); - return false; - } - - tinyMCEPopup.restoreSelection(); - el = ed.selection.getStart(); - tdElm = ed.dom.getParent(el, "td,th"); - trElm = ed.dom.getParent(el, "tr"); - tableElm = ed.dom.getParent(el, "table"); - - // Cell is selected - if (ed.dom.hasClass(tdElm, 'mceSelected')) { - // Update all selected sells - tinymce.each(ed.dom.select('td.mceSelected,th.mceSelected'), function(td) { - updateCell(td); - }); - - ed.addVisual(); - ed.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - tinyMCEPopup.close(); - return; - } - - switch (getSelectValue(formObj, 'action')) { - case "cell": - var celltype = getSelectValue(formObj, 'celltype'); - var scope = getSelectValue(formObj, 'scope'); - - function doUpdate(s) { - if (s) { - updateCell(tdElm); - - ed.addVisual(); - ed.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - tinyMCEPopup.close(); - } - }; - - if (ed.getParam("accessibility_warnings", 1)) { - if (celltype == "th" && scope == "") - tinyMCEPopup.confirm(ed.getLang('table_dlg.missing_scope', '', true), doUpdate); - else - doUpdate(1); - - return; - } - - updateCell(tdElm); - break; - - case "row": - var cell = trElm.firstChild; - - if (cell.nodeName != "TD" && cell.nodeName != "TH") - cell = nextCell(cell); - - do { - cell = updateCell(cell, true); - } while ((cell = nextCell(cell)) != null); - - break; - - case "col": - var curr, col = 0, cell = trElm.firstChild, rows = tableElm.getElementsByTagName("tr"); - - if (cell.nodeName != "TD" && cell.nodeName != "TH") - cell = nextCell(cell); - - do { - if (cell == tdElm) - break; - col += cell.getAttribute("colspan")?cell.getAttribute("colspan"):1; - } while ((cell = nextCell(cell)) != null); - - for (var i=0; i 0) { - tinymce.each(tableElm.rows, function(tr) { - var i; - - for (i = 0; i < tr.cells.length; i++) { - if (dom.hasClass(tr.cells[i], 'mceSelected')) { - updateRow(tr, true); - return; - } - } - }); - - inst.addVisual(); - inst.nodeChanged(); - inst.execCommand('mceEndUndoLevel'); - tinyMCEPopup.close(); - return; - } - - switch (action) { - case "row": - updateRow(trElm); - break; - - case "all": - var rows = tableElm.getElementsByTagName("tr"); - - for (var i=0; i colLimit) { - tinyMCEPopup.alert(inst.getLang('table_dlg.col_limit').replace(/\{\$cols\}/g, colLimit)); - return false; - } else if (rowLimit && rows > rowLimit) { - tinyMCEPopup.alert(inst.getLang('table_dlg.row_limit').replace(/\{\$rows\}/g, rowLimit)); - return false; - } else if (cellLimit && cols * rows > cellLimit) { - tinyMCEPopup.alert(inst.getLang('table_dlg.cell_limit').replace(/\{\$cells\}/g, cellLimit)); - return false; - } - - // Update table - if (action == "update") { - dom.setAttrib(elm, 'cellPadding', cellpadding, true); - dom.setAttrib(elm, 'cellSpacing', cellspacing, true); - - if (!isCssSize(border)) { - dom.setAttrib(elm, 'border', border); - } else { - dom.setAttrib(elm, 'border', ''); - } - - if (border == '') { - dom.setStyle(elm, 'border-width', ''); - dom.setStyle(elm, 'border', ''); - dom.setAttrib(elm, 'border', ''); - } - - dom.setAttrib(elm, 'align', align); - dom.setAttrib(elm, 'frame', frame); - dom.setAttrib(elm, 'rules', rules); - dom.setAttrib(elm, 'class', className); - dom.setAttrib(elm, 'style', style); - dom.setAttrib(elm, 'id', id); - dom.setAttrib(elm, 'summary', summary); - dom.setAttrib(elm, 'dir', dir); - dom.setAttrib(elm, 'lang', lang); - - capEl = inst.dom.select('caption', elm)[0]; - - if (capEl && !caption) - capEl.parentNode.removeChild(capEl); - - if (!capEl && caption) { - capEl = elm.ownerDocument.createElement('caption'); - - if (!tinymce.isIE || tinymce.isIE11) - capEl.innerHTML = '
                      '; - - elm.insertBefore(capEl, elm.firstChild); - } - - if (width && inst.settings.inline_styles) { - dom.setStyle(elm, 'width', width); - dom.setAttrib(elm, 'width', ''); - } else { - dom.setAttrib(elm, 'width', width, true); - dom.setStyle(elm, 'width', ''); - } - - // Remove these since they are not valid XHTML - dom.setAttrib(elm, 'borderColor', ''); - dom.setAttrib(elm, 'bgColor', ''); - dom.setAttrib(elm, 'background', ''); - - if (height && inst.settings.inline_styles) { - dom.setStyle(elm, 'height', height); - dom.setAttrib(elm, 'height', ''); - } else { - dom.setAttrib(elm, 'height', height, true); - dom.setStyle(elm, 'height', ''); - } - - if (background != '') - elm.style.backgroundImage = "url('" + background + "')"; - else - elm.style.backgroundImage = ''; - -/* if (tinyMCEPopup.getParam("inline_styles")) { - if (width != '') - elm.style.width = getCSSSize(width); - }*/ - - if (bordercolor != "") { - elm.style.borderColor = bordercolor; - elm.style.borderStyle = elm.style.borderStyle == "" ? "solid" : elm.style.borderStyle; - elm.style.borderWidth = cssSize(border); - } else - elm.style.borderColor = ''; - - elm.style.backgroundColor = bgcolor; - elm.style.height = getCSSSize(height); - - inst.addVisual(); - - // Fix for stange MSIE align bug - //elm.outerHTML = elm.outerHTML; - - inst.nodeChanged(); - inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true}); - - // Repaint if dimensions changed - if (formObj.width.value != orgTableWidth || formObj.height.value != orgTableHeight) - inst.execCommand('mceRepaint'); - - tinyMCEPopup.close(); - return true; - } - - // Create new table - html += ''); - - tinymce.each('h1,h2,h3,h4,h5,h6,p'.split(','), function(n) { - if (patt) - patt += ','; - - patt += n + ' ._mce_marker'; - }); - - tinymce.each(inst.dom.select(patt), function(n) { - inst.dom.split(inst.dom.getParent(n, 'h1,h2,h3,h4,h5,h6,p'), n); - }); - - dom.setOuterHTML(dom.select('br._mce_marker')[0], html); - } else - inst.execCommand('mceInsertContent', false, html); - - tinymce.each(dom.select('table[data-mce-new]'), function(node) { - var tdorth = dom.select('td,th', node); - - // Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document - if (tinymce.isIE && !tinymce.isIE11 && node.nextSibling == null) { - if (inst.settings.forced_root_block) - dom.insertAfter(dom.create(inst.settings.forced_root_block), node); - else - dom.insertAfter(dom.create('br', {'data-mce-bogus': '1'}), node); - } - - try { - // IE9 might fail to do this selection - inst.selection.setCursorLocation(tdorth[0], 0); - } catch (ex) { - // Ignore - } - - dom.setAttrib(node, 'data-mce-new', ''); - }); - - inst.addVisual(); - inst.execCommand('mceEndUndoLevel', false, {}, {skip_undo: true}); - - tinyMCEPopup.close(); -} - -function makeAttrib(attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib]; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - if (value == "") - return ""; - - // XML encode it - value = value.replace(/&/g, '&'); - value = value.replace(/\"/g, '"'); - value = value.replace(//g, '>'); - - return ' ' + attrib + '="' + value + '"'; -} - -function init() { - tinyMCEPopup.resizeToInnerSize(); - - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('backgroundimagebrowsercontainer').innerHTML = getBrowserHTML('backgroundimagebrowser','backgroundimage','image','table'); - document.getElementById('bordercolor_pickcontainer').innerHTML = getColorPickerHTML('bordercolor_pick','bordercolor'); - document.getElementById('bgcolor_pickcontainer').innerHTML = getColorPickerHTML('bgcolor_pick','bgcolor'); - - var cols = 2, rows = 2, border = tinyMCEPopup.getParam('table_default_border', '0'), cellpadding = tinyMCEPopup.getParam('table_default_cellpadding', ''), cellspacing = tinyMCEPopup.getParam('table_default_cellspacing', ''); - var align = "", width = "", height = "", bordercolor = "", bgcolor = "", className = ""; - var id = "", summary = "", style = "", dir = "", lang = "", background = "", bgcolor = "", bordercolor = "", rules = "", frame = ""; - var inst = tinyMCEPopup.editor, dom = inst.dom; - var formObj = document.forms[0]; - var elm = dom.getParent(inst.selection.getNode(), "table"); - - // Hide advanced fields that isn't available in the schema - tinymce.each("summary id rules dir style frame".split(" "), function(name) { - var tr = tinyMCEPopup.dom.getParent(name, "tr") || tinyMCEPopup.dom.getParent("t" + name, "tr"); - - if (tr && !tinyMCEPopup.editor.schema.isValid("table", name)) { - tr.style.display = 'none'; - } - }); - - action = tinyMCEPopup.getWindowArg('action'); - - if (!action) - action = elm ? "update" : "insert"; - - if (elm && action != "insert") { - var rowsAr = elm.rows; - var cols = 0; - for (var i=0; i cols) - cols = rowsAr[i].cells.length; - - cols = cols; - rows = rowsAr.length; - - st = dom.parseStyle(dom.getAttrib(elm, "style")); - border = trimSize(getStyle(elm, 'border', 'borderWidth')); - cellpadding = dom.getAttrib(elm, 'cellpadding', ""); - cellspacing = dom.getAttrib(elm, 'cellspacing', ""); - width = trimSize(getStyle(elm, 'width', 'width')); - height = trimSize(getStyle(elm, 'height', 'height')); - bordercolor = convertRGBToHex(getStyle(elm, 'bordercolor', 'borderLeftColor')); - bgcolor = convertRGBToHex(getStyle(elm, 'bgcolor', 'backgroundColor')); - align = dom.getAttrib(elm, 'align', align); - frame = dom.getAttrib(elm, 'frame'); - rules = dom.getAttrib(elm, 'rules'); - className = tinymce.trim(dom.getAttrib(elm, 'class').replace(/mceItem.+/g, '')); - id = dom.getAttrib(elm, 'id'); - summary = dom.getAttrib(elm, 'summary'); - style = dom.serializeStyle(st); - dir = dom.getAttrib(elm, 'dir'); - lang = dom.getAttrib(elm, 'lang'); - background = getStyle(elm, 'background', 'backgroundImage').replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); - formObj.caption.checked = elm.getElementsByTagName('caption').length > 0; - - orgTableWidth = width; - orgTableHeight = height; - - action = "update"; - formObj.insert.value = inst.getLang('update'); - } - - addClassesToList('class', "table_styles"); - TinyMCE_EditableSelects.init(); - - // Update form - selectByValue(formObj, 'align', align); - selectByValue(formObj, 'tframe', frame); - selectByValue(formObj, 'rules', rules); - selectByValue(formObj, 'class', className, true, true); - formObj.cols.value = cols; - formObj.rows.value = rows; - formObj.border.value = border; - formObj.cellpadding.value = cellpadding; - formObj.cellspacing.value = cellspacing; - formObj.width.value = width; - formObj.height.value = height; - formObj.bordercolor.value = bordercolor; - formObj.bgcolor.value = bgcolor; - formObj.id.value = id; - formObj.summary.value = summary; - formObj.style.value = style; - formObj.dir.value = dir; - formObj.lang.value = lang; - formObj.backgroundimage.value = background; - - updateColor('bordercolor_pick', 'bordercolor'); - updateColor('bgcolor_pick', 'bgcolor'); - - // Resize some elements - if (isVisible('backgroundimagebrowser')) - document.getElementById('backgroundimage').style.width = '180px'; - - // Disable some fields in update mode - if (action == "update") { - formObj.cols.disabled = true; - formObj.rows.disabled = true; - } -} - -function changedSize() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - -/* var width = formObj.width.value; - if (width != "") - st['width'] = tinyMCEPopup.getParam("inline_styles") ? getCSSSize(width) : ""; - else - st['width'] = "";*/ - - var height = formObj.height.value; - if (height != "") - st['height'] = getCSSSize(height); - else - st['height'] = ""; - - formObj.style.value = dom.serializeStyle(st); -} - -function isCssSize(value) { - return /^[0-9.]+(%|in|cm|mm|em|ex|pt|pc|px)$/.test(value); -} - -function cssSize(value, def) { - value = tinymce.trim(value || def); - - if (!isCssSize(value)) { - return parseInt(value, 10) + 'px'; - } - - return value; -} - -function changedBackgroundImage() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - st['background-image'] = "url('" + formObj.backgroundimage.value + "')"; - - formObj.style.value = dom.serializeStyle(st); -} - -function changedBorder() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - // Update border width if the element has a color - if (formObj.border.value != "" && (isCssSize(formObj.border.value) || formObj.bordercolor.value != "")) - st['border-width'] = cssSize(formObj.border.value); - else { - if (!formObj.border.value) { - st['border'] = ''; - st['border-width'] = ''; - } - } - - formObj.style.value = dom.serializeStyle(st); -} - -function changedColor() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - st['background-color'] = formObj.bgcolor.value; - - if (formObj.bordercolor.value != "") { - st['border-color'] = formObj.bordercolor.value; - - // Add border-width if it's missing - if (!st['border-width']) - st['border-width'] = cssSize(formObj.border.value, 1); - } - - formObj.style.value = dom.serializeStyle(st); -} - -function changedStyle() { - var formObj = document.forms[0]; - var st = dom.parseStyle(formObj.style.value); - - if (st['background-image']) - formObj.backgroundimage.value = st['background-image'].replace(new RegExp("url\\(['\"]?([^'\"]*)['\"]?\\)", 'gi'), "$1"); - else - formObj.backgroundimage.value = ''; - - if (st['width']) - formObj.width.value = trimSize(st['width']); - - if (st['height']) - formObj.height.value = trimSize(st['height']); - - if (st['background-color']) { - formObj.bgcolor.value = st['background-color']; - updateColor('bgcolor_pick','bgcolor'); - } - - if (st['border-color']) { - formObj.bordercolor.value = st['border-color']; - updateColor('bordercolor_pick','bordercolor'); - } -} - -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/bg_dlg.js deleted file mode 100644 index 30d4181d24..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.table_dlg',{"rules_border":"\u0433\u0440\u0430\u043d\u0438\u0446\u0430","rules_box":"\u043a\u0443\u0442\u0438\u044f","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u0441\u043b\u0435\u0434","rules_above":"\u043f\u0440\u0435\u0434\u0438","rules_void":"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0432\u0441\u0438\u0447\u043a\u0438","frame_cols":"\u043a\u043e\u043b\u043e\u043d\u0438","frame_rows":"\u0440\u0435\u0434\u043e\u0432\u0435","frame_groups":"\u0433\u0440\u0443\u043f\u0438","frame_none":"\u0431\u0435\u0437",frame:"\u0424\u0440\u0435\u0439\u043c",caption:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","missing_scope":"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u0430 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u0431\u0435\u0437 \u0434\u0430 \u0441\u043b\u043e\u0436\u0438\u0442\u0435 \u043e\u0431\u0445\u0432\u0430\u0442 \u043d\u0430 \u0433\u043b\u0430\u0432\u0430\u0442\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430. \u0411\u0435\u0437 \u043d\u0435\u0433\u043e, \u043d\u044f\u043a\u043e\u0438 \u043f\u043e\u0442\u0440\u0435\u0431\u0438\u0442\u0435\u043b\u0438 \u0441 \u0443\u0432\u0440\u0435\u0436\u0434\u0430\u043d\u0438\u044f \u043c\u043e\u0433\u0430\u0442 \u0434\u0430 \u0438\u043c\u0430\u0442 \u043f\u0440\u043e\u0431\u043b\u0435\u043c \u0434\u0430 \u0440\u0430\u0437\u0431\u0435\u0440\u0430\u0442 \u0434\u0430\u043d\u043d\u0438\u0442\u0435 \u043f\u043e\u043a\u0430\u0437\u0430\u043d\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430.","cell_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043b\u0435\u0442\u043a\u0438: {$cells}.","row_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u0440\u0435\u0434\u043e\u0432\u0435: {$rows}.","col_limit":"\u041f\u0440\u0435\u0432\u0438\u0448\u0438\u0445\u0442\u0435 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u043d\u0430\u0442\u0430 \u0431\u0440\u043e\u0439\u043a\u0430 \u043a\u043e\u043b\u043e\u043d\u0438: {$cols}.",colgroup:"\u0413\u0440\u0443\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u0438",rowgroup:"\u0413\u0440\u0443\u043f\u0430 \u0440\u0435\u0434\u043e\u0432\u0435",scope:"\u041e\u0431\u0445\u0432\u0430\u0442",tfoot:"\u0414\u044a\u043d\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",tbody:"\u0422\u044f\u043b\u043e \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430",thead:"\u0413\u043b\u0430\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438 \u043d\u0435\u0447\u0435\u0442\u043d\u0438\u0442\u0435 \u0440\u0435\u0434\u043e\u0432\u0435 \u0432 \u0442\u0430\u043b\u0438\u0446\u0430\u0442\u0430","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0438\u044f \u0440\u0435\u0434","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u043d\u0430 \u0440\u0435\u0434\u0430","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0442\u0435\u043a\u0443\u0449\u0430\u0442\u0430 \u043a\u043b\u0435\u0442\u043a\u0430",th:"\u0413\u043b\u0430\u0432\u0430",td:"\u0414\u0430\u043d\u0438\u043d",summary:"\u041e\u0431\u043e\u0431\u0449\u0435\u043d\u0438\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430",rtl:"\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430 \u043b\u044f\u0432\u043e",ltr:"\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430 \u0434\u044f\u0441\u043d\u043e",mime:"MIME \u0442\u0438\u043f",langcode:"\u041a\u043e\u0434 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",langdir:"\u041f\u043e\u0441\u043e\u043a\u0430 \u043d\u0430 \u0435\u0437\u0438\u043a\u0430",style:"\u0421\u0442\u0438\u043b",id:"Id","merge_cells_title":"\u0421\u043b\u0435\u0439 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",bgcolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430",bordercolor:"\u0426\u0432\u044f\u0442 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430","align_bottom":"\u0414\u043e\u043b\u0443","align_top":"\u0413\u043e\u0440\u0435",valign:"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","cell_type":"\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","cell_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430","row_title":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430","align_middle":"\u0426\u0435\u043d\u0442\u044a\u0440","align_right":"\u0414\u044f\u0441\u043d\u043e","align_left":"\u041b\u044f\u0432\u043e","align_default":"\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435",align:"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435",border:"\u0420\u0430\u043c\u043a\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u044a\u043f \u0432 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",cellspacing:"\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u044a\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435",rows:"\u0420\u0435\u0434\u043e\u0432\u0435",cols:"\u041a\u043e\u043b\u043e\u043d\u0438",height:"\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0442\u0430\u0431\u043b\u0438\u0446\u0430",rowtype:"\u0420\u043e\u043b\u044f \u043d\u0430 \u0440\u0435\u0434\u0430","advanced_props":"\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0437\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","general_props":"\u041e\u0431\u0449\u0438 \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438","advanced_tab":"\u0417\u0430 \u043d\u0430\u043f\u0440\u0435\u0434\u043d\u0430\u043b\u0438","general_tab":"\u041e\u0431\u0449\u0438","cell_col":"\u041e\u0431\u043d\u043e\u0432\u0438 \u0432\u0441\u0438\u0447\u043a\u0438 \u043a\u043b\u0435\u0442\u043a\u0438 \u0432 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/cs_dlg.js deleted file mode 100644 index 735c5214d2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.table_dlg',{"rules_border":"r\u00e1me\u010dek okolo","rules_box":"box okolo","rules_vsides":"vlevo a vpravo","rules_rhs":"vpravo","rules_lhs":"vlevo","rules_hsides":"naho\u0159e a dole","rules_below":"dole","rules_above":"naho\u0159e","rules_void":"\u017e\u00e1dn\u00fd",rules:"Vykreslen\u00ed m\u0159\u00ed\u017eky","frame_all":"v\u0161e","frame_cols":"sloupce","frame_rows":"\u0159\u00e1dky","frame_groups":"oblasti a skupiny sloupc\u016f","frame_none":"\u017e\u00e1dn\u00e1",frame:"R\u00e1me\u010dek tabulky",caption:"Nadpis tabulky","missing_scope":"Skute\u010dn\u011b chcete pokra\u010dovat bez ur\u010den\u00ed oblasti hlavi\u010dky t\u00e9to tabulky? Bez n\u00ed m\u016f\u017ee u n\u011bkter\u00fdch u\u017eivatel\u016f doch\u00e1zet k ur\u010dit\u00fdm probl\u00e9m\u016fm p\u0159i interpretaci a zobrazov\u00e1n\u00ed dat v tabulce.","cell_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det bun\u011bk {$cells}.","row_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det \u0159\u00e1dk\u016f {$rows}.","col_limit":"P\u0159ekro\u010dili jste maxim\u00e1ln\u00ed po\u010det sloupc\u016f {$cols}.",colgroup:"Skupina sloupc\u016f",rowgroup:"Skupina \u0159\u00e1dk\u016f",scope:"Hlavi\u010dka pro",tfoot:"Pata tabulky",tbody:"T\u011blo tabulky",thead:"Hlavi\u010dka tabulky","row_all":"Aktualizovat v\u0161echny \u0159\u00e1dky tabulky","row_even":"Aktualizovat sud\u00e9 \u0159\u00e1dky tabulky","row_odd":"Aktualizovat lich\u00e9 \u0159\u00e1dky tabulky","row_row":"Aktualizovat zvolen\u00fd \u0159\u00e1dek","cell_all":"Aktualizovat v\u0161echny bu\u0148ky v tabulce","cell_row":"Aktualizovat v\u0161echny bu\u0148ky v \u0159\u00e1dku","cell_cell":"Aktualizovat zvolenou bu\u0148ku",th:"Z\u00e1hlav\u00ed",td:"Data",summary:"Shrnut\u00ed obsahu",bgimage:"Obr\u00e1zek pozad\u00ed",rtl:"Zprava doleva",ltr:"Zleva doprava",mime:"MIME typ c\u00edle",langcode:"K\u00f3d jazyka",langdir:"Sm\u011br textu",style:"Styl",id:"ID","merge_cells_title":"Spojit bu\u0148ky",bgcolor:"Barva pozad\u00ed",bordercolor:"Barva r\u00e1me\u010dku","align_bottom":"Dol\u016f","align_top":"Nahoru",valign:"Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed","cell_type":"Typ bu\u0148ky","cell_title":"Vlastnosti bu\u0148ky","row_title":"Vlastnosti \u0159\u00e1dku","align_middle":"Na st\u0159ed","align_right":"Vpravo","align_left":"Vlevo","align_default":"V\u00fdchoz\u00ed",align:"Zarovn\u00e1n\u00ed",border:"R\u00e1me\u010dek",cellpadding:"Odsazen\u00ed obsahu",cellspacing:"Rozestup bun\u011bk",rows:"\u0158\u00e1dky",cols:"Sloupce",height:"V\u00fd\u0161ka",width:"\u0160\u00ed\u0159ka",title:"Vlo\u017eit/upravit tabulku",rowtype:"Typ \u0159\u00e1dku","advanced_props":"Roz\u0161\u00ed\u0159en\u00e9 parametry","general_props":"Obecn\u00e9 parametry","advanced_tab":"Roz\u0161\u00ed\u0159en\u00e9","general_tab":"Obecn\u00e9","cell_col":"Aktualizovat v\u0161echny bu\u0148ky ve sloupci"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/da_dlg.js deleted file mode 100644 index 13220a5a16..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.table_dlg',{"rules_border":"kant","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"over","rules_void":"void",rules:"Regler","frame_all":"alle","frame_cols":"kolonner","frame_rows":"r\u00e6kker","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabeloverskrift","missing_scope":"Er du sikker p\u00e5, du vil forts\u00e6tte uden at angive forklaring for denne overskriftscelle? Uden forklaring vil v\u00e6re sv\u00e6rt for f.ek.s blinde at l\u00e6se og forst\u00e5 indholdet i tabellen.","cell_limit":"Du har overskredet antallet af tilladte celler p\u00e5 {$cells}.","row_limit":"Du har overskredet antallet af tilladte r\u00e6kker p\u00e5 {$rows}.","col_limit":"Du har overskredet antallet af tilladte kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"R\u00e6kkegruppe",scope:"Forklaring",tfoot:"Tabelfod",tbody:"Tabelkrop",thead:"Tabelhoved","row_all":"Opdater alle r\u00e6kker","row_even":"Opdater lige r\u00e6kker","row_odd":"Opdater ulige r\u00e6kker","row_row":"Opdater aktuelle celle","cell_all":"Opdater alle celler i tabellen","cell_row":"Opdater alle celler i r\u00e6kken","cell_cell":"Opdater aktuelle celle",th:"Hoved",td:"Data",summary:"Beskrivelse",bgimage:"Baggrundsbillede",rtl:"H\u00f8jre mod venstre",ltr:"Venstre mod h\u00f8jre",mime:"Destinations-MIME-type",langcode:"Sprogkode",langdir:"Sprogretning",style:"Style",id:"Id","merge_cells_title":"Flet celler",bgcolor:"Baggrundsfarve",bordercolor:"Kantfarve","align_bottom":"Bund","align_top":"Top",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleegenskaber","row_title":"R\u00e6kkeegenskaber","align_middle":"Centreret","align_right":"H\u00f8jre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Kant",cellpadding:"Afstand til celleindhold",cellspacing:"Afstand mellem celler",rows:"R\u00e6kker",cols:"Kolonner",height:"H\u00f8jde",width:"Bredde",title:"Inds\u00e6t/rediger tabel",rowtype:"R\u00e6kke i tabel del","advanced_props":"Avancerede egenskaber","general_props":"Generelle egenskaber","advanced_tab":"Avanceret","general_tab":"Generelt","cell_col":"Opdat\u00e9r alle celler i en s\u00f8jle"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/de_dlg.js deleted file mode 100644 index 1498c14856..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.table_dlg',{"rules_border":"alle 4 Seiten (Border)","rules_box":"alle 4 Seiten (Box)","rules_vsides":"links und rechts","rules_rhs":"nur rechts","rules_lhs":"nur links","rules_hsides":"oben und unten","rules_below":"nur unten","rules_above":"nur oben","rules_void":"keins",rules:"Gitter","frame_all":"zwischen allen Zellen","frame_cols":"zwischen Spalten","frame_rows":"zwischen Zeilen","frame_groups":"zwischen Gruppen","frame_none":"keine",frame:"Rahmen",caption:"Beschriftung der Tabelle","missing_scope":"Soll f\u00fcr diese \u00dcberschrift wirklich kein Bereich angegeben werden? Benutzer mit k\u00f6rperlichen Einschr\u00e4nkungen k\u00f6nnten Schwierigkeiten haben, den Inhalt der Tabelle zu verstehen.","cell_limit":"Die maximale Zellenzahl von {$cells} wurde \u00fcberschritten.","row_limit":"Die maximale Zeilenzahl von {$rows} wurde \u00fcberschritten.","col_limit":"Die maximale Spaltenzahl von {$cols} wurde \u00fcberschritten.",colgroup:"Horizontal gruppieren",rowgroup:"Vertikal gruppieren",scope:"Bezug",tfoot:"Tabellenfu\u00df",tbody:"Tabelleninhalt",thead:"Tabellenkopf","row_all":"Alle Zeilen ver\u00e4ndern","row_even":"Gerade Zeilen ver\u00e4ndern","row_odd":"Ungerade Zeilen ver\u00e4ndern","row_row":"Diese Zeile ver\u00e4ndern","cell_all":"Alle Zellen der Tabelle ver\u00e4ndern","cell_row":"Alle Zellen in dieser Zeile ver\u00e4ndern","cell_cell":"Diese Zelle ver\u00e4ndern",th:"\u00dcberschrift",td:"Textzelle",summary:"Zusammenfassung",bgimage:"Hintergrundbild",rtl:"Rechts nach links",ltr:"Links nach rechts",mime:"MIME-Type des Inhalts",langcode:"Sprachcode",langdir:"Schriftrichtung",style:"Format",id:"ID","merge_cells_title":"Zellen vereinen",bgcolor:"Hintergrundfarbe",bordercolor:"Rahmenfarbe","align_bottom":"Unten","align_top":"Oben",valign:"Vertikale Ausrichtung","cell_type":"Zellentyp","cell_title":"Eigenschaften der Zelle","row_title":"Eigenschaften der Zeile","align_middle":"Mittig","align_right":"Rechts","align_left":"Links","align_default":"Standard",align:"Ausrichtung",border:"Rahmen",cellpadding:"Abstand innerhalb der Zellen",cellspacing:"Zellenabstand",rows:"Zeilen",cols:"Spalten",height:"H\u00f6he",width:"Breite",title:"Tabelle einf\u00fcgen/bearbeiten",rowtype:"Gruppierung","advanced_props":"Erweiterte Einstellungen","general_props":"Allgemeine Einstellungen","advanced_tab":"Erweitert","general_tab":"Allgemein","cell_col":"Alle Zellen in dieser Spalte aktualisieren"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/en_dlg.js deleted file mode 100644 index 463e09ee1b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"Rules","frame_all":"all","frame_cols":"cols","frame_rows":"rows","frame_groups":"groups","frame_none":"none",frame:"Frame",caption:"Table Caption","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"You\'ve exceeded the maximum number of cells of {$cells}.","row_limit":"You\'ve exceeded the maximum number of rows of {$rows}.","col_limit":"You\'ve exceeded the maximum number of columns of {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"Footer",tbody:"Body",thead:"Header","row_all":"Update All Rows in Table","row_even":"Update Even Rows in Table","row_odd":"Update Odd Rows in Table","row_row":"Update Current Row","cell_all":"Update All Cells in Table","cell_row":"Update All Cells in Row","cell_cell":"Update Current Cell",th:"Header",td:"Data",summary:"Summary",bgimage:"Background Image",rtl:"Right to Left",ltr:"Left to Right",mime:"Target MIME Type",langcode:"Language Code",langdir:"Language Direction",style:"Style",id:"ID","merge_cells_title":"Merge Table Cells",bgcolor:"Background Color",bordercolor:"Border Color","align_bottom":"Bottom","align_top":"Top",valign:"Vertical Alignment","cell_type":"Cell Type","cell_title":"Table Cell Properties","row_title":"Table Row Properties","align_middle":"Center","align_right":"Right","align_left":"Left","align_default":"Default",align:"Alignment",border:"Border",cellpadding:"Cell Padding",cellspacing:"Cell Spacing",rows:"Rows",cols:"Columns",height:"Height",width:"Width",title:"Insert/Edit Table",rowtype:"Row Type","advanced_props":"Advanced Properties","general_props":"General Properties","advanced_tab":"Advanced","general_tab":"General","cell_col":"Update all cells in column"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/es_dlg.js deleted file mode 100644 index 32701a8d17..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"debajo","rules_above":"encima","rules_void":"vac\u00edo",rules:"Reglas","frame_all":"todos","frame_cols":"cols","frame_rows":"filas","frame_groups":"grupos","frame_none":"ninguno",frame:"Recuadro",caption:"Subt\u00edtulo de la tabla","missing_scope":" \u00bfEst\u00e1 seguro que desea continuar sin especificar el alcance del encabezado de celda? Sin \u00e9l podr\u00eda ser dificultoso para algunos usuarios entender el contenido o los datos mostrados en la tabla.","cell_limit":"Ha superado el n\u00famero m\u00e1ximo de celdas: {$cells}.","row_limit":"Ha superado el n\u00famero m\u00e1ximo de filas: {$rows}.","col_limit":"Ha superado el n\u00famero m\u00e1ximo de columnas: {$cols}.",colgroup:"Grupo de columnas",rowgroup:"Grupo de filas",scope:"Alcance",tfoot:"Pie de la tabla",tbody:"Cuerpo de la tabla",thead:"Encabezado de la tabla","row_all":"Actualizar todas las filas","row_even":"Actualizar filas pares","row_odd":"Actualizar filas impares","row_row":"Actualizar fila actual","cell_all":"Actualizar todas las celdas en la tabla","cell_row":"Actualizar todas las celdas en la fila","cell_cell":"Actualizar celda actual",th:"Encabezado",td:"Datos",summary:"Resumen",bgimage:"Imagen de fondo",rtl:"Derecha a izquierda",ltr:"Izquierda a derecha",mime:"Tipo MIME",langcode:"C\u00f3digo del lenguaje",langdir:"Direcci\u00f3n del lenguaje",style:"Estilo",id:"Id","merge_cells_title":"Vincular celdas",bgcolor:"Color de fondo",bordercolor:"Color del borde","align_bottom":"Debajo","align_top":"Arriba",valign:"Alineaci\u00f3n vertical","cell_type":"Tipo de celda","cell_title":"Propiedades de la celda","row_title":"Propiedades de la fila","align_middle":"Centrado","align_right":"Derecha","align_left":"Izquierda","align_default":"Predet.",align:"Alineaci\u00f3n",border:"Borde",cellpadding:"Relleno de celda",cellspacing:"Espaciado de celda",rows:"Filas",cols:"Cols",height:"Alto",width:"Ancho",title:"Insertar/Modificar tabla",rowtype:"Tipo de fila","advanced_props":"Propiedades avanzadas","general_props":"Propiedades generales","advanced_tab":"Avanzado","general_tab":"General","cell_col":"Actualizar todas las celdas en la columna"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fa_dlg.js deleted file mode 100644 index d26a9375cb..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.table_dlg',{"rules_border":"\u062d\u0627\u0634\u06cc\u0647","rules_box":"\u062c\u0639\u0628\u0647","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u067e\u0627\u06cc\u06cc\u0646","rules_above":"\u0628\u0627\u0644\u0627","rules_void":"\u062e\u0627\u0644\u06cc",rules:"\u062e\u0637 \u0647\u0627","frame_all":"\u0647\u0645\u0647","frame_cols":"\u0633\u062a\u0648\u0646 \u0647\u0627","frame_rows":"\u0633\u0637\u0631\u0647\u0627","frame_groups":"\u06af\u0631\u0648\u0647 \u0647\u0627","frame_none":"\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645",frame:"\u0642\u0627\u0628 (Frame)",caption:"\u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644","missing_scope":"\u0622\u06cc\u0627 \u0628\u062f\u0648\u0646 \u062a\u0639\u06cc\u06cc\u0646 \u0645\u062d\u062f\u0648\u062f\u0647 \u0628\u0631\u0627\u06cc \u0633\u0644\u0648\u0644 \u0639\u0646\u0648\u0627\u0646 \u062c\u062f\u0648\u0644\u060c \u0627\u062f\u0627\u0645\u0647 \u0645\u06cc \u062f\u0647\u06cc\u062f\u061f. \u0628\u062f\u0648\u0646 \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u060c \u0645\u0645\u06a9\u0646 \u0627\u0633\u062a \u062f\u0631\u06a9 \u0645\u062d\u062a\u0648\u0627 \u06cc\u0627 \u062f\u0627\u062f\u0647 \u0647\u0627 \u0628\u0631\u0627\u06cc \u0628\u0639\u0636\u06cc \u0627\u0632 \u06a9\u0627\u0631\u0628\u0631\u0627\u0646 \u0645\u0634\u06a9\u0644 \u0628\u0627\u0634\u062f.","cell_limit":"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$cells} \u0633\u0644\u0648\u0644 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.","row_limit":"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$rows} \u0633\u0637\u0631 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.","col_limit":"\u0634\u0645\u0627 \u0627\u0632 \u062a\u0639\u062f\u0627\u062f \u062d\u062f\u0627\u06a9\u062b\u0631 {$cols} \u0633\u062a\u0648\u0646 \u062a\u062c\u0627\u0648\u0632 \u06a9\u0631\u062f\u06cc\u062f.",colgroup:"\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646",rowgroup:"\u06af\u0631\u0648\u0647 \u0633\u0637\u0631",scope:"\u0645\u062d\u062f\u0648\u062f\u0647",tfoot:"\u067e\u0627\u06cc\u06cc\u0646 \u062c\u062f\u0648\u0644",tbody:"\u0628\u062f\u0646\u0647 \u062c\u062f\u0648\u0644",thead:"\u0628\u0627\u0644\u0627\u06cc \u062c\u062f\u0648\u0644","row_all":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0637\u0631\u0647\u0627 \u062f\u0631 \u062c\u062f\u0648\u0644","row_even":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631\u0647\u0627\u06cc \u0632\u0648\u062c \u062f\u0631 \u062c\u062f\u0648\u0644","row_odd":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631\u0647\u0627\u06cc \u0641\u0631\u062f \u062f\u0631 \u062c\u062f\u0648\u0644","row_row":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0637\u0631 \u0641\u0639\u0644\u06cc","cell_all":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644","cell_row":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u0633\u0637\u0631","cell_cell":"\u0628\u0631\u0648\u0632\u0631\u0633\u0627\u0646\u06cc \u0633\u0644\u0648\u0644 \u0641\u0639\u0644\u06cc",th:"\u0633\u0631 \u062c\u062f\u0648\u0644",td:"\u062f\u0627\u062f\u0647",summary:"\u062e\u0644\u0627\u0635\u0647",bgimage:"\u062a\u0635\u0648\u06cc\u0631 \u0632\u0645\u06cc\u0646\u0647",rtl:"\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e",ltr:"\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a",mime:"\u0646\u0648\u0639 MIME \u0645\u0642\u0635\u062f (Target)",langcode:"\u06a9\u062f \u0632\u0628\u0627\u0646",langdir:"\u062c\u0647\u062a \u0632\u0628\u0627\u0646",style:"\u0627\u0633\u062a\u0627\u06cc\u0644",id:"\u0634\u0646\u0627\u0633\u0647","merge_cells_title":"\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644 \u0647\u0627\u06cc \u062c\u062f\u0648\u0644",bgcolor:"\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647",bordercolor:"\u0631\u0646\u06af \u062d\u0627\u0634\u06cc\u0647","align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","align_top":"\u0628\u0627\u0644\u0627",valign:"\u062a\u0631\u0627\u0632 \u0639\u0645\u0648\u062f\u06cc","cell_type":"\u0646\u0648\u0639 \u0633\u0644\u0648\u0644","cell_title":"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644","row_title":"\u0645\u0634\u062e\u0635\u0627\u062a \u0633\u0637\u0631 \u062c\u062f\u0648\u0644","align_middle":"\u0648\u0633\u0637","align_right":"\u0631\u0627\u0633\u062a","align_left":"\u0686\u067e","align_default":"\u067e\u06cc\u0634\u0641\u0631\u0636",align:"\u062a\u0631\u0627\u0632",border:"\u062d\u0627\u0634\u06cc\u0647",cellpadding:"\u0644\u0627\u06cc\u0647 \u06af\u0630\u0627\u0631\u06cc \u0633\u0644\u0648\u0644 \u0647\u0627",cellspacing:"\u0641\u0627\u0635\u0644\u0647 \u0633\u0644\u0648\u0644 \u0647\u0627",rows:"\u0633\u0637\u0631\u0647\u0627",cols:"\u0633\u062a\u0648\u0646 \u0647\u0627",height:"\u0627\u0631\u062a\u0641\u0627\u0639",width:"\u067e\u0647\u0646\u0627",title:"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062c\u062f\u0648\u0644",rowtype:"\u0646\u0648\u0639 \u0633\u0637\u0631","advanced_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u067e\u06cc\u0634\u0631\u0641\u062a\u0647","general_props":"\u0645\u0634\u062e\u0635\u0627\u062a \u0639\u0645\u0648\u0645\u06cc","advanced_tab":"\u067e\u06cc\u0634\u0631\u0641\u062a\u0647","general_tab":"\u0639\u0645\u0648\u0645\u06cc","cell_col":"\u0628\u0631\u0648\u0632 \u0631\u0633\u0627\u0646\u06cc \u062a\u0645\u0627\u0645 \u0633\u0644\u0648\u0644\u200c\u0647\u0627 \u062f\u0631 \u0633\u062a\u0648\u0646"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fi_dlg.js deleted file mode 100644 index 87ed836491..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.table_dlg',{"rules_border":"kehys","rules_box":"laatikko","rules_vsides":"pystysuorat reunat","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"vaakasuorat reunat","rules_below":"alapuoli","rules_above":"yl\u00e4puoli","rules_void":"tyhj\u00e4",rules:"S\u00e4\u00e4nn\u00f6t","frame_all":"kaikki","frame_cols":"sarakkeet","frame_rows":"rivit","frame_groups":"ryhm\u00e4t","frame_none":"ei mit\u00e4\u00e4n",frame:"kehys",caption:"Taulukon seloste","missing_scope":"Haluatko varmasti jatkaa m\u00e4\u00e4ritt\u00e4m\u00e4tt\u00e4 tilaa t\u00e4lle taulukon otsakesolulle? Ilman sit\u00e4 joidenkin k\u00e4ytt\u00e4jien voi olla vaikea ymm\u00e4rt\u00e4\u00e4 taulukon sis\u00e4lt\u00e4m\u00e4\u00e4 informaatiota.","cell_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n soluja {$cells}.","row_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n rivej\u00e4 {$rows}.","col_limit":"Olet ylitt\u00e4nyt suurimman sallitun m\u00e4\u00e4r\u00e4n sarakkeita {$cols}.",colgroup:"Sarake ryhm\u00e4",rowgroup:"Rivi ryhm\u00e4",scope:"Tila",tfoot:"Taulukon alaosa",tbody:"Taulukon runko",thead:"Taulukon otsake","row_all":"P\u00e4ivit\u00e4 kaikki taulukon rivit","row_even":"P\u00e4ivit\u00e4 taulukon parilliset rivit","row_odd":"P\u00e4ivit\u00e4 taulukon parittomat rivit","row_row":"P\u00e4ivit\u00e4 rivi","cell_all":"P\u00e4ivit\u00e4 kaikki taulukon solut","cell_row":"P\u00e4ivit\u00e4 kaikki rivin solut","cell_cell":"P\u00e4ivit\u00e4 solu",th:"Otsake",td:"Tietue",summary:"Yhteenveto",bgimage:"Taustakuva",rtl:"Oikealta vasemmalle",ltr:"Vasemmalta oikealle",mime:"Kohteen MIME-tyyppi",langcode:"Kielen koodi",langdir:"Kielen suunta",style:"Tyyli",id:"Id","merge_cells_title":"Yhdist\u00e4 taulukon solut",bgcolor:"Taustan v\u00e4ri",bordercolor:"Kehyksen v\u00e4ri","align_bottom":"Alas","align_top":"Yl\u00f6s",valign:"Pystysuunnan tasaus","cell_type":"Solun tyyppi","cell_title":"Taulukon solun asetukset","row_title":"Taulukon rivin asetukset","align_middle":"Keskitetty","align_right":"Oikea","align_left":"Vasen","align_default":"Oletus",align:"Tasaus",border:"Kehys",cellpadding:"Solun tyhj\u00e4 tila",cellspacing:"Solun v\u00e4li",rows:"Rivit",cols:"Sarakkeet",height:"Korkeus",width:"Leveys",title:"Lis\u00e4\u00e4/muokkaa taulukkoa",rowtype:"Rivi taulukon osassa","advanced_props":"Edistyneet asetukset","general_props":"Yleiset asetukset","advanced_tab":"Edistynyt","general_tab":"Yleiset","cell_col":"P\u00e4ivit\u00e4 kaikki sarakkeen solut"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fr_dlg.js deleted file mode 100644 index 9f9488af5f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.table_dlg',{"rules_border":"bordure","rules_box":"bo\u00eete","rules_vsides":"verticales","rules_rhs":"\u00e0 droite","rules_lhs":"\u00e0 gauche","rules_hsides":"horizontales","rules_below":"au-dessous","rules_above":"au-dessus","rules_void":"aucune",rules:"R\u00e8gles","frame_all":"tous","frame_cols":"colonnes","frame_rows":"lignes","frame_groups":"groupe","frame_none":"aucun",frame:"Cadre",caption:"Afficher la l\u00e9gende du tableau","missing_scope":"\u00cates-vous s\u00fbr de vouloir continuer sans sp\u00e9cifier de port\u00e9e pour cette cellule de titre ? Sans port\u00e9e, cela peut \u00eatre difficile pour certains utilisateurs de comprendre le contenu ou les donn\u00e9es affich\u00e9es dans le tableau.","cell_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de cellules ({$cells}).","row_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de lignes ({$rows}).","col_limit":"Vous avez d\u00e9pass\u00e9 le nombre maximum de colonnes ({$cols}).",colgroup:"Groupe de colonnes",rowgroup:"Groupe de lignes",scope:"Port\u00e9e",tfoot:"Pied de tableau",tbody:"Corps de tableau",thead:"En-t\u00eates de tableau","row_all":"Mettre \u00e0 jour toutes les lignes du tableau","row_even":"Mettre \u00e0 jour les lignes paires","row_odd":"Mettre \u00e0 jour les lignes impaires","row_row":"Mettre \u00e0 jour la ligne courante","cell_all":"Mettre \u00e0 jour toutes les cellules du tableau","cell_row":"Mettre \u00e0 jour toutes les cellules de la ligne","cell_cell":"Mettre \u00e0 jour la cellule courante",th:"Titre",td:"Donn\u00e9es",summary:"R\u00e9sum\u00e9",bgimage:"Image de fond",rtl:"de droite \u00e0 gauche",ltr:"De gauche \u00e0 droite",mime:"Type MIME de la cible",langcode:"Code de la langue",langdir:"Sens de lecture",style:"Style",id:"Id","merge_cells_title":"Fusionner les cellules",bgcolor:"Couleur du fond",bordercolor:"Couleur de la bordure","align_bottom":"Bas","align_top":"Haut",valign:"Alignement vertical","cell_type":"Type de cellule","cell_title":"Propri\u00e9t\u00e9s de la cellule","row_title":"Propri\u00e9t\u00e9s de la ligne","align_middle":"Centr\u00e9","align_right":"Droite","align_left":"Gauche","align_default":"Par d\u00e9faut",align:"Alignement",border:"Bordure",cellpadding:"Espacement dans les cellules",cellspacing:"Espacement entre les cellules",rows:"Lignes",cols:"Colonnes",height:"Hauteur",width:"Largeur",title:"Ins\u00e9rer / modifier un tableau",rowtype:"Type de ligne","advanced_props":"Propri\u00e9t\u00e9s avanc\u00e9es","general_props":"Propri\u00e9t\u00e9s g\u00e9n\u00e9rales","advanced_tab":"Avanc\u00e9","general_tab":"G\u00e9n\u00e9ral","cell_col":"Mettre \u00e0 jour toutes les cellules de la colonne"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/he_dlg.js deleted file mode 100644 index 25371ea708..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.table_dlg',{"rules_border":"\u05d2\u05d1\u05d5\u05dc","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"\u05de\u05ea\u05d7\u05ea","rules_above":"\u05de\u05e2\u05dc","rules_void":"void",rules:"\u05d7\u05d5\u05e7\u05d9\u05dd","frame_all":"\u05d4\u05db\u05d5\u05dc","frame_cols":"\u05e2\u05de\u05d5\u05d3\u05d5\u05ea","frame_rows":"\u05e9\u05d5\u05e8\u05d5\u05ea","frame_groups":"\u05e7\u05d1\u05d5\u05e6\u05d5\u05ea","frame_none":"\u05dc\u05dc\u05d0",frame:"Frame",caption:"\u05db\u05d5\u05ea\u05e8\u05ea \u05d4\u05d8\u05d1\u05dc\u05d4","missing_scope":"Are you sure you want to continue without specifying a scope for this table header cell. Without it, it may be difficult for some users with disabilities to understand the content or data displayed of the table.","cell_limit":"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc \u05d4\u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4 \u05e9\u05dc {$cells}.","row_limit":"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc \u05d4\u05e9\u05d5\u05e8\u05d5\u05ea \u05e9\u05dc {$rows}.","col_limit":"\u05d7\u05e8\u05d9\u05d2\u05d4 \u05de\u05de\u05e1\u05e4\u05e8 \u05d4\u05e2\u05de\u05d5\u05d3\u05d5\u05ea \u05d4\u05de\u05e7\u05e1\u05d9\u05de\u05d0\u05dc\u05d9 \u05e9\u05dc {$cols}.",colgroup:"Col Group",rowgroup:"Row Group",scope:"Scope",tfoot:"\u05e9\u05d5\u05e8\u05d4 \u05ea\u05d7\u05ea\u05d9\u05ea",tbody:"\u05e9\u05d5\u05e8\u05d4 \u05e8\u05d2\u05d9\u05dc\u05d4",thead:"\u05e9\u05d5\u05e8\u05ea \u05db\u05d5\u05ea\u05e8\u05ea","row_all":"\u05e2\u05d3\u05db\u05d5\u05df\u05db\u05dc \u05d4\u05e9\u05d5\u05e8\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4","row_even":"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d5\u05ea \u05d6\u05d5\u05d2\u05d9\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4","row_odd":"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d5\u05ea \u05d0\u05d9-\u05d6\u05d5\u05d2\u05d9\u05d5\u05ea \u05d1\u05d8\u05d1\u05dc\u05d4","row_row":"\u05e2\u05d3\u05db\u05d5\u05df \u05e9\u05d5\u05e8\u05d4 \u05e0\u05d5\u05db\u05d7\u05d9\u05ea","cell_all":"\u05e2\u05d3\u05db\u05d5\u05df \u05db\u05dc \u05ea\u05d0\u05d9 \u05d4\u05d8\u05d1\u05dc\u05d4","cell_row":"\u05e2\u05d3\u05db\u05d5\u05df \u05db\u05dc \u05ea\u05d0\u05d9 \u05d4\u05e9\u05d5\u05e8\u05d4","cell_cell":"\u05e2\u05d3\u05db\u05d5\u05df \u05ea\u05d0 \u05e0\u05d5\u05db\u05d7\u05d9",th:"\u05db\u05d5\u05ea\u05e8\u05ea",td:"\u05ea\u05d0 \u05de\u05d9\u05d3\u05e2",summary:"\u05ea\u05de\u05e6\u05d9\u05ea",bgimage:"\u05ea\u05de\u05d5\u05e0\u05ea \u05e8\u05e7\u05e2",rtl:"\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc",ltr:"\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df",mime:"Target MIME type",langcode:"\u05e7\u05d5\u05d3 \u05d4\u05e9\u05e4\u05d4",langdir:"\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e4\u05d4",style:"\u05e2\u05d9\u05e6\u05d5\u05d1",id:"Id","merge_cells_title":"\u05d0\u05d7\u05d3 \u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d1\u05dc\u05d4",bgcolor:"\u05e6\u05d1\u05e2 \u05d4\u05e8\u05e7\u05e2",bordercolor:"\u05e6\u05d1\u05e2 \u05d4\u05d2\u05d1\u05d5\u05dc","align_bottom":"\u05ea\u05d7\u05ea\u05d9\u05ea","align_top":"\u05e2\u05dc\u05d9\u05d5\u05df",valign:"\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9","cell_type":"\u05e1\u05d2\u05e0\u05d5\u05df \u05d4\u05ea\u05d0","cell_title":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05ea\u05d0 \u05d1\u05d8\u05d1\u05dc\u05d4","row_title":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","align_middle":"\u05d0\u05de\u05e6\u05e2","align_right":"\u05dc\u05d9\u05de\u05d9\u05df","align_left":"\u05dc\u05e9\u05de\u05d0\u05dc","align_default":"Default",align:"\u05d9\u05e9\u05d5\u05e8 \u05d0\u05d5\u05e4\u05e7\u05d9",border:"\u05d2\u05d1\u05d5\u05dc",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"\u05e9\u05d5\u05e8\u05d5\u05ea",cols:"\u05e2\u05de\u05d5\u05d3\u05d5\u05ea",height:"\u05d2\u05d5\u05d1\u05d4",width:"\u05e8\u05d5\u05d7\u05d1",title:"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05d1\u05dc\u05d4",rowtype:"\u05e1\u05d5\u05d2 \u05d4\u05e9\u05d5\u05e8\u05d4 \u05d1\u05d8\u05d1\u05dc\u05d4","advanced_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05de\u05ea\u05e7\u05d3\u05de\u05d5\u05ea","general_props":"\u05ea\u05db\u05d5\u05e0\u05d5\u05ea \u05db\u05dc\u05dc\u05d9\u05d5\u05ea","advanced_tab":"\u05de\u05ea\u05e7\u05d3\u05dd","general_tab":"\u05db\u05dc\u05dc\u05d9","cell_col":"\u05e2\u05d3\u05db\u05df \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d0\u05d9\u05dd \u05d1\u05d8\u05d5\u05e8"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/it_dlg.js deleted file mode 100644 index 2a847ed62b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.table_dlg',{"rules_border":"bordo","rules_box":"box","rules_vsides":"lato vert.","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"lato orizz.","rules_below":"sotto","rules_above":"sopra","rules_void":"vuoto",rules:"Regole","frame_all":"tutte","frame_cols":"colonne","frame_rows":"righe","frame_groups":"gruppi","frame_none":"nessuna",frame:"Cornice",caption:"Didascalia tabella","missing_scope":"Sicuro di proseguire senza aver specificato uno scope per l\'intestazione di questa tabella? Senza di esso, potrebbe essere difficoltoso per alcuni utenti con disabilit\u00e0 capire il contenuto o i dati mostrati nella tabella.","cell_limit":"Superato il numero massimo di celle di {$cells}.","row_limit":"Superato il numero massimo di righe di {$rows}.","col_limit":"Superato il numero massimo di colonne di {$cols}.",colgroup:"Gruppo colonna",rowgroup:"Gruppo riga",scope:"Scope",tfoot:"Pedice tabella",tbody:"Corpo tabella",thead:"Intestazione tabella","row_all":"Update tutte le righe della tabella","row_even":"Aggiorna righe pari della tabella","row_odd":"Aggiorna righe dispari della tabella","row_row":"Aggiorna riga corrente","cell_all":"Aggiorna tutte le celle della tabella","cell_row":"Aggiorna tutte le celle della riga","cell_cell":"Aggiorna cella corrente",th:"Intestazione",td:"Data",summary:"Sommario",bgimage:"Immagine sfondo",rtl:"Destra verso sinistra",ltr:"Sinistra verso destra",mime:"Tipo MIME del target",langcode:"Lingua",langdir:"Direzione testo",style:"Stile",id:"Id","merge_cells_title":"Unisci celle",bgcolor:"Colore sfondo",bordercolor:"Colore bordo","align_bottom":"In basso","align_top":"In alto",valign:"Allineamento verticale","cell_type":"Tipo cella","cell_title":"Propriet\u00e0 cella","row_title":"Propriet\u00e0 riga","align_middle":"Centra","align_right":"A destra","align_left":"A sinistra","align_default":"Predefinito",align:"Allineamento",border:"Bordo",cellpadding:"Padding celle",cellspacing:"Spaziatura celle",rows:"Righe",cols:"Colonne",height:"Altezza",width:"Larghezza",title:"Inserisci/Modifica tabella",rowtype:"Riga in una parte di tabella","advanced_props":"Propriet\u00e0 avanzate","general_props":"Propriet\u00e0 generali","advanced_tab":"Avanzate","general_tab":"Generale","cell_col":"Aggiorna tutte le celle della colonna"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/ja_dlg.js deleted file mode 100644 index ad33586421..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.table_dlg',{"rules_border":"\u67a0\u7dda(\u4e0a\u4e0b\u5de6\u53f3)","rules_box":"\u30dc\u30c3\u30af\u30b9(\u4e0a\u4e0b\u5de6\u53f3)","rules_vsides":"\u5de6\u53f3\u306e\u7e26\u7dda","rules_rhs":"\u53f3\u306e\u7e26\u7dda","rules_lhs":"\u5de6\u306e\u7e26\u7dda","rules_hsides":"\u4e0a\u4e0b\u306e\u6a2a\u7dda","rules_below":"\u4e0b\u306e\u6a2a\u7dda","rules_above":"\u4e0a\u306e\u6a2a\u7dda","rules_void":"\u306a\u3057",rules:"\u8868\u306e\u5916\u67a0","frame_all":"\u3059\u3079\u3066","frame_cols":"\u5217","frame_rows":"\u884c","frame_groups":"\u30b0\u30eb\u30fc\u30d7\u6bce","frame_none":"\u306a\u3057",frame:"\u30bb\u30eb\u306e\u67a0",caption:"\u8868\u306e\u898b\u51fa\u3057","missing_scope":"\u3053\u306e\u8868\u306e\u30d8\u30c3\u30c0\u30fc\u306e\u30bb\u30eb\u306e\u7bc4\u56f2\u3092\u8a2d\u5b9a\u3057\u306a\u3044\u3067\u672c\u5f53\u306b\u7d9a\u3051\u307e\u3059\u304b? \u3053\u306e\u307e\u307e\u3067\u306f\u76ee\u306e\u4e0d\u81ea\u7531\u306a\u65b9\u304c\u8868\u306e\u5185\u5bb9\u3084\u8868\u793a\u3055\u308c\u308b\u30c7\u30fc\u30bf\u3092\u7406\u89e3\u3059\u308b\u306e\u304c\u56f0\u96e3\u306b\u306a\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002","cell_limit":"\u30bb\u30eb\u306e\u6700\u5927\u6570\u306e${cells}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","row_limit":"\u884c\u306e\u6700\u5927\u6570\u306e${rows}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002","col_limit":"\u5217\u306e\u6700\u5927\u6570\u306e${cols}\u3092\u8d85\u3048\u307e\u3057\u305f\u3002",colgroup:"\u5217\u30b0\u30eb\u30fc\u30d7",rowgroup:"\u884c\u30b0\u30eb\u30fc\u30d7",scope:"\u30b9\u30b3\u30fc\u30d7",tfoot:"\u8868\u306e\u30d5\u30c3\u30bf\u30fc",tbody:"\u8868\u306e\u30dc\u30c7\u30a3",thead:"\u8868\u306e\u30d8\u30c3\u30c0\u30fc","row_all":"\u3059\u3079\u3066\u306e\u884c\u3092\u66f4\u65b0","row_even":"\u5076\u6570\u884c\u3092\u66f4\u65b0","row_odd":"\u5947\u6570\u884c\u3092\u66f4\u65b0","row_row":"\u9078\u629e\u3057\u3066\u3044\u308b\u884c\u3092\u66f4\u65b0","cell_all":"\u3059\u3079\u3066\u306e\u30bb\u30eb\u3092\u66f4\u65b0","cell_row":"\u884c\u5185\u306e\u30bb\u30eb\u3092\u66f4\u65b0","cell_cell":"\u9078\u629e\u3057\u3066\u3044\u308b\u30bb\u30eb\u3092\u66f4\u65b0",th:"\u30d8\u30c3\u30c0\u30fc",td:"\u30c7\u30fc\u30bf",summary:"\u30b5\u30de\u30ea\u30fc",bgimage:"\u80cc\u666f\u306e\u753b\u50cf",rtl:"\u53f3\u304b\u3089\u5de6",ltr:"\u5de6\u304b\u3089\u53f3",mime:"\u30bf\u30fc\u30b2\u30c3\u30c8\u306eMIME\u30bf\u30a4\u30d7",langcode:"\u8a00\u8a9e\u30b3\u30fc\u30c9",langdir:"\u6587\u7ae0\u306e\u65b9\u5411",style:"\u30b9\u30bf\u30a4\u30eb",id:"ID","merge_cells_title":"\u30bb\u30eb\u3092\u7d50\u5408",bgcolor:"\u80cc\u666f\u306e\u8272",bordercolor:"\u67a0\u7dda\u306e\u8272","align_bottom":"\u4e0b\u63c3\u3048","align_top":"\u4e0a\u63c3\u3048",valign:"\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e","cell_type":"\u30bb\u30eb\u306e\u7a2e\u985e","cell_title":"\u30bb\u30eb\u306e\u5c5e\u6027","row_title":"\u884c\u306e\u5c5e\u6027","align_middle":"\u4e2d\u592e\u63c3\u3048","align_right":"\u53f3\u63c3\u3048","align_left":"\u5de6\u63c3\u3048","align_default":"\u521d\u671f\u72b6\u614b",align:"\u914d\u7f6e",border:"\u67a0\u7dda",cellpadding:"\u30bb\u30eb\u306e\u30d1\u30c7\u30a3\u30f3\u30b0(cellpadding)",cellspacing:"\u30bb\u30eb\u306e\u9593\u9694(cellspacing)",rows:"\u884c",cols:"\u5217",height:"\u9ad8\u3055",width:"\u5e45",title:"\u8868\u306e\u633f\u5165\u3084\u7de8\u96c6",rowtype:"\u884c","advanced_props":"\u9ad8\u5ea6\u306a\u5c5e\u6027","general_props":"\u4e00\u822c\u7684\u306a\u5c5e\u6027","advanced_tab":"\u9ad8\u5ea6","general_tab":"\u4e00\u822c","cell_col":"\u3059\u3079\u3066\u306e\u30bb\u30eb\u3092\u66f4\u65b0"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/nl_dlg.js deleted file mode 100644 index ebc25e70ee..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.table_dlg',{"rules_border":"Rand","rules_box":"Box","rules_vsides":"Verticale zijden","rules_rhs":"Rechterzijkant","rules_lhs":"Linkerzijkant","rules_hsides":"Horizontale zijden","rules_below":"Onder","rules_above":"Boven","rules_void":"Geen",rules:"Hulplijnen","frame_all":"Alles","frame_cols":"Kolommen","frame_rows":"Rijen","frame_groups":"Groepen","frame_none":"Geen",frame:"Frame",caption:"Tabelbeschrijving","missing_scope":"Weet u zeker dat u door wilt gaan met het toewijzen van een kop zonder een bereik op te geven? Mensen met een visuele handicap kunnen hierdoor waarschijnlijk slecht bij de gegevens.","cell_limit":"U heeft het maximale aantal cellen van {$cells} overschreden.","row_limit":"U heeft hebt het maximale aantal rijen van {$rows} overschreden.","col_limit":"U heeft het maximale aantal kolommen van {$cols} overschreden.",colgroup:"Kolomgroep",rowgroup:"Rijgroep",scope:"Bereik",tfoot:"Tabelvoet",tbody:"Tabellichaam",thead:"Tabelkop","row_all":"Alle rijen bijwerken","row_even":"Even rijen bijwerken","row_odd":"Oneven rijen bijwerken","row_row":"Huidige rij bijwerken","cell_all":"Alle cellen in tabel bijwerken","cell_row":"Alle cellen in rij bijwerken","cell_cell":"Huidige cel bijwerken",th:"Kop",td:"Gegevens",summary:"Samenvatting",bgimage:"Achtergrondafbeelding",rtl:"Van rechts naar links",ltr:"Van links naar rechts",mime:"Doel MIME type",langcode:"Taalcode",langdir:"Taalrichting",style:"Stijl",id:"Id","merge_cells_title":"Cellen samenvoegen",bgcolor:"Achtergrondkleur",bordercolor:"Randkleur","align_bottom":"Onder","align_top":"Boven",valign:"Verticale uitlijning","cell_type":"Celtype","cell_title":"Celeigenschappen","row_title":"Rij-eigenschappen","align_middle":"Centreren","align_right":"Rechts","align_left":"Links","align_default":"Standaard",align:"Uitlijning",border:"Rand",cellpadding:"Ruimte in cel",cellspacing:"Ruimte om cel",rows:"Rijen",cols:"Kolommen",height:"Hoogte",width:"Breedte",title:"Tabel invoegen/bewerken",rowtype:"Rijtype","advanced_props":"Geavanceerde eigenschappen","general_props":"Algemene eigenschappen","advanced_tab":"Geavanceerd","general_tab":"Algemeen","cell_col":"Alle cellen in de kolom bijwerken"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/nn_dlg.js deleted file mode 100644 index ac1ea85ca0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.table_dlg',{"rules_border":"ramme","rules_box":"boks","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"over","rules_void":"ingen",rules:"Strekar","frame_all":"alle","frame_cols":"kolonnar","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ramme",caption:"Tabelloverskrift","missing_scope":"Er du sikker p\u00e5 at du vil fortsetje utan \u00e5 angi eit omr\u00e5de for denne overskrifscella? Utan dette kan det bli vanskeleg for enkelte funksjonshemma brukarar \u00e5 forst\u00e5 innhaldet eller dataane som blir presenterte i tabellen.","cell_limit":"Du har fleire enn maksimalt tal celler p\u00e5 {$cells}.","row_limit":"Du har fleire enn maksimalt tal rader p\u00e5 {$rows}.","col_limit":"Du har fleire enn maksimalt tal kolonner p\u00e5 {$cols}.",colgroup:"Kolonnegruppe",rowgroup:"Radgruppe",scope:"Omr\u00e5de",tfoot:"Tabellfot",tbody:"Tabellkropp",thead:"Tabellhovud","row_all":"Oppdater alle rader","row_even":"Oppdater partallrader","row_odd":"Oppdater oddetallrader","row_row":"Oppdater aktuell rad","cell_all":"Oppdater alle celler i tabellen","cell_row":"Oppdater alle celler i rada","cell_cell":"Oppdater aktuell celle",th:"Overskrift",td:"Data",summary:"Samandrag",bgimage:"Bakgrunnsbilete",rtl:"H\u00f8gre mot venstre",ltr:"Venstre mot h\u00f8gre",mime:"M\u00e5let sin MIME-type",langcode:"Spr\u00e5kkode",langdir:"Skriftretning",style:"Stil",id:"Id","merge_cells_title":"Sl\u00e5 saman celler",bgcolor:"Bakgrunn",bordercolor:"Rammefarge","align_bottom":"Botn","align_top":"Topp",valign:"Vertikal justering","cell_type":"Celletype","cell_title":"Celleeigenskapar","row_title":"Radeigenskapar","align_middle":"Midtstilt","align_right":"H\u00f8gre","align_left":"Venstre","align_default":"Standard",align:"Justering",border:"Ramme",cellpadding:"Cellefylling",cellspacing:"Celleavstand",rows:"Rader",cols:"Kolonner",height:"H\u00f8gd",width:"Breidd",title:"Set inn / rediger tabell",rowtype:"Rad i tabell","advanced_props":"Generelle eigenskapar","general_props":"Generelt","advanced_tab":"Avansert","general_tab":"Generelt","cell_col":"Oppdater alle celler i kolonne"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/pl_dlg.js deleted file mode 100644 index 8bbe7c83b5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.table_dlg',{"rules_border":"granica","rules_box":"ramka","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"pod","rules_above":"nad","rules_void":"void",rules:"Prowadnice","frame_all":"wszystkie","frame_cols":"kolumny","frame_rows":"wiersze","frame_groups":"grupy","frame_none":"brak",frame:"Ramka",caption:"Nag\u0142\u00f3wek tabeli","missing_scope":"Jeste\u015b pewny \u017ce chcesz kontynuowa\u0107 bez definiowania zasi\u0119gu dla kom\u00f3rki tabeli. Bez niej, mo\u017ce by\u0107 trudne dla niekt\u00f3rych u\u017cytkownik\u00f3w zrozuminie zawarto\u015bci albo danych wy\u015bwietlanych poza tabel\u0105.","cell_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 kom\u00f3rek kt\u00f3ra wynosi {$cells}.","row_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 wierszy kt\u00f3ra wynosi {$rows}.","col_limit":"Przekroczy\u0142e\u015b maksymaln\u0105 liczb\u0119 kolumn kt\u00f3ra wynosi {$cols}.",colgroup:"Grupa kolumn",rowgroup:"Grupa wierszy",scope:"Zakres",tfoot:"Stopka tabeli",tbody:"Cia\u0142o tabeli",thead:"Nag\u0142\u00f3wek tabeli","row_all":"Zmie\u0144 wszystkie wiersze","row_even":"Zmie\u0144 parzyste wiersze","row_odd":"Zmie\u0144 nieparzyste wiersze","row_row":"Zmie\u0144 aktualny wiersz","cell_all":"Zmie\u0144 wszytkie kom\u00f3rki w tabeli","cell_row":"Zmie\u0144 wszytkie kom\u00f3rki w wierszu","cell_cell":"Zmie\u0144 aktualn\u0105 kom\u00f3rk\u0119",th:"Nag\u0142owek",td:"Dane",summary:"Podsumowanie",bgimage:"Obrazek t\u0142a",rtl:"Kierunek z prawej do lewej",ltr:"Kierunek z lewej do prawej",mime:"Docelowy typ MIME",langcode:"Kod j\u0119zyka",langdir:"Kierunek czytania tekstu",style:"Styl",id:"Id","merge_cells_title":"Po\u0142\u0105cz kom\u00f3rki",bgcolor:"Kolor t\u0142a",bordercolor:"Kolor ramki","align_bottom":"D\u00f3\u0142","align_top":"G\u00f3ra",valign:"Pionowe wyr\u00f3wnanie","cell_type":"Typ kom\u00f3rki","cell_title":"W\u0142a\u015bciwo\u015bci kom\u00f3rki","row_title":"W\u0142a\u015bciwo\u015bci wiersza","align_middle":"\u015arodek","align_right":"Prawy","align_left":"Lewy","align_default":"Domy\u015blnie",align:"Wyr\u00f3wnanie",border:"Ramka",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Wiersze",cols:"Kolumny",height:"Wysoko\u015b\u0107",width:"Szeroko\u015b\u0107",title:"Wklej/Zmie\u0144 tabel\u0119",rowtype:"Wiersz w cz\u0119\u015bci tabeli","advanced_props":"Zaawansowane w\u0142a\u015bciwo\u015bci","general_props":"G\u0142\u00f3wne w\u0142a\u015bciwo\u015bci","advanced_tab":"Zaawansowane","general_tab":"G\u0142\u00f3wne","cell_col":"Zaktualizuj wszystkie kom\u00f3rki w kolumnie"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/pt_dlg.js deleted file mode 100644 index fb54400dab..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.table_dlg',{"rules_border":"Limites","rules_box":"Box","rules_vsides":"Vsides","rules_rhs":"Rhs","rules_lhs":"Lhs","rules_hsides":"Hsides","rules_below":"abaixo","rules_above":"acima","rules_void":"void",rules:"Regras","frame_all":"Todos","frame_cols":"colunas","frame_rows":"Linhas","frame_groups":"Grupos","frame_none":"Nenhum",frame:"Frame",caption:"T\u00edtulo da tabela","missing_scope":"Tem certeza de que quer continuar sem especificar um escopo para esta c\u00e9lula? (Isso poder\u00e1 causar dificuldades a usu\u00e1rios deficientes)","cell_limit":"Excedeu o n\u00famero m\u00e1ximo de c\u00e9lulas de {$cells}.","row_limit":"Excedeu o n\u00famero m\u00e1ximo de linhas de {$rows}.","col_limit":"Excedeu o n\u00famero m\u00e1ximo de colunas de {$cols}.",colgroup:"Grupo colunas",rowgroup:"Grupo linhas",scope:"Alcance",tfoot:"Rodap\u00e9 da tabela",tbody:"Corpo da tabela",thead:"Topo da tabela","row_all":"Atualizar todas as linhas","row_even":"Atualizar linhas pares","row_odd":"Atualizar linhas \u00edmpares","row_row":"Atualizar esta linha","cell_all":"Atualizar todas as c\u00e9lulas na tabela","cell_row":"Atualizar todas as c\u00e9lulas na linha","cell_cell":"Atualizar esta c\u00e9lula",th:"Campo",td:"Dados",summary:"Sum\u00e1rio",bgimage:"Imagem de fundo",rtl:"Da direita para a esquerda",ltr:"Da esquerda para a direita",mime:"MIME alvo",langcode:"C\u00f3digo do idioma",langdir:"Dire\u00e7\u00e3o do texto",style:"Estilo",id:"Id","merge_cells_title":"Unir c\u00e9lulas",bgcolor:"Cor de fundo",bordercolor:"Cor dos limites","align_bottom":"Abaixo","align_top":"Topo",valign:"Alinha. vert.","cell_type":"Tipo c\u00e9l.","cell_title":"Propriedades de c\u00e9lulas","row_title":"Propriedades de linhas","align_middle":"Centro","align_right":"Direita","align_left":"Esquerda","align_default":"Padr\u00e3o",align:"Alinha.",border:"Limites",cellpadding:"Enchimento da C\u00e9lula",cellspacing:"Espa\u00e7amento da C\u00e9lula",rows:"Linhas",cols:"Colunas",height:"Altura",width:"Largura",title:"Inserir/modificar tabela",rowtype:"Linha na parte da tabela","advanced_props":"Propriedades avan\u00e7adas","general_props":"Propriedades gerais","advanced_tab":"Avan\u00e7ado","general_tab":"Geral","cell_col":"Atualizar todas as c\u00e9lulas na coluna"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/ru_dlg.js deleted file mode 100644 index 3bd88153f4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.table_dlg',{"rules_border":"border","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"below","rules_above":"above","rules_void":"void",rules:"\u041f\u0440\u0430\u0432\u0438\u043b\u0430","frame_all":"\u0432\u0441\u0435","frame_cols":"\u043a\u043e\u043b\u043e\u043d\u043a\u0438","frame_rows":"\u0440\u044f\u0434\u044b","frame_groups":"\u0433\u0440\u0443\u043f\u043f\u044b","frame_none":"\u043d\u0435\u0442",frame:"\u041a\u0430\u0434\u0440",caption:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a \u0442\u0430\u0431\u043b\u0438\u0446\u044b","missing_scope":"\u041f\u0440\u043e\u0434\u043e\u043b\u0436\u0438\u0442\u044c \u0431\u0435\u0437 \u043e\u043f\u0440\u0435\u0434\u0435\u043b\u043d\u0438\u044f \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0437\u0430\u0433\u043b\u043e\u043b\u0432\u043a\u0430? \u0411\u0435\u0437 \u044d\u0442\u043e\u0433\u043e \u0431\u0443\u0434\u0435\u0442 \u0437\u0430\u0442\u0440\u0443\u0434\u043d\u0435\u043d\u043e \u0432\u043e\u0441\u043f\u0440\u0438\u044f\u0442\u0438\u0435 \u0442\u0430\u0431\u043b\u0438\u0446\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c.","cell_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u044f\u0447\u0435\u0435\u043a.","row_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u0441\u0442\u0440\u043e\u043a.","col_limit":"\u0414\u043e\u0441\u0442\u0438\u0433\u043d\u0443\u0442 \u043c\u0430\u043a\u0441\u0438\u043c\u0430\u043b\u044c\u043d\u0432\u0439 \u043f\u0440\u0435\u0434\u0435\u043b, \u0432 $ \u043a\u043e\u043b\u043e\u043d\u043e\u043a.",colgroup:"\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u043e\u043b\u0431\u0446\u043e\u0432",rowgroup:"\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a",scope:"\u041e\u0431\u043b\u0430\u0441\u0442\u044c",tfoot:"\u0417\u0430\u0432\u0435\u0440\u0448\u0435\u043d\u0438\u0435",tbody:"\u0422\u0435\u043b\u043e",thead:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a","row_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_even":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_odd":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u043d\u0435\u0447\u0435\u0442\u043d\u044b\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","row_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443","cell_all":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0442\u0430\u0431\u043b\u0438\u0446\u0435","cell_row":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u0440\u043e\u043a\u0435","cell_cell":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0435\u043a\u0443\u0449\u0443\u044e \u044f\u0447\u0435\u0439\u043a\u0443",th:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a",td:"\u0414\u0430\u043d\u043d\u044b\u0435",summary:"\u041e\u0431\u0449\u0435\u0435",bgimage:"\u0424\u043e\u043d\u043e\u0432\u043e\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",rtl:"\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e",ltr:"\u0421\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e",mime:"MIME \u0442\u0438\u043f \u0446\u0435\u043b\u0438",langcode:"\u041a\u043e\u0434 \u044f\u0437\u044b\u043a\u0430",langdir:"\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0442\u0435\u043a\u0441\u0442\u0430",style:"\u0421\u0442\u0438\u043b\u044c",id:"\u0418\u043c\u044f","merge_cells_title":"\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438",bgcolor:"\u0426\u0432\u0435\u0442 \u0437\u0430\u043b\u0438\u0432\u043a\u0438",bordercolor:"\u0426\u0432\u0435\u0442 \u0433\u0440\u0430\u043d\u0438\u0446\u044b","align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e",valign:"\u0412\u0435\u0440\u0442. \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","cell_type":"\u0422\u0438\u043f","cell_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438","row_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438","align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","align_default":"\u041f\u043e \u0443\u043c\u043e\u043b\u0447\u0430\u043d\u0438\u044e",align:"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435",border:"\u0413\u0440\u0430\u043d\u0438\u0446\u0430",cellpadding:"\u041e\u0442\u0441\u0442\u0443\u043f\u044b \u0432 \u044f\u0447\u0435\u0439\u043a\u0430\u0445",cellspacing:"\u0420\u0430\u0441\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u044f\u0447\u0435\u0439\u043a\u0430\u043c\u0438",rows:"\u0421\u0442\u0440\u043e\u043a\u0438",cols:"\u0421\u0442\u043e\u043b\u0431\u0446\u044b",height:"\u0412\u044b\u0441\u043e\u0442\u0430",width:"\u0428\u0438\u0440\u0438\u043d\u0430",title:"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0442\u0430\u0431\u043b\u0438\u0446\u044b",rowtype:"\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438","advanced_props":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","general_props":"\u041e\u0431\u0449\u0438\u0435 \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b","advanced_tab":"\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e","general_tab":"\u041e\u0431\u0449\u0435\u0435","cell_col":"\u041e\u0431\u043d\u043e\u0432\u0438\u0442\u044c \u0432\u0441\u0435 \u044f\u0447\u0435\u0439\u043a\u0438 \u0432 \u0441\u0442\u043e\u043b\u0431\u0446\u0435"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/sv_dlg.js deleted file mode 100644 index d058bcb855..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.table_dlg',{"rules_border":"kant","rules_box":"box","rules_vsides":"vsides","rules_rhs":"rhs","rules_lhs":"lhs","rules_hsides":"hsides","rules_below":"under","rules_above":"\u00f6ver","rules_void":"void",rules:"Regler","frame_all":"alla","frame_cols":"kolumner ","frame_rows":"rader","frame_groups":"grupper","frame_none":"ingen",frame:"Ram",caption:"\u00d6verskrift","missing_scope":"\u00c4r du s\u00e4ker p\u00e5 att du vill forts\u00e4tta utan att ange en omfattning, denna underl\u00e4ttar f\u00f6r icke-grafiska webbl\u00e4sare.","cell_limit":"Du kan inte skapa en tabell med fler \u00e4n {$cells} celler.","row_limit":"Du kan inte ange fler \u00e4n {$rows} rader.","col_limit":"Du kan inte ange fler \u00e4n {$cols} kolumner.",colgroup:"Kolumngrupp",rowgroup:"Radgrupp",scope:"Omfattning",tfoot:"tabellfot",tbody:"tabellkropp",thead:"tabellhuvud","row_all":"Uppdatera alla rader i tabellen","row_even":"Uppdatera j\u00e4mna rader i tabellen","row_odd":"Uppdatera udda rader i tabellen","row_row":"Uppdatera nuvarande rad","cell_all":"Uppdatera alla celler i tabellen","cell_row":"Uppdatera alla celler i raden","cell_cell":"Uppdatera nuvarande cell",th:"Huvud",td:"Data",summary:"Sammanfattning",bgimage:"Bakgrundsbild",rtl:"H\u00f6ger till v\u00e4nster",ltr:"V\u00e4nster till h\u00f6ger",mime:"Target MIME type",langcode:"Spr\u00e5kkod",langdir:"Skriftriktning",style:"Stil",id:"Id","merge_cells_title":"Sammanfoga celler",bgcolor:"Bakgrundsf\u00e4rg",bordercolor:"Ramf\u00e4rg","align_bottom":"Botten","align_top":"Toppen",valign:"Vertikal justering","cell_type":"Celltyp","cell_title":"Tabellcellsinst\u00e4llningar","row_title":"Tabellradsinst\u00e4llningar","align_middle":"Mitten","align_right":"H\u00f6ger","align_left":"V\u00e4nster","align_default":"Standard",align:"Justering",border:"Ram",cellpadding:"Cellpadding",cellspacing:"Cellspacing",rows:"Rader",cols:"Kolumner",height:"H\u00f6jd",width:"Bredd",title:"Infoga/redigera ny tabell",rowtype:"Radtyp","advanced_props":"Avancerade inst\u00e4llningar","general_props":"Generella inst\u00e4llningar","advanced_tab":"Avancerat","general_tab":"Generellt","cell_col":"Uppdatera alla celler i kolumn"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/table/langs/zh_dlg.js deleted file mode 100644 index bcba1ed0b4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.table_dlg',{"rules_border":"\u8fb9\u6846","rules_box":"\u65b9\u76d2","rules_vsides":"\u5782\u76f4","rules_rhs":"\u53f3\u8fb9","rules_lhs":"\u5de6\u8fb9","rules_hsides":"\u6c34\u5e73","rules_below":"\u4e0b","rules_above":"\u4e0a","rules_void":"\u7a7a",rules:"\u89c4\u5219","frame_all":"\u5168\u90e8","frame_cols":"\u5217\u8868\u5934","frame_rows":"\u884c\u8868\u5934","frame_groups":"\u7fa4\u7ec4","frame_none":"\u65e0",frame:"\u6846\u67b6",caption:"\u8868\u683c\u6807\u9898","missing_scope":"\u60a8\u786e\u5b9a\u4e0d\u4e3a\u8868\u5934\u5355\u5143\u683c\u6307\u5b9a\u4e00\u4e2a\u8303\u56f4\u5417\uff1f\u5982\u679c\u4e0d\u6307\u5b9a\uff0c\u5bf9\u4f7f\u7528\u975e\u53ef\u89c6\u6d4f\u89c8\u5668\u7684\u4f7f\u7528\u8005\u5c06\u66f4\u96be\u9605\u8bfb\u6216\u7406\u89e3\u8868\u683c\u5185\u5bb9\u3002","cell_limit":"\u5df2\u8fbe\u5230\u6700\u591a {$cells} \u4e2a\u5355\u5143\u683c\u7684\u4e0a\u9650\u3002","row_limit":"\u5df2\u8fbe\u5230\u6700\u591a {$rows} \u884c\u5355\u5143\u683c\u7684\u4e0a\u9650\u3002","col_limit":"\u5df2\u8fbe\u5230\u6700\u591a {$cols} \u5217\u5355\u5143\u683c\u7684\u4e0a\u9650\u3002",colgroup:"\u5217\u7ec4\u8868\u5934",rowgroup:"\u884c\u7ec4\u8868\u5934",scope:"\u8868\u5934\u8303\u56f4",tfoot:"\u8868\u5c3e",tbody:"\u8868\u683c\u4e3b\u4f53",thead:"\u8868\u5934","row_all":"\u66f4\u65b0\u6240\u6709\u884c","row_even":"\u66f4\u65b0\u5076\u6570\u884c","row_odd":"\u66f4\u65b0\u5947\u6570\u884c","row_row":"\u66f4\u65b0\u5f53\u524d\u884c","cell_all":"\u66f4\u65b0\u6240\u6709\u5355\u5143\u683c","cell_row":"\u66f4\u65b0\u884c\u4e2d\u6240\u6709\u5355\u5143\u683c","cell_cell":"\u66f4\u65b0\u5f53\u524d\u5355\u5143\u683c",th:"\u8868\u5934",td:"\u8868\u683c\u5185\u5bb9",summary:"\u8868\u683c\u6458\u8981",bgimage:"\u80cc\u666f\u56fe\u7247",rtl:"\u4ece\u53f3\u5230\u5de6",ltr:"\u4ece\u5de6\u5230\u53f3",mime:"\u76ee\u6807MIME\u7c7b\u578b",langcode:"\u8bed\u8a00\u4ee3\u7801",langdir:"\u8bed\u8a00\u4e66\u5199\u65b9\u5411",style:"\u6837\u5f0f",id:"ID","merge_cells_title":"\u5408\u5e76\u5355\u5143\u683c",bgcolor:"\u80cc\u666f\u989c\u8272",bordercolor:"\u8fb9\u6846\u989c\u8272","align_bottom":"\u9760\u4e0b","align_top":"\u9760\u4e0a",valign:"\u5782\u76f4\u5bf9\u9f50","cell_type":"\u5355\u5143\u683c\u7c7b\u578b","cell_title":"\u5355\u5143\u683c\u5c5e\u6027","row_title":"\u884c\u5c5e\u6027","align_middle":"\u5c45\u4e2d\u5bf9\u9f50","align_right":"\u9760\u53f3\u5bf9\u9f50","align_left":"\u9760\u5de6\u5bf9\u9f50","align_default":"\u9ed8\u8ba4",align:"\u5bf9\u9f50\u65b9\u5411",border:"\u8fb9\u6846",cellpadding:"\u5355\u5143\u683c\u8fb9\u8ddd",cellspacing:"\u5355\u5143\u683c\u95f4\u8ddd",rows:"\u884c\u6570",cols:"\u5217\u6570",height:"\u9ad8",width:"\u5bbd",title:"\u63d2\u5165/\u7f16\u8f91\u5355\u5143\u683c",rowtype:"\u884c\u7c7b\u578b","advanced_props":"\u9ad8\u7ea7\u5c5e\u6027","general_props":"\u666e\u901a\u5c5e\u6027","advanced_tab":"\u9ad8\u7ea7","general_tab":"\u666e\u901a","cell_col":"\u66f4\u65b0\u5217\u4e2d\u6240\u6709\u5355\u5143\u683c"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/merge_cells.htm b/assets/plugins/tinymce/tiny_mce/plugins/table/merge_cells.htm deleted file mode 100644 index 788acf68ed..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/merge_cells.htm +++ /dev/null @@ -1,32 +0,0 @@ - - - - {#table_dlg.merge_cells_title} - - - - - - -
                      -
                      - {#table_dlg.merge_cells_title} - - - - - - - - - -
                      :
                      :
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/row.htm b/assets/plugins/tinymce/tiny_mce/plugins/table/row.htm deleted file mode 100644 index 7b4613700f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/row.htm +++ /dev/null @@ -1,158 +0,0 @@ - - - - {#table_dlg.row_title} - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - -
                      - -
                      - -
                      -
                      -
                      - -
                      -
                      - {#table_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - -
                      - - - - - -
                       
                      -
                      - - - - - - -
                       
                      -
                      -
                      -
                      -
                      -
                      - -
                      -
                      - -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/table/table.htm b/assets/plugins/tinymce/tiny_mce/plugins/table/table.htm deleted file mode 100644 index 52e6bf28f9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/table/table.htm +++ /dev/null @@ -1,188 +0,0 @@ - - - - {#table_dlg.title} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#table_dlg.general_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      -
                      -
                      -
                      - -
                      -
                      - {#table_dlg.advanced_props} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - -
                      - - - - - -
                       
                      -
                      - -
                      - -
                      - -
                      - - - - - -
                       
                      -
                      - - - - - -
                       
                      -
                      -
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/template/blank.htm b/assets/plugins/tinymce/tiny_mce/plugins/template/blank.htm deleted file mode 100644 index 538a3b12c9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/template/blank.htm +++ /dev/null @@ -1,12 +0,0 @@ - - - blank_page - - - - - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/template/css/template.css b/assets/plugins/tinymce/tiny_mce/plugins/template/css/template.css deleted file mode 100644 index 0a03f2e5c0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/template/css/template.css +++ /dev/null @@ -1,23 +0,0 @@ -#frmbody { - padding: 10px; - background-color: #FFF; - border: 1px solid #CCC; -} - -.frmRow { - margin-bottom: 10px; -} - -#templatesrc { - border: none; - width: 320px; - height: 240px; -} - -.title { - padding-bottom: 5px; -} - -.mceActionPanel { - padding-top: 5px; -} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/template/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/template/editor_plugin.js deleted file mode 100644 index ebe3c27d78..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/template/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){var a=tinymce.each;tinymce.create("tinymce.plugins.TemplatePlugin",{init:function(b,c){var d=this;d.editor=b;b.addCommand("mceTemplate",function(e){b.windowManager.open({file:c+"/template.htm",width:b.getParam("template_popup_width",750),height:b.getParam("template_popup_height",600),inline:1},{plugin_url:c})});b.addCommand("mceInsertTemplate",d._insertTemplate,d);b.addButton("template",{title:"template.desc",cmd:"mceTemplate"});b.onPreProcess.add(function(e,g){var f=e.dom;a(f.select("div",g.node),function(h){if(f.hasClass(h,"mceTmpl")){a(f.select("*",h),function(i){if(f.hasClass(i,e.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){i.innerHTML=d._getDateTime(new Date(),e.getParam("template_mdate_format",e.getLang("template.mdate_format")))}});d._replaceVals(h)}})})},getInfo:function(){return{longname:"Template plugin",author:"Moxiecode Systems AB",authorurl:"http://www.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/template",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_insertTemplate:function(i,j){var k=this,g=k.editor,f,c,d=g.dom,b=g.selection.getContent();f=j.content;a(k.editor.getParam("template_replace_values"),function(l,h){if(typeof(l)!="function"){f=f.replace(new RegExp("\\{\\$"+h+"\\}","g"),l)}});c=d.create("div",null,f);n=d.select(".mceTmpl",c);if(n&&n.length>0){c=d.create("div",null);c.appendChild(n[0].cloneNode(true))}function e(l,h){return new RegExp("\\b"+h+"\\b","g").test(l.className)}a(d.select("*",c),function(h){if(e(h,g.getParam("template_cdate_classes","cdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_cdate_format",g.getLang("template.cdate_format")))}if(e(h,g.getParam("template_mdate_classes","mdate").replace(/\s+/g,"|"))){h.innerHTML=k._getDateTime(new Date(),g.getParam("template_mdate_format",g.getLang("template.mdate_format")))}if(e(h,g.getParam("template_selected_content_classes","selcontent").replace(/\s+/g,"|"))){h.innerHTML=b}});k._replaceVals(c);g.execCommand("mceInsertContent",false,c.innerHTML);g.addVisual()},_replaceVals:function(c){var d=this.editor.dom,b=this.editor.getParam("template_replace_values");a(d.select("*",c),function(f){a(b,function(g,e){if(d.hasClass(f,e)){if(typeof(b[e])=="function"){b[e](f)}}})})},_getDateTime:function(e,b){if(!b){return""}function c(g,d){var f;g=""+g;if(g.length'); - }, - - init : function() { - var ed = tinyMCEPopup.editor, tsrc, sel, x, u; - - tsrc = ed.getParam("template_templates", false); - sel = document.getElementById('tpath'); - - // Setup external template list - if (!tsrc && typeof(tinyMCETemplateList) != 'undefined') { - for (x=0, tsrc = []; x'); - }); - }, - - selectTemplate : function(u, ti) { - var d = window.frames['templatesrc'].document, x, tsrc = this.tsrc; - - if (!u) - return; - - d.body.innerHTML = this.templateHTML = this.getFileContents(u); - - for (x=0; x - - {#template_dlg.title} - - - - - -
                      -
                      -
                      {#template_dlg.desc}
                      -
                      - -
                      -
                      -
                      -
                      - {#template_dlg.preview} - -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/visualblocks/css/visualblocks.css b/assets/plugins/tinymce/tiny_mce/plugins/visualblocks/css/visualblocks.css deleted file mode 100644 index 681b588e13..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/visualblocks/css/visualblocks.css +++ /dev/null @@ -1,21 +0,0 @@ -p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, blockquote, address, pre, figure {display: block; padding-top: 10px; border: 1px dashed #BBB; background: transparent no-repeat} -p, h1, h2, h3, h4, h5, h6, hgroup, aside, div, section, article, address, pre, figure {margin-left: 3px} -section, article, address, hgroup, aside, figure {margin: 0 0 1em 3px} - -p {background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7)} -h1 {background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==)} -h2 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==)} -h3 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7)} -h4 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==)} -h5 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==)} -h6 {background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==)} -div {background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7)} -section {background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=)} -article {background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7)} -blockquote {background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7)} -address {background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=)} -pre {background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==)} -hgroup {background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7)} -aside {background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=)} -figure {background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7)} -figcaption {border: 1px dashed #BBB} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/visualblocks/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/visualblocks/editor_plugin.js deleted file mode 100644 index c65eaf2b4c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/visualblocks/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.VisualBlocks",{init:function(a,b){var c;if(!window.NodeList){return}a.addCommand("mceVisualBlocks",function(){var e=a.dom,d;if(!c){c=e.uniqueId();d=e.create("link",{id:c,rel:"stylesheet",href:b+"/css/visualblocks.css"});a.getDoc().getElementsByTagName("head")[0].appendChild(d)}else{d=e.get(c);d.disabled=!d.disabled}a.controlManager.setActive("visualblocks",!d.disabled)});a.addButton("visualblocks",{title:"visualblocks.desc",cmd:"mceVisualBlocks"});a.onInit.add(function(){if(a.settings.visualblocks_default_state){a.execCommand("mceVisualBlocks",false,null,{skip_focus:true})}})},getInfo:function(){return{longname:"Visual blocks",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualblocks",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("visualblocks",tinymce.plugins.VisualBlocks)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/visualchars/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/visualchars/editor_plugin.js deleted file mode 100644 index 1a148e8b4f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/visualchars/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.VisualChars",{init:function(a,b){var c=this;c.editor=a;a.addCommand("mceVisualChars",c._toggleVisualChars,c);a.addButton("visualchars",{title:"visualchars.desc",cmd:"mceVisualChars"});a.onBeforeGetContent.add(function(d,e){if(c.state&&e.format!="raw"&&!e.draft){c.state=true;c._toggleVisualChars(false)}})},getInfo:function(){return{longname:"Visual characters",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/visualchars",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_toggleVisualChars:function(m){var p=this,k=p.editor,a,g,j,n=k.getDoc(),o=k.getBody(),l,q=k.selection,e,c,f;p.state=!p.state;k.controlManager.setActive("visualchars",p.state);if(m){f=q.getBookmark()}if(p.state){a=[];tinymce.walk(o,function(b){if(b.nodeType==3&&b.nodeValue&&b.nodeValue.indexOf("\u00a0")!=-1){a.push(b)}},"childNodes");for(g=0;g$1');c=k.dom.create("div",null,l);while(node=c.lastChild){k.dom.insertAfter(node,a[g])}k.dom.remove(a[g])}}else{a=k.dom.select("span.mceItemNbsp",o);for(g=a.length-1;g>=0;g--){k.dom.remove(a[g],1)}}q.moveToBookmark(f)}});tinymce.PluginManager.add("visualchars",tinymce.plugins.VisualChars)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/wordcount/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/wordcount/editor_plugin.js deleted file mode 100644 index 070fe5902e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/wordcount/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.WordCount",{block:0,id:null,countre:null,cleanre:null,init:function(c,d){var e=this,f=0,g=tinymce.VK;e.countre=c.getParam("wordcount_countregex",/[\w\u2019\u00co-\u00ff^\uc397^u00f7\'-]+/g);e.cleanre=c.getParam("wordcount_cleanregex",/[0-9.(),;:!?%#$?\'\"_+=\\\/-]*/g);e.update_rate=c.getParam("wordcount_update_rate",2000);e.update_on_delete=c.getParam("wordcount_update_on_delete",false);e.id=c.id+"-word-count";c.onPostRender.add(function(i,h){var j,k;k=i.getParam("wordcount_target_id");if(!k){j=tinymce.DOM.get(i.id+"_path_row");if(j){tinymce.DOM.add(j.parentNode,"div",{style:"float: right"},i.getLang("wordcount.words","Words: ")+'0')}}else{tinymce.DOM.add(k,"span",{},'0')}});c.onInit.add(function(h){h.selection.onSetContent.add(function(){e._count(h)});e._count(h)});c.onSetContent.add(function(h){e._count(h)});function b(h){return h!==f&&(h===g.ENTER||f===g.SPACEBAR||a(f))}function a(h){return h===g.DELETE||h===g.BACKSPACE}c.onKeyUp.add(function(h,i){if(b(i.keyCode)||e.update_on_delete&&a(i.keyCode)){e._count(h)}f=i.keyCode})},_getCount:function(c){var a=0;var b=c.getContent({format:"raw"});if(b){b=b.replace(/\.\.\./g," ");b=b.replace(/<.[^<>]*?>/g," ").replace(/ | /gi," ");b=b.replace(/(\w+)(&.+?;)+(\w+)/,"$1$3").replace(/&.+?;/g," ");b=b.replace(this.cleanre,"");var d=b.match(this.countre);if(d){a=d.length}}return a},_count:function(a){var b=this;if(b.block){return}b.block=1;setTimeout(function(){if(!a.destroyed){var c=b._getCount(a);tinymce.DOM.setHTML(b.id,c.toString());setTimeout(function(){b.block=0},b.update_rate)}},1)},getInfo:function(){return{longname:"Word Count plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/wordcount",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("wordcount",tinymce.plugins.WordCount)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/abbr.htm b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/abbr.htm deleted file mode 100644 index d41021802b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/abbr.htm +++ /dev/null @@ -1,142 +0,0 @@ - - - - {#xhtmlxtras_dlg.title_abbr_element} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      : - -
                      :
                      : - -
                      : - -
                      -
                      -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      -
                      -
                      -
                      -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/acronym.htm b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/acronym.htm deleted file mode 100644 index 12b189b435..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/acronym.htm +++ /dev/null @@ -1,142 +0,0 @@ - - - - {#xhtmlxtras_dlg.title_acronym_element} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      : - -
                      :
                      : - -
                      : - -
                      -
                      -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      -
                      -
                      -
                      -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/attributes.htm b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/attributes.htm deleted file mode 100644 index d84f378bf3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/attributes.htm +++ /dev/null @@ -1,149 +0,0 @@ - - - - {#xhtmlxtras_dlg.attribs_title} - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#xhtmlxtras_dlg.attribute_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      - -
                      :
                      : - -
                      : - -
                      -
                      -
                      -
                      -
                      - {#xhtmlxtras_dlg.attribute_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      -
                      -
                      -
                      -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/cite.htm b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/cite.htm deleted file mode 100644 index ab61b330c6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/cite.htm +++ /dev/null @@ -1,142 +0,0 @@ - - - - {#xhtmlxtras_dlg.title_cite_element} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      : - -
                      :
                      : - -
                      : - -
                      -
                      -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      -
                      -
                      -
                      -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/css/attributes.css b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/css/attributes.css deleted file mode 100644 index 85b1b376de..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/css/attributes.css +++ /dev/null @@ -1,11 +0,0 @@ -.panel_wrapper div.current { - height: 290px; -} - -#id, #style, #title, #dir, #hreflang, #lang, #classlist, #tabindex, #accesskey { - width: 200px; -} - -#events_panel input { - width: 200px; -} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/css/popup.css b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/css/popup.css deleted file mode 100644 index 034b985272..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/css/popup.css +++ /dev/null @@ -1,9 +0,0 @@ -input.field, select.field {width:200px;} -input.picker {width:179px; margin-left: 5px;} -input.disabled {border-color:#F2F2F2;} -img.picker {vertical-align:text-bottom; cursor:pointer;} -h1 {padding: 0 0 5px 0;} -.panel_wrapper div.current {height:160px;} -#xhtmlxtrasdel .panel_wrapper div.current, #xhtmlxtrasins .panel_wrapper div.current {height: 230px;} -a.browse span {display:block; width:20px; height:20px; background:url('../../../themes/advanced/img/icons.gif') -140px -20px;} -#datetime {width:180px;} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/del.htm b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/del.htm deleted file mode 100644 index e3f34c7df9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/del.htm +++ /dev/null @@ -1,162 +0,0 @@ - - - - {#xhtmlxtras_dlg.title_del_element} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_general_tab} - - - - - - - - - -
                      : - - - - - -
                      -
                      :
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      : - -
                      :
                      : - -
                      : - -
                      -
                      -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      -
                      -
                      -
                      -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/editor_plugin.js deleted file mode 100644 index 9b98a5154b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.create("tinymce.plugins.XHTMLXtrasPlugin",{init:function(a,b){a.addCommand("mceCite",function(){a.windowManager.open({file:b+"/cite.htm",width:350+parseInt(a.getLang("xhtmlxtras.cite_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.cite_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAcronym",function(){a.windowManager.open({file:b+"/acronym.htm",width:350+parseInt(a.getLang("xhtmlxtras.acronym_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.acronym_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAbbr",function(){a.windowManager.open({file:b+"/abbr.htm",width:350+parseInt(a.getLang("xhtmlxtras.abbr_delta_width",0)),height:250+parseInt(a.getLang("xhtmlxtras.abbr_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceDel",function(){a.windowManager.open({file:b+"/del.htm",width:340+parseInt(a.getLang("xhtmlxtras.del_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.del_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceIns",function(){a.windowManager.open({file:b+"/ins.htm",width:340+parseInt(a.getLang("xhtmlxtras.ins_delta_width",0)),height:310+parseInt(a.getLang("xhtmlxtras.ins_delta_height",0)),inline:1},{plugin_url:b})});a.addCommand("mceAttributes",function(){a.windowManager.open({file:b+"/attributes.htm",width:380+parseInt(a.getLang("xhtmlxtras.attr_delta_width",0)),height:370+parseInt(a.getLang("xhtmlxtras.attr_delta_height",0)),inline:1},{plugin_url:b})});a.addButton("cite",{title:"xhtmlxtras.cite_desc",cmd:"mceCite"});a.addButton("acronym",{title:"xhtmlxtras.acronym_desc",cmd:"mceAcronym"});a.addButton("abbr",{title:"xhtmlxtras.abbr_desc",cmd:"mceAbbr"});a.addButton("del",{title:"xhtmlxtras.del_desc",cmd:"mceDel"});a.addButton("ins",{title:"xhtmlxtras.ins_desc",cmd:"mceIns"});a.addButton("attribs",{title:"xhtmlxtras.attribs_desc",cmd:"mceAttributes"});a.onNodeChange.add(function(d,c,f,e){f=d.dom.getParent(f,"CITE,ACRONYM,ABBR,DEL,INS");c.setDisabled("cite",e);c.setDisabled("acronym",e);c.setDisabled("abbr",e);c.setDisabled("del",e);c.setDisabled("ins",e);c.setDisabled("attribs",f&&f.nodeName=="BODY");c.setActive("cite",0);c.setActive("acronym",0);c.setActive("abbr",0);c.setActive("del",0);c.setActive("ins",0);if(f){do{c.setDisabled(f.nodeName.toLowerCase(),0);c.setActive(f.nodeName.toLowerCase(),1)}while(f=f.parentNode)}});a.onPreInit.add(function(){a.dom.create("abbr")})},getInfo:function(){return{longname:"XHTML Xtras Plugin",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/xhtmlxtras",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("xhtmlxtras",tinymce.plugins.XHTMLXtrasPlugin)})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/ins.htm b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/ins.htm deleted file mode 100644 index 226e605320..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/ins.htm +++ /dev/null @@ -1,162 +0,0 @@ - - - - {#xhtmlxtras_dlg.title_ins_element} - - - - - - - - - - -
                      - - -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_general_tab} - - - - - - - - - -
                      : - - - - - -
                      -
                      :
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_attrib_tab} - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      : - -
                      :
                      : - -
                      : - -
                      -
                      -
                      -
                      -
                      - {#xhtmlxtras_dlg.fieldset_events_tab} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      :
                      -
                      -
                      -
                      -
                      - - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/abbr.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/abbr.js deleted file mode 100644 index 1790e83d35..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/abbr.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * abbr.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('abbr'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertAbbr() { - SXE.insertElement('abbr'); - tinyMCEPopup.close(); -} - -function removeAbbr() { - SXE.removeElement('abbr'); - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/acronym.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/acronym.js deleted file mode 100644 index 93b8d259a8..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/acronym.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * acronym.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('acronym'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertAcronym() { - SXE.insertElement('acronym'); - tinyMCEPopup.close(); -} - -function removeAcronym() { - SXE.removeElement('acronym'); - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/attributes.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/attributes.js deleted file mode 100644 index 9e9b07e6da..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/attributes.js +++ /dev/null @@ -1,111 +0,0 @@ -/** - * attributes.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - tinyMCEPopup.resizeToInnerSize(); - var inst = tinyMCEPopup.editor; - var dom = inst.dom; - var elm = inst.selection.getNode(); - var f = document.forms[0]; - var onclick = dom.getAttrib(elm, 'onclick'); - - setFormValue('title', dom.getAttrib(elm, 'title')); - setFormValue('id', dom.getAttrib(elm, 'id')); - setFormValue('style', dom.getAttrib(elm, "style")); - setFormValue('dir', dom.getAttrib(elm, 'dir')); - setFormValue('lang', dom.getAttrib(elm, 'lang')); - setFormValue('tabindex', dom.getAttrib(elm, 'tabindex', typeof(elm.tabindex) != "undefined" ? elm.tabindex : "")); - setFormValue('accesskey', dom.getAttrib(elm, 'accesskey', typeof(elm.accesskey) != "undefined" ? elm.accesskey : "")); - setFormValue('onfocus', dom.getAttrib(elm, 'onfocus')); - setFormValue('onblur', dom.getAttrib(elm, 'onblur')); - setFormValue('onclick', onclick); - setFormValue('ondblclick', dom.getAttrib(elm, 'ondblclick')); - setFormValue('onmousedown', dom.getAttrib(elm, 'onmousedown')); - setFormValue('onmouseup', dom.getAttrib(elm, 'onmouseup')); - setFormValue('onmouseover', dom.getAttrib(elm, 'onmouseover')); - setFormValue('onmousemove', dom.getAttrib(elm, 'onmousemove')); - setFormValue('onmouseout', dom.getAttrib(elm, 'onmouseout')); - setFormValue('onkeypress', dom.getAttrib(elm, 'onkeypress')); - setFormValue('onkeydown', dom.getAttrib(elm, 'onkeydown')); - setFormValue('onkeyup', dom.getAttrib(elm, 'onkeyup')); - className = dom.getAttrib(elm, 'class'); - - addClassesToList('classlist', 'advlink_styles'); - selectByValue(f, 'classlist', className, true); - - TinyMCE_EditableSelects.init(); -} - -function setFormValue(name, value) { - if(value && document.forms[0].elements[name]){ - document.forms[0].elements[name].value = value; - } -} - -function insertAction() { - var inst = tinyMCEPopup.editor; - var elm = inst.selection.getNode(); - - setAllAttribs(elm); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); -} - -function setAttrib(elm, attrib, value) { - var formObj = document.forms[0]; - var valueElm = formObj.elements[attrib.toLowerCase()]; - var inst = tinyMCEPopup.editor; - var dom = inst.dom; - - if (typeof(value) == "undefined" || value == null) { - value = ""; - - if (valueElm) - value = valueElm.value; - } - - dom.setAttrib(elm, attrib.toLowerCase(), value); -} - -function setAllAttribs(elm) { - var f = document.forms[0]; - - setAttrib(elm, 'title'); - setAttrib(elm, 'id'); - setAttrib(elm, 'style'); - setAttrib(elm, 'class', getSelectValue(f, 'classlist')); - setAttrib(elm, 'dir'); - setAttrib(elm, 'lang'); - setAttrib(elm, 'tabindex'); - setAttrib(elm, 'accesskey'); - setAttrib(elm, 'onfocus'); - setAttrib(elm, 'onblur'); - setAttrib(elm, 'onclick'); - setAttrib(elm, 'ondblclick'); - setAttrib(elm, 'onmousedown'); - setAttrib(elm, 'onmouseup'); - setAttrib(elm, 'onmouseover'); - setAttrib(elm, 'onmousemove'); - setAttrib(elm, 'onmouseout'); - setAttrib(elm, 'onkeypress'); - setAttrib(elm, 'onkeydown'); - setAttrib(elm, 'onkeyup'); - - // Refresh in old MSIE -// if (tinyMCE.isMSIE5) -// elm.outerHTML = elm.outerHTML; -} - -function insertAttribute() { - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); -tinyMCEPopup.requireLangPack(); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/cite.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/cite.js deleted file mode 100644 index b73ef47355..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/cite.js +++ /dev/null @@ -1,28 +0,0 @@ -/** - * cite.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('cite'); - if (SXE.currentAction == "update") { - SXE.showRemoveButton(); - } -} - -function insertCite() { - SXE.insertElement('cite'); - tinyMCEPopup.close(); -} - -function removeCite() { - SXE.removeElement('cite'); - tinyMCEPopup.close(); -} - -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/del.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/del.js deleted file mode 100644 index a5397f7e6f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/del.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * del.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('del'); - if (SXE.currentAction == "update") { - setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); - setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); - SXE.showRemoveButton(); - } -} - -function setElementAttribs(elm) { - setAllCommonAttribs(elm); - setAttrib(elm, 'datetime'); - setAttrib(elm, 'cite'); - elm.removeAttribute('data-mce-new'); -} - -function insertDel() { - var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'DEL'); - - if (elm == null) { - var s = SXE.inst.selection.getContent(); - if(s.length > 0) { - insertInlineElement('del'); - var elementArray = SXE.inst.dom.select('del[data-mce-new]'); - for (var i=0; i 0) { - tagName = element_name; - - insertInlineElement(element_name); - var elementArray = tinymce.grep(SXE.inst.dom.select(element_name)); - for (var i=0; i -1) ? true : false; -} - -SXE.removeClass = function(elm,cl) { - if(elm.className == null || elm.className == "" || !SXE.containsClass(elm,cl)) { - return true; - } - var classNames = elm.className.split(" "); - var newClassNames = ""; - for (var x = 0, cnl = classNames.length; x < cnl; x++) { - if (classNames[x] != cl) { - newClassNames += (classNames[x] + " "); - } - } - elm.className = newClassNames.substring(0,newClassNames.length-1); //removes extra space at the end -} - -SXE.addClass = function(elm,cl) { - if(!SXE.containsClass(elm,cl)) elm.className ? elm.className += " " + cl : elm.className = cl; - return true; -} - -function insertInlineElement(en) { - var ed = tinyMCEPopup.editor, dom = ed.dom; - - ed.getDoc().execCommand('FontName', false, 'mceinline'); - tinymce.each(dom.select('span,font'), function(n) { - if (n.style.fontFamily == 'mceinline' || n.face == 'mceinline') - dom.replace(dom.create(en, {'data-mce-new' : 1}), n, 1); - }); -} diff --git a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/ins.js b/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/ins.js deleted file mode 100644 index 71a8a261ff..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/xhtmlxtras/js/ins.js +++ /dev/null @@ -1,53 +0,0 @@ -/** - * ins.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -function init() { - SXE.initElementDialog('ins'); - if (SXE.currentAction == "update") { - setFormValue('datetime', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'datetime')); - setFormValue('cite', tinyMCEPopup.editor.dom.getAttrib(SXE.updateElement, 'cite')); - SXE.showRemoveButton(); - } -} - -function setElementAttribs(elm) { - setAllCommonAttribs(elm); - setAttrib(elm, 'datetime'); - setAttrib(elm, 'cite'); - elm.removeAttribute('data-mce-new'); -} - -function insertIns() { - var elm = tinyMCEPopup.editor.dom.getParent(SXE.focusElement, 'INS'); - - if (elm == null) { - var s = SXE.inst.selection.getContent(); - if(s.length > 0) { - insertInlineElement('ins'); - var elementArray = SXE.inst.dom.select('ins[data-mce-new]'); - for (var i=0; i label { - display: block; - text-align: center; -} - -label { - cursor: pointer; -} -.share-embed-size-radio { - display: none; -} - -body, button, input, textarea { - font: 12px arial,sans-serif; -} -.share-embed-size .share-embed-size-name { - color: #666666; - display: block; - white-space: nowrap; -} -.share-embed-size .share-embed-size-box { - background: none repeat scroll 0 0 #DDDDDD; - border: 1px solid #999999; - display: block; - margin: auto 0; - padding: 1px; -} -.share-embed-size.default .share-embed-size-box { - height: 32px; - margin-left: 4px; - width: 42px; -} -.share-embed-size.default.wide .share-embed-size-box { - height: 27px; - width: 49px; -} -.share-embed-size.medium.wide .share-embed-size-box { - height: 31px; - width: 56px; -} -.share-embed-size.large.wide .share-embed-size-box { - height: 35px; - width: 64px; -} -.share-embed-size.hd720.wide .share-embed-size-box { - height: 42px; - width: 75px; -} - - -.share-embed-size.custom { - text-align: right; -} -.share-embed-size { - border: 1px solid #FFFFFF; - cursor: pointer; - float: left; - margin: 4px; - padding: 4px; -} -.share-embed-customize { - padding: 0.5em; -} -.share-embed-size.custom .share-embed-customize li { - margin: 0.25em; -} \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/editor_plugin.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/editor_plugin.js deleted file mode 100644 index bb72b26cd6..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/editor_plugin.js +++ /dev/null @@ -1 +0,0 @@ -(function(){tinymce.PluginManager.requireLangPack("youtubeIframe");tinymce.create("tinymce.plugins.YoutubeIframePlugin",{init:function(a,b){a.addCommand("mceYoutubeIframe",function(){a.windowManager.open({file:b+"/index.html",width:650,height:350,inline:1},{plugin_url:b,some_custom_arg:"custom arg"})});a.addButton("youtubeIframe",{title:"youtubeIframe.desc",cmd:"mceYoutubeIframe",image:b+"/img/youtube.png"});a.onNodeChange.add(function(a,b,c){var d=false;if(c.nodeName=="IMG"){try{var e=c.attributes["src"].value;var f=c.attributes["alt"].value;var g=e.match("vi/([^&#]*)/0.jpg");d=g[1]===f}catch(h){}}b.setActive("youtubeIframe",d)})},createControl:function(a,b){return null},getInfo:function(){return{longname:"Youtube Iframe PlugIn",author:"Darius Matulionis",authorurl:"http://matulionis.lt",infourl:"darius@matulionis.lt",version:"1.1"}}});tinymce.PluginManager.add("youtubeIframe",tinymce.plugins.YoutubeIframePlugin)})() \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/editor_plugin_src.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/editor_plugin_src.js deleted file mode 100644 index d98405499c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/editor_plugin_src.js +++ /dev/null @@ -1,90 +0,0 @@ -/** - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - * - * @name editor_plugin_src - * @author Darius Matulionis - */ - -(function () { - // Load plugin specific language pack - tinymce.PluginManager.requireLangPack('youtubeIframe'); - - tinymce.create('tinymce.plugins.YoutubeIframePlugin', { - /** - * Initializes the plugin, this will be executed after the plugin has been created. - * This call is done before the editor instance has finished it's initialization so use the onInit event - * of the editor instance to intercept that event. - * - * @param {tinymce.Editor} ed Editor instance that the plugin is initialized in. - * @param {string} url Absolute URL to where the plugin is located. - */ - init: function (ed, url) { - // Register the command so that it can be invoked by using tinyMCE.activeEditor.execCommand('mceExample'); - ed.addCommand('mceYoutubeIframe', function () { - - ed.windowManager.open({ - file: url + '/index.html', - width: 650, - height: 350, - inline: 1 - }, { - plugin_url: url, // Plugin absolute URL - some_custom_arg: 'custom arg' // Custom argument - }); - }); - - // Register example button - ed.addButton('youtubeIframe', { - title: 'youtubeIframe.desc', - cmd: 'mceYoutubeIframe', - image: url + '/img/youtube.png' - }); - - // Add a node change handler, selects the button in the UI when a image is selected - ed.onNodeChange.add(function (ed, cm, n) { - var active = false; - if (n.nodeName == 'IMG') { - try { - var src = n.attributes["src"].value; - var alt = n.attributes["alt"].value; - var regexRes = src.match("vi/([^&#]*)/0.jpg"); - active = regexRes[1] === alt; - } - catch (err) { - } - } - cm.setActive('youtubeIframe', active); - }); - }, - - /** - * Creates control instances based in the incomming name. This method is normally not - * needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons - * but you sometimes need to create more complex controls like listboxes, split buttons etc then this - * method can be used to create those. - * - * @param {String} n Name of the control to create. - * @param {tinymce.ControlManager} cm Control manager to use inorder to create new control. - * @return {tinymce.ui.Control} New control instance or null if no control was created. - */ - createControl: function (n, cm) { - return null; - }, - - getInfo: function () { - return { - longname: 'Youtube Iframe PlugIn', - author: 'Darius Matulionis', - authorurl: 'http://matulionis.lt', - infourl: 'darius@matulionis.lt', - version: "1.1" - }; - } - }); - - // Register plugin - tinymce.PluginManager.add('youtubeIframe', tinymce.plugins.YoutubeIframePlugin); -})(); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/img/youtube.png b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/img/youtube.png deleted file mode 100644 index a157f17b33..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/img/youtube.png and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/index.html b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/index.html deleted file mode 100644 index 80c27f5abb..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/index.html +++ /dev/null @@ -1,86 +0,0 @@ - - - - - {#youtube_dlg.title} - - - - - - - -
                      -

                      - - -

                      - - - {#youtube_dlg.choose_size}: - -
                      - Choose type: - {#youtube_dlg.iframe} - {#youtube_dlg.embed} -
                      -
                      - - -
                      -
                      - - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/js/scripts.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/js/scripts.js deleted file mode 100644 index c248284c7f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/js/scripts.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCEPopup.requireLangPack();var YoutubeDialog={init:function(){var a=document.forms[0];a.youtubeURL.value=tinyMCEPopup.editor.selection.getContent({format:"text"});$(".share-embed-size-list li.share-embed-size").each(function(){$(this).click(function(){$("li.share-embed-size").removeClass("selected");$(this).addClass("selected")})})},insert:function(){var a=$("#youtubeURL").val();if(a===null){tinyMCEPopup.close();return}var b,c,d,e,f;c=a.match("[\\?&]v=([^&#]*)");b=$.trim(c===null?a:c[1]);if(b===""){tinyMCEPopup.close();return}d=$("li.selected label input").attr("data-width");e=$("li.selected label input").attr("data-height");if(d==-1&&e==-1){d=$("input.share-embed-size-custom-width").val();e=$("input.share-embed-size-custom-height").val()}if(d==""||d=="undefined"||e==""||e=="undefined"){alert("Error: No size selected");tinyMCEPopup.close();return}f=$("input[name='yType']:checked").val();if(f==""||f=="undefined"){alert("Error: No type selected");tinyMCEPopup.close();return}var g='';var h='\n \n\n \n\n \n\n \n\n \n\n \n\n ';if(f=="iframe"){tinyMCEPopup.editor.execCommand("mceInsertContent",false,g)}else{tinyMCEPopup.editor.execCommand("mceInsertContent",false,h)}tinyMCEPopup.close()}};tinyMCEPopup.onInit.add(YoutubeDialog.init,YoutubeDialog) \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/js/scripts_src.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/js/scripts_src.js deleted file mode 100644 index 8cd179096d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/js/scripts_src.js +++ /dev/null @@ -1,81 +0,0 @@ -// @name scripts -// @author Darius Matulionis - -tinyMCEPopup.requireLangPack(); - -var YoutubeDialog = { - init: function () { - var f = document.forms[0]; - // Get the selected contents as text and place it in the input - f.youtubeURL.value = tinyMCEPopup.editor.selection.getContent({format: 'text'}); - - //Add click event form selection - $(".share-embed-size-list li.share-embed-size").each(function(){ - $(this).click(function(){ - $("li.share-embed-size").removeClass("selected"); - $(this).addClass("selected"); - }); - }); - }, - // Insert the contents from the input into the document - insert: function () { - - //Get Code from URL - var url = $("#youtubeURL").val(); - if (url === null) {tinyMCEPopup.close();return;} - - var code, regexRes, width, height, type; - regexRes = url.match("[\\?&]v=([^&#]*)"); - code = $.trim( (regexRes === null) ? url : regexRes[1] ); - if (code === "") {tinyMCEPopup.close();return;} - - //Get Size - width = $("li.selected label input").attr("data-width"); - height = $("li.selected label input").attr("data-height"); - - //Get Custom size - if(width == -1 && height == -1){ - width = $("input.share-embed-size-custom-width").val(); - height = $("input.share-embed-size-custom-height").val(); - } - - //No size or Some Error Accured - if(width == "" || width == "undefined" || height == "" || height == "undefined"){ - alert("Error: No size selected");tinyMCEPopup.close();return; - } - - //Get insert type - type = $("input[name='yType']:checked").val(); - - //No type or Some Error Accured - if(type == "" || type == "undefined"){ - alert("Error: No type selected");tinyMCEPopup.close();return; - } - - //Codes - var iFrame = ''; - var embeded = '\ - \n\ - \n\ - \n\ - \n\ - \n\ - \n\ - '; - - //Isert to edditor - if(type == "iframe"){ - tinyMCEPopup.editor.execCommand('mceInsertContent', false, iFrame); - }else{ - tinyMCEPopup.editor.execCommand('mceInsertContent', false, embeded); - } - - //Close - tinyMCEPopup.close(); - - - } -}; -tinyMCEPopup.onInit.add(YoutubeDialog.init, YoutubeDialog); - - diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/bg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/bg.js deleted file mode 100644 index 8ca8038a50..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/bg.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('bg.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/bg_dlg.js deleted file mode 100644 index 4d2ae03f20..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/bg_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('bg.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/cs.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/cs.js deleted file mode 100644 index d65bb0be60..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/cs.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('cs.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/cs_dlg.js deleted file mode 100644 index a14c3d77ca..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/cs_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('cs.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/da.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/da.js deleted file mode 100644 index c42524f893..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/da.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('da.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/da_dlg.js deleted file mode 100644 index 23e113e9c8..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/da_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('da.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/de.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/de.js deleted file mode 100644 index 1922f56039..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/de.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('de.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/de_dlg.js deleted file mode 100644 index 4eef8e9121..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/de_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('de.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/en.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/en.js deleted file mode 100644 index b7dc7fa989..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/en.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('en.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/en_dlg.js deleted file mode 100644 index 491185da0b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/en_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('en.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/es.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/es.js deleted file mode 100644 index 1e3791e0dd..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/es.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('es.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/es_dlg.js deleted file mode 100644 index 5b59d333df..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/es_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('es.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fa.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fa.js deleted file mode 100644 index 225c0bb2ad..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fa.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('fa.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fa_dlg.js deleted file mode 100644 index 0d6cfd7863..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fa_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('fa.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fi.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fi.js deleted file mode 100644 index 925e745540..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fi.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('fi.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fi_dlg.js deleted file mode 100644 index cc1a831185..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fi_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('fi.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fr.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fr.js deleted file mode 100644 index a05e3f727e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fr.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('fr.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fr_dlg.js deleted file mode 100644 index 17c67f6fb3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/fr_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('fr.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/he.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/he.js deleted file mode 100644 index 2e210044ce..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/he.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('he.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/he_dlg.js deleted file mode 100644 index 44af7621c8..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/he_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('he.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/it.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/it.js deleted file mode 100644 index e70c390c6c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/it.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('it.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/it_dlg.js deleted file mode 100644 index a0a9ec6318..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/it_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('it.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ja.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ja.js deleted file mode 100644 index 072ae139af..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ja.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('ja.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ja_dlg.js deleted file mode 100644 index 66af8b7b32..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ja_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('ja.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nl.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nl.js deleted file mode 100644 index 7ceadc6a94..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nl.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('nl.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nl_dlg.js deleted file mode 100644 index 04b750d843..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nl_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('nl.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nn.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nn.js deleted file mode 100644 index e4c2e06709..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nn.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('nn.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nn_dlg.js deleted file mode 100644 index 0c7e2601df..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/nn_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('nn.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pl.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pl.js deleted file mode 100644 index f7a4708513..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pl.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('pl.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pl_dlg.js deleted file mode 100644 index b247be3f8e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pl_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('pl.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pt.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pt.js deleted file mode 100644 index 507d8ae294..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pt.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('pt.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pt_dlg.js deleted file mode 100644 index 644a55449b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/pt_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('pt.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ru.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ru.js deleted file mode 100644 index 094cdfa388..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ru.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('ru.youtube',{ - desc : 'Добавить Youtube видео' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ru_dlg.js deleted file mode 100644 index c0e2a5c11c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/ru_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('ru.youtube_dlg',{ - title: 'Вставить/редактировать youtube видео', - url_field: 'YouTube ссылка или код:', - url_example1: 'пример URL', - url_example2: 'пример Code', - choose_size: 'выберите размер', - custom: 'Задать размер', - Width: 'Ширина', - Height: 'Высота', - iframe: 'iFrame - новый', - embed: 'Embeded - старый' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/sv.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/sv.js deleted file mode 100644 index 517406dab3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/sv.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('sv.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/sv_dlg.js deleted file mode 100644 index 17d3fd8ced..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/sv_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('sv.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/zh.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/zh.js deleted file mode 100644 index f56d69efb4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/zh.js +++ /dev/null @@ -1,3 +0,0 @@ -tinyMCE.addI18n('zh.youtube',{ - desc : 'Insert youtube video' -}); diff --git a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/zh_dlg.js deleted file mode 100644 index 645dc9db43..0000000000 --- a/assets/plugins/tinymce/tiny_mce/plugins/youtubeIframe/langs/zh_dlg.js +++ /dev/null @@ -1,12 +0,0 @@ -tinyMCE.addI18n('zh.youtube_dlg',{ - title: 'Insert/edit youtube videos', - url_field: 'YouTube video url or code:', - url_example1: 'URL Example', - url_example2: 'Code Example', - choose_size: 'Choose size', - custom: 'Custom', - Width: 'Width', - Height: 'Height', - iframe: 'New iFrame style', - embed: 'Old Embeded Style' -}); diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/about.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/about.htm deleted file mode 100644 index fe3660371e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/about.htm +++ /dev/null @@ -1,52 +0,0 @@ - - - - {#advanced_dlg.about_title} - - - - - - - -
                      -
                      -

                      {#advanced_dlg.about_title}

                      -

                      Version: ()

                      -

                      TinyMCE is a platform independent web based Javascript HTML WYSIWYG editor control released as Open Source under LGPL - by Moxiecode Systems AB. It has the ability to convert HTML TEXTAREA fields or other HTML elements to editor instances.

                      -

                      Copyright © 2003-2008, Moxiecode Systems AB, All rights reserved.

                      -

                      For more information about this software visit the TinyMCE website.

                      - -
                      - Got Moxie? -
                      -
                      - -
                      -
                      -

                      {#advanced_dlg.about_loaded}

                      - -
                      -
                      - -

                       

                      -
                      -
                      - -
                      -
                      -
                      -
                      - -
                      - -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/anchor.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/anchor.htm deleted file mode 100644 index dc53312d95..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/anchor.htm +++ /dev/null @@ -1,26 +0,0 @@ - - - - {#advanced_dlg.anchor_title} - - - - -
                      - - - - - - - - -
                      {#advanced_dlg.anchor_title}
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/charmap.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/charmap.htm deleted file mode 100644 index 12acfe18a9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/charmap.htm +++ /dev/null @@ -1,55 +0,0 @@ - - - - {#advanced_dlg.charmap_title} - - - - - - - - - - - - - - - - - - - -
                      - - - - - - - - - -
                       
                       
                      -
                      - - - - - - - - - - - - - - - - -
                       
                       
                       
                      -
                      {#advanced_dlg.charmap_usage}
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/color_picker.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/color_picker.htm deleted file mode 100644 index 66633d0c88..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/color_picker.htm +++ /dev/null @@ -1,70 +0,0 @@ - - - - {#advanced_dlg.colorpicker_title} - - - - - - -
                      - - -
                      -
                      -
                      - {#advanced_dlg.colorpicker_picker_title} -
                      - - -
                      - -
                      - -
                      -
                      -
                      -
                      - -
                      -
                      - {#advanced_dlg.colorpicker_palette_title} -
                      - -
                      - -
                      -
                      -
                      - -
                      -
                      - {#advanced_dlg.colorpicker_named_title} -
                      - -
                      - -
                      - -
                      - {#advanced_dlg.colorpicker_name} -
                      -
                      -
                      -
                      - -
                      - - -
                      -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/editor_template.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/editor_template.js deleted file mode 100644 index 4b8d563757..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/editor_template.js +++ /dev/null @@ -1 +0,0 @@ -(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(p,m){var k,l,o=p.dom,j="",n,r;previewStyles=p.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function q(s){return s.replace(/%(\w+)/g,"")}k=m.block||m.inline||"span";l=o.create(k);f(m.styles,function(t,s){t=q(t);if(t){o.setStyle(l,s,t)}});f(m.attributes,function(t,s){t=q(t);if(t){o.setAttrib(l,s,t)}});f(m.classes,function(s){s=q(s);if(!o.hasClass(l,s)){o.addClass(l,s)}});o.setStyles(l,{position:"absolute",left:-65535});p.getBody().appendChild(l);n=o.getStyle(p.getBody(),"fontSize",true);n=/px$/.test(n)?parseInt(n,10):0;f(previewStyles.split(" "),function(s){var t=o.getStyle(l,s,true);if(s=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)){t=o.getStyle(p.getBody(),s,true);if(o.toHex(t).toLowerCase()=="#ffffff"){return}}if(s=="font-size"){if(/em|%$/.test(t)){if(n===0){return}t=parseFloat(t,10)/(/%$/.test(t)?100:1);t=(t*n)+"px"}}j+=s+":"+t+";"});o.remove(l);return j}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);n=k.settings;k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;if(!n.theme_advanced_buttons1){n=c({theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap"},n)}m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"top",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},n);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},""),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{}," ")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true);q.nodeChanged()}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/image.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/image.htm deleted file mode 100644 index 884890fbb4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/image.htm +++ /dev/null @@ -1,80 +0,0 @@ - - - - {#advanced_dlg.image_title} - - - - - - -
                      - - -
                      -
                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - - - - -
                       
                      - x -
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/colorpicker.jpg b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/colorpicker.jpg deleted file mode 100644 index b1a377aba7..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/colorpicker.jpg and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/flash.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/flash.gif deleted file mode 100644 index dec3f7c702..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/flash.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/icons.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/icons.gif deleted file mode 100644 index ca22249018..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/icons.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/iframe.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/iframe.gif deleted file mode 100644 index 410c7ad084..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/iframe.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/pagebreak.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/pagebreak.gif deleted file mode 100644 index acdf4085f3..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/pagebreak.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/quicktime.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/quicktime.gif deleted file mode 100644 index 8f10e7aa6b..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/quicktime.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/realmedia.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/realmedia.gif deleted file mode 100644 index fdfe0b9ac0..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/realmedia.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/shockwave.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/shockwave.gif deleted file mode 100644 index 9314d04470..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/shockwave.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/video.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/video.gif deleted file mode 100644 index 3570104077..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/video.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/windowsmedia.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/img/windowsmedia.gif deleted file mode 100644 index ab50f2d887..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/img/windowsmedia.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/about.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/js/about.js deleted file mode 100644 index daf4909ad2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/about.js +++ /dev/null @@ -1,73 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -function init() { - var ed, tcont; - - tinyMCEPopup.resizeToInnerSize(); - ed = tinyMCEPopup.editor; - - // Give FF some time - window.setTimeout(insertHelpIFrame, 10); - - tcont = document.getElementById('plugintablecontainer'); - document.getElementById('plugins_tab').style.display = 'none'; - - var html = ""; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - html += ''; - - tinymce.each(ed.plugins, function(p, n) { - var info; - - if (!p.getInfo) - return; - - html += ''; - - info = p.getInfo(); - - if (info.infourl != null && info.infourl != '') - html += ''; - else - html += ''; - - if (info.authorurl != null && info.authorurl != '') - html += ''; - else - html += ''; - - html += ''; - html += ''; - - document.getElementById('plugins_tab').style.display = ''; - - }); - - html += ''; - html += '
                      ' + ed.getLang('advanced_dlg.about_plugin') + '' + ed.getLang('advanced_dlg.about_author') + '' + ed.getLang('advanced_dlg.about_version') + '
                      ' + info.longname + '' + info.longname + '' + info.author + '' + info.author + '' + info.version + '
                      '; - - tcont.innerHTML = html; - - tinyMCEPopup.dom.get('version').innerHTML = tinymce.majorVersion + "." + tinymce.minorVersion; - tinyMCEPopup.dom.get('date').innerHTML = tinymce.releaseDate; -} - -function insertHelpIFrame() { - var html; - - if (tinyMCEPopup.getParam('docs_url')) { - html = ''; - document.getElementById('iframecontainer').innerHTML = html; - document.getElementById('help_tab').style.display = 'block'; - document.getElementById('help_tab').setAttribute("aria-hidden", "false"); - } -} - -tinyMCEPopup.onInit.add(init); diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/anchor.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/js/anchor.js deleted file mode 100644 index a3a018635b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/anchor.js +++ /dev/null @@ -1,56 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var AnchorDialog = { - init : function(ed) { - var action, elm, f = document.forms[0]; - - this.editor = ed; - elm = ed.dom.getParent(ed.selection.getNode(), 'A'); - v = ed.dom.getAttrib(elm, 'name') || ed.dom.getAttrib(elm, 'id'); - - if (v) { - this.action = 'update'; - f.anchorName.value = v; - } - - f.insert.value = ed.getLang(elm ? 'update' : 'insert'); - }, - - update : function() { - var ed = this.editor, elm, name = document.forms[0].anchorName.value, attribName; - - if (!name || !/^[a-z][a-z0-9\-\_:\.]*$/i.test(name)) { - tinyMCEPopup.alert('advanced_dlg.anchor_invalid'); - return; - } - - tinyMCEPopup.restoreSelection(); - - if (this.action != 'update') - ed.selection.collapse(1); - - var aRule = ed.schema.getElementRule('a'); - if (!aRule || aRule.attributes.name) { - attribName = 'name'; - } else { - attribName = 'id'; - } - - elm = ed.dom.getParent(ed.selection.getNode(), 'A'); - if (elm) { - elm.setAttribute(attribName, name); - elm[attribName] = name; - ed.undoManager.add(); - } else { - // create with zero-sized nbsp so that in Webkit where anchor is on last line by itself caret cannot be placed after it - var attrs = {'class' : 'mceItemAnchor'}; - attrs[attribName] = name; - ed.execCommand('mceInsertContent', 0, ed.dom.createHTML('a', attrs, '\uFEFF')); - ed.nodeChanged(); - } - - tinyMCEPopup.close(); - } -}; - -tinyMCEPopup.onInit.add(AnchorDialog.init, AnchorDialog); diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/charmap.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/js/charmap.js deleted file mode 100644 index cbb4172bac..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/charmap.js +++ /dev/null @@ -1,363 +0,0 @@ -/** - * charmap.js - * - * Copyright 2009, Moxiecode Systems AB - * Released under LGPL License. - * - * License: http://tinymce.moxiecode.com/license - * Contributing: http://tinymce.moxiecode.com/contributing - */ - -tinyMCEPopup.requireLangPack(); - -var charmap = [ - [' ', ' ', true, 'no-break space'], - ['&', '&', true, 'ampersand'], - ['"', '"', true, 'quotation mark'], -// finance - ['¢', '¢', true, 'cent sign'], - ['€', '€', true, 'euro sign'], - ['£', '£', true, 'pound sign'], - ['¥', '¥', true, 'yen sign'], -// signs - ['©', '©', true, 'copyright sign'], - ['®', '®', true, 'registered sign'], - ['™', '™', true, 'trade mark sign'], - ['‰', '‰', true, 'per mille sign'], - ['µ', 'µ', true, 'micro sign'], - ['·', '·', true, 'middle dot'], - ['•', '•', true, 'bullet'], - ['…', '…', true, 'three dot leader'], - ['′', '′', true, 'minutes / feet'], - ['″', '″', true, 'seconds / inches'], - ['§', '§', true, 'section sign'], - ['¶', '¶', true, 'paragraph sign'], - ['ß', 'ß', true, 'sharp s / ess-zed'], -// quotations - ['‹', '‹', true, 'single left-pointing angle quotation mark'], - ['›', '›', true, 'single right-pointing angle quotation mark'], - ['«', '«', true, 'left pointing guillemet'], - ['»', '»', true, 'right pointing guillemet'], - ['‘', '‘', true, 'left single quotation mark'], - ['’', '’', true, 'right single quotation mark'], - ['“', '“', true, 'left double quotation mark'], - ['”', '”', true, 'right double quotation mark'], - ['‚', '‚', true, 'single low-9 quotation mark'], - ['„', '„', true, 'double low-9 quotation mark'], - ['<', '<', true, 'less-than sign'], - ['>', '>', true, 'greater-than sign'], - ['≤', '≤', true, 'less-than or equal to'], - ['≥', '≥', true, 'greater-than or equal to'], - ['–', '–', true, 'en dash'], - ['—', '—', true, 'em dash'], - ['¯', '¯', true, 'macron'], - ['‾', '‾', true, 'overline'], - ['¤', '¤', true, 'currency sign'], - ['¦', '¦', true, 'broken bar'], - ['¨', '¨', true, 'diaeresis'], - ['¡', '¡', true, 'inverted exclamation mark'], - ['¿', '¿', true, 'turned question mark'], - ['ˆ', 'ˆ', true, 'circumflex accent'], - ['˜', '˜', true, 'small tilde'], - ['°', '°', true, 'degree sign'], - ['−', '−', true, 'minus sign'], - ['±', '±', true, 'plus-minus sign'], - ['÷', '÷', true, 'division sign'], - ['⁄', '⁄', true, 'fraction slash'], - ['×', '×', true, 'multiplication sign'], - ['¹', '¹', true, 'superscript one'], - ['²', '²', true, 'superscript two'], - ['³', '³', true, 'superscript three'], - ['¼', '¼', true, 'fraction one quarter'], - ['½', '½', true, 'fraction one half'], - ['¾', '¾', true, 'fraction three quarters'], -// math / logical - ['ƒ', 'ƒ', true, 'function / florin'], - ['∫', '∫', true, 'integral'], - ['∑', '∑', true, 'n-ary sumation'], - ['∞', '∞', true, 'infinity'], - ['√', '√', true, 'square root'], - ['∼', '∼', false,'similar to'], - ['≅', '≅', false,'approximately equal to'], - ['≈', '≈', true, 'almost equal to'], - ['≠', '≠', true, 'not equal to'], - ['≡', '≡', true, 'identical to'], - ['∈', '∈', false,'element of'], - ['∉', '∉', false,'not an element of'], - ['∋', '∋', false,'contains as member'], - ['∏', '∏', true, 'n-ary product'], - ['∧', '∧', false,'logical and'], - ['∨', '∨', false,'logical or'], - ['¬', '¬', true, 'not sign'], - ['∩', '∩', true, 'intersection'], - ['∪', '∪', false,'union'], - ['∂', '∂', true, 'partial differential'], - ['∀', '∀', false,'for all'], - ['∃', '∃', false,'there exists'], - ['∅', '∅', false,'diameter'], - ['∇', '∇', false,'backward difference'], - ['∗', '∗', false,'asterisk operator'], - ['∝', '∝', false,'proportional to'], - ['∠', '∠', false,'angle'], -// undefined - ['´', '´', true, 'acute accent'], - ['¸', '¸', true, 'cedilla'], - ['ª', 'ª', true, 'feminine ordinal indicator'], - ['º', 'º', true, 'masculine ordinal indicator'], - ['†', '†', true, 'dagger'], - ['‡', '‡', true, 'double dagger'], -// alphabetical special chars - ['À', 'À', true, 'A - grave'], - ['Á', 'Á', true, 'A - acute'], - ['Â', 'Â', true, 'A - circumflex'], - ['Ã', 'Ã', true, 'A - tilde'], - ['Ä', 'Ä', true, 'A - diaeresis'], - ['Å', 'Å', true, 'A - ring above'], - ['Æ', 'Æ', true, 'ligature AE'], - ['Ç', 'Ç', true, 'C - cedilla'], - ['È', 'È', true, 'E - grave'], - ['É', 'É', true, 'E - acute'], - ['Ê', 'Ê', true, 'E - circumflex'], - ['Ë', 'Ë', true, 'E - diaeresis'], - ['Ì', 'Ì', true, 'I - grave'], - ['Í', 'Í', true, 'I - acute'], - ['Î', 'Î', true, 'I - circumflex'], - ['Ï', 'Ï', true, 'I - diaeresis'], - ['Ð', 'Ð', true, 'ETH'], - ['Ñ', 'Ñ', true, 'N - tilde'], - ['Ò', 'Ò', true, 'O - grave'], - ['Ó', 'Ó', true, 'O - acute'], - ['Ô', 'Ô', true, 'O - circumflex'], - ['Õ', 'Õ', true, 'O - tilde'], - ['Ö', 'Ö', true, 'O - diaeresis'], - ['Ø', 'Ø', true, 'O - slash'], - ['Œ', 'Œ', true, 'ligature OE'], - ['Š', 'Š', true, 'S - caron'], - ['Ù', 'Ù', true, 'U - grave'], - ['Ú', 'Ú', true, 'U - acute'], - ['Û', 'Û', true, 'U - circumflex'], - ['Ü', 'Ü', true, 'U - diaeresis'], - ['Ý', 'Ý', true, 'Y - acute'], - ['Ÿ', 'Ÿ', true, 'Y - diaeresis'], - ['Þ', 'Þ', true, 'THORN'], - ['à', 'à', true, 'a - grave'], - ['á', 'á', true, 'a - acute'], - ['â', 'â', true, 'a - circumflex'], - ['ã', 'ã', true, 'a - tilde'], - ['ä', 'ä', true, 'a - diaeresis'], - ['å', 'å', true, 'a - ring above'], - ['æ', 'æ', true, 'ligature ae'], - ['ç', 'ç', true, 'c - cedilla'], - ['è', 'è', true, 'e - grave'], - ['é', 'é', true, 'e - acute'], - ['ê', 'ê', true, 'e - circumflex'], - ['ë', 'ë', true, 'e - diaeresis'], - ['ì', 'ì', true, 'i - grave'], - ['í', 'í', true, 'i - acute'], - ['î', 'î', true, 'i - circumflex'], - ['ï', 'ï', true, 'i - diaeresis'], - ['ð', 'ð', true, 'eth'], - ['ñ', 'ñ', true, 'n - tilde'], - ['ò', 'ò', true, 'o - grave'], - ['ó', 'ó', true, 'o - acute'], - ['ô', 'ô', true, 'o - circumflex'], - ['õ', 'õ', true, 'o - tilde'], - ['ö', 'ö', true, 'o - diaeresis'], - ['ø', 'ø', true, 'o slash'], - ['œ', 'œ', true, 'ligature oe'], - ['š', 'š', true, 's - caron'], - ['ù', 'ù', true, 'u - grave'], - ['ú', 'ú', true, 'u - acute'], - ['û', 'û', true, 'u - circumflex'], - ['ü', 'ü', true, 'u - diaeresis'], - ['ý', 'ý', true, 'y - acute'], - ['þ', 'þ', true, 'thorn'], - ['ÿ', 'ÿ', true, 'y - diaeresis'], - ['Α', 'Α', true, 'Alpha'], - ['Β', 'Β', true, 'Beta'], - ['Γ', 'Γ', true, 'Gamma'], - ['Δ', 'Δ', true, 'Delta'], - ['Ε', 'Ε', true, 'Epsilon'], - ['Ζ', 'Ζ', true, 'Zeta'], - ['Η', 'Η', true, 'Eta'], - ['Θ', 'Θ', true, 'Theta'], - ['Ι', 'Ι', true, 'Iota'], - ['Κ', 'Κ', true, 'Kappa'], - ['Λ', 'Λ', true, 'Lambda'], - ['Μ', 'Μ', true, 'Mu'], - ['Ν', 'Ν', true, 'Nu'], - ['Ξ', 'Ξ', true, 'Xi'], - ['Ο', 'Ο', true, 'Omicron'], - ['Π', 'Π', true, 'Pi'], - ['Ρ', 'Ρ', true, 'Rho'], - ['Σ', 'Σ', true, 'Sigma'], - ['Τ', 'Τ', true, 'Tau'], - ['Υ', 'Υ', true, 'Upsilon'], - ['Φ', 'Φ', true, 'Phi'], - ['Χ', 'Χ', true, 'Chi'], - ['Ψ', 'Ψ', true, 'Psi'], - ['Ω', 'Ω', true, 'Omega'], - ['α', 'α', true, 'alpha'], - ['β', 'β', true, 'beta'], - ['γ', 'γ', true, 'gamma'], - ['δ', 'δ', true, 'delta'], - ['ε', 'ε', true, 'epsilon'], - ['ζ', 'ζ', true, 'zeta'], - ['η', 'η', true, 'eta'], - ['θ', 'θ', true, 'theta'], - ['ι', 'ι', true, 'iota'], - ['κ', 'κ', true, 'kappa'], - ['λ', 'λ', true, 'lambda'], - ['μ', 'μ', true, 'mu'], - ['ν', 'ν', true, 'nu'], - ['ξ', 'ξ', true, 'xi'], - ['ο', 'ο', true, 'omicron'], - ['π', 'π', true, 'pi'], - ['ρ', 'ρ', true, 'rho'], - ['ς', 'ς', true, 'final sigma'], - ['σ', 'σ', true, 'sigma'], - ['τ', 'τ', true, 'tau'], - ['υ', 'υ', true, 'upsilon'], - ['φ', 'φ', true, 'phi'], - ['χ', 'χ', true, 'chi'], - ['ψ', 'ψ', true, 'psi'], - ['ω', 'ω', true, 'omega'], -// symbols - ['ℵ', 'ℵ', false,'alef symbol'], - ['ϖ', 'ϖ', false,'pi symbol'], - ['ℜ', 'ℜ', false,'real part symbol'], - ['ϑ','ϑ', false,'theta symbol'], - ['ϒ', 'ϒ', false,'upsilon - hook symbol'], - ['℘', '℘', false,'Weierstrass p'], - ['ℑ', 'ℑ', false,'imaginary part'], -// arrows - ['←', '←', true, 'leftwards arrow'], - ['↑', '↑', true, 'upwards arrow'], - ['→', '→', true, 'rightwards arrow'], - ['↓', '↓', true, 'downwards arrow'], - ['↔', '↔', true, 'left right arrow'], - ['↵', '↵', false,'carriage return'], - ['⇐', '⇐', false,'leftwards double arrow'], - ['⇑', '⇑', false,'upwards double arrow'], - ['⇒', '⇒', false,'rightwards double arrow'], - ['⇓', '⇓', false,'downwards double arrow'], - ['⇔', '⇔', false,'left right double arrow'], - ['∴', '∴', false,'therefore'], - ['⊂', '⊂', false,'subset of'], - ['⊃', '⊃', false,'superset of'], - ['⊄', '⊄', false,'not a subset of'], - ['⊆', '⊆', false,'subset of or equal to'], - ['⊇', '⊇', false,'superset of or equal to'], - ['⊕', '⊕', false,'circled plus'], - ['⊗', '⊗', false,'circled times'], - ['⊥', '⊥', false,'perpendicular'], - ['⋅', '⋅', false,'dot operator'], - ['⌈', '⌈', false,'left ceiling'], - ['⌉', '⌉', false,'right ceiling'], - ['⌊', '⌊', false,'left floor'], - ['⌋', '⌋', false,'right floor'], - ['⟨', '〈', false,'left-pointing angle bracket'], - ['⟩', '〉', false,'right-pointing angle bracket'], - ['◊', '◊', true, 'lozenge'], - ['♠', '♠', true, 'black spade suit'], - ['♣', '♣', true, 'black club suit'], - ['♥', '♥', true, 'black heart suit'], - ['♦', '♦', true, 'black diamond suit'], - [' ', ' ', false,'en space'], - [' ', ' ', false,'em space'], - [' ', ' ', false,'thin space'], - ['‌', '‌', false,'zero width non-joiner'], - ['‍', '‍', false,'zero width joiner'], - ['‎', '‎', false,'left-to-right mark'], - ['‏', '‏', false,'right-to-left mark'], - ['­', '­', false,'soft hyphen'] -]; - -tinyMCEPopup.onInit.add(function() { - tinyMCEPopup.dom.setHTML('charmapView', renderCharMapHTML()); - addKeyboardNavigation(); -}); - -function addKeyboardNavigation(){ - var tableElm, cells, settings; - - cells = tinyMCEPopup.dom.select("a.charmaplink", "charmapgroup"); - - settings ={ - root: "charmapgroup", - items: cells - }; - cells[0].tabindex=0; - tinyMCEPopup.dom.addClass(cells[0], "mceFocus"); - if (tinymce.isGecko) { - cells[0].focus(); - } else { - setTimeout(function(){ - cells[0].focus(); - }, 100); - } - tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', settings, tinyMCEPopup.dom); -} - -function renderCharMapHTML() { - var charsPerRow = 20, tdWidth=20, tdHeight=20, i; - var html = '
                      '+ - ''; - var cols=-1; - - for (i=0; i' - + '' - + charmap[i][1] - + ''; - if ((cols+1) % charsPerRow == 0) - html += ''; - } - } - - if (cols % charsPerRow > 0) { - var padd = charsPerRow - (cols % charsPerRow); - for (var i=0; i '; - } - - html += '
                      '; - html = html.replace(/<\/tr>/g, ''); - - return html; -} - -function insertChar(chr) { - tinyMCEPopup.execCommand('mceInsertContent', false, '&#' + chr + ';'); - - // Refocus in window - if (tinyMCEPopup.isWindow) - window.focus(); - - tinyMCEPopup.editor.focus(); - tinyMCEPopup.close(); -} - -function previewChar(codeA, codeB, codeN) { - var elmA = document.getElementById('codeA'); - var elmB = document.getElementById('codeB'); - var elmV = document.getElementById('codeV'); - var elmN = document.getElementById('codeN'); - - if (codeA=='#160;') { - elmV.innerHTML = '__'; - } else { - elmV.innerHTML = '&' + codeA; - } - - elmB.innerHTML = '&' + codeA; - elmA.innerHTML = '&' + codeB; - elmN.innerHTML = codeN; -} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/color_picker.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/js/color_picker.js deleted file mode 100644 index cc891c1711..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/color_picker.js +++ /dev/null @@ -1,345 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var detail = 50, strhex = "0123456789abcdef", i, isMouseDown = false, isMouseOver = false; - -var colors = [ - "#000000","#000033","#000066","#000099","#0000cc","#0000ff","#330000","#330033", - "#330066","#330099","#3300cc","#3300ff","#660000","#660033","#660066","#660099", - "#6600cc","#6600ff","#990000","#990033","#990066","#990099","#9900cc","#9900ff", - "#cc0000","#cc0033","#cc0066","#cc0099","#cc00cc","#cc00ff","#ff0000","#ff0033", - "#ff0066","#ff0099","#ff00cc","#ff00ff","#003300","#003333","#003366","#003399", - "#0033cc","#0033ff","#333300","#333333","#333366","#333399","#3333cc","#3333ff", - "#663300","#663333","#663366","#663399","#6633cc","#6633ff","#993300","#993333", - "#993366","#993399","#9933cc","#9933ff","#cc3300","#cc3333","#cc3366","#cc3399", - "#cc33cc","#cc33ff","#ff3300","#ff3333","#ff3366","#ff3399","#ff33cc","#ff33ff", - "#006600","#006633","#006666","#006699","#0066cc","#0066ff","#336600","#336633", - "#336666","#336699","#3366cc","#3366ff","#666600","#666633","#666666","#666699", - "#6666cc","#6666ff","#996600","#996633","#996666","#996699","#9966cc","#9966ff", - "#cc6600","#cc6633","#cc6666","#cc6699","#cc66cc","#cc66ff","#ff6600","#ff6633", - "#ff6666","#ff6699","#ff66cc","#ff66ff","#009900","#009933","#009966","#009999", - "#0099cc","#0099ff","#339900","#339933","#339966","#339999","#3399cc","#3399ff", - "#669900","#669933","#669966","#669999","#6699cc","#6699ff","#999900","#999933", - "#999966","#999999","#9999cc","#9999ff","#cc9900","#cc9933","#cc9966","#cc9999", - "#cc99cc","#cc99ff","#ff9900","#ff9933","#ff9966","#ff9999","#ff99cc","#ff99ff", - "#00cc00","#00cc33","#00cc66","#00cc99","#00cccc","#00ccff","#33cc00","#33cc33", - "#33cc66","#33cc99","#33cccc","#33ccff","#66cc00","#66cc33","#66cc66","#66cc99", - "#66cccc","#66ccff","#99cc00","#99cc33","#99cc66","#99cc99","#99cccc","#99ccff", - "#cccc00","#cccc33","#cccc66","#cccc99","#cccccc","#ccccff","#ffcc00","#ffcc33", - "#ffcc66","#ffcc99","#ffcccc","#ffccff","#00ff00","#00ff33","#00ff66","#00ff99", - "#00ffcc","#00ffff","#33ff00","#33ff33","#33ff66","#33ff99","#33ffcc","#33ffff", - "#66ff00","#66ff33","#66ff66","#66ff99","#66ffcc","#66ffff","#99ff00","#99ff33", - "#99ff66","#99ff99","#99ffcc","#99ffff","#ccff00","#ccff33","#ccff66","#ccff99", - "#ccffcc","#ccffff","#ffff00","#ffff33","#ffff66","#ffff99","#ffffcc","#ffffff" -]; - -var named = { - '#F0F8FF':'Alice Blue','#FAEBD7':'Antique White','#00FFFF':'Aqua','#7FFFD4':'Aquamarine','#F0FFFF':'Azure','#F5F5DC':'Beige', - '#FFE4C4':'Bisque','#000000':'Black','#FFEBCD':'Blanched Almond','#0000FF':'Blue','#8A2BE2':'Blue Violet','#A52A2A':'Brown', - '#DEB887':'Burly Wood','#5F9EA0':'Cadet Blue','#7FFF00':'Chartreuse','#D2691E':'Chocolate','#FF7F50':'Coral','#6495ED':'Cornflower Blue', - '#FFF8DC':'Cornsilk','#DC143C':'Crimson','#00FFFF':'Cyan','#00008B':'Dark Blue','#008B8B':'Dark Cyan','#B8860B':'Dark Golden Rod', - '#A9A9A9':'Dark Gray','#A9A9A9':'Dark Grey','#006400':'Dark Green','#BDB76B':'Dark Khaki','#8B008B':'Dark Magenta','#556B2F':'Dark Olive Green', - '#FF8C00':'Darkorange','#9932CC':'Dark Orchid','#8B0000':'Dark Red','#E9967A':'Dark Salmon','#8FBC8F':'Dark Sea Green','#483D8B':'Dark Slate Blue', - '#2F4F4F':'Dark Slate Gray','#2F4F4F':'Dark Slate Grey','#00CED1':'Dark Turquoise','#9400D3':'Dark Violet','#FF1493':'Deep Pink','#00BFFF':'Deep Sky Blue', - '#696969':'Dim Gray','#696969':'Dim Grey','#1E90FF':'Dodger Blue','#B22222':'Fire Brick','#FFFAF0':'Floral White','#228B22':'Forest Green', - '#FF00FF':'Fuchsia','#DCDCDC':'Gainsboro','#F8F8FF':'Ghost White','#FFD700':'Gold','#DAA520':'Golden Rod','#808080':'Gray','#808080':'Grey', - '#008000':'Green','#ADFF2F':'Green Yellow','#F0FFF0':'Honey Dew','#FF69B4':'Hot Pink','#CD5C5C':'Indian Red','#4B0082':'Indigo','#FFFFF0':'Ivory', - '#F0E68C':'Khaki','#E6E6FA':'Lavender','#FFF0F5':'Lavender Blush','#7CFC00':'Lawn Green','#FFFACD':'Lemon Chiffon','#ADD8E6':'Light Blue', - '#F08080':'Light Coral','#E0FFFF':'Light Cyan','#FAFAD2':'Light Golden Rod Yellow','#D3D3D3':'Light Gray','#D3D3D3':'Light Grey','#90EE90':'Light Green', - '#FFB6C1':'Light Pink','#FFA07A':'Light Salmon','#20B2AA':'Light Sea Green','#87CEFA':'Light Sky Blue','#778899':'Light Slate Gray','#778899':'Light Slate Grey', - '#B0C4DE':'Light Steel Blue','#FFFFE0':'Light Yellow','#00FF00':'Lime','#32CD32':'Lime Green','#FAF0E6':'Linen','#FF00FF':'Magenta','#800000':'Maroon', - '#66CDAA':'Medium Aqua Marine','#0000CD':'Medium Blue','#BA55D3':'Medium Orchid','#9370D8':'Medium Purple','#3CB371':'Medium Sea Green','#7B68EE':'Medium Slate Blue', - '#00FA9A':'Medium Spring Green','#48D1CC':'Medium Turquoise','#C71585':'Medium Violet Red','#191970':'Midnight Blue','#F5FFFA':'Mint Cream','#FFE4E1':'Misty Rose','#FFE4B5':'Moccasin', - '#FFDEAD':'Navajo White','#000080':'Navy','#FDF5E6':'Old Lace','#808000':'Olive','#6B8E23':'Olive Drab','#FFA500':'Orange','#FF4500':'Orange Red','#DA70D6':'Orchid', - '#EEE8AA':'Pale Golden Rod','#98FB98':'Pale Green','#AFEEEE':'Pale Turquoise','#D87093':'Pale Violet Red','#FFEFD5':'Papaya Whip','#FFDAB9':'Peach Puff', - '#CD853F':'Peru','#FFC0CB':'Pink','#DDA0DD':'Plum','#B0E0E6':'Powder Blue','#800080':'Purple','#FF0000':'Red','#BC8F8F':'Rosy Brown','#4169E1':'Royal Blue', - '#8B4513':'Saddle Brown','#FA8072':'Salmon','#F4A460':'Sandy Brown','#2E8B57':'Sea Green','#FFF5EE':'Sea Shell','#A0522D':'Sienna','#C0C0C0':'Silver', - '#87CEEB':'Sky Blue','#6A5ACD':'Slate Blue','#708090':'Slate Gray','#708090':'Slate Grey','#FFFAFA':'Snow','#00FF7F':'Spring Green', - '#4682B4':'Steel Blue','#D2B48C':'Tan','#008080':'Teal','#D8BFD8':'Thistle','#FF6347':'Tomato','#40E0D0':'Turquoise','#EE82EE':'Violet', - '#F5DEB3':'Wheat','#FFFFFF':'White','#F5F5F5':'White Smoke','#FFFF00':'Yellow','#9ACD32':'Yellow Green' -}; - -var namedLookup = {}; - -function init() { - var inputColor = convertRGBToHex(tinyMCEPopup.getWindowArg('input_color')), key, value; - - tinyMCEPopup.resizeToInnerSize(); - - generatePicker(); - generateWebColors(); - generateNamedColors(); - - if (inputColor) { - changeFinalColor(inputColor); - - col = convertHexToRGB(inputColor); - - if (col) - updateLight(col.r, col.g, col.b); - } - - for (key in named) { - value = named[key]; - namedLookup[value.replace(/\s+/, '').toLowerCase()] = key.replace(/#/, '').toLowerCase(); - } -} - -function toHexColor(color) { - var matches, red, green, blue, toInt = parseInt; - - function hex(value) { - value = parseInt(value).toString(16); - - return value.length > 1 ? value : '0' + value; // Padd with leading zero - }; - - color = tinymce.trim(color); - color = color.replace(/^[#]/, '').toLowerCase(); // remove leading '#' - color = namedLookup[color] || color; - - matches = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/.exec(color); - - if (matches) { - red = toInt(matches[1]); - green = toInt(matches[2]); - blue = toInt(matches[3]); - } else { - matches = /^([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/.exec(color); - - if (matches) { - red = toInt(matches[1], 16); - green = toInt(matches[2], 16); - blue = toInt(matches[3], 16); - } else { - matches = /^([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(color); - - if (matches) { - red = toInt(matches[1] + matches[1], 16); - green = toInt(matches[2] + matches[2], 16); - blue = toInt(matches[3] + matches[3], 16); - } else { - return ''; - } - } - } - - return '#' + hex(red) + hex(green) + hex(blue); -} - -function insertAction() { - var color = document.getElementById("color").value, f = tinyMCEPopup.getWindowArg('func'); - - var hexColor = toHexColor(color); - - if (hexColor === '') { - var text = tinyMCEPopup.editor.getLang('advanced_dlg.invalid_color_value'); - tinyMCEPopup.alert(text + ': ' + color); - } - else { - tinyMCEPopup.restoreSelection(); - - if (f) - f(hexColor); - - tinyMCEPopup.close(); - } -} - -function showColor(color, name) { - if (name) - document.getElementById("colorname").innerHTML = name; - - document.getElementById("preview").style.backgroundColor = color; - document.getElementById("color").value = color.toUpperCase(); -} - -function convertRGBToHex(col) { - var re = new RegExp("rgb\\s*\\(\\s*([0-9]+).*,\\s*([0-9]+).*,\\s*([0-9]+).*\\)", "gi"); - - if (!col) - return col; - - var rgb = col.replace(re, "$1,$2,$3").split(','); - if (rgb.length == 3) { - r = parseInt(rgb[0]).toString(16); - g = parseInt(rgb[1]).toString(16); - b = parseInt(rgb[2]).toString(16); - - r = r.length == 1 ? '0' + r : r; - g = g.length == 1 ? '0' + g : g; - b = b.length == 1 ? '0' + b : b; - - return "#" + r + g + b; - } - - return col; -} - -function convertHexToRGB(col) { - if (col.indexOf('#') != -1) { - col = col.replace(new RegExp('[^0-9A-F]', 'gi'), ''); - - r = parseInt(col.substring(0, 2), 16); - g = parseInt(col.substring(2, 4), 16); - b = parseInt(col.substring(4, 6), 16); - - return {r : r, g : g, b : b}; - } - - return null; -} - -function generatePicker() { - var el = document.getElementById('light'), h = '', i; - - for (i = 0; i < detail; i++){ - h += '
                      '; - } - - el.innerHTML = h; -} - -function generateWebColors() { - var el = document.getElementById('webcolors'), h = '', i; - - if (el.className == 'generated') - return; - - // TODO: VoiceOver doesn't seem to support legend as a label referenced by labelledby. - h += '
                      ' - + ''; - - for (i=0; i' - + ''; - if (tinyMCEPopup.editor.forcedHighContrastMode) { - h += ''; - } - h += ''; - h += ''; - if ((i+1) % 18 == 0) - h += ''; - } - - h += '
                      '; - - el.innerHTML = h; - el.className = 'generated'; - - paintCanvas(el); - enableKeyboardNavigation(el.firstChild); -} - -function paintCanvas(el) { - tinyMCEPopup.getWin().tinymce.each(tinyMCEPopup.dom.select('canvas.mceColorSwatch', el), function(canvas) { - var context; - if (canvas.getContext && (context = canvas.getContext("2d"))) { - context.fillStyle = canvas.getAttribute('data-color'); - context.fillRect(0, 0, 10, 10); - } - }); -} -function generateNamedColors() { - var el = document.getElementById('namedcolors'), h = '', n, v, i = 0; - - if (el.className == 'generated') - return; - - for (n in named) { - v = named[n]; - h += ''; - if (tinyMCEPopup.editor.forcedHighContrastMode) { - h += ''; - } - h += ''; - h += ''; - i++; - } - - el.innerHTML = h; - el.className = 'generated'; - - paintCanvas(el); - enableKeyboardNavigation(el); -} - -function enableKeyboardNavigation(el) { - tinyMCEPopup.editor.windowManager.createInstance('tinymce.ui.KeyboardNavigation', { - root: el, - items: tinyMCEPopup.dom.select('a', el) - }, tinyMCEPopup.dom); -} - -function dechex(n) { - return strhex.charAt(Math.floor(n / 16)) + strhex.charAt(n % 16); -} - -function computeColor(e) { - var x, y, partWidth, partDetail, imHeight, r, g, b, coef, i, finalCoef, finalR, finalG, finalB, pos = tinyMCEPopup.dom.getPos(e.target); - - x = e.offsetX ? e.offsetX : (e.target ? e.clientX - pos.x : 0); - y = e.offsetY ? e.offsetY : (e.target ? e.clientY - pos.y : 0); - - partWidth = document.getElementById('colors').width / 6; - partDetail = detail / 2; - imHeight = document.getElementById('colors').height; - - r = (x >= 0)*(x < partWidth)*255 + (x >= partWidth)*(x < 2*partWidth)*(2*255 - x * 255 / partWidth) + (x >= 4*partWidth)*(x < 5*partWidth)*(-4*255 + x * 255 / partWidth) + (x >= 5*partWidth)*(x < 6*partWidth)*255; - g = (x >= 0)*(x < partWidth)*(x * 255 / partWidth) + (x >= partWidth)*(x < 3*partWidth)*255 + (x >= 3*partWidth)*(x < 4*partWidth)*(4*255 - x * 255 / partWidth); - b = (x >= 2*partWidth)*(x < 3*partWidth)*(-2*255 + x * 255 / partWidth) + (x >= 3*partWidth)*(x < 5*partWidth)*255 + (x >= 5*partWidth)*(x < 6*partWidth)*(6*255 - x * 255 / partWidth); - - coef = (imHeight - y) / imHeight; - r = 128 + (r - 128) * coef; - g = 128 + (g - 128) * coef; - b = 128 + (b - 128) * coef; - - changeFinalColor('#' + dechex(r) + dechex(g) + dechex(b)); - updateLight(r, g, b); -} - -function updateLight(r, g, b) { - var i, partDetail = detail / 2, finalCoef, finalR, finalG, finalB, color; - - for (i=0; i=0) && (i'); - }, - - init : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor; - - // Setup browse button - document.getElementById('srcbrowsercontainer').innerHTML = getBrowserHTML('srcbrowser','src','image','theme_advanced_image'); - if (isVisible('srcbrowser')) - document.getElementById('src').style.width = '180px'; - - e = ed.selection.getNode(); - - this.fillFileList('image_list', tinyMCEPopup.getParam('external_image_list', 'tinyMCEImageList')); - - if (e.nodeName == 'IMG') { - f.src.value = ed.dom.getAttrib(e, 'src'); - f.alt.value = ed.dom.getAttrib(e, 'alt'); - f.border.value = this.getAttrib(e, 'border'); - f.vspace.value = this.getAttrib(e, 'vspace'); - f.hspace.value = this.getAttrib(e, 'hspace'); - f.width.value = ed.dom.getAttrib(e, 'width'); - f.height.value = ed.dom.getAttrib(e, 'height'); - f.insert.value = ed.getLang('update'); - this.styleVal = ed.dom.getAttrib(e, 'style'); - selectByValue(f, 'image_list', f.src.value); - selectByValue(f, 'align', this.getAttrib(e, 'align')); - this.updateStyle(); - } - }, - - fillFileList : function(id, l) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - l = typeof(l) === 'function' ? l() : window[l]; - - if (l && l.length > 0) { - lst.options[lst.options.length] = new Option('', ''); - - tinymce.each(l, function(o) { - lst.options[lst.options.length] = new Option(o[0], o[1]); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - update : function() { - var f = document.forms[0], nl = f.elements, ed = tinyMCEPopup.editor, args = {}, el; - - tinyMCEPopup.restoreSelection(); - - if (f.src.value === '') { - if (ed.selection.getNode().nodeName == 'IMG') { - ed.dom.remove(ed.selection.getNode()); - ed.execCommand('mceRepaint'); - } - - tinyMCEPopup.close(); - return; - } - - if (!ed.settings.inline_styles) { - args = tinymce.extend(args, { - vspace : nl.vspace.value, - hspace : nl.hspace.value, - border : nl.border.value, - align : getSelectValue(f, 'align') - }); - } else - args.style = this.styleVal; - - tinymce.extend(args, { - src : f.src.value.replace(/ /g, '%20'), - alt : f.alt.value, - width : f.width.value, - height : f.height.value - }); - - el = ed.selection.getNode(); - - if (el && el.nodeName == 'IMG') { - ed.dom.setAttribs(el, args); - tinyMCEPopup.editor.execCommand('mceRepaint'); - tinyMCEPopup.editor.focus(); - } else { - tinymce.each(args, function(value, name) { - if (value === "") { - delete args[name]; - } - }); - - ed.execCommand('mceInsertContent', false, tinyMCEPopup.editor.dom.createHTML('img', args), {skip_undo : 1}); - ed.undoManager.add(); - } - - tinyMCEPopup.close(); - }, - - updateStyle : function() { - var dom = tinyMCEPopup.dom, st = {}, v, f = document.forms[0]; - - if (tinyMCEPopup.editor.settings.inline_styles) { - tinymce.each(tinyMCEPopup.dom.parseStyle(this.styleVal), function(value, key) { - st[key] = value; - }); - - // Handle align - v = getSelectValue(f, 'align'); - if (v) { - if (v == 'left' || v == 'right') { - st['float'] = v; - delete st['vertical-align']; - } else { - st['vertical-align'] = v; - delete st['float']; - } - } else { - delete st['float']; - delete st['vertical-align']; - } - - // Handle border - v = f.border.value; - if (v || v == '0') { - if (v == '0') - st['border'] = '0'; - else - st['border'] = v + 'px solid black'; - } else - delete st['border']; - - // Handle hspace - v = f.hspace.value; - if (v) { - delete st['margin']; - st['margin-left'] = v + 'px'; - st['margin-right'] = v + 'px'; - } else { - delete st['margin-left']; - delete st['margin-right']; - } - - // Handle vspace - v = f.vspace.value; - if (v) { - delete st['margin']; - st['margin-top'] = v + 'px'; - st['margin-bottom'] = v + 'px'; - } else { - delete st['margin-top']; - delete st['margin-bottom']; - } - - // Merge - st = tinyMCEPopup.dom.parseStyle(dom.serializeStyle(st), 'img'); - this.styleVal = dom.serializeStyle(st, 'img'); - } - }, - - getAttrib : function(e, at) { - var ed = tinyMCEPopup.editor, dom = ed.dom, v, v2; - - if (ed.settings.inline_styles) { - switch (at) { - case 'align': - if (v = dom.getStyle(e, 'float')) - return v; - - if (v = dom.getStyle(e, 'vertical-align')) - return v; - - break; - - case 'hspace': - v = dom.getStyle(e, 'margin-left') - v2 = dom.getStyle(e, 'margin-right'); - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'vspace': - v = dom.getStyle(e, 'margin-top') - v2 = dom.getStyle(e, 'margin-bottom'); - if (v && v == v2) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - - case 'border': - v = 0; - - tinymce.each(['top', 'right', 'bottom', 'left'], function(sv) { - sv = dom.getStyle(e, 'border-' + sv + '-width'); - - // False or not the same as prev - if (!sv || (sv != v && v !== 0)) { - v = 0; - return false; - } - - if (sv) - v = sv; - }); - - if (v) - return parseInt(v.replace(/[^0-9]/g, '')); - - break; - } - } - - if (v = dom.getAttrib(e, at)) - return v; - - return ''; - }, - - resetImageData : function() { - var f = document.forms[0]; - - f.width.value = f.height.value = ""; - }, - - updateImageData : function() { - var f = document.forms[0], t = ImageDialog; - - if (f.width.value == "") - f.width.value = t.preloadImg.width; - - if (f.height.value == "") - f.height.value = t.preloadImg.height; - }, - - getImageData : function() { - var f = document.forms[0]; - - this.preloadImg = new Image(); - this.preloadImg.onload = this.updateImageData; - this.preloadImg.onerror = this.resetImageData; - this.preloadImg.src = tinyMCEPopup.editor.documentBaseURI.toAbsolute(f.src.value); - } -}; - -ImageDialog.preInit(); -tinyMCEPopup.onInit.add(ImageDialog.init, ImageDialog); diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/link.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/js/link.js deleted file mode 100644 index b08b2ba9c2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/link.js +++ /dev/null @@ -1,159 +0,0 @@ -tinyMCEPopup.requireLangPack(); - -var LinkDialog = { - preInit : function() { - var url; - - if (url = tinyMCEPopup.getParam("external_link_list_url")) - document.write(''); - }, - - init : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor; - - // Setup browse button - document.getElementById('hrefbrowsercontainer').innerHTML = getBrowserHTML('hrefbrowser', 'href', 'file', 'theme_advanced_link'); - if (isVisible('hrefbrowser')) - document.getElementById('href').style.width = '180px'; - - this.fillClassList('class_list'); - this.fillFileList('link_list', 'tinyMCELinkList'); - this.fillTargetList('target_list'); - - if (e = ed.dom.getParent(ed.selection.getNode(), 'A')) { - f.href.value = ed.dom.getAttrib(e, 'href'); - f.linktitle.value = ed.dom.getAttrib(e, 'title'); - f.insert.value = ed.getLang('update'); - selectByValue(f, 'link_list', f.href.value); - selectByValue(f, 'target_list', ed.dom.getAttrib(e, 'target')); - selectByValue(f, 'class_list', ed.dom.getAttrib(e, 'class')); - } - }, - - update : function() { - var f = document.forms[0], ed = tinyMCEPopup.editor, e, b, href = f.href.value.replace(/ /g, '%20'); - - tinyMCEPopup.restoreSelection(); - e = ed.dom.getParent(ed.selection.getNode(), 'A'); - - // Remove element if there is no href - if (!f.href.value) { - if (e) { - b = ed.selection.getBookmark(); - ed.dom.remove(e, 1); - ed.selection.moveToBookmark(b); - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); - return; - } - } - - // Create new anchor elements - if (e == null) { - ed.getDoc().execCommand("unlink", false, null); - tinyMCEPopup.execCommand("mceInsertLink", false, "#mce_temp_url#", {skip_undo : 1}); - - tinymce.each(ed.dom.select("a"), function(n) { - if (ed.dom.getAttrib(n, 'href') == '#mce_temp_url#') { - e = n; - - ed.dom.setAttribs(e, { - href : href, - title : f.linktitle.value, - target : f.target_list ? getSelectValue(f, "target_list") : null, - 'class' : f.class_list ? getSelectValue(f, "class_list") : null - }); - } - }); - } else { - ed.dom.setAttribs(e, { - href : href, - title : f.linktitle.value - }); - - if (f.target_list) { - ed.dom.setAttrib(e, 'target', getSelectValue(f, "target_list")); - } - - if (f.class_list) { - ed.dom.setAttrib(e, 'class', getSelectValue(f, "class_list")); - } - } - - // Don't move caret if selection was image - if (e.childNodes.length != 1 || e.firstChild.nodeName != 'IMG') { - ed.focus(); - ed.selection.select(e); - ed.selection.collapse(0); - tinyMCEPopup.storeSelection(); - } - - tinyMCEPopup.execCommand("mceEndUndoLevel"); - tinyMCEPopup.close(); - }, - - checkPrefix : function(n) { - if (n.value && Validator.isEmail(n) && !/^\s*mailto:/i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_email'))) - n.value = 'mailto:' + n.value; - - if (/^\s*www\./i.test(n.value) && confirm(tinyMCEPopup.getLang('advanced_dlg.link_is_external'))) - n.value = 'http://' + n.value; - }, - - fillFileList : function(id, l) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - l = window[l]; - - if (l && l.length > 0) { - lst.options[lst.options.length] = new Option('', ''); - - tinymce.each(l, function(o) { - lst.options[lst.options.length] = new Option(o[0], o[1]); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - fillClassList : function(id) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v, cl; - - if (v = tinyMCEPopup.getParam('theme_advanced_styles')) { - cl = []; - - tinymce.each(v.split(';'), function(v) { - var p = v.split('='); - - cl.push({'title' : p[0], 'class' : p[1]}); - }); - } else - cl = tinyMCEPopup.editor.dom.getClasses(); - - if (cl.length > 0) { - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); - - tinymce.each(cl, function(o) { - lst.options[lst.options.length] = new Option(o.title || o['class'], o['class']); - }); - } else - dom.remove(dom.getParent(id, 'tr')); - }, - - fillTargetList : function(id) { - var dom = tinyMCEPopup.dom, lst = dom.get(id), v; - - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('not_set'), ''); - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_same'), '_self'); - lst.options[lst.options.length] = new Option(tinyMCEPopup.getLang('advanced_dlg.link_target_blank'), '_blank'); - - if (v = tinyMCEPopup.getParam('theme_advanced_link_targets')) { - tinymce.each(v.split(','), function(v) { - v = v.split('='); - lst.options[lst.options.length] = new Option(v[0], v[1]); - }); - } - } -}; - -LinkDialog.preInit(); -tinyMCEPopup.onInit.add(LinkDialog.init, LinkDialog); diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/source_editor.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/js/source_editor.js deleted file mode 100644 index d4179371a0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/js/source_editor.js +++ /dev/null @@ -1,78 +0,0 @@ -tinyMCEPopup.requireLangPack(); -tinyMCEPopup.onInit.add(onLoadInit); - -function saveContent() { - tinyMCEPopup.editor.setContent(document.getElementById('htmlSource').value, {source_view : true}); - tinyMCEPopup.close(); -} - -function onLoadInit() { - tinyMCEPopup.resizeToInnerSize(); - - // Remove Gecko spellchecking - if (tinymce.isGecko) - document.body.spellcheck = tinyMCEPopup.editor.getParam("gecko_spellcheck"); - - document.getElementById('htmlSource').value = tinyMCEPopup.editor.getContent({source_view : true}); - - if (tinyMCEPopup.editor.getParam("theme_advanced_source_editor_wrap", true)) { - turnWrapOn(); - document.getElementById('wraped').checked = true; - } - - resizeInputs(); -} - -function setWrap(val) { - var v, n, s = document.getElementById('htmlSource'); - - s.wrap = val; - - if (!tinymce.isIE) { - v = s.value; - n = s.cloneNode(false); - n.setAttribute("wrap", val); - s.parentNode.replaceChild(n, s); - n.value = v; - } -} - -function setWhiteSpaceCss(value) { - var el = document.getElementById('htmlSource'); - tinymce.DOM.setStyle(el, 'white-space', value); -} - -function turnWrapOff() { - if (tinymce.isWebKit) { - setWhiteSpaceCss('pre'); - } else { - setWrap('off'); - } -} - -function turnWrapOn() { - if (tinymce.isWebKit) { - setWhiteSpaceCss('pre-wrap'); - } else { - setWrap('soft'); - } -} - -function toggleWordWrap(elm) { - if (elm.checked) { - turnWrapOn(); - } else { - turnWrapOff(); - } -} - -function resizeInputs() { - var vp = tinyMCEPopup.dom.getViewPort(window), el; - - el = document.getElementById('htmlSource'); - - if (el) { - el.style.width = (vp.w - 20) + 'px'; - el.style.height = (vp.h - 65) + 'px'; - } -} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/bg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/bg.js deleted file mode 100644 index 6587c73910..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/bg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.advanced',{"underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0447\u0435\u0440 (Ctrl+B)",dd:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u0434\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u044f",dt:"\u0414\u0435\u0444\u0438\u043d\u0438\u0446\u0438\u044f ",samp:"\u041f\u0440\u043e\u043c\u0435\u0440\u0435\u043d \u043a\u043e\u0434",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442",h6:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6",h5:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5",h4:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4",h3:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3",h2:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2",h1:"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1",pre:"\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d",address:"\u0410\u0434\u0440\u0435\u0441",div:"Div",paragraph:"\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430","style_select":"\u0421\u0442\u0438\u043b\u043e\u0432\u0435","anchor_delta_height":"","more_colors":"\u041e\u0449\u0435 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","toolbar_focus":"\u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u0431\u0443\u0442\u043e\u043d\u0438\u0442\u0435 - Alt+Q, \u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0430 - Alt-Z, \u041e\u0442\u0438\u0434\u0438 \u043f\u0440\u0438 \u043f\u044a\u0442\u0435\u043a\u0430\u0442\u0430 \u043d\u0430 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438\u0442\u0435 - Alt-X",newdocument:"\u0421\u0438\u0433\u0443\u0440\u0435\u043d \u043b\u0438 \u0441\u0442\u0435, \u0447\u0435 \u0438\u0441\u043a\u0430\u0442\u0435 \u0434\u0430 \u0438\u0437\u0447\u0438\u0441\u0442\u0438\u0442\u0435 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435?",path:"\u041f\u044a\u0442","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435/\u041e\u0442\u0440\u044f\u0437\u0432\u0430\u043d\u0435/\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0435 \u0435 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u043e \u043f\u043e\u0434 Mozilla \u0438 Firefox.\n\u0416\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u043f\u043e\u0432\u0435\u0447\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u0437\u0430 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u0430?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442","help_desc":"\u041f\u043e\u043c\u043e\u0449","newdocument_desc":"\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430","paste_desc":"\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435","cut_desc":"\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435","anchor_desc":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u043e\u0442\u0432\u0430","visualaid_desc":"\u0412\u043a\u043b./\u0438\u0437\u043a\u043b. \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0438\u0442\u0435 \u0435\u043b\u0435\u043c\u0435\u043d\u0442\u0438","charmap_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0446\u0432\u044f\u0442 \u043d\u0430 \u0444\u043e\u043d\u0430","forecolor_desc":"\u0418\u0437\u0431\u0435\u0440\u0438 \u0446\u0432\u044f\u0442 \u043d\u0430 \u0442\u0435\u043a\u0441\u0442\u0430","custom1_desc":"\u0412\u0430\u0448\u0435\u0442\u043e \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0442\u0443\u043a","removeformat_desc":"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e","hr_desc":"\u0412\u043c\u044a\u043a\u043d\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u043b\u0438\u043d\u0438\u044f","sup_desc":"\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441","sub_desc":"\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441","code_desc":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 HTML","cleanup_desc":"\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u043a\u043e\u0434\u0430","image_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435/\u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","unlink_desc":"\u041f\u0440\u0435\u043c\u0430\u0445\u043d\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_desc":"\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435/\u0440\u0435\u0434\u0430\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","redo_desc":"\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u044f\u043d\u0430 (Ctrl+Z)","indent_desc":"\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430","outdent_desc":"\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430","numlist_desc":"\u041d\u043e\u043c\u0435\u0440\u0430","bullist_desc":"\u0412\u043e\u0434\u0430\u0447\u0438","justifyfull_desc":"\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e","justifyright_desc":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e","justifycenter_desc":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e","justifyleft_desc":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u043d","help_shortcut":"\u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-F10 \u0437\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 ALT-0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449","rich_text_area":"\u0417\u043e\u043d\u0430 \u0441\u0432\u043e\u0431\u043e\u0434\u0435\u043d \u0442\u0435\u043a\u0441\u0442","shortcuts_desc":"\u0417\u0430 \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e Help",toolbar:"\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/bg_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/bg_dlg.js deleted file mode 100644 index 7df3449c6f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/bg_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('bg.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u043b\u0438\u043d\u043a\u043e\u0432\u0435","link_is_external":"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 \u0432\u044a\u043d\u0448\u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 http:// \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","link_is_email":"URL-\u0442\u043e \u043a\u043e\u0435\u0442\u043e \u0432\u044a\u0432\u0435\u0434\u043e\u0445\u0442\u0435 \u0435 email \u0430\u0434\u0440\u0435\u0441, \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0443\u0436\u043d\u0438\u044f\u0442 mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?","link_titlefield":"\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435","link_target_blank":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0432 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","link_target_same":"\u041e\u0442\u0432\u043e\u0440\u0438 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430\u0442\u0430 \u0432 \u0441\u044a\u0449\u0438\u044f\u0442 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446","link_target":"\u0426\u0435\u043b","link_url":"URL \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","link_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430","image_align_right":"\u0414\u044f\u0441\u043d\u043e","image_align_left":"\u041b\u044f\u0432\u043e","image_align_textbottom":"\u0422\u0435\u043a\u0441\u0442 \u0434\u043e\u043b\u0443","image_align_texttop":"\u0422\u0435\u043a\u0441\u0442 \u0433\u043e\u0440\u0435","image_align_bottom":"\u0414\u043e\u043b\u0443","image_align_middle":"\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u0435","image_align_top":"\u0413\u043e\u0440\u0435","image_align_baseline":"\u0411\u0430\u0437\u043e\u0432\u0430 \u043b\u0438\u043d\u0438\u044f","image_align":"\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435","image_hspace":"\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435","image_vspace":"\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u0440\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435","image_dimensions":"\u0420\u0430\u0437\u043c\u0435\u0440\u0438","image_alt":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","image_list":"\u0421\u043f\u0438\u0441\u044a\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0438","image_border":"\u0420\u0430\u043c\u043a\u0430","image_src":"URL \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","image_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430","charmap_title":"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0441\u0438\u043c\u0432\u043e\u043b","colorpicker_name":"\u0418\u043c\u0435:","colorpicker_color":"\u0426\u0432\u044f\u0442:","colorpicker_named_title":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438 \u0446\u0432\u0435\u0442\u043e\u0432\u0435","colorpicker_named_tab":"\u0418\u043c\u0435\u043d\u0443\u0432\u0430\u043d\u0438","colorpicker_palette_title":"\u0426\u0432\u0435\u0442\u043e\u0432\u0430 \u043f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_palette_tab":"\u041f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_picker_title":"\u0418\u0437\u0431\u043e\u0440 \u043d\u0430 \u0446\u0432\u044f\u0442","colorpicker_picker_tab":"\u0418\u0437\u0431\u043e\u0440","colorpicker_title":"\u0418\u0437\u0431\u0435\u0440\u0435\u0442\u0435 \u0446\u0432\u044f\u0442","code_wordwrap":"\u041f\u0440\u0435\u043d\u043e\u0441 \u043d\u0430 \u0434\u0443\u043c\u0438","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 \u043d\u0430 HTML","anchor_name":"\u0418\u043c\u0435 \u043d\u0430 \u043a\u043e\u0442\u0432\u0430\u0442\u0430","anchor_title":"\u0412\u043c\u044a\u043a\u043d\u0438/\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u0439 \u043a\u043e\u0442\u0432\u0430","about_loaded":"\u0417\u0430\u0440\u0435\u0434\u0435\u043d\u0438 \u0434\u043e\u0431\u0430\u0432\u043a\u0438","about_version":"\u0412\u0435\u0440\u0441\u0438\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u0414\u043e\u0431\u0430\u0432\u043a\u0430","about_plugins":"\u0414\u043e\u0431\u0430\u0432\u043a\u0438","about_license":"\u041b\u0438\u0446\u0435\u043d\u0437","about_help":"\u041f\u043e\u043c\u043e\u0449","about_general":"\u041e\u0442\u043d\u043e\u0441\u043d\u043e","about_title":"\u041e\u0442\u043d\u043e\u0441\u043d\u043e TinyMCE","charmap_usage":"\u0418\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u0441\u0442\u0440\u0435\u043b\u043a\u0438\u0442\u0435 \u043d\u0430\u043b\u044f\u0432\u043e \u0438 \u043d\u0430\u0434\u044f\u0441\u043d\u043e, \u0437\u0430 \u0434\u0430 \u043d\u0430\u0432\u0438\u0433\u0438\u0440\u0430\u0442\u0435.","anchor_invalid":"\u041c\u043e\u043b\u044f \u0437\u0430\u0434\u0430\u0439\u0442\u0435 \u0432\u0430\u043b\u0438\u0434\u043d\u043e \u0438\u043c\u0435 \u0437\u0430 \u043a\u043e\u0442\u0432\u0430.","accessibility_help":"\u041f\u043e\u043c\u043e\u0449 \u0437\u0430 \u0434\u043e\u0441\u0442\u044a\u043f\u043d\u043e\u0441\u0442","accessibility_usage_title":"\u041e\u0431\u0449\u0430 \u0443\u043f\u043e\u0442\u0440\u0435\u0431\u0430","invalid_color_value":"\u041d\u0435\u0432\u0430\u043b\u0438\u0434\u043d\u0430 \u0441\u0442\u043e\u0439\u043d\u043e\u0441\u0442 \u0437\u0430 \u0446\u0432\u044f\u0442"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/cs.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/cs.js deleted file mode 100644 index 9d88d4c9c3..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/cs.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.advanced',{"underline_desc":"Podtr\u017een\u00e9 (Ctrl+U)","italic_desc":"Kurz\u00edva (Ctrl+I)","bold_desc":"Tu\u010dn\u00e9 (Ctrl+B)",dd:"Popis definice",dt:"Term\u00edn definice",samp:"Uk\u00e1zka k\u00f3du",code:"K\u00f3d",blockquote:"Blokov\u00e1 citace",h6:"Nadpis 6",h5:"Nadpis 5",h4:"Nadpis 4",h3:"Nadpis 3",h2:"Nadpis 2",h1:"Nadpis 1",pre:"P\u0159edform\u00e1tov\u00e1no",address:"Adresa",div:"Odd\u00edl",paragraph:"Odstavec",block:"Form\u00e1t",fontdefault:"P\u00edsmo","font_size":"Velikost p\u00edsma","style_select":"Styly","more_colors":"Dal\u0161\u00ed barvy","toolbar_focus":"P\u0159echod na panel n\u00e1stroj\u016f - Alt Q, p\u0159echod do editoru - Alt Z, p\u0159echod na cestu prvk\u016f - Alt X",newdocument:"Jste si opravdu jisti, \u017ee chcete odstranit ve\u0161ker\u00fd obsah?",path:"Cesta","clipboard_msg":"Funkce kop\u00edrovat/vyjmout/vlo\u017eit nejsou podporovan\u00e9 v prohl\u00ed\u017ee\u010d\u00edch Mozilla a Firefox.\nChcete v\u00edce informac\u00ed o tomto probl\u00e9mu?","blockquote_desc":"Blokov\u00e1 citace","help_desc":"N\u00e1pov\u011bda","newdocument_desc":"Nov\u00fd dokument","image_props_desc":"Vlastnosti obr\u00e1zku","paste_desc":"Vlo\u017eit","copy_desc":"Kop\u00edrovat","cut_desc":"Vyjmout","anchor_desc":"Vlo\u017eit/upravit z\u00e1lo\u017eku (kotvu)","visualaid_desc":"Zobrazit pomocn\u00e9 linky/skryt\u00e9 prvky","charmap_desc":"Vlo\u017eit speci\u00e1ln\u00ed znak","backcolor_desc":"Barva pozad\u00ed","forecolor_desc":"Barva textu","custom1_desc":"Libovoln\u00fd popisek","removeformat_desc":"Odstranit form\u00e1tov\u00e1n\u00ed","hr_desc":"Vlo\u017eit vodorovn\u00fd odd\u011blova\u010d","sup_desc":"Horn\u00ed index","sub_desc":"Doln\u00ed index","code_desc":"Upravit HTML zdroj","cleanup_desc":"Vy\u010distit k\u00f3d","image_desc":"Vlo\u017eit/upravit obr\u00e1zek","unlink_desc":"Odebrat odkaz","link_desc":"Vlo\u017eit/upravit odkaz","redo_desc":"Znovu (Ctrl+Y)","undo_desc":"Zp\u011bt (Ctrl+Z)","indent_desc":"Zv\u011bt\u0161it odsazen\u00ed","outdent_desc":"Zmen\u0161it odsazen\u00ed","numlist_desc":"\u010c\u00edslovan\u00fd seznam","bullist_desc":"Seznam s odr\u00e1\u017ekami","justifyfull_desc":"Zarovnat do bloku","justifyright_desc":"Zarovnat doprava","justifycenter_desc":"Zarovnat na st\u0159ed","justifyleft_desc":"Zarovnat doleva","striketrough_desc":"P\u0159e\u0161krtnut\u00e9","help_shortcut":"Stiskn\u011bte ALT F10 pro panel n\u00e1stroj\u016f. Stiskn\u011bte ALT 0 pro n\u00e1pov\u011bdu.","rich_text_area":"Oblast s form\u00e1tovan\u00fdm textem","shortcuts_desc":"N\u00e1pov\u011bda",toolbar:"Panel n\u00e1stroj\u016f","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/cs_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/cs_dlg.js deleted file mode 100644 index e6f3e3924c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/cs_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('cs.advanced_dlg',{"link_list":"Seznam odkaz\u016f","link_is_external":"Zadan\u00e9 URL vypad\u00e1 jako extern\u00ed odkaz, chcete doplnit povinn\u00fd prefix http://?","link_is_email":"Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa, chcete doplnit povinn\u00fd prefix mailto:?","link_titlefield":"Titulek","link_target_blank":"Otev\u0159\u00edt odkaz v nov\u00e9m okn\u011b","link_target_same":"Otev\u0159\u00edt odkaz ve stejn\u00e9m okn\u011b","link_target":"C\u00edl","link_url":"URL odkazu","link_title":"Vlo\u017eit/upravit odkaz","image_align_right":"Vpravo","image_align_left":"Vlevo","image_align_textbottom":"Se spodkem \u0159\u00e1dku","image_align_texttop":"S vrchem \u0159\u00e1dku","image_align_bottom":"Dol\u016f","image_align_middle":"Na st\u0159ed \u0159\u00e1dku","image_align_top":"Nahoru","image_align_baseline":"Na z\u00e1kladnu","image_align":"Zarovn\u00e1n\u00ed","image_hspace":"Horizont. odsazen\u00ed","image_vspace":"Vertik\u00e1ln\u00ed odsazen\u00ed","image_dimensions":"Rozm\u011bry","image_alt":"Popis obr\u00e1zku","image_list":"Seznam obr\u00e1zk\u016f","image_border":"R\u00e1me\u010dek","image_src":"URL obr\u00e1zku","image_title":"Vlo\u017eit/upravit obr\u00e1zek","charmap_title":"Vlo\u017eit speci\u00e1ln\u00ed znak","colorpicker_name":"N\u00e1zev:","colorpicker_color":"Vybran\u00e1 barva:","colorpicker_named_title":"Pojmenovan\u00e9 barvy","colorpicker_named_tab":"N\u00e1zvy","colorpicker_palette_title":"Paleta barev","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Kap\u00e1tko","colorpicker_picker_tab":"Kap\u00e1tko","colorpicker_title":"V\u00fdb\u011br barvy","code_wordwrap":"Zalamov\u00e1n\u00ed \u0159\u00e1dk\u016f","code_title":"Editor HTML","anchor_name":"N\u00e1zev z\u00e1lo\u017eky","anchor_title":"Vlo\u017eit/upravit z\u00e1lo\u017eku (kotvu)","about_loaded":"Na\u010dten\u00e9 z\u00e1suvn\u00e9 moduly","about_version":"Verze","about_author":"Autor","about_plugin":"Z\u00e1suvn\u00fd modul","about_plugins":"Z\u00e1suvn\u00e9 moduly","about_license":"Licence","about_help":"N\u00e1pov\u011bda","about_general":"O programu","about_title":"O TinyMCE","charmap_usage":"Pro navigaci pou\u017eijte \u0161ipky vlevo a vpravo.","anchor_invalid":"Zadejte, pros\u00edm, platn\u00fd n\u00e1zev z\u00e1lo\u017eky (kotvy).","accessibility_help":"N\u00e1pov\u011bda pro p\u0159\u00edstupnost","accessibility_usage_title":"Obecn\u00e9 pou\u017eit\u00ed","invalid_color_value":"Neplatn\u00fd k\u00f3d barvy"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/da.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/da.js deleted file mode 100644 index 3d5fb8b0a1..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/da.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.advanced',{"underline_desc":"Understreget (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fed (Ctrl+B)",dd:"Definitionsbeskrivelse",dt:"Definitionsterm ",samp:"Kodeeksempel",code:"Kode",blockquote:"Blokcitat",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pr\u00e6formatteret",address:"Adresse",div:"Div",paragraph:"Afsnit",block:"Format",fontdefault:"Skrifttype","font_size":"Skriftst\u00f8rrelse","style_select":"Typografier","more_colors":"Flere farver","toolbar_focus":"Hop til v\u00e6rkt\u00f8jsknapper - Alt+Q, Skift til redigering - Alt-Z, Skift til element sti - Alt-X",newdocument:"Er du sikker p\u00e5 du vil slette alt indhold?",path:"Sti","clipboard_msg":"Kopier/Klip/inds\u00e6t er ikke muligt i Mozilla og Firefox.\nVil du have mere information om dette emne?","blockquote_desc":"Blokcitat","help_desc":"Hj\u00e6lp","newdocument_desc":"Nyt dokument","image_props_desc":"Billedegenskaber","paste_desc":"Inds\u00e6t","copy_desc":"Kopier","cut_desc":"Klip","anchor_desc":"Inds\u00e6t/rediger anker","visualaid_desc":"Sl\u00e5 hj\u00e6lp/synlige elementer til/fra","charmap_desc":"Inds\u00e6t specialtegn","backcolor_desc":"V\u00e6lg baggrundsfarve","forecolor_desc":"V\u00e6lg tekstfarve","custom1_desc":"Din egen beskrivelse her","removeformat_desc":"Fjern formatering","hr_desc":"Inds\u00e6t horisontal linie","sup_desc":"H\u00e6vet skrift","sub_desc":"S\u00e6nket skrift","code_desc":"Rediger HTML-kilde","cleanup_desc":"Ryd op i uordentlig kode","image_desc":"Inds\u00e6t/rediger billede","unlink_desc":"Fjern link","link_desc":"Inds\u00e6t/rediger link","redo_desc":"Gendan (Ctrl+Y)","undo_desc":"Fortryd (Ctrl+Z)","indent_desc":"\u00d8g indrykning","outdent_desc":"Formindsk indrykning","numlist_desc":"Nummereret punktopstilling","bullist_desc":"Unummereret punktopstilling","justifyfull_desc":"Lige marginer","justifyright_desc":"H\u00f8jrejusteret","justifycenter_desc":"Centreret","justifyleft_desc":"Venstrejusteret","striketrough_desc":"Gennemstreget","help_shortcut":"Tryk ALT-F10 for v\u00e6rkt\u00f8jslinie. Tryk ALT-0 for hj\u00e6lp","rich_text_area":"Tekstomr\u00e5de med formatering","shortcuts_desc":"Hj\u00e6lp til tilg\u00e6ngelighed",toolbar:"V\u00e6rkt\u00f8jslinie","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/da_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/da_dlg.js deleted file mode 100644 index f3a752cb10..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/da_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('da.advanced_dlg',{"link_list":"Liste over links","link_is_external":"Den URL, der er indtastet, ser ud til at v\u00e6re et eksternt link. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede http:// foran?","link_is_email":"Den URL, der er indtastet, ser ud til at v\u00e6re en emailadresse. Vil du have tilf\u00f8jet det p\u00e5kr\u00e6vede mailto: foran?","link_titlefield":"Titel","link_target_blank":"\u00c5ben link i nyt vindue","link_target_same":"\u00c5ben link i samme vindue","link_target":"Target","link_url":"Link URL","link_title":"Inds\u00e6t/rediger link","image_align_right":"H\u00f8jre","image_align_left":"Venstre","image_align_textbottom":"Tekst bunden","image_align_texttop":"Tekst toppen","image_align_bottom":"Bunden","image_align_middle":"Centreret","image_align_top":"Toppen","image_align_baseline":"Grundlinie","image_align":"Justering","image_hspace":"Horisontal afstand","image_vspace":"Vertikal afstand","image_dimensions":"Dimensioner","image_alt":"Billedbeskrivelse","image_list":"Liste over billeder","image_border":"Kant","image_src":"Billede URL","image_title":"Inds\u00e6t/rediger billede","charmap_title":"V\u00e6lg specialtegn","colorpicker_name":"Navn:","colorpicker_color":"Farve:","colorpicker_named_title":"Navngivet farve","colorpicker_named_tab":"Navngivet","colorpicker_palette_title":"Palette-farver","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Farvev\u00e6lger","colorpicker_picker_tab":"V\u00e6lger","colorpicker_title":"V\u00e6lg en farve","code_wordwrap":"Tekstombrydning","code_title":"HTML kildekode-redigering","anchor_name":"Navn p\u00e5 anker","anchor_title":"Inds\u00e6t/rediger anker","about_loaded":"Indl\u00e6ste udvidelser","about_version":"Version","about_author":"Forfatter","about_plugin":"Udvidelse","about_plugins":"Udvidelser","about_license":"Licens","about_help":"Hj\u00e6lp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Brug venstre og h\u00f8jre piletaster til at navigere","anchor_invalid":"Angiv venligst et gyldigt anker navn.","accessibility_help":"Tilg\u00e6ngeligheds hj\u00e6lp","accessibility_usage_title":"Generel brug","invalid_color_value":"Ugyldig farve v\u00e6rdi"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/de.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/de.js deleted file mode 100644 index 4bd5419f47..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/de.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.advanced',{"underline_desc":"Unterstrichen (Strg+U)","italic_desc":"Kursiv (Strg+I)","bold_desc":"Fett (Strg+B)",dd:"Definitionsbeschreibung",dt:"Definitionsbegriff",samp:"Beispiel",code:"Code",blockquote:"Zitatblock",h6:"\u00dcberschrift 6",h5:"\u00dcberschrift 5",h4:"\u00dcberschrift 4",h3:"\u00dcberschrift 3",h2:"\u00dcberschrift 2",h1:"\u00dcberschrift 1",pre:"Rohdaten",address:"Adresse",div:"Zusammenh\u00e4ngender Bereich",paragraph:"Absatz",block:"Vorlage",fontdefault:"Schriftart","font_size":"Schriftgr\u00f6\u00dfe","style_select":"Format","anchor_delta_width":"13","more_colors":"Weitere Farben","toolbar_focus":"Zur Werkzeugleiste springen: Alt+Q; Zum Editor springen: Alt-Z; Zum Elementpfad springen: Alt-X",newdocument:"Soll wirklich der ganze Inhalt gel\u00f6scht werden?",path:"Pfad","clipboard_msg":"Kopieren, Ausschneiden und Einf\u00fcgen sind im Mozilla Firefox nicht m\u00f6glich. Mehr \u00fcber dieses Problem erfahren?","blockquote_desc":"Zitatblock","help_desc":"Hilfe","newdocument_desc":"Neues Dokument","image_props_desc":"Bildeigenschaften","paste_desc":"Einf\u00fcgen","copy_desc":"Kopieren","cut_desc":"Ausschneiden","anchor_desc":"Anker einf\u00fcgen/ver\u00e4ndern","visualaid_desc":"Hilfslinien und unsichtbare Elemente ein-/ausblenden","charmap_desc":"Sonderzeichen einf\u00fcgen","backcolor_desc":"Hintergrundfarbe","forecolor_desc":"Textfarbe","custom1_desc":"Benutzerdefinierte Beschreibung","removeformat_desc":"Formatierungen zur\u00fccksetzen","hr_desc":"Trennlinie einf\u00fcgen","sup_desc":"Hochgestellt","sub_desc":"Tiefgestellt","code_desc":"HTML-Quellcode bearbeiten","cleanup_desc":"Quellcode aufr\u00e4umen","image_desc":"Bild einf\u00fcgen/ver\u00e4ndern","unlink_desc":"Link entfernen","link_desc":"Link einf\u00fcgen/ver\u00e4ndern","redo_desc":"Wiederholen (Strg+Y)","undo_desc":"R\u00fcckg\u00e4ngig (Strg+Z)","indent_desc":"Einr\u00fccken","outdent_desc":"Ausr\u00fccken","numlist_desc":"Sortierte Liste","bullist_desc":"Unsortierte Liste","justifyfull_desc":"Blocksatz","justifyright_desc":"Rechtsb\u00fcndig","justifycenter_desc":"Zentriert","justifyleft_desc":"Linksb\u00fcndig","striketrough_desc":"Durchgestrichen","help_shortcut":"F\u00fcr die Toolbar ALT-F10 dr\u00fccken. F\u00fcr die Hilfe ALT-0 dr\u00fccken","rich_text_area":"Rich Text Feld","shortcuts_desc":"Eingabehilfe",toolbar:"Pfeiltasten verwenden um Funktionen auszuw\u00e4hlen","anchor_delta_height":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/de_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/de_dlg.js deleted file mode 100644 index 0ee5af90a4..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/de_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('de.advanced_dlg',{"link_list":"Linkliste","link_is_external":"Diese Adresse scheint ein externer Link zu sein. Soll das dazu ben\u00f6tigte \"http://\" vorangestellt werden?","link_is_email":"Diese Adresse scheint eine E-Mail Adresse zu sein. Soll das dazu ben\u00f6tigte \"mailto:\" vorangestellt werden?","link_titlefield":"Titel","link_target_blank":"In neuem Fenster \u00f6ffnen","link_target_same":"Im selben Fenster \u00f6ffnen","link_target":"Fenster","link_url":"Adresse","link_title":"Link einf\u00fcgen/ver\u00e4ndern","image_align_right":"Rechts","image_align_left":"Links","image_align_textbottom":"Unten im Text","image_align_texttop":"Oben im Text","image_align_bottom":"Unten","image_align_middle":"Mittig","image_align_top":"Oben","image_align_baseline":"Zeile","image_align":"Ausrichtung","image_hspace":"Horizontaler Abstand","image_vspace":"Vertikaler Abstand","image_dimensions":"Abmessungen","image_alt":"Alternativtext","image_list":"Bilderliste","image_border":"Rahmen","image_src":"Adresse","image_title":"Bild einf\u00fcgen/ver\u00e4ndern","charmap_title":"Sonderzeichen","colorpicker_name":"Name:","colorpicker_color":"Farbe:","colorpicker_named_title":"Benannte Farben","colorpicker_named_tab":"Benannte Farben","colorpicker_palette_title":"Farbpalette","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Farbwahl","colorpicker_picker_tab":"Farbwahl","colorpicker_title":"Farbe","code_wordwrap":"Automatischer Zeilenumbruch","code_title":"HTML-Quellcode bearbeiten","anchor_name":"Name des Ankers","anchor_title":"Anker einf\u00fcgen/ver\u00e4ndern","about_loaded":"Geladene Plugins","about_version":"Version","about_author":"Urheber","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Lizenzbedingungen","about_help":"Hilfe","about_general":"\u00dcber","about_title":"\u00dcber TinyMCE","charmap_usage":"Navigation mit linken und rechten Pfeiltasten.","anchor_invalid":"Bitte einen g\u00fcltigen Namen f\u00fcr den Anker eingeben!","accessibility_help":"Eingabehilfe","accessibility_usage_title":"Allgemeine Verwendung","invalid_color_value":"Ung\u00fcltige Farbangabe"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/en.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/en.js deleted file mode 100644 index 6e58481874..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/en.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.advanced',{"underline_desc":"Underline (Ctrl+U)","italic_desc":"Italic (Ctrl+I)","bold_desc":"Bold (Ctrl+B)",dd:"Definition Description",dt:"Definition Term ",samp:"Code Sample",code:"Code",blockquote:"Block Quote",h6:"Heading 6",h5:"Heading 5",h4:"Heading 4",h3:"Heading 3",h2:"Heading 2",h1:"Heading 1",pre:"Preformatted",address:"Address",div:"DIV",paragraph:"Paragraph",block:"Format",fontdefault:"Font Family","font_size":"Font Size","style_select":"Styles","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"More Colors...","toolbar_focus":"Jump to tool buttons - Alt+Q, Jump to editor - Alt-Z, Jump to element path - Alt-X",newdocument:"Are you sure you want clear all contents?",path:"Path","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","blockquote_desc":"Block Quote","help_desc":"Help","newdocument_desc":"New Document","image_props_desc":"Image Properties","paste_desc":"Paste (Ctrl+V)","copy_desc":"Copy (Ctrl+C)","cut_desc":"Cut (Ctrl+X)","anchor_desc":"Insert/Edit Anchor","visualaid_desc":"show/Hide Guidelines/Invisible Elements","charmap_desc":"Insert Special Character","backcolor_desc":"Select Background Color","forecolor_desc":"Select Text Color","custom1_desc":"Your Custom Description Here","removeformat_desc":"Remove Formatting","hr_desc":"Insert Horizontal Line","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Edit HTML Source","cleanup_desc":"Cleanup Messy Code","image_desc":"Insert/Edit Image","unlink_desc":"Unlink","link_desc":"Insert/Edit Link","redo_desc":"Redo (Ctrl+Y)","undo_desc":"Undo (Ctrl+Z)","indent_desc":"Increase Indent","outdent_desc":"Decrease Indent","numlist_desc":"Insert/Remove Numbered List","bullist_desc":"Insert/Remove Bulleted List","justifyfull_desc":"Align Full","justifyright_desc":"Align Right","justifycenter_desc":"Align Center","justifyleft_desc":"Align Left","striketrough_desc":"Strikethrough","help_shortcut":"Press ALT-F10 for toolbar. Press ALT-0 for help","rich_text_area":"Rich Text Area","shortcuts_desc":"Accessability Help",toolbar:"Toolbar"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/en_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/en_dlg.js deleted file mode 100644 index 50cd87e3d0..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/en_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('en.advanced_dlg', {"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character", "charmap_usage":"Use left and right arrows to navigate.","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value","":""}); diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/es.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/es.js deleted file mode 100644 index ef9f26472b..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/es.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.advanced',{"underline_desc":"Subrayado (Ctrl+U)","italic_desc":"Cursiva (Ctrl+I)","bold_desc":"Negrita (Ctrl+B)",dd:"Descripci\u00f3n de definici\u00f3n",dt:"T\u00e9rmino de definici\u00f3n",samp:"Ejemplo de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita",h6:"Encabezado 6",h5:"Encabezado 5",h4:"Encabezado 4",h3:"Encabezado 3",h2:"Encabezado 2",h1:"Encabezado 1",pre:"Preformateado",address:"Direcci\u00f3n",div:"Div",paragraph:"P\u00e1rrafo",block:"Formato",fontdefault:"Fuente","font_size":"Tama\u00f1o","style_select":"Estilos","more_colors":"M\u00e1s colores","toolbar_focus":"Ir a los botones de herramientas - Alt+Q, Ir al editor - Alt-Z, Ir a la ruta del elemento - Alt-X",newdocument:" \u00bfSeguro que desea limpiar todo el contenido?",path:"Ruta","clipboard_msg":"Copiar/Cortar/Pegar no se encuentra disponible en Mozilla y Firefox.\n \u00bfQuiere m\u00e1s informaci\u00f3n sobre este tema?","blockquote_desc":"Cita","help_desc":"Ayuda","newdocument_desc":"Nuevo documento","image_props_desc":"Propiedades de imagen","paste_desc":"Pegar","copy_desc":"Copiar","cut_desc":"Cortar","anchor_desc":"Insertar/editar ancla","visualaid_desc":"Mostrar/ocultar l\u00ednea de gu\u00eda/elementos invisibles","charmap_desc":"Insertar caracteres personalizados","backcolor_desc":"Elegir color de fondo","forecolor_desc":"Elegir color del texto","custom1_desc":"Su descripci\u00f3n personal aqu\u00ed","removeformat_desc":"Limpiar formato","hr_desc":"Insertar regla horizontal","sup_desc":"Super\u00edndice","sub_desc":"Sub\u00edndice","code_desc":"Editar c\u00f3digo HTML","cleanup_desc":"Limpiar c\u00f3digo basura","image_desc":"Insertar/editar imagen","unlink_desc":"Quitar hiperv\u00ednculo","link_desc":"Insertar/editar hiperv\u00ednculo","redo_desc":"Rehacer (Ctrl+Y)","undo_desc":"Deshacer (Ctrl+Z)","indent_desc":"Aumentar sangr\u00eda","outdent_desc":"Reducir sangr\u00eda","numlist_desc":"Lista ordenada","bullist_desc":"Lista desordenada","justifyfull_desc":"Justificar","justifyright_desc":"Alinear a la derecha","justifycenter_desc":"Alinear al centro","justifyleft_desc":"Alinear a la izquierda","striketrough_desc":"Tachado","help_shortcut":"Presiones ALT-F10 para la barra de herramientas. Presione ALT-0 para ayuda.","rich_text_area":"\u00c1rea de texto con formato","shortcuts_desc":"Ayuda de accesibilidad",toolbar:"Barra de Herramientas","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/es_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/es_dlg.js deleted file mode 100644 index 923c34b75f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/es_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('es.advanced_dlg',{"link_list":"Lista de hiperv\u00ednculos","link_is_external":"La URL que introdujo parece ser un v\u00ednculo externo, \u00bfdesea agregar el prefijo http:// necesario?","link_is_email":"La URL que introdujo parece ser una direcci\u00f3n de email, \u00bfdesea agregar el prefijo mailto: necesario?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir v\u00ednculo en una ventana nueva","link_target_same":"Abrir v\u00ednculo en la misma ventana","link_target":"Destino","link_url":"URL del hiperv\u00ednculo","link_title":"Insertar/editar hiperv\u00ednculo","image_align_right":"Derecha","image_align_left":"Izquierda","image_align_textbottom":"Texto debajo","image_align_texttop":"Texto arriba","image_align_bottom":"Debajo","image_align_middle":"Medio","image_align_top":"Arriba","image_align_baseline":"L\u00ednea base","image_align":"Alineaci\u00f3n","image_hspace":"Espacio horizontal","image_vspace":"Espacio vertical","image_dimensions":"Dimensi\u00f3n","image_alt":"Descripci\u00f3n de la Imagen","image_list":"Lista de la Imagen","image_border":"Borde","image_src":"URL de la Imagen","image_title":"Insertar/editar imagen","charmap_title":"Elegir caracter personalizado","colorpicker_name":"Nombre:","colorpicker_color":"Color:","colorpicker_named_title":"Colores nombrados","colorpicker_named_tab":"Nombrados","colorpicker_palette_title":"Paleta de colores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Paleta de color","colorpicker_picker_tab":"Selector","colorpicker_title":"Elegir color","code_wordwrap":"Ajustar al margen","code_title":"Editor del c\u00f3digo fuente HTML","anchor_name":"Nombre del ancla","anchor_title":"Insertar/editar ancla","about_loaded":"Complementos cargados","about_version":"Versi\u00f3n","about_author":"Autor","about_plugin":"Complemento","about_plugins":"Complementos","about_license":"Licencia","about_help":"Ayuda","about_general":"Acerca de ","about_title":"Acerca de TinyMCE","charmap_usage":"Use las flechas para navegar","anchor_invalid":"Especifique un nombre v\u00e1lido para liga","accessibility_help":"Ayuda sobre Accesibilidad","accessibility_usage_title":"Uso General","invalid_color_value":"valor invalido de color"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fa.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fa.js deleted file mode 100644 index 94af922b47..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fa.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.advanced',{"underline_desc":"\u0645\u062a\u0646 \u0632\u06cc\u0631 \u062e\u0637 \u062f\u0627\u0631 (Ctrl+U)","italic_desc":"\u0645\u062a\u0646 \u0645\u0648\u0631\u0628 (Ctrl+I)","bold_desc":"\u0645\u062a\u0646 \u0636\u062e\u06cc\u0645 (Ctrl+B)",dd:"\u062a\u0639\u0631\u06cc\u0641 \u062a\u0648\u0636\u06cc\u062d",dt:"\u062a\u0639\u0631\u06cc\u0641 \u0648\u0627\u0698\u0647 ",samp:"\u0646\u0645\u0648\u0646\u0647 \u06a9\u062f",code:"\u06a9\u062f",blockquote:"\u0628\u0644\u0648\u06a9 \u0646\u0642\u0644 \u0642\u0648\u0644",h6:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 6",h5:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 5",h4:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 4",h3:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 3",h2:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc 2",h1:"\u0639\u0646\u0648\u0627\u0646 \u06af\u0630\u0627\u0631\u06cc \u06f1",pre:"\u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc \u0634\u062f\u0647 \u0627\u0632 \u0642\u0628\u0644",address:"\u0622\u062f\u0631\u0633",div:"Div",paragraph:"\u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641",block:"\u0642\u0627\u0644\u0628",fontdefault:"\u0646\u0648\u0639 \u0642\u0644\u0645","font_size":"\u0627\u0646\u062f\u0627\u0632\u0647 \u0642\u0644\u0645","style_select":"\u0627\u0633\u062a\u0627\u06cc\u0644 \u0647\u0627","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0628\u06cc\u0634\u062a\u0631","toolbar_focus":"\u067e\u0631\u0634 \u0628\u0647 \u062f\u06a9\u0645\u0647 \u0647\u0627\u06cc \u0627\u0628\u0632\u0627\u0631 - Alt+Q \u060c \u067e\u0631\u0634 \u0628\u0647 \u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 - Alt-Z \u060c \u067e\u0631\u0634 \u0628\u0647 \u0645\u0633\u06cc\u0631 \u0639\u0646\u0635\u0631 - Alt-X",newdocument:"\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f \u062a\u0645\u0627\u0645\u06cc \u0645\u062d\u062a\u0648\u0627 \u0631\u0627 \u067e\u0627\u06a9 \u06a9\u0646\u06cc\u062f\u061f",path:"\u0645\u0633\u06cc\u0631","clipboard_msg":"\u06a9\u067e\u06cc(Copy)/\u0628\u0631\u0634 (Cut)/\u0686\u0633\u0628\u0627\u0646\u062f\u0646 (Paste) \u062f\u0631 Mozilla \u0648 Firefox \u0642\u0627\u0628\u0644 \u062f\u0633\u062a\u0631\u0633 \u0646\u0645\u06cc \u0628\u0627\u0634\u062f.\\r\n\u0622\u06cc\u0627 \u0634\u0645\u0627 \u0627\u0637\u0644\u0627\u0639\u0627\u062a \u0628\u06cc\u0634\u062a\u0631\u06cc \u062f\u0631\u0628\u0627\u0631\u0647 \u0627\u06cc\u0646 \u0645\u0648\u0636\u0648\u0639 \u0645\u06cc \u062e\u0648\u0627\u0647\u06cc\u062f\u061f","blockquote_desc":"\u0628\u0644\u0648\u06a9 \u0646\u0642\u0644 \u0642\u0648\u0644","help_desc":"\u0631\u0627\u0647\u0646\u0645\u0627","newdocument_desc":"\u0633\u0646\u062f \u062c\u062f\u06cc\u062f","image_props_desc":"\u0645\u0634\u062e\u0635\u0627\u062a \u062a\u0635\u0648\u06cc\u0631","paste_desc":"\u0686\u0633\u0628\u0627\u0646\u062f\u0646 (Paste)","copy_desc":"\u06a9\u067e\u06cc (Copy)","cut_desc":"\u0628\u0631\u0634 (Cut)","anchor_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u0646\u06af\u0631","visualaid_desc":"\u0646\u0645\u0627\u06cc\u0634/\u0639\u062f\u0645 \u0646\u0645\u0627\u06cc\u0634 \u0639\u0646\u0627\u0635\u0631 \u062e\u0637\u0648\u0637 \u0631\u0627\u0647\u0646\u0645\u0627/\u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0646\u0645\u0627\u06cc\u0627\u0646","charmap_desc":"\u062f\u0631\u062c \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u06cc\u0698\u0647","backcolor_desc":"\u0627\u0646\u062a\u062e\u0627\u0628 \u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647","forecolor_desc":"\u0627\u0646\u062a\u062e\u0627\u0628 \u0631\u0646\u06af \u0645\u062a\u0646","custom1_desc":"\u062a\u0648\u0636\u06cc\u062d \u0633\u0641\u0627\u0631\u0634\u06cc \u0634\u0645\u0627 \u062f\u0631 \u0627\u06cc\u0646\u062c\u0627","removeformat_desc":"\u062d\u0630\u0641 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc","hr_desc":"\u062f\u0631\u062c \u062e\u0637 \u0627\u0641\u0642\u06cc","sup_desc":"\u0628\u0627\u0644\u0627 \u0646\u0648\u06cc\u0633","sub_desc":"\u067e\u0627\u06cc\u06cc\u0646 \u0646\u0648\u06cc\u0633","code_desc":"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633 HTML","cleanup_desc":"\u067e\u0627\u06a9 \u0633\u0627\u0632\u06cc \u06a9\u062f \u0647\u0627\u06cc \u0628\u0647\u0645 \u062e\u0648\u0631\u062f\u0647","image_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","unlink_desc":"\u063a\u06cc\u0631 \u0644\u06cc\u0646\u06a9 \u06a9\u0631\u062f\u0646","link_desc":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9","redo_desc":"\u0631\u0641\u062a\u0646 \u0628\u0647 \u0639\u0645\u0644 \u0628\u0639\u062f (Ctrl Y)","undo_desc":"\u0628\u0631\u06af\u0634\u062a \u0628\u0647 \u0639\u0645\u0644 \u0642\u0628\u0644 (Ctrl Z)","indent_desc":"\u062a\u0648\u0631\u0641\u062a\u06af\u06cc","outdent_desc":"\u0628\u06cc\u0631\u0648\u0646 \u0622\u0645\u062f\u06af\u06cc","numlist_desc":"\u0644\u06cc\u0633\u062a \u0645\u0631\u062a\u0628","bullist_desc":"\u0644\u06cc\u0633\u062a \u0646\u0627\u0645\u0631\u062a\u0628","justifyfull_desc":"\u0647\u0645 \u062a\u0631\u0627\u0632 \u06a9\u0631\u062f\u0646","justifyright_desc":"\u062a\u0631\u0627\u0632 \u0631\u0627\u0633\u062a","justifycenter_desc":"\u062a\u0631\u0627\u0632 \u0648\u0633\u0637","justifyleft_desc":"\u062a\u0631\u0627\u0632 \u0686\u067e","striketrough_desc":"\u062e\u0637 \u0648\u0633\u0637","help_shortcut":"\u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F10 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 \u0628\u0641\u0634\u0627\u0631\u06cc\u062f. \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-0 \u0631\u0627 \u0628\u0631\u0627\u06cc \u0631\u0627\u0647\u0646\u0645\u0627","rich_text_area":"\u0645\u062a\u0646 \u063a\u0646\u06cc","shortcuts_desc":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc",toolbar:"\u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fa_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fa_dlg.js deleted file mode 100644 index 3fa6a8a77e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fa_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fa.advanced_dlg',{"link_list":"\u0644\u06cc\u0633\u062a \u0644\u06cc\u0646\u06a9","link_is_external":"\u0622\u062f\u0631\u0633\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0648\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u0644\u06cc\u0646\u06a9 \u062e\u0627\u0631\u062c\u06cc \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0644\u0627\u0632\u0645\u0647 //:http \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","link_is_email":"\u0622\u062f\u0631\u0633\u06cc \u06a9\u0647 \u0634\u0645\u0627 \u0648\u0627\u0631\u062f \u0646\u0645\u0648\u062f\u0647 \u0627\u06cc\u062f \u0628\u0647 \u0646\u0638\u0631 \u0645\u06cc \u0622\u06cc\u062f \u06a9\u0647 \u06cc\u06a9 \u0622\u062f\u0631\u0633 \u0627\u06cc\u0645\u06cc\u0644 \u0645\u06cc \u0628\u0627\u0634\u062f \u060c \u0622\u06cc\u0627 \u0645\u0627\u06cc\u0644\u06cc\u062f \u062a\u0627 \u067e\u06cc\u0634\u0648\u0646\u062f \u0627\u062c\u0628\u0627\u0631\u06cc \u0644\u0627\u0632\u0645\u0647 :mailto \u0631\u0627 \u0627\u0636\u0627\u0641\u0647 \u0646\u0645\u0627\u0626\u06cc\u062f\u061f","link_titlefield":"\u0639\u0646\u0648\u0627\u0646","link_target_blank":"\u0628\u0627\u0632 \u0634\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631 \u06cc\u06a9 \u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f","link_target_same":"\u0628\u0627\u0632\u0634\u062f\u0646 \u0644\u06cc\u0646\u06a9 \u062f\u0631 \u0647\u0645\u0627\u0646 \u067e\u0646\u062c\u0631\u0647","link_target":"\u0645\u0642\u0635\u062f (Target)","link_url":"\u0622\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9","link_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u06cc\u0646\u06a9","image_align_right":"\u0631\u0627\u0633\u062a","image_align_left":"\u0686\u067e","image_align_textbottom":"\u067e\u0627\u06cc\u06cc\u0646 \u0645\u062a\u0646","image_align_texttop":"\u0628\u0627\u0644\u0627 \u0645\u062a\u0646","image_align_bottom":"\u067e\u0627\u06cc\u06cc\u0646","image_align_middle":"\u0648\u0633\u0637","image_align_top":"\u0628\u0627\u0644\u0627","image_align_baseline":"\u062e\u0637 \u067e\u0627\u06cc\u0647","image_align":"\u062a\u0631\u0627\u0632","image_hspace":"\u0641\u0627\u0635\u0644\u0647 \u0627\u0641\u0642\u06cc","image_vspace":"\u0641\u0627\u0635\u0644\u0647 \u0639\u0645\u0648\u062f\u06cc","image_dimensions":"\u0627\u0628\u0639\u0627\u062f","image_alt":"\u062a\u0648\u0636\u06cc\u062d \u062a\u0635\u0648\u06cc\u0631","image_list":"\u0644\u06cc\u0633\u062a \u062a\u0635\u0648\u06cc\u0631","image_border":"\u062d\u0627\u0634\u06cc\u0647","image_src":"\u0622\u062f\u0631\u0633 \u062a\u0635\u0648\u06cc\u0631","image_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u062a\u0635\u0648\u06cc\u0631","charmap_title":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0648\u06cc\u0698\u0647","colorpicker_name":"\u0646\u0627\u0645:","colorpicker_color":"\u0631\u0646\u06af:","colorpicker_named_title":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0646\u0627\u0645 \u062f\u0627\u0631","colorpicker_named_tab":"\u0646\u0627\u0645 \u062f\u0627\u0631","colorpicker_palette_title":"\u0631\u0646\u06af \u0647\u0627\u06cc \u0627\u0644\u06af\u0648","colorpicker_palette_tab":"\u0627\u0644\u06af\u0648","colorpicker_picker_title":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u0646\u062f\u0647 \u0631\u0646\u06af","colorpicker_picker_tab":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u0646\u062f\u0647","colorpicker_title":"\u0627\u0646\u062a\u062e\u0627\u0628 \u06cc\u06a9 \u0631\u0646\u06af","code_wordwrap":"\u0634\u06a9\u0633\u062a\u0646 \u062e\u0637\u0648\u0637","code_title":"\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0633\u0648\u0631\u0633 HTML","anchor_name":"\u0646\u0627\u0645 \u0644\u0646\u06af\u0631 (Anchor)","anchor_title":"\u062f\u0631\u062c/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u0644\u0646\u06af\u0631 (Anchor)","about_loaded":"\u0627\u0644\u062d\u0627\u0642\u0627\u062a \u0628\u0627\u0631\u06af\u0630\u0627\u0631\u06cc \u0634\u062f\u0647","about_version":"\u0646\u0633\u062e\u0647","about_author":"\u0645\u0624\u0644\u0641","about_plugin":"\u0627\u0644\u062d\u0627\u0642\u0647","about_plugins":"\u0627\u0644\u062d\u0627\u0642\u0627\u062a","about_license":"\u0645\u062c\u0648\u0632","about_help":"\u0631\u0627\u0647\u0646\u0645\u0627","about_general":"\u062f\u0631\u0628\u0627\u0631\u0647","about_title":"\u062f\u0631\u0628\u0627\u0631\u0647 TinyMCE","charmap_usage":"\u0627\u0632 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc \u0686\u067e \u0648 \u0631\u0627\u0633\u062a \u062c\u0647\u062a \u067e\u06cc\u0645\u0627\u06cc\u0634 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f","anchor_invalid":"\u0644\u0637\u0641\u0627 \u06cc\u06a9 \u0646\u0627\u0645 \u0645\u0639\u062a\u0628\u0631 \u0628\u0631\u0627\u06cc \u0644\u0646\u06af\u0631 (anchor) \u0627\u0646\u062a\u062e\u0627\u0628 \u06a9\u0646\u06cc\u062f.","accessibility_help":"\u0631\u0627\u0647\u0646\u0645\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc","accessibility_usage_title":"\u0637\u0631\u06cc\u0642\u0647 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u0639\u0645\u0648\u0645\u06cc","invalid_color_value":"\u06a9\u062f \u0631\u0646\u06af \u0646\u0627\u0645\u0639\u062a\u0628\u0631"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fi.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fi.js deleted file mode 100644 index 2edb8f6a4a..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fi.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.advanced',{"underline_desc":"Alleviivattu (Ctrl+U)","italic_desc":"Kursivoitu (Ctrl+I)","bold_desc":"Lihavoitu (Ctrl+B)",dd:"M\u00e4\u00e4rittelyn kuvaus",dt:"M\u00e4\u00e4rittelyn ehto ",samp:"Koodiesimerkki",code:"Koodi",blockquote:"Pitk\u00e4 lainaus",h6:"Otsikko 6",h5:"Otsikko 5",h4:"Otsikko 4",h3:"Otsikko 3",h2:"Otsikko 2",h1:"Otsikko 1",pre:"Esimuotoiltu (pre)",address:"Osoite",div:"Div",paragraph:"Kappale",block:"Muotoilu",fontdefault:"Kirjasin","font_size":"Kirjasinkoko","style_select":"Tyylit","more_colors":"Enemm\u00e4n v\u00e4rej\u00e4","toolbar_focus":"Siirry ty\u00f6kaluihin - Alt+Q, Siirry tekstieditoriin - Alt-Z, Siirry elementin polkuun - Alt-X",newdocument:"Haluatko varmasti tyhjent\u00e4\u00e4 kaiken sis\u00e4ll\u00f6n?",path:"Polku","clipboard_msg":"Kopioi/Leikkaa/Liit\u00e4 -painikkeet eiv\u00e4t toimi Mozilla ja Firefox -selaimilla. Voit kuitenkin k\u00e4ytt\u00e4\u00e4 n\u00e4pp\u00e4inyhdistelmi\u00e4 kopioimiseen (Ctrl+C), leikkaamiseen (Ctrl+X) ja liitt\u00e4miseen (Ctrl+V). Haluatko lis\u00e4\u00e4 tietoa?","blockquote_desc":"Pitk\u00e4 lainaus","help_desc":"Ohje","newdocument_desc":"Uusi tiedosto","image_props_desc":"Kuvan ominaisuudet","paste_desc":"Liit\u00e4","copy_desc":"Kopioi","cut_desc":"Leikkaa","anchor_desc":"Lis\u00e4\u00e4/Muokkaa ankkuri","visualaid_desc":"Suuntaviivat/N\u00e4kym\u00e4tt\u00f6m\u00e4t elementit","charmap_desc":"Lis\u00e4\u00e4 erikoismerkki","backcolor_desc":"Valitse taustan v\u00e4ri","forecolor_desc":"Valitse tekstin v\u00e4ri","custom1_desc":"Oma kuvauksesi t\u00e4h\u00e4n","removeformat_desc":"Poista muotoilu","hr_desc":"Lis\u00e4\u00e4 vaakasuora viivain","sup_desc":"Yl\u00e4indeksi","sub_desc":"Alaindeksi","code_desc":"Muokkaa HTML-koodia","cleanup_desc":"Siisti sekainen koodi","image_desc":"Lis\u00e4\u00e4/muuta kuva","unlink_desc":"Poista linkki","link_desc":"Lis\u00e4\u00e4/muuta linkki","redo_desc":"Tee uudelleen (Ctrl+Y)","undo_desc":"Peru (Ctrl+Z)","indent_desc":"Sisenn\u00e4","outdent_desc":"Loitonna","numlist_desc":"J\u00e4rjestetty lista","bullist_desc":"J\u00e4rjest\u00e4m\u00e4t\u00f6n lista","justifyfull_desc":"Tasattu","justifyright_desc":"Tasaus oikealle","justifycenter_desc":"Keskitetty","justifyleft_desc":"Tasaus vasemmalle","striketrough_desc":"Yliviivattu","help_shortcut":"Paina ALT F10 n\u00e4hd\u00e4ksesi ty\u00f6kalurivin. Paina ALT-0 n\u00e4hd\u00e4ksesi ohjeen.","rich_text_area":"Rikastettu tekstialue","shortcuts_desc":"Saavutettavuusohje",toolbar:"Ty\u00f6kalurivi","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fi_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fi_dlg.js deleted file mode 100644 index 89c0b0bec7..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fi_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fi.advanced_dlg',{"link_list":"Linkkilista","link_is_external":"Antamasi osoite n\u00e4ytt\u00e4\u00e4 johtavan ulkopuoliselle sivustolle. Haluatko lis\u00e4t\u00e4 linkin eteen http://-etuliitteen? (suositus)","link_is_email":"Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 siihen mailto:-etuliitteen?","link_titlefield":"Otsikko","link_target_blank":"Avaa linkki uuteen ikkunaan","link_target_same":"Avaa linkki samassa ikkunassa","link_target":"Kohde","link_url":"Linkin osoite","link_title":"Lis\u00e4\u00e4/muuta linkki","image_align_right":"Oikealle","image_align_left":"Vasemmalle","image_align_textbottom":"Tekstin alaosaan","image_align_texttop":"Tekstin yl\u00e4osaan","image_align_bottom":"Alas","image_align_middle":"Keskelle","image_align_top":"Yl\u00f6s","image_align_baseline":"Tekstin tasossa","image_align":"Tasaus","image_hspace":"Vaakasuuntainen tila","image_vspace":"Pystysuuntainen tila","image_dimensions":"Mitat","image_alt":"Kuvan kuvaus","image_list":"Kuvalista","image_border":"Reunus","image_src":"Kuvan osoite","image_title":"Lis\u00e4\u00e4/muokkaa kuvaa","charmap_title":"Valitse erikoismerkki","colorpicker_name":"Nimi:","colorpicker_color":"V\u00e4ri:","colorpicker_named_title":"Nimetyt v\u00e4rit","colorpicker_named_tab":"Nimetty","colorpicker_palette_title":"V\u00e4ripaletti","colorpicker_palette_tab":"Paletti","colorpicker_picker_title":"V\u00e4rin valitsin","colorpicker_picker_tab":"Valitsin","colorpicker_title":"Valitse v\u00e4ri","code_wordwrap":"Automaattinen rivinvaihto","code_title":"HTML-koodin muokkaus","anchor_name":"Ankkurin nimi","anchor_title":"Liit\u00e4/muokkaa ankkuria","about_loaded":"Ladatut lis\u00e4osat","about_version":"Versio","about_author":"Kirjoittaja","about_plugin":"Lis\u00e4osa","about_plugins":"Lis\u00e4osat","about_license":"Lisenssi","about_help":"Ohje","about_general":"Tietoja","about_title":"Tietoja TinyMCE:st\u00e4","charmap_usage":"K\u00e4yt\u00e4 vasenta ja oikeata nuolin\u00e4pp\u00e4int\u00e4 navigointiin.","anchor_invalid":"Ole hyv\u00e4 ja anna hyv\u00e4ksytty ankkurin nimi.","accessibility_help":"Saavutettavuusohje","accessibility_usage_title":"Yleinen k\u00e4ytt\u00f6","invalid_color_value":"Virheellinen v\u00e4riarvo"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fr.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fr.js deleted file mode 100644 index 1e91abbc12..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fr.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.advanced',{"underline_desc":"Soulign\u00e9 (Ctrl+U)","italic_desc":"Italique (Ctrl+I)","bold_desc":"Gras (Ctrl+B)",dd:"D\u00e9finition du terme",dt:"Terme \u00e0 d\u00e9finir",samp:"Exemple de code",code:"Code",blockquote:"Bloc de citation",h6:"Titre 6",h5:"Titre 5",h4:"Titre 4",h3:"Titre 3",h2:"Titre 2",h1:"Titre 1",pre:"Pr\u00e9format\u00e9",address:"Adresse",div:"Div",paragraph:"Paragraphe",block:"Format",fontdefault:"Police","font_size":"Taille police","style_select":"Styles","more_colors":"Plus de couleurs","toolbar_focus":"Atteindre les boutons de l\'\u00e9diteur - Alt+Q, Aller \u00e0 l\'\u00e9diteur - Alt-Z, Aller au chemin de l\'\u00e9l\u00e9ment - Alt-X",newdocument:"\u00cates-vous s\u00fbr de vouloir effacer l\'int\u00e9gralit\u00e9 du document ?",path:"Chemin","clipboard_msg":"Les fonctions Copier/Couper/Coller ne sont pas valables sur Mozilla et Firefox.\nSouhaitez-vous avoir plus d\'informations sur ce sujet ?","blockquote_desc":"Citation","help_desc":"Aide","newdocument_desc":"Nouveau document","image_props_desc":"Propri\u00e9t\u00e9s de l\'image","paste_desc":"Coller","copy_desc":"Copier","cut_desc":"Couper","anchor_desc":"Ins\u00e9rer / \u00e9diter une ancre","visualaid_desc":"Activer / d\u00e9sactiver les guides et les \u00e9l\u00e9ments invisibles","charmap_desc":"Ins\u00e9rer des caract\u00e8res sp\u00e9ciaux","backcolor_desc":"Choisir la couleur de surlignage","forecolor_desc":"Choisir la couleur du texte","custom1_desc":"Votre description personnalis\u00e9e ici","removeformat_desc":"Supprimer le formatage","hr_desc":"Ins\u00e9rer un trait horizontal","sup_desc":"Exposant","sub_desc":"Indice","code_desc":"\u00c9diter le code source HTML","cleanup_desc":"Nettoyer le code","image_desc":"Ins\u00e9rer / \u00e9diter l\'image","unlink_desc":"Supprimer le lien","link_desc":"Ins\u00e9rer / \u00e9diter le lien","redo_desc":"R\u00e9tablir (Ctrl+Y)","undo_desc":"Annuler (Ctrl+Z)","indent_desc":"Indenter","outdent_desc":"Retirer l\'indentation","numlist_desc":"Liste num\u00e9rot\u00e9e","bullist_desc":"Liste \u00e0 puces","justifyfull_desc":"Justifi\u00e9","justifyright_desc":"Align\u00e9 \u00e0 droite","justifycenter_desc":"Centr\u00e9","justifyleft_desc":"Align\u00e9 \u00e0 gauche","striketrough_desc":"Barr\u00e9","help_shortcut":"Faites ALT-F10 pour acc\u00e9der \u00e0 la barre d\'outils. Faites ALT-0 pour acc\u00e9der \u00e0 l\'aide","rich_text_area":"Zone de texte enrichi","shortcuts_desc":"Aides \u00e0 l\'accessibilit\u00e9",toolbar:"Barre d\'outils","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fr_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fr_dlg.js deleted file mode 100644 index 97b6b5292e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/fr_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('fr.advanced_dlg',{"link_list":"Liste de liens","link_is_external":"L\'URL que vous avez saisie semble \u00eatre une adresse web externe. Souhaitez-vous ajouter le pr\u00e9fixe \u00ab http:// \u00bb ?","link_is_email":"L\'URL que vous avez saisie semble \u00eatre une adresse e-mail, souhaitez-vous ajouter le pr\u00e9fixe \u00ab mailto: \u00bb ?","link_titlefield":"Titre","link_target_blank":"Ouvrir dans une nouvelle fen\u00eatre","link_target_same":"Ouvrir dans la m\u00eame fen\u00eatre","link_target":"Cible","link_url":"URL du lien","link_title":"Ins\u00e9rer / \u00e9diter un lien","image_align_right":"Droite (flottant)","image_align_left":"Gauche (flottant)","image_align_textbottom":"Texte en bas","image_align_texttop":"Texte en haut","image_align_bottom":"En bas","image_align_middle":"Au milieu","image_align_top":"En haut","image_align_baseline":"Normal","image_align":"Alignement","image_hspace":"Espacement horizontal","image_vspace":"Espacement vertical","image_dimensions":"Dimensions","image_alt":"Description de l\'image","image_list":"Liste d\'images","image_border":"Bordure","image_src":"URL de l\'image","image_title":"Ins\u00e9rer / \u00e9diter une image","charmap_title":"Choisir le caract\u00e8re \u00e0 ins\u00e9rer","colorpicker_name":"Nom :","colorpicker_color":"Couleur :","colorpicker_named_title":"Couleurs nomm\u00e9es","colorpicker_named_tab":"Noms","colorpicker_palette_title":"Couleurs de la palette","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Nuancier","colorpicker_picker_tab":"Nuancier","colorpicker_title":"Choisir une couleur","code_wordwrap":"Retour \u00e0 la ligne","code_title":"\u00c9diteur de source HTML","anchor_name":"Nom de l\'ancre","anchor_title":"Ins\u00e9rer / \u00e9diter une ancre","about_loaded":"Plugins charg\u00e9s","about_version":"Version","about_author":"Auteur","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licence","about_help":"Aide","about_general":"\u00c0 propos","about_title":"\u00c0 propos de TinyMCE","charmap_usage":"Utilisez les fl\u00e8ches gauche et droite pour naviguer.","anchor_invalid":"Veuillez sp\u00e9cifier un nom d\'ancre valide.","accessibility_help":"Aide \u00e0 l\'accessibilit\u00e9","accessibility_usage_title":"Usage g\u00e9n\u00e9ral","invalid_color_value":"Valeur de couleur invalide"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/he.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/he.js deleted file mode 100644 index 2c50a4b61e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/he.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.advanced',{"underline_desc":"\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d5\u05df (Ctrl+U)","italic_desc":"\u05e0\u05d8\u05d5\u05d9 (Ctrl+I)","bold_desc":"\u05de\u05d5\u05d3\u05d2\u05e9 (Ctrl+B)",dd:"\u05d4\u05d2\u05d3\u05e8\u05ea \u05d4\u05de\u05d5\u05e9\u05d2",dt:"\u05de\u05d5\u05e9\u05d2",samp:"\u05d3\u05d5\u05d2\u05de\u05ea \u05e7\u05d5\u05d3",code:"\u05e7\u05d5\u05d3",blockquote:"\u05e6\u05d9\u05d8\u05d5\u05d8 \u05e7\u05d8\u05e2",h6:"\u05db\u05d5\u05ea\u05e8\u05ea 6",h5:"\u05db\u05d5\u05ea\u05e8\u05ea 5",h4:"\u05db\u05d5\u05ea\u05e8\u05ea 4",h3:"\u05db\u05d5\u05ea\u05e8\u05ea 3",h2:"\u05db\u05d5\u05ea\u05e8\u05ea 2",h1:"\u05db\u05d5\u05ea\u05e8\u05ea 1",pre:"Preformatted",address:"\u05db\u05ea\u05d5\u05d1\u05ea",div:"Div",paragraph:"\u05e4\u05e1\u05e7\u05d4",block:"\u05e2\u05d9\u05e6\u05d5\u05d1",fontdefault:"\u05d2\u05d5\u05e4\u05df","font_size":"\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df","style_select":"\u05e1\u05d2\u05e0\u05d5\u05e0\u05d5\u05ea","more_colors":"\u05e2\u05d5\u05d3 \u05e6\u05d1\u05e2\u05d9\u05dd","toolbar_focus":"\u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05db\u05dc\u05d9\u05dd - Alt+Q, \u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05de\u05e2\u05d1\u05d3 \u05ea\u05de\u05dc\u05d9\u05dc\u05d9\u05dd - Alt-Z, \u05d4\u05e2\u05d1\u05e8\u05d4 \u05dc\u05e0\u05ea\u05d9\u05d1 \u05d4\u05d0\u05dc\u05de\u05d8\u05d9\u05dd - Alt-X",newdocument:"\u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05de\u05d7\u05d5\u05e7 \u05d0\u05ea \u05db\u05dc \u05d4\u05ea\u05d5\u05db\u05df?",path:"path","clipboard_msg":"\u05d4\u05e2\u05ea\u05e7/\u05d2\u05d6\u05d5\u05e8/\u05d4\u05d3\u05d1\u05e7 \u05dc\u05d0 \u05d6\u05de\u05d9\u05e0\u05d9\u05dd \u05d1 Mozilla \u05d5\u05d1-Firefox.\n \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e7\u05d1\u05dc \u05de\u05d9\u05d3\u05e2 \u05e0\u05d5\u05e1\u05e3 \u05e2\u05dc \u05d4\u05e0\u05d5\u05e9\u05d0?","blockquote_desc":"\u05e6\u05d9\u05d8\u05d5\u05d8","help_desc":"\u05e2\u05d6\u05e8\u05d4","newdocument_desc":"\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9","image_props_desc":"\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4","paste_desc":"\u05d4\u05d3\u05d1\u05e7\u05d4","copy_desc":"\u05d4\u05e2\u05ea\u05e7\u05d4","cut_desc":"\u05d2\u05d6\u05d9\u05e8\u05d4","anchor_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05d9\u05de\u05e0\u05d9\u05d4","visualaid_desc":"\u05d4\u05e6\u05d2\u05d4 \u05d0\u05d5 \u05d4\u05e1\u05ea\u05e8\u05d4 \u05e9\u05dc \u05e1\u05d9\u05de\u05d5\u05e0\u05d9 \u05e2\u05d9\u05e6\u05d5\u05d1","charmap_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e1\u05d9\u05de\u05df","backcolor_desc":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2","forecolor_desc":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2 \u05d2\u05d5\u05e4\u05df","custom1_desc":"\u05d4\u05ea\u05d0\u05d5\u05e8 \u05e9\u05dc\u05da \u05db\u05d0\u05d5","removeformat_desc":"\u05d4\u05e1\u05e8\u05ea \u05e2\u05d9\u05e6\u05d5\u05d1","hr_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea \u05e7\u05d5 \u05de\u05e4\u05e8\u05d9\u05d3","sup_desc":"\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9","sub_desc":"\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9","code_desc":"\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d5\u05d3 HTML","cleanup_desc":"\u05e0\u05d9\u05e7\u05d5\u05d9 \u05e7\u05d5\u05d3","image_desc":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05d3\u05e3 \u05ea\u05de\u05d5\u05e0\u05d4","unlink_desc":"\u05d4\u05e1\u05e8\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","link_desc":"\u05d4\u05d5\u05e1\u05e4\u05ea/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","redo_desc":"\u05d7\u05d6\u05e8\u05d4 \u05e2\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Y)","undo_desc":"\u05d1\u05d9\u05d8\u05d5\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4 (Ctrl+Z)","indent_desc":"\u05d4\u05e7\u05d8\u05e0\u05ea \u05db\u05e0\u05d9\u05e1\u05d4","outdent_desc":"\u05d4\u05d2\u05d3\u05dc\u05ea \u05db\u05e0\u05d9\u05e1\u05d4","numlist_desc":"\u05de\u05e1\u05e4\u05d5\u05e8","bullist_desc":"\u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd","justifyfull_desc":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05dc\u05e9\u05e0\u05d9 \u05d4\u05e6\u05d3\u05d3\u05d9\u05dd","justifyright_desc":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05dc\u05d9\u05de\u05d9\u05df","justifycenter_desc":"\u05de\u05d9\u05e8\u05db\u05d5\u05d6 \u05d8\u05e7\u05e1\u05d8","justifyleft_desc":"\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d8\u05e7\u05e1\u05d8 \u05dc\u05e9\u05de\u05d0\u05dc","striketrough_desc":"\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4","help_shortcut":"\u05dc\u05d7\u05e6/\u05d9 ALT-F10 \u05dc\u05e1\u05e8\u05d2\u05dc \u05d4\u05db\u05dc\u05d9\u05dd. \u05dc\u05d7\u05e6/\u05d9 ALT-0 \u05dc\u05e2\u05d6\u05e8\u05d4","rich_text_area":"\u05d0\u05d6\u05d5\u05e8 \u05e2\u05e8\u05d9\u05db\u05ea \u05d8\u05e7\u05e1\u05d8 \u05e2\u05e9\u05d9\u05e8","shortcuts_desc":"\u05e2\u05d6\u05e8\u05ea \u05d2\u05d9\u05e9\u05d4",toolbar:"\u05e1\u05e8\u05d2\u05dc \u05db\u05dc\u05d9\u05dd","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/he_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/he_dlg.js deleted file mode 100644 index c27a31a22e..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/he_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('he.advanced_dlg',{"link_list":"\u05e8\u05e9\u05d9\u05de\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8\u05d9\u05dd","link_is_external":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:// \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?","link_is_email":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4-URL \u05e9\u05d4\u05d5\u05db\u05e0\u05e1\u05d4 \u05d4\u05d9\u05d0 \u05db\u05db\u05dc \u05d4\u05e0\u05e8\u05d0\u05d4 \u05db\u05ea\u05d5\u05d1\u05ea \u05de\u05d9\u05d9\u05dc \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea MAILTO \u05d4\u05e0\u05d3\u05e8\u05e9\u05ea?","link_titlefield":"\u05db\u05d5\u05ea\u05e8\u05ea","link_target_blank":"\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9","link_target_same":"\u05e4\u05ea\u05d7 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d1\u05d0\u05d5\u05ea\u05d5 \u05d7\u05dc\u05d5\u05df","link_target":"\u05d9\u05e2\u05d3","link_url":"\u05db\u05ea\u05d5\u05d1\u05ea \u05d4\u05e7\u05d9\u05e9\u05d5\u05e8","link_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8","image_align_right":"\u05d9\u05de\u05d9\u05df","image_align_left":"\u05e9\u05de\u05d0\u05dc","image_align_textbottom":"\u05e7\u05e6\u05d4 \u05d4\u05ea\u05d7\u05ea\u05d5\u05df \u05e9\u05dc \u05d4\u05d8\u05e7\u05e1\u05d8","image_align_texttop":"\u05e7\u05e6\u05d4 \u05d4\u05e2\u05dc\u05d9\u05d5\u05df \u05e9\u05dc \u05d4\u05d8\u05e7\u05e1\u05d8","image_align_bottom":"\u05e7\u05e6\u05d4 \u05d4\u05ea\u05d7\u05ea\u05d5\u05df","image_align_middle":"\u05d0\u05de\u05e6\u05e2","image_align_top":"\u05e7\u05e6\u05d4 \u05d4\u05e2\u05dc\u05d9\u05d5\u05df","image_align_baseline":"\u05e7\u05d5 \u05d4\u05d4\u05ea\u05d7\u05dc\u05d4","image_align":"\u05d9\u05d9\u05e9\u05d5\u05e8","image_hspace":"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9","image_vspace":"\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9","image_dimensions":"\u05d2\u05d5\u05d3\u05dc","image_alt":"\u05ea\u05d9\u05d0\u05d5\u05e8","image_list":"\u05e8\u05e9\u05d9\u05de\u05d4","image_border":"\u05d2\u05d1\u05d5\u05dc","image_src":"\u05db\u05ea\u05d5\u05d1\u05ea:","image_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05ea\u05de\u05d5\u05e0\u05d4","charmap_title":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e1\u05d9\u05de\u05df","colorpicker_name":"\u05e9\u05dd:","colorpicker_color":"\u05e6\u05d1\u05e2:","colorpicker_named_title":"\u05e6\u05d1\u05e2\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05e9\u05de\u05d5\u05ea","colorpicker_named_tab":"\u05e6\u05d1\u05e2\u05d9\u05dd \u05d1\u05e2\u05dc\u05d9 \u05e9\u05de\u05d5\u05ea","colorpicker_palette_title":"\u05dc\u05d5\u05d7 \u05e6\u05d1\u05e2\u05d9\u05dd","colorpicker_palette_tab":"\u05dc\u05d5\u05d7 \u05e6\u05d1\u05e2\u05d9\u05dd","colorpicker_picker_title":"\u05d1\u05d5\u05e8\u05e8 \u05d4\u05e6\u05d1\u05e2\u05d9\u05dd","colorpicker_picker_tab":"\u05d1\u05d5\u05e8\u05e8","colorpicker_title":"\u05d1\u05d7\u05d9\u05e8\u05ea \u05e6\u05d1\u05e2","code_wordwrap":"\u05d2\u05dc\u05d9\u05e9\u05ea \u05d8\u05e7\u05e1\u05d8","code_title":"\u05e2\u05d5\u05e8\u05da \u05d4-HTML","anchor_name":"\u05e9\u05dd \u05d4\u05e1\u05d9\u05de\u05e0\u05d9\u05d4","anchor_title":"\u05d4\u05d5\u05e1\u05e4\u05d4/\u05e2\u05e8\u05d9\u05db\u05ea \u05e1\u05d9\u05de\u05e0\u05d9\u05d4","about_loaded":"\u05ea\u05d5\u05e1\u05e4\u05d5\u05ea \u05e4\u05e2\u05d9\u05dc\u05d5\u05ea","about_version":"\u05d2\u05d9\u05e8\u05e1\u05d4","about_author":"\u05d9\u05d5\u05e6\u05e8","about_plugin":"\u05ea\u05d5\u05e1\u05e4\u05ea","about_plugins":"\u05ea\u05d5\u05e1\u05e4\u05d5\u05ea","about_license":"\u05e8\u05e9\u05d9\u05d5\u05df","about_help":"\u05e2\u05d6\u05e8\u05d4","about_general":"\u05d0\u05d5\u05d3\u05d5\u05ea","about_title":"\u05d0\u05d5\u05d3\u05d5\u05ea TinyMCE","charmap_usage":"\u05d4\u05e9\u05ea\u05de\u05e9/\u05d9 \u05d1\u05d7\u05d9\u05e6\u05d9\u05dd \u05dc\u05e0\u05d9\u05d5\u05d5\u05d8 \u05d9\u05de\u05d9\u05e0\u05d4 \u05d5\u05e9\u05de\u05d0\u05dc\u05d4","anchor_invalid":"\u05e0\u05d0 \u05dc\u05e6\u05d9\u05d9\u05df \u05e9\u05dd \u05d7\u05d5\u05e7\u05d9","accessibility_help":"\u05e2\u05d6\u05e8\u05d4 \u05d1\u05e0\u05d2\u05d9\u05e9\u05d5\u05ea","accessibility_usage_title":"\u05e9\u05d9\u05de\u05d5\u05e9 \u05db\u05dc\u05dc\u05d9","invalid_color_value":"\u05e2\u05e8\u05da \u05d4\u05e6\u05d1\u05e2 \u05dc\u05d0 \u05ea\u05e7\u05d9\u05df"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/it.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/it.js deleted file mode 100644 index af84c79db9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/it.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.advanced',{"underline_desc":"Sottolineato (Ctrl+U)","italic_desc":"Corsivo (Ctrl+I)","bold_desc":"Grassetto (Ctrl+B)",dd:"Descrizione definizione",dt:"Termine definizione",samp:"Esempio codice",code:"Codice",blockquote:"Testo quotato",h6:"Intestazione 6",h5:"Intestazione 5",h4:"Intestazione 4",h3:"Intestazione 3",h2:"Intestazione 2",h1:"Intestazione 1",pre:"Preformattato",address:"Indirizzo",div:"Div",paragraph:"Paragrafo",block:"Formato",fontdefault:"Famiglia carattere","font_size":"Grandezza carattere","style_select":"Stili","anchor_delta_height":"anchor_delta_height","anchor_delta_width":"anchor_delta_width","charmap_delta_height":"charmap_delta_height","charmap_delta_width":"charmap_delta_width","colorpicker_delta_height":"colorpicker_delta_height","colorpicker_delta_width":"colorpicker_delta_width","link_delta_height":"link_delta_height","link_delta_width":"link_delta_width","image_delta_height":"image_delta_height","image_delta_width":"image_delta_width","more_colors":"Colori aggiuntivi","toolbar_focus":"Vai ai pulsanti strumento - Alt+Q, Vai all\'editor - Alt-Z, Vai al percorso dell\'elemento - Alt-X",newdocument:"Sei sicuro di voler cancellare tutti i contenuti?",path:"Percorso","clipboard_msg":"Copia/Taglia/Incolla non \u00e8 disponibile in Mozilla e Firefox..\nSi desidera avere maggiori informazioni su questo problema?","blockquote_desc":"Testo quotato","help_desc":"Aiuto","newdocument_desc":"Nuovo documento","image_props_desc":"Propriet\u00e0 immagine","paste_desc":"Incolla","copy_desc":"Copia","cut_desc":"Taglia","anchor_desc":"Inserisci/modifica ancora","visualaid_desc":"Mostra/nascondi linee guida/elementi invisibili","charmap_desc":"Inserisci carattere speciale","backcolor_desc":"Seleziona colore sfondo","forecolor_desc":"Seleziona colore testo","custom1_desc":"La tua descrizione personalizzata qui","removeformat_desc":"Rimuovi formattazione","hr_desc":"Inserisci riga orizzontale","sup_desc":"Apice","sub_desc":"Pedice","code_desc":"Modifica sorgente HTML","cleanup_desc":"Pulisci codice disordinato","image_desc":"Inserisci/modifica immagine","unlink_desc":"Togli collegamento","link_desc":"Inserisci/modifica collegamento","redo_desc":"Ripristina (Ctrl+Y)","undo_desc":"Annulla (Ctrl+Z)","indent_desc":"Sposta verso interno","outdent_desc":"Sposta verso esterno","numlist_desc":"Lista ordinata","bullist_desc":"Lista non ordinata","justifyfull_desc":"Giustifica","justifyright_desc":"Allinea a destra","justifycenter_desc":"Centra","justifyleft_desc":"Allinea a sinistra","striketrough_desc":"Barrato","help_shortcut":"Premi ALT-F10 Per la barra degli strumenti. Premi ALT-0 per l\'aiuto","rich_text_area":"Rich Text Area","shortcuts_desc":"Aiuto accessibilit\u00e0",toolbar:"Barra degli strumenti"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/it_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/it_dlg.js deleted file mode 100644 index 9fc5380c4c..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/it_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('it.advanced_dlg',{"link_list":"Lista link","link_is_external":"L\'URL inserito sembra essere un link esterno. Aggiungere il necessario prefisso http:// ?","link_is_email":"L\'URL inserito sembra essere un indirizzo email. Aggiungere il necessario prefisso mailto: ?","link_titlefield":"Titolo","link_target_blank":"Apri link in una nuova finestra","link_target_same":"Apri link nella stessa finestra","link_target":"Target","link_url":"URL link","link_title":"Inserisci/modifica collegamento","image_align_right":"A destra","image_align_left":"A sinistra","image_align_textbottom":"In basso al testo","image_align_texttop":"In alto al testo","image_align_bottom":"In basso","image_align_middle":"In mezzo","image_align_top":"In alto","image_align_baseline":"Alla base","image_align":"Allineamento","image_hspace":"Spaziatura orizz.","image_vspace":"Spaziatura vert.","image_dimensions":"Dimensioni","image_alt":"Descrizione","image_list":"Lista immagini","image_border":"Bordo","image_src":"URL immagine","image_title":"Inserisci/modifica immagine","charmap_title":"Seleziona carattere speciale","colorpicker_name":"Nome:","colorpicker_color":"Colore:","colorpicker_named_title":"Colori per nome","colorpicker_named_tab":"Per nome","colorpicker_palette_title":"Tavolozza dei colori","colorpicker_palette_tab":"Tavolozza","colorpicker_picker_title":"Selettore colori","colorpicker_picker_tab":"Selettore","colorpicker_title":"Seleziona un colore","code_wordwrap":"A capo automatico","code_title":"Editor sorgente HTML","anchor_name":"Nome ancora","anchor_title":"Inserisci/modifica ancora","about_loaded":"Plugin caricati","about_version":"Versione","about_author":"Autore","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licenza","about_help":"Aiuto","about_general":"Informazioni","about_title":"Informazioni su TinyMCE","charmap_usage":"Utilizza le freccie sinistra e destra per navigare.","anchor_invalid":"Specificare un nome di ancora valido.","accessibility_help":"Guida accessibilit\u00e0","accessibility_usage_title":"Uso generale","invalid_color_value":"Colore non valido"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ja.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ja.js deleted file mode 100644 index f5533c5488..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ja.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.advanced',{"underline_desc":"\u4e0b\u7dda (Ctrl+U)","italic_desc":"\u659c\u4f53 (Ctrl+I)","bold_desc":"\u592a\u5b57 (Ctrl+B)",dd:"\u8a9e\u53e5\u306e\u8aac\u660e",dt:"\u8a9e\u53e5\u306e\u5b9a\u7fa9",samp:"\u30b3\u30fc\u30c9\u306e\u4f8b",code:"\u30b3\u30fc\u30c9",blockquote:"\u5f15\u7528",h6:"\u898b\u51fa\u30576",h5:"\u898b\u51fa\u30575",h4:"\u898b\u51fa\u30574",h3:"\u898b\u51fa\u30573",h2:"\u898b\u51fa\u30572",h1:"\u898b\u51fa\u30571",pre:"\u6574\u5f62\u6e08\u307f",address:"\u4f4f\u6240",div:"div\u8981\u7d20",paragraph:"\u6bb5\u843d",block:"\u66f8\u5f0f",fontdefault:"\u30d5\u30a9\u30f3\u30c8","font_size":"\u30d5\u30a9\u30f3\u30c8\u306e\u5927\u304d\u3055","style_select":"\u30b9\u30bf\u30a4\u30eb","more_colors":"\u3055\u3089\u306b\u8272\u3092\u4f7f\u7528...","toolbar_focus":"\u30c4\u30fc\u30eb\u30dc\u30bf\u30f3\u3078\u79fb\u52d5 - Alt Q, \u30a8\u30c7\u30a3\u30bf\u306b\u79fb\u52d5 - Alt-Z, \u8981\u7d20\u306e\u30d1\u30b9\u3078\u79fb\u52d5 - Alt-X",newdocument:"\u672c\u5f53\u306b\u3059\u3079\u3066\u306e\u5185\u5bb9\u3092\u6d88\u53bb\u3057\u3066\u3088\u3044\u3067\u3059\u304b?",path:"\u30d1\u30b9","clipboard_msg":"\u30b3\u30d4\u30fc/\u5207\u308a\u53d6\u308a/\u8cbc\u308a\u4ed8\u3051\u306fMozilla\u3068Firefox\u3067\u306f\u4f7f\u7528\u3067\u304d\u307e\u305b\u3093\u3002\n\u3053\u306e\u554f\u984c\u306e\u8a73\u7d30\u3092\u77e5\u308a\u305f\u3044\u3067\u3059\u304b?","blockquote_desc":"\u5f15\u7528\u30d6\u30ed\u30c3\u30af","help_desc":"\u30d8\u30eb\u30d7","newdocument_desc":"\u65b0\u3057\u3044\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8","image_props_desc":"\u753b\u50cf\u306e\u5c5e\u6027","paste_desc":"\u8cbc\u308a\u4ed8\u3051","copy_desc":"\u30b3\u30d4\u30fc","cut_desc":"\u5207\u308a\u53d6\u308a","anchor_desc":"\u30a2\u30f3\u30ab\u30fc\u306e\u633f\u5165/\u7de8\u96c6","visualaid_desc":"\u30ac\u30a4\u30c9\u30e9\u30a4\u30f3\u3068\u975e\u8868\u793a\u8981\u7d20\u306e\u8868\u793a\u3092\u5207\u66ff","charmap_desc":"\u7279\u6b8a\u6587\u5b57","backcolor_desc":"\u80cc\u666f\u306e\u8272","forecolor_desc":"\u6587\u5b57\u306e\u8272","custom1_desc":"\u8aac\u660e\u6587\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002","removeformat_desc":"\u66f8\u5f0f\u306e\u524a\u9664","hr_desc":"\u6c34\u5e73\u7dda\u3092\u633f\u5165","sup_desc":"\u4e0a\u4ed8\u304d\u6587\u5b57","sub_desc":"\u4e0b\u4ed8\u304d\u6587\u5b57","code_desc":"HTML\u306e\u30bd\u30fc\u30b9\u3092\u7de8\u96c6","cleanup_desc":"\u4e71\u96d1\u306a\u30b3\u30fc\u30c9\u3092\u6574\u5f62","image_desc":"\u753b\u50cf\u306e\u633f\u5165/\u7de8\u96c6","unlink_desc":"\u30ea\u30f3\u30af\u3092\u89e3\u9664","link_desc":"\u30ea\u30f3\u30af\u306e\u633f\u5165/\u7de8\u96c6","redo_desc":"\u3084\u308a\u76f4\u3059 (Ctrl+Y)","undo_desc":"\u5143\u306b\u623b\u3059 (Ctrl+Z)","indent_desc":"\u5b57\u4e0b\u3052\u3092\u5897\u3084\u3059","outdent_desc":"\u5b57\u4e0b\u3052\u3092\u6e1b\u3089\u3059","numlist_desc":"\u756a\u53f7\u3064\u304d\u30ea\u30b9\u30c8","bullist_desc":"\u756a\u53f7\u306a\u3057\u30ea\u30b9\u30c8","justifyfull_desc":"\u5747\u7b49\u5272\u4ed8","justifyright_desc":"\u53f3\u63c3\u3048","justifycenter_desc":"\u4e2d\u592e\u63c3\u3048","justifyleft_desc":"\u5de6\u63c3\u3048","striketrough_desc":"\u53d6\u308a\u6d88\u3057\u7dda","help_shortcut":"ALT-F10 \u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0 \u3067\u30d8\u30eb\u30d7","rich_text_area":"\u30ea\u30c3\u30c1\u30c6\u30ad\u30b9\u30c8\u30a8\u30ea\u30a2","shortcuts_desc":"\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306e\u30d8\u30eb\u30d7",toolbar:"\u30c4\u30fc\u30eb\u30d0\u30fc","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ja_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ja_dlg.js deleted file mode 100644 index 234fb71a48..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ja_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ja.advanced_dlg',{"link_list":"\u30ea\u30f3\u30af\u306e\u4e00\u89a7","link_is_external":"\u5165\u529b\u3057\u305fURL\u306f\u5916\u90e8\u306e\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b http:// \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?","link_is_email":"\u5165\u529b\u3057\u305fURL\u306f\u96fb\u5b50\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u30ea\u30f3\u30af\u306b mailto: \u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b?","link_titlefield":"\u30bf\u30a4\u30c8\u30eb","link_target_blank":"\u65b0\u3057\u3044\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","link_target_same":"\u540c\u3058\u30a6\u30a4\u30f3\u30c9\u30a6\u3067\u958b\u304f","link_target":"\u30bf\u30fc\u30b2\u30c3\u30c8","link_url":"\u30ea\u30f3\u30af\u306eURL","link_title":"\u30ea\u30f3\u30af\u306e\u633f\u5165\u3084\u7de8\u96c6","image_align_right":"\u53f3\u63c3\u3048","image_align_left":"\u5de6\u63c3\u3048","image_align_textbottom":"\u30c6\u30ad\u30b9\u30c8\u306e\u4e0b\u7aef\u63c3\u3048","image_align_texttop":"\u30c6\u30ad\u30b9\u30c8\u306e\u4e0a\u7aef\u63c3\u3048","image_align_bottom":"\u4e0b\u63c3\u3048","image_align_middle":"\u4e2d\u592e\u63c3\u3048","image_align_top":"\u4e0a\u63c3\u3048","image_align_baseline":"\u30d9\u30fc\u30b9\u30e9\u30a4\u30f3\u63c3\u3048","image_align":"\u914d\u7f6e","image_hspace":"\u5de6\u53f3\u306e\u4f59\u767d","image_vspace":"\u4e0a\u4e0b\u306e\u4f59\u767d","image_dimensions":"\u5bf8\u6cd5","image_alt":"\u753b\u50cf\u306e\u8aac\u660e","image_list":"\u753b\u50cf\u306e\u4e00\u89a7","image_border":"\u67a0\u7dda","image_src":"\u753b\u50cf\u306eURL","image_title":"\u753b\u50cf\u306e\u633f\u5165\u3084\u7de8\u96c6","charmap_title":"\u7279\u6b8a\u6587\u5b57","colorpicker_name":"\u540d\u524d:","colorpicker_color":"\u8272:","colorpicker_named_title":"\u5b9a\u7fa9\u6e08\u307f\u306e\u8272","colorpicker_named_tab":"\u5b9a\u7fa9\u6e08\u307f","colorpicker_palette_title":"\u30d1\u30ec\u30c3\u30c8\u306e\u8272","colorpicker_palette_tab":"\u30d1\u30ec\u30c3\u30c8","colorpicker_picker_title":"\u8272\u9078\u629e","colorpicker_picker_tab":"\u9078\u629e","colorpicker_title":"\u8272\u3092\u9078\u629e","code_wordwrap":"\u884c\u306e\u6298\u308a\u8fd4\u3057","code_title":"HTML\u306e\u30bd\u30fc\u30b9\u30a8\u30c7\u30a3\u30bf","anchor_name":"\u30a2\u30f3\u30ab\u30fc\u306e\u540d\u524d","anchor_title":"\u30a2\u30f3\u30ab\u30fc\u306e\u633f\u5165\u3084\u7de8\u96c6","about_loaded":"\u8aad\u307f\u8fbc\u307f\u6e08\u307f\u306e\u30d7\u30e9\u30b0\u30a4\u30f3","about_version":"\u30d0\u30fc\u30b8\u30e7\u30f3","about_author":"\u4f5c\u6210\u8005","about_plugin":"\u30d7\u30e9\u30b0\u30a4\u30f3","about_plugins":"\u30d7\u30e9\u30b0\u30a4\u30f3","about_license":"\u30e9\u30a4\u30bb\u30f3\u30b9","about_help":"\u30d8\u30eb\u30d7","about_general":"TinyMCE\u306b\u3064\u3044\u3066","about_title":"TinyMCE\u306b\u3064\u3044\u3066","charmap_usage":"\u5de6\u53f3\u306e\u30ab\u30fc\u30bd\u30eb\u30ad\u30fc\u3092\u4f7f\u7528\u3057\u3066\u79fb\u52d5\u3057\u3066\u304f\u3060\u3055\u3044\u3002","anchor_invalid":"\u6709\u52b9\u306a\u30a2\u30f3\u30ab\u30fc\u306e\u540d\u524d\u3092\u6307\u5b9a\u3057\u3066\u304f\u3060\u3055\u3044\u3002","accessibility_help":"\u30a2\u30af\u30bb\u30b7\u30d3\u30ea\u30c6\u30a3\u306e\u30d8\u30eb\u30d7","accessibility_usage_title":"\u5168\u822c\u7684\u306a\u4f7f\u3044\u65b9","invalid_color_value":"\u7121\u52b9\u306a\u5024"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nl.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nl.js deleted file mode 100644 index 3ef2c14c78..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nl.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.advanced',{"underline_desc":"Onderstrepen (Ctrl+U)","italic_desc":"Cursief (Ctrl+I)","bold_desc":"Vet (Ctrl+B)",dd:"Definitiebeschrijving",dt:"Definitieterm",samp:"Codevoorbeeld",code:"Code",blockquote:"Citaat",h6:"Kop 6",h5:"Kop 5",h4:"Kop 4",h3:"Kop 3",h2:"Kop 2",h1:"Kop 1",pre:"Vaste opmaak",address:"Adres",div:"Div",paragraph:"Alinea",block:"Opmaak",fontdefault:"Lettertype","font_size":"Tekengrootte","style_select":"Stijlen","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":"","more_colors":"Meer kleuren","toolbar_focus":"Spring naar werkbalk - Alt+Q, Spring naar tekst - Alt-Z, Spring naar elementpad - Alt-X",newdocument:"Weet u zeker dat u alle inhoud wilt wissen?",path:"Pad","clipboard_msg":"Kopi\u00ebren/knippen/plakken is niet beschikbaar in Mozilla en Firefox.\nWilt u meer informatie over deze beperking?","blockquote_desc":"Citaat","help_desc":"Help","newdocument_desc":"Nieuw document","image_props_desc":"Afbeeldingseigenschappen","paste_desc":"Plakken","copy_desc":"Kopi\u00ebren","cut_desc":"Knippen","anchor_desc":"Anker invoegen/bewerken","visualaid_desc":"Hulplijnen weergeven","charmap_desc":"Symbool invoegen","backcolor_desc":"Tekstmarkeringskleur","forecolor_desc":"Tekstkleur","custom1_desc":"Uw eigen beschrijving hier","removeformat_desc":"Opmaak verwijderen","hr_desc":"Scheidingslijn invoegen","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"HTML bron bewerken","cleanup_desc":"Code opruimen","image_desc":"Afbeelding invoegen/bewerken","unlink_desc":"Link verwijderen","link_desc":"Link invoegen/bewerken","redo_desc":"Herhalen (Ctrl+Y)","undo_desc":"Ongedaan maken (Ctrl+Z)","indent_desc":"Inspringing vergroten","outdent_desc":"Inspringing verkleinen","numlist_desc":"Nummering","bullist_desc":"Opsommingstekens","justifyfull_desc":"Uitvullen","justifyright_desc":"Rechts uitlijnen","justifycenter_desc":"Centreren","justifyleft_desc":"Links uitlijnen","striketrough_desc":"Doorhalen","help_shortcut":"Druk op ALT-F10 voor de werkbalk. Druk op ALT-0 voor hulp.","rich_text_area":"Rich Text Zone","shortcuts_desc":"Toegankelijkheid Help",toolbar:"Werkbalk"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nl_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nl_dlg.js deleted file mode 100644 index 615a5e8d56..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nl.advanced_dlg',{"link_list":"Link lijst","link_is_external":"De ingevoerde URL lijkt op een externe link. Wilt u de vereiste http:// tekst voorvoegen?","link_is_email":"De ingevoerde URL lijkt op een e-mailadres. Wilt u de vereiste mailto: tekst voorvoegen?","link_titlefield":"Titel","link_target_blank":"Link in een nieuw venster openen","link_target_same":"Link in hetzelfde venster openen","link_target":"Doel","link_url":"Link URL","link_title":"Link invoegen/bewerken","image_align_right":"Rechts","image_align_left":"Links","image_align_textbottom":"Onderkant tekst","image_align_texttop":"Bovenkant tekst","image_align_bottom":"Onder","image_align_middle":"Midden","image_align_top":"Boven","image_align_baseline":"Basislijn","image_align":"Uitlijning","image_hspace":"Horizontale ruimte","image_vspace":"Verticale ruimte","image_dimensions":"Afmetingen","image_alt":"Beschrijving","image_list":"Lijst","image_border":"Rand","image_src":"Bestand/URL","image_title":"Afbeelding invoegen/bewerken","charmap_title":"Symbolen","colorpicker_name":"Naam:","colorpicker_color":"Kleur:","colorpicker_named_title":"Benoemde kleuren","colorpicker_named_tab":"Benoemd","colorpicker_palette_title":"Paletkleuren","colorpicker_palette_tab":"Palet","colorpicker_picker_title":"Alle kleuren","colorpicker_picker_tab":"Alle kleuren","colorpicker_title":"Kleuren","code_wordwrap":"Automatische terugloop","code_title":"HTML Bron","anchor_name":"Ankernaam","anchor_title":"Anker invoegen/bewerken","about_loaded":"Geladen Invoegtoepassingen","about_version":"Versie","about_author":"Auteur","about_plugin":"Invoegtoepassing","about_plugins":"Invoegtoepassingen","about_license":"Licentie","about_help":"Help","about_general":"Info","about_title":"Over TinyMCE","charmap_usage":"Gebruik linker en rechter pijltjestoetsen om te navigeren.","anchor_invalid":"Geef een geldige ankernaam.","accessibility_help":"Hulp m.b.t. Toegankelijkheid","accessibility_usage_title":"Algemeen Gebruik","invalid_color_value":"Ongeldige kleur code"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nn.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nn.js deleted file mode 100644 index 4f6441e109..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nn.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.advanced',{"underline_desc":"Understreking","italic_desc":"Kursiv","bold_desc":"Feit",dd:"Definisjonsbeskrivelse",dt:"Definisjonsuttrykk",samp:"Kodeeksempel",code:"Kode",blockquote:"Innrykk",h6:"Overskrift 6",h5:"Overskrift 5",h4:"Overskrift 4",h3:"Overskrift 3",h2:"Overskrift 2",h1:"Overskrift 1",pre:"Pre-formatert",address:"Adresse",div:"Div",paragraph:"Avsnitt",block:"Format",fontdefault:"Skriftfamilie","font_size":"Skriftstorleik","style_select":"Stilar","anchor_delta_height":"anchor_delta_height","anchor_delta_width":"anchor_delta_width","charmap_delta_height":"charmap_delta_height","charmap_delta_width":"charmap_delta_width","colorpicker_delta_height":"colorpicker_delta_height","colorpicker_delta_width":"colorpicker_delta_width","link_delta_height":"link_delta_height","link_delta_width":"link_delta_width","image_delta_height":"image_delta_height","image_delta_width":"image_delta_width","more_colors":"Fleire fargar","toolbar_focus":"Skift til verktyknappar - Alt+Q, Skift til editor - Alt-Z, Skift til elementsti - Alt-",newdocument:"Er du sikker p\u00e5 at du vil slette alt innhald?",path:"Sti","clipboard_msg":"Klipp ut / Kopier /Lim inn fungerer ikkje i Mozilla og Firefox. \n Vil du vite meir om dette?","blockquote_desc":"Innrykk","help_desc":"Hjelp","newdocument_desc":"Nytt dokument","image_props_desc":"Eigenskaper for bilete","paste_desc":"Lim inn","copy_desc":"Kopier","cut_desc":"Klipp ut","anchor_desc":"Set inn / endre anker","visualaid_desc":"Sl\u00e5 av/p\u00e5 usynlige element","charmap_desc":"Set inn spesialteikn","backcolor_desc":"Vel bakgrunnsfarge","forecolor_desc":"Vel skriftfarge","custom1_desc":"Din spesialfunksjondefinisjon her","removeformat_desc":"Fjern formatering","hr_desc":"Set inn horisontal linje","sup_desc":"Heva skrift","sub_desc":"Senka skrift","code_desc":"Redigere HTML-koden","cleanup_desc":"Rens grisete kode","image_desc":"Set inn / endre bilete","unlink_desc":"Fjern lenkje","link_desc":"Set inn / endre lenkje","redo_desc":"Gjer om","undo_desc":"Angre","indent_desc":"Auk innrykk","outdent_desc":"Reduser innrykk","numlist_desc":"Nummerliste","bullist_desc":"Punktliste","justifyfull_desc":"Blokkjustert","justifyright_desc":"H\u00f8grejustert","justifycenter_desc":"Midtstilt","justifyleft_desc":"Venstrejustert","striketrough_desc":"Gjennomstreking","help_shortcut":"Klikk ALT-F10 for verkt\u00f8ylinje. Klikk ALT-0 for hjelp","rich_text_area":"Omr\u00e5de for rik tekst","shortcuts_desc":"Tilgjengelighetshjelp",toolbar:"Verkt\u00f8ylinje"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nn_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nn_dlg.js deleted file mode 100644 index 0344eb6731..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/nn_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('nn.advanced_dlg',{"link_list":"Lenkjeliste","link_is_external":"Nettadressa du skreiv inn ser ut til \u00e5 vere ein ekstern nettadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske http://-prefikset?","link_is_email":"Nettadressa du skreiv inn ser ut til \u00e5 vere ein e-postadresse. \u00d8nskjer du \u00e5 leggje til det obligatoriske mailto:-prefikset?","link_titlefield":"Tittel","link_target_blank":"Opne i nytt vindauget","link_target_same":"Opne i dette vindauget","link_target":"Vindauge","link_url":"Lenkje-URL","link_title":"Set inn / endre lenkje","image_align_right":"H\u00f8gre","image_align_left":"Venstre","image_align_textbottom":"Tekstbotn","image_align_texttop":"Teksttopp","image_align_bottom":"Botn","image_align_middle":"Midtstilt","image_align_top":"Topp","image_align_baseline":"Botnlinje","image_align":"Justering","image_hspace":"Horisontal avstand","image_vspace":"Vertikal avstand","image_dimensions":"Dimensjonar","image_alt":"Bileteomtale","image_list":"Liste med bilete","image_border":"Ramme","image_src":"Bilete-URL","image_title":"Set inn / endre bilete","charmap_title":"Vel spesialteikn","colorpicker_name":"Namn:","colorpicker_color":"Farge:","colorpicker_named_title":"Fargenamn","colorpicker_named_tab":"Namneval","colorpicker_palette_title":"Palettfargar","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"Fargeval","colorpicker_picker_tab":"Vel farge","colorpicker_title":"Vel ein farge","code_wordwrap":"Tekstbryting","code_title":"HTML-editor","anchor_name":"Ankernamn","anchor_title":"Set inn / endre anker","about_loaded":"Lasta programtillegg","about_version":"Versjon","about_author":"Utviklar","about_plugin":"Programtillegg","about_plugins":"Programtillegg","about_license":"Lisens","about_help":"Hjelp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Use left and right arrows to navigate.","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pl.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pl.js deleted file mode 100644 index f7348f11f1..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pl.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.advanced',{"underline_desc":"Podkre\u015blenie (Ctrl+U)","italic_desc":"Kursywa (Ctrl+I)","bold_desc":"Pogrubienie (Ctrl+B)",dd:"Opis terminu",dt:"Definicja terminu ",samp:"Pr\u00f3bka kodu",code:"Kod",blockquote:"Wydzielony blok",h6:"Nag\u0142\u00f3wek 6",h5:"Nag\u0142\u00f3wek 5",h4:"Nag\u0142\u00f3wek 4",h3:"Nag\u0142\u00f3wek 3",h2:"Nag\u0142\u00f3wek 2",h1:"Nag\u0142\u00f3wek 1",pre:"Czcionka o sta\u0142ej szeroko\u015bci",address:"Adres",div:"Div",paragraph:"Akapit",block:"Format",fontdefault:"Rodzaj czcionki","font_size":"Rozmiar czcionki","style_select":"Styl","more_colors":"Wi\u0119cej kolor\u00f3w...","toolbar_focus":"Przeskocz do przycisk\u00f3w narz\u0119dzi - Alt+Q, Przeskocz do edytora - Alt-Z, Przeskocz do elementu \u015bcie\u017cki - Alt-X",newdocument:"Czy jeste\u015b pewnien, ze chcesz wyczy\u015bci\u0107 ca\u0142\u0105 zawarto\u015b\u0107?",path:"\u015acie\u017cka","clipboard_msg":"Akcje Kopiuj/Wytnij/Wklej nie s\u0105 dost\u0119pne w Mozilli i Firefox.\nCzy chcesz wi\u0119cej informacji o tym problemie?","blockquote_desc":"Blok cytatu","help_desc":"Pomoc","newdocument_desc":"Nowy dokument","image_props_desc":"W\u0142a\u015bciwo\u015bci obrazka","paste_desc":"Wklej (Ctrl V)","copy_desc":"Kopiuj (Ctrl C)","cut_desc":"Wytnij (Ctrl X)","anchor_desc":"Wstaw/edytuj kotwic\u0119","visualaid_desc":"Prze\u0142\u0105cz widoczno\u015b\u0107 wska\u017anik\u00f3w i niewidocznych element\u00f3w","charmap_desc":"Wstaw znak specjalny","backcolor_desc":"Wybierz kolor t\u0142a","forecolor_desc":"Wybierz kolor tekstu","custom1_desc":"Tw\u00f3j niestandardowy opis tutaj","removeformat_desc":"Usu\u0144 formatowanie","hr_desc":"Wstaw poziom\u0105 lini\u0119","sup_desc":"Indeks g\u00f3rny","sub_desc":"Indeks dolny","code_desc":"Edytuj \u017ar\u00f3d\u0142o HTML","cleanup_desc":"Wyczy\u015b\u0107 nieuporz\u0105dkowany kod","image_desc":"Wstaw/edytuj obraz","unlink_desc":"Usu\u0144 link","link_desc":"Wstaw/edytuj link","redo_desc":"Pon\u00f3w (Ctrl+Y)","undo_desc":"Cofnij (Ctrl+Z)","indent_desc":"Wci\u0119cie","outdent_desc":"Cofnij wci\u0119cie","numlist_desc":"Lista numerowana","bullist_desc":"Lista nienumerowana","justifyfull_desc":"R\u00f3wnanie do prawej i lewej","justifyright_desc":"Wyr\u00f3wnaj do prawej","justifycenter_desc":"Wycentruj","justifyleft_desc":"Wyr\u00f3wnaj do lewej","striketrough_desc":"Przekre\u015blenie","help_shortcut":"Wci\u015bnij Alt F10 aby pokaza\u0107 pasek narz\u0119dzi. Wci\u015bnij Alt 0 aby otworzy\u0107 pomoc","rich_text_area":"Pole tekstowe","shortcuts_desc":"Pomoc dost\u0119pno\u015bci",toolbar:"Pasek narz\u0119dzi","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pl_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pl_dlg.js deleted file mode 100644 index e1ba93c953..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pl_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pl.advanced_dlg',{"link_list":"Lista link\u00f3w","link_is_external":"URL kt\u00f3ry otworzy\u0142e\u015b wydaje si\u0119 by\u0107 zewn\u0119trznym linkiem, czy chcesz doda\u0107 wymagany prefiks http:// ?","link_is_email":"URL kt\u00f3ry otworzy\u0142e\u015b wydaje si\u0119 by\u0107 adresem mailowym, czy chcesz doda\u0107 odpowiedni prefiks mailto:?","link_titlefield":"Tytu\u0142","link_target_blank":"Otw\u00f3rz link w nowym oknie","link_target_same":"Otw\u00f3rz link w tym samym oknie","link_target":"Cel","link_url":"URL linka","link_title":"Wstaw/edytuj link","image_align_right":"Prawy","image_align_left":"Lewy","image_align_textbottom":"Dolny tekst","image_align_texttop":"G\u00f3rny tekst","image_align_bottom":"D\u00f3\u0142","image_align_middle":"\u015arodek","image_align_top":"G\u00f3ra","image_align_baseline":"Linia bazowa","image_align":"Wyr\u00f3wnanie","image_hspace":"Odst\u0119p poziomy","image_vspace":"Odst\u0119p pionowy","image_dimensions":"Rozmiary","image_alt":"Opis obrazka","image_list":"Lista obrazk\u00f3w","image_border":"Obramowanie","image_src":"URL obrazka","image_title":"Wstaw/edytuj obraz","charmap_title":"Wybierz niestandardowy znak","colorpicker_name":"Nazwa:","colorpicker_color":"Kolor:","colorpicker_named_title":"Nazwane kolory","colorpicker_named_tab":"Nazwane","colorpicker_palette_title":"Paleta kolor\u00f3w","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Wybieranie kolor\u00f3w","colorpicker_picker_tab":"Wybieranie","colorpicker_title":"Wybierz kolor","code_wordwrap":"Zawijanie s\u0142\u00f3w","code_title":"Edytor \u017ar\u00f3d\u0142a HTML","anchor_name":"Nazwa zakotwiczenia","anchor_title":"Wstaw/Edytuj zakotwiczenie","about_loaded":"Za\u0142adowane wtyczki","about_version":"Wersja","about_author":"Autor","about_plugin":"Wtyczka","about_plugins":"Wtyczki","about_license":"Licencja","about_help":"Pomoc","about_general":"O TinyMCE","about_title":"O TinyMCE","charmap_usage":"U\u017cywaj strza\u0142ek w lewo i w prawo do nawigacji.","anchor_invalid":"Prosz\u0119 poda\u0107 w\u0142a\u015bciw\u0105 nazw\u0119 zakotwiczenia.","accessibility_help":"Pomoc dost\u0119pno\u015bci","accessibility_usage_title":"Og\u00f3lne zastosowanie","invalid_color_value":"Nieprawid\u0142owa warto\u015b\u0107 koloru"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pt.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pt.js deleted file mode 100644 index 48d17b1a61..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pt.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.advanced',{"underline_desc":"Sublinhado (Ctrl+U)","italic_desc":"It\u00e1lico (Ctrl+I)","bold_desc":"Negrito (Ctrl+B)",dd:"Descri\u00e7\u00e3o da defini\u00e7\u00e3o",dt:"Termo da defini\u00e7\u00e3o",samp:"Amostra de c\u00f3digo",code:"C\u00f3digo",blockquote:"Cita\u00e7\u00e3o em bloco",h6:"T\u00edtulo 6",h5:"T\u00edtulo 5",h4:"T\u00edtulo 4",h3:"T\u00edtulo 3",h2:"T\u00edtulo 2",h1:"T\u00edtulo 1",pre:"Pr\u00e9-formatado",address:"Endere\u00e7o",div:"Div",paragraph:"Par\u00e1grafo",block:"Formata\u00e7\u00e3o",fontdefault:"Tipo de fonte","font_size":"Tamanho","style_select":"Estilos","anchor_delta_width":"30","link_delta_height":"25","link_delta_width":"50","more_colors":"Mais cores","toolbar_focus":"Ir para as ferramentas - Alt+Q, Ir para o editor - Alt-Z, Ir para o endere\u00e7o do elemento - Alt-X",newdocument:"Tem a certeza que deseja apagar tudo?",path:"Endere\u00e7o","clipboard_msg":"Copiar/recortar/colar n\u00e3o est\u00e1 dispon\u00edvel no Mozilla e Firefox. Deseja mais informa\u00e7\u00f5es sobre este problema?","blockquote_desc":"Cita\u00e7\u00e3o em bloco","help_desc":"Ajuda","newdocument_desc":"Novo documento","image_props_desc":"Propriedades da imagem","paste_desc":"Colar","copy_desc":"Copiar","cut_desc":"Recortar","anchor_desc":"Inserir/editar \u00e2ncora","visualaid_desc":"Alternar guias/elementos invis\u00edveis","charmap_desc":"Inserir caracteres especiais","backcolor_desc":"Selecionar a cor de fundo","forecolor_desc":"Selecionar a cor do texto","custom1_desc":"Insira aqui a sua descri\u00e7\u00e3o personalizada","removeformat_desc":"Remover formata\u00e7\u00e3o","hr_desc":"Inserir separador horizontal","sup_desc":"Superior \u00e0 linha","sub_desc":"Inferior \u00e0 linha","code_desc":"Editar c\u00f3digo fonte","cleanup_desc":"Limpar c\u00f3digo incorreto","image_desc":"Inserir/editar imagem","unlink_desc":"Remover hyperlink","link_desc":"Inserir/editar hyperlink","redo_desc":"Refazer (Ctrl+Y)","undo_desc":"Desfazer (Ctrl+Z)","indent_desc":"Aumentar recuo","outdent_desc":"Diminuir recuo","numlist_desc":"Numera\u00e7\u00e3o","bullist_desc":"Marcadores","justifyfull_desc":"Justificar","justifyright_desc":"Alinhar \u00e0 direita","justifycenter_desc":"Centralizar","justifyleft_desc":"Alinhar \u00e0 esquerda","striketrough_desc":"Riscado","help_shortcut":"Pressione ALT-F10 para barra de ferramentas. Pressione ALT-0 para ajuda","rich_text_area":"\u00c1rea de edi\u00e7\u00e3o rica","shortcuts_desc":"Ajuda acessibilidade",toolbar:"Barra de ferramentas","anchor_delta_height":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pt_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pt_dlg.js deleted file mode 100644 index 313a012fad..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/pt_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('pt.advanced_dlg',{"link_list":"Lista de Links","link_is_external":"A URL digitada parece conduzir a um link externo. Deseja acrescentar o prefixo necess\u00e1rio http://?","link_is_email":"A URL digitada parece ser um endere\u00e7o de e-mail. Deseja acrescentar o prefixo necess\u00e1rio mailto:?","link_titlefield":"T\u00edtulo","link_target_blank":"Abrir hyperlink em nova janela","link_target_same":"Abrir hyperlink na mesma janela","link_target":"Alvo","link_url":"URL do hyperink","link_title":"Inserir/editar hyperlink","image_align_right":"Direita","image_align_left":"Esquerda","image_align_textbottom":"Base do texto","image_align_texttop":"Topo do texto","image_align_bottom":"Abaixo","image_align_middle":"Meio","image_align_top":"Topo","image_align_baseline":"Sobre a linha de texto","image_align":"Alinhamento","image_hspace":"Espa\u00e7o Horizontal","image_vspace":"Espa\u00e7o Vertical","image_dimensions":"Dimens\u00f5es","image_alt":"Descri\u00e7\u00e3o da imagem","image_list":"Lista de imagens","image_border":"Limites","image_src":"Endere\u00e7o da imagem","image_title":"Inserir/editar imagem","charmap_title":"Selecionar caracteres personalizados","colorpicker_name":"Nome:","colorpicker_color":"Cor:","colorpicker_named_title":"Cores Personalizadas","colorpicker_named_tab":"Personalizadas","colorpicker_palette_title":"Paleta de Cores","colorpicker_palette_tab":"Paleta","colorpicker_picker_title":"Editor de Cores","colorpicker_picker_tab":"Editor","colorpicker_title":"Selecione uma cor","code_wordwrap":"Quebra autom\u00e1tica de linha","code_title":"Editor HTML","anchor_name":"Nome da \u00e2ncora","anchor_title":"Inserir/editar \u00e2ncora","about_loaded":"Plugins Instalados","about_version":"Vers\u00e3o","about_author":"Autor","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"Licen\u00e7a","about_help":"Ajuda","about_general":"Sobre","about_title":"Sobre o TinyMCE","charmap_usage":"Use as setas esquerda e direita para navegar.","anchor_invalid":"Por favor, especifique um nome v\u00e1lido de \u00e2ncora.","accessibility_help":"Ajuda de Acessibilidade","accessibility_usage_title":"Uso Geral","invalid_color_value":"Valor da cor inv\u00e1lido"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ru.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ru.js deleted file mode 100644 index 5dcf47ad9f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ru.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.advanced',{"underline_desc":"\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439 (Ctrl+U)","italic_desc":"\u041a\u0443\u0440\u0441\u0438\u0432 (Ctrl+I)","bold_desc":"\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439 (Ctrl+B)",dd:"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430",dt:"\u0422\u0435\u0440\u043c\u0438\u043d \u0441\u043f\u0440\u0430\u0432\u043e\u0447\u043d\u0438\u043a\u0430",samp:"\u041f\u0440\u0438\u043c\u0435\u0440 \u043a\u043e\u0434\u0430",code:"\u041a\u043e\u0434",blockquote:"\u0426\u0438\u0442\u0430\u0442\u0430",h6:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6",h5:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5",h4:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4",h3:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3",h2:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2",h1:"\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1",pre:"\u041f\u0440\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439",address:"\u0410\u0434\u0440\u0435\u0441",div:"Div",paragraph:"\u0410\u0431\u0437\u0430\u0446",block:"\u0424\u043e\u0440\u043c\u0430\u0442",fontdefault:"\u0428\u0440\u0438\u0444\u0442","font_size":"\u0420\u0430\u0437\u043c\u0435\u0440","style_select":"\u0421\u0442\u0438\u043b\u044c","more_colors":"\u0414\u0440\u0443\u0433\u0438\u0435 \u0446\u0432\u0435\u0442\u0430...","toolbar_focus":"\u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043d\u0430 \u043f\u0430\u043d\u0435\u043b\u044c \u043a\u043d\u043e\u043f\u043e\u043a (Alt+Q). \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440\u0443 (Alt+Z). \u041f\u0435\u0440\u0435\u0439\u0442\u0438 \u043a \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u0443 \u043f\u0443\u0442\u0438 (Alt+X).",newdocument:"\u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0432\u0441\u0435 \u0443\u0434\u0430\u043b\u0438\u0442\u044c?",path:"\u0422\u0435\u0433\u0438","clipboard_msg":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435, \u0432\u044b\u0440\u0435\u0437\u043a\u0430 \u0438 \u0432\u0441\u0442\u0430\u0432\u043a\u0430 \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u044e\u0442 \u0432 Firefox. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438: Ctrl C \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c, Ctrl V \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u044c. \u041f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0443\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e?","blockquote_desc":"\u0426\u0438\u0442\u0430\u0442\u0430","help_desc":"\u041f\u043e\u043c\u043e\u0449\u044c","newdocument_desc":"\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442","image_props_desc":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","paste_desc":"\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c","copy_desc":"\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c","cut_desc":"\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c","anchor_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u044f\u043a\u043e\u0440\u044c","visualaid_desc":"\u0412\u0441\u0435 \u0437\u043d\u0430\u043a\u0438","charmap_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0438\u043c\u0432\u043e\u043b","backcolor_desc":"\u0426\u0432\u0435\u0442 \u0432\u044b\u0434\u0435\u043b\u0435\u043d\u0438\u044f \u0442\u0435\u043a\u0441\u0442\u0430","forecolor_desc":"\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430","custom1_desc":"\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e\u0435 \u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","removeformat_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442","hr_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0447\u0435\u0440\u0442\u0443","sup_desc":"\u041d\u0430\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439","sub_desc":"\u041f\u043e\u0434\u0441\u0442\u0440\u043e\u0447\u043d\u044b\u0439","code_desc":"\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c HTML \u043a\u043e\u0434","cleanup_desc":"\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u043b\u0438\u0448\u043d\u0438\u0439 \u043a\u043e\u0434","image_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435","unlink_desc":"\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","link_desc":"\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c/\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443","redo_desc":"\u0412\u0435\u0440\u043d\u0443\u0442\u044c (Ctrl+Y)","undo_desc":"\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c (Ctrl+Z)","indent_desc":"\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f","outdent_desc":"\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f","numlist_desc":"\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","bullist_desc":"\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a","justifyfull_desc":"\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435","justifyright_desc":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","justifycenter_desc":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","justifyleft_desc":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","striketrough_desc":"\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439","help_shortcut":"\u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F10 \u0434\u043b\u044f \u043f\u0430\u043d\u0435\u043b\u0438 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-0 \u0434\u043b\u044f \u0441\u043f\u0440\u0430\u0432\u043a\u0438.","rich_text_area":"\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0439 \u0440\u0435\u0434\u0430\u043a\u0442\u043e\u0440","shortcuts_desc":"\u041f\u043e\u043c\u043e\u0449\u044c \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438",toolbar:"\u041f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ru_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ru_dlg.js deleted file mode 100644 index c55d34a5a8..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/ru_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('ru.advanced_dlg',{"link_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u0441\u0441\u044b\u043b\u043e\u043a","link_is_external":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u0432\u043d\u0435\u0448\u043d\u044e\u044e \u0441\u0441\u044b\u043b\u043a\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 http://?","link_is_email":"\u0412\u0432\u0435\u0434\u0435\u043d\u043d\u044b\u0439 \u0430\u0434\u0440\u0435\u0441 \u043d\u0430\u043f\u043e\u043c\u0438\u043d\u0430\u0435\u0442 \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u0443\u044e \u043f\u043e\u0447\u0442\u0443, \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 mailto:?","link_titlefield":"\u041f\u043e\u0434\u0441\u043a\u0430\u0437\u043a\u0430","link_target_blank":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435","link_target_same":"\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432 \u044d\u0442\u043e\u043c \u043e\u043a\u043d\u0435","link_target":"\u0426\u0435\u043b\u044c","link_url":"\u0410\u0434\u0440\u0435\u0441","link_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0441\u044b\u043b\u043a\u0438","image_align_right":"\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_left":"\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_textbottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","image_align_texttop":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e \u0442\u0435\u043a\u0441\u0442\u0430","image_align_bottom":"\u041f\u043e \u043d\u0438\u0436\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_middle":"\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443","image_align_top":"\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u0435\u043c\u0443 \u043a\u0440\u0430\u044e","image_align_baseline":"\u041f\u043e \u0431\u0430\u0437\u043e\u0432\u043e\u0439 \u043b\u0438\u043d\u0438\u0438","image_align":"\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435","image_hspace":"\u0413\u043e\u0440\u0438\u0437. \u043e\u0442\u0441\u0442\u0443\u043f","image_vspace":"\u0412\u0435\u0440\u0442. \u043e\u0442\u0441\u0442\u0443\u043f","image_dimensions":"\u0420\u0430\u0437\u043c\u0435\u0440","image_alt":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","image_list":"\u0421\u043f\u0438\u0441\u043e\u043a \u043a\u0430\u0440\u0442\u0438\u043d\u043e\u043a","image_border":"\u0413\u0440\u0430\u043d\u0438\u0446\u0430","image_src":"\u0410\u0434\u0440\u0435\u0441","image_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f","charmap_title":"\u0412\u044b\u0431\u043e\u0440 \u0441\u0438\u043c\u0432\u043e\u043b\u0430","colorpicker_name":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u0435:","colorpicker_color":"\u041a\u043e\u0434:","colorpicker_named_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_named_tab":"\u041d\u0430\u0437\u0432\u0430\u043d\u0438\u044f","colorpicker_palette_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_palette_tab":"\u041f\u0430\u043b\u0438\u0442\u0440\u0430","colorpicker_picker_title":"\u0426\u0432\u0435\u0442\u0430","colorpicker_picker_tab":"\u0421\u043f\u0435\u043a\u0442\u0440","colorpicker_title":"\u0426\u0432\u0435\u0442\u0430","code_wordwrap":"\u041f\u0435\u0440\u0435\u043d\u043e\u0441 \u0441\u0442\u0440\u043e\u043a","code_title":"\u0420\u0435\u0434\u0430\u043a\u0442\u043e\u0440 HTML \u043a\u043e\u0434\u0430","anchor_name":"\u0418\u043c\u044f \u044f\u043a\u043e\u0440\u044f","anchor_title":"\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u043a\u043e\u0440\u044f","about_loaded":"\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u043d\u044b\u0435 \u043f\u043b\u0430\u0433\u0438\u043d\u044b","about_version":"\u0412\u0435\u0440\u0441\u0438\u044f","about_author":"\u0410\u0432\u0442\u043e\u0440","about_plugin":"\u041f\u043b\u0430\u0433\u0438\u043d","about_plugins":"\u041f\u043b\u0430\u0433\u0438\u043d\u044b","about_license":"\u041b\u0438\u0446\u0435\u043d\u0437\u0438\u044f","about_help":"\u041f\u043e\u043c\u043e\u0449\u044c","about_general":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435","about_title":"\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 TinyMCE","charmap_usage":"\u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u0438 \"\u0412\u043b\u0435\u0432\u043e\" \u0438 \"\u0412\u043f\u0440\u0430\u0432\u043e\" \u0434\u043b\u044f \u043d\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u0438.","anchor_invalid":"\u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0443\u043a\u0430\u0436\u0438\u0442\u0435 \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u043e\u0435 \u0438\u043c\u044f \u044f\u043a\u043e\u0440\u044f.","accessibility_help":"\u041f\u043e\u043c\u043e\u0449\u044c \u043f\u043e \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u0438","accessibility_usage_title":"\u041e\u0431\u0449\u0435\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435","invalid_color_value":"\u041d\u0435\u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0437\u043d\u0430\u0447\u043d\u0438\u0435 \u0446\u0432\u0435\u0442\u0430"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/sv.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/sv.js deleted file mode 100644 index 9a20833ad2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/sv.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.advanced',{"underline_desc":"Understruken (Ctrl+U)","italic_desc":"Kursiv (Ctrl+I)","bold_desc":"Fet (Ctrl+B)",dd:"Definitionsbeskrivning",dt:"Definitionsterm",samp:"Kodexempel",code:"Kodblock",blockquote:"Blockcitat",h6:"Rubrik 6",h5:"Rubrik 5",h4:"Rubrik 4",h3:"Rubrik 3",h2:"Rubrik 2",h1:"Rubrik 1",pre:"F\u00f6rformaterad",address:"Adress",div:"Div",paragraph:"Stycke",block:"Format",fontdefault:"Teckensnitt","font_size":"Teckenstorlek","style_select":"Stilar","more_colors":"Mer f\u00e4rger","toolbar_focus":"Hoppa till verktygsf\u00e4ltet - Alt+Q, Hoppa till redigeraren - Alt-Z, Hoppa till elementlistan - Alt-X",newdocument:"\u00c4r du s\u00e4ker p\u00e5 att du vill radera allt inneh\u00e5ll?",path:"Element","clipboard_msg":"Kopiera/klipp ut/klistra in \u00e4r inte tillg\u00e4ngligt i din webbl\u00e4sare.\nVill du veta mer om detta?","blockquote_desc":"Blockcitat","help_desc":"Hj\u00e4lp","newdocument_desc":"Nytt dokument","image_props_desc":"Bildinst\u00e4llningar","paste_desc":"Klistra in","copy_desc":"Kopiera","cut_desc":"Klipp ut","anchor_desc":"Infoga/redigera bokm\u00e4rke","visualaid_desc":"Visa/d\u00f6lj visuella hj\u00e4lpmedel","charmap_desc":"Infoga specialtecken","backcolor_desc":"V\u00e4lj bakgrundsf\u00e4rg","forecolor_desc":"V\u00e4lj textf\u00e4rg","custom1_desc":"Din beskrivning h\u00e4r","removeformat_desc":"Ta bort formatering","hr_desc":"Infoga horisontell skiljelinje","sup_desc":"Superscript","sub_desc":"Subscript","code_desc":"Redigera HTML k\u00e4llkoden","cleanup_desc":"St\u00e4da upp i k\u00e4llkoden","image_desc":"Infoga/redigera bild","unlink_desc":"Ta bort l\u00e4nk","link_desc":"Infoga/redigera l\u00e4nk","redo_desc":"G\u00f6r om (Ctrl+Y)","undo_desc":"\u00c5ngra (Ctrl+Z)","indent_desc":"Indrag","outdent_desc":"Drag tillbaka","numlist_desc":"Nummerlista","bullist_desc":"Punktlista","justifyfull_desc":"Justera","justifyright_desc":"H\u00f6gerst\u00e4lld","justifycenter_desc":"Centrera","justifyleft_desc":"V\u00e4nsterst\u00e4lld","striketrough_desc":"Genomstruken","help_shortcut":"Alt-F10 f\u00f6r verktygsf\u00e4lt. Alt-0 f\u00f6r hj\u00e4lp.","rich_text_area":"Redigeringsarea","shortcuts_desc":"Hj\u00e4lp f\u00f6r funktionshindrade",toolbar:"Verktygsf\u00e4lt","anchor_delta_height":"","anchor_delta_width":"","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","link_delta_height":"","link_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/sv_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/sv_dlg.js deleted file mode 100644 index f2da940ed9..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/sv_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('sv.advanced_dlg',{"link_list":"L\u00e4nklista","link_is_external":"L\u00e4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00e5 l\u00e4nken?","link_is_email":"L\u00e4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00e5 l\u00e4nken?","link_titlefield":"Titel","link_target_blank":"\u00d6\u0096ppna l\u00e4nken i ett nytt f\u00f6nster","link_target_same":"\u00d6\u0096ppna l\u00e4nken i samma f\u00f6nster","link_target":"M\u00e5l","link_url":"L\u00e4nkens URL","link_title":"Infoga/redigera l\u00e4nk","image_align_right":"H\u00f6ger","image_align_left":"V\u00e4nster","image_align_textbottom":"Botten av texten","image_align_texttop":"Toppen av texten","image_align_bottom":"Botten","image_align_middle":"Mitten","image_align_top":"Toppen","image_align_baseline":"Baslinje","image_align":"Justering","image_hspace":"Horisontalrymd","image_vspace":"Vertikalrymd","image_dimensions":"Dimensioner","image_alt":"Bildens beskrivning","image_list":"Bildlista","image_border":"Ram","image_src":"Bildens URL","image_title":"Infoga/redigera bild","charmap_title":"V\u00e4lj ett specialtecken","colorpicker_name":"Namn:","colorpicker_color":"F\u00e4rg:","colorpicker_named_title":"Namngivna f\u00e4rger","colorpicker_named_tab":"Namngivna","colorpicker_palette_title":"Palettf\u00e4rger","colorpicker_palette_tab":"Palett","colorpicker_picker_title":"F\u00e4rgv\u00e4ljare","colorpicker_picker_tab":"V\u00e4ljare","colorpicker_title":"V\u00e4lj en f\u00e4rg","code_wordwrap":"Bryt ord","code_title":"HTML k\u00e4llkodsl\u00e4ge","anchor_name":"Namn","anchor_title":"Infoga/redigera bokm\u00e4rke","about_loaded":"Laddade plug-ins","about_version":"Version","about_author":"Utvecklare","about_plugin":"Om plug-in","about_plugins":"Om plug-in","about_license":"Licens","about_help":"Hj\u00e4lp","about_general":"Om","about_title":"Om TinyMCE","charmap_usage":"Anv\u00e4nd v\u00e4nster och h\u00f6ger pil f\u00f6r att navigera","anchor_invalid":"Skiv ett korrekt ankarnamn.","accessibility_help":"Tillg\u00e4nglighets hj\u00e4lp","accessibility_usage_title":"Generellanv\u00e4ndning","invalid_color_value":"Felaktigt f\u00e4rgv\u00e4rde"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/zh.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/zh.js deleted file mode 100644 index fa35ae1e78..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/zh.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.advanced',{"underline_desc":"\u4e0b\u5212\u7ebf(Ctrl U)","italic_desc":"\u659c\u4f53(Ctrl I)","bold_desc":"\u7c97\u4f53(Ctrl B)",dd:"\u540d\u8bcd\u63cf\u8ff0",dt:"\u540d\u8bcd\u5b9a\u4e49",samp:"\u4ee3\u7801\u8303\u4f8b",code:"\u4ee3\u7801",blockquote:"\u5f15\u7528",h6:"\u6807\u98986",h5:"\u6807\u98985",h4:"\u6807\u98984",h3:"\u6807\u98983",h2:"\u6807\u98982",h1:"\u6807\u98981",pre:"\u9884\u8bbe\u683c\u5f0f",address:"\u5730\u5740",div:"div",paragraph:"\u6bb5\u843d",block:"\u683c\u5f0f\u5316",fontdefault:"\u5b57\u4f53","font_size":"\u5b57\u4f53\u5927\u5c0f","style_select":"\u6837\u5f0f","anchor_delta_height":"","anchor_delta_width":"","link_delta_height":"60","link_delta_width":"40","more_colors":"\u66f4\u591a\u989c\u8272","toolbar_focus":"\u8df3\u81f3\u5de5\u5177\u5217-Alt Q\uff0c\u8df3\u81f3\u7f16\u8f91\u6846-Alt Z\uff0c\u8df3\u81f3\u5143\u7d20\u8282\u70b9-Alt X\u3002",newdocument:"\u60a8\u786e\u5b9a\u8981\u6e05\u9664\u6240\u6709\u7f16\u8f91\u7684\u5185\u5bb9\u5417\uff1f",path:"\u8def\u5f84","clipboard_msg":"Mozilla\u548cFirefox\u4e0d\u652f\u6301\u590d\u5236/\u526a\u5207/\u7c98\u8d34\u3002\n\u60a8\u9700\u8981\u5173\u4e8e\u6b64\u95ee\u9898\u66f4\u8fdb\u4e00\u6b65\u7684\u4fe1\u606f\u5417\uff1f","blockquote_desc":"\u5f15\u7528","help_desc":"\u5e2e\u52a9","newdocument_desc":"\u65b0\u5efa\u6587\u4ef6","image_props_desc":"\u56fe\u7247\u5c5e\u6027","paste_desc":"\u7c98\u8d34(Ctrl V)","copy_desc":"\u590d\u5236(Ctrl C)","cut_desc":"\u526a\u5207(Ctrl X)","anchor_desc":"\u63d2\u5165/\u7f16\u8f91\u951a\u70b9","visualaid_desc":"\u663e\u793a/\u9690\u85cf\u76ee\u6807","charmap_desc":"\u63d2\u5165\u7279\u6b8a\u7b26\u53f7","backcolor_desc":"\u80cc\u666f\u989c\u8272","forecolor_desc":"\u5b57\u4f53\u989c\u8272","custom1_desc":"\u5728\u6b64\u8f93\u5165\u63cf\u8ff0","removeformat_desc":"\u6e05\u9664\u683c\u5f0f","hr_desc":"\u6c34\u5e73\u7ebf","sup_desc":"\u4e0a\u6807","sub_desc":"\u4e0b\u6807","code_desc":"\u7f16\u8f91HTML","cleanup_desc":"\u51c0\u5316\u4ee3\u7801","image_desc":"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247","unlink_desc":"\u5220\u9664\u94fe\u63a5","link_desc":"\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5","redo_desc":"\u6062\u590d(Ctrl Y)","undo_desc":"\u64a4\u6d88(Ctrl Z)","indent_desc":"\u589e\u52a0\u7f29\u8fdb","outdent_desc":"\u51cf\u5c11\u7f29\u8fdb","numlist_desc":"\u7f16\u53f7\u5217\u8868","bullist_desc":"\u9879\u76ee\u5217\u8868","justifyfull_desc":"\u4e24\u7aef\u5bf9\u9f50","justifyright_desc":"\u9760\u53f3\u5bf9\u9f50","justifycenter_desc":"\u5c45\u4e2d\u5bf9\u9f50","justifyleft_desc":"\u9760\u5de6\u5bf9\u9f50","striketrough_desc":"\u5220\u9664\u7ebf","help_shortcut":"\u6309ALT-F10\u5230\u5de5\u5177\u680f\uff0c\u6309ALT-0\u5230\u8bf4\u660e\u3002","rich_text_area":"\u5bcc\u6587\u672c\u7f16\u8f91\u533a","shortcuts_desc":"\u534f\u52a9\u5de5\u5177\u8bf4\u660e",toolbar:"\u5de5\u5177\u680f","charmap_delta_height":"","charmap_delta_width":"","colorpicker_delta_height":"","colorpicker_delta_width":"","image_delta_height":"","image_delta_width":""}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/zh_dlg.js b/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/zh_dlg.js deleted file mode 100644 index 3157ee2d0f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/langs/zh_dlg.js +++ /dev/null @@ -1 +0,0 @@ -tinyMCE.addI18n('zh.advanced_dlg',{"link_list":"\u94fe\u63a5\u6e05\u5355","link_is_external":"\u60a8\u6240\u8f93\u5165\u7684URL\u4f3c\u4e4e\u4e3a\u5916\u90e8\u94fe\u63a5\uff0c\u662f\u5426\u9700\u8981\u52a0\u4e0ahttp://\u524d\u7f00\uff1f","link_is_email":"\u60a8\u8f93\u5165\u7684URL\u4f3c\u4e4e\u662f\u7535\u5b50\u90ae\u4ef6\u4f4d\u5740\uff0c\u662f\u5426\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\uff1f","link_titlefield":"\u6807\u9898","link_target_blank":"\u5728\u65b0\u7a97\u53e3\u6253\u5f00\u94fe\u63a5","link_target_same":"\u5728\u5f53\u524d\u7a97\u53e3\u6253\u5f00\u94fe\u63a5","link_target":"\u94fe\u63a5\u76ee\u6807","link_url":"\u94fe\u63a5URL","link_title":"\u63d2\u5165/\u7f16\u8f91\u94fe\u63a5","image_align_right":"\u9760\u53f3","image_align_left":"\u9760\u5de6","image_align_textbottom":"\u6587\u5b57\u4e0b\u65b9","image_align_texttop":"\u6587\u5b57\u4e0a\u65b9","image_align_bottom":"\u9760\u4e0b","image_align_middle":"\u5782\u76f4\u5c45\u4e2d","image_align_top":"\u9760\u4e0a","image_align_baseline":"\u57fa\u51c6\u7ebf","image_align":"\u5bf9\u9f50\u65b9\u5f0f","image_hspace":"\u6c34\u5e73\u95f4\u8ddd","image_vspace":"\u5782\u76f4\u95f4\u8ddd","image_dimensions":"\u5c3a\u5bf8","image_alt":"\u56fe\u7247\u8bf4\u660e","image_list":"\u56fe\u7247\u6e05\u5355","image_border":"\u8fb9\u6846","image_src":"\u56fe\u7247URL","image_title":"\u63d2\u5165/\u7f16\u8f91\u56fe\u7247","charmap_title":"\u63d2\u5165\u7279\u6b8a\u7b26\u53f7","colorpicker_name":"\u540d\u79f0\uff1a","colorpicker_color":"\u989c\u8272\uff1a","colorpicker_named_title":"\u547d\u540d\u7684\u989c\u8272","colorpicker_named_tab":"\u547d\u540d\u7684","colorpicker_palette_title":"WEB\u989c\u8272","colorpicker_palette_tab":"\u5b89\u5168\u8272","colorpicker_picker_title":"\u8c03\u8272\u76d8","colorpicker_picker_tab":"\u62fe\u53d6\u5668","colorpicker_title":"\u9009\u62e9\u989c\u8272","code_wordwrap":"\u81ea\u52a8\u6362\u884c","code_title":"HTML\u7f16\u8f91\u5668","anchor_name":"\u951a\u70b9\u540d\u79f0","anchor_title":"\u63d2\u5165/\u7f16\u8f91\u951a\u70b9","about_loaded":"\u88c5\u8f7d\u7684\u63d2\u4ef6","about_version":"\u7248\u672c","about_author":"\u4f5c\u8005","about_plugin":"\u63d2\u4ef6","about_plugins":"\u63d2\u4ef6","about_license":"\u6388\u6743","about_help":"\u5e2e\u52a9","about_general":"\u5173\u4e8e","about_title":"\u5173\u4e8eTinyMCE","charmap_usage":"\u4f7f\u7528\u5de6\u53f3\u65b9\u5411\u952e\u5207\u6362\u3002","anchor_invalid":"\u8bf7\u8f93\u5165\u6709\u6548\u7684\u951a\u70b9\u540d\u79f0\u3002","accessibility_help":"\u534f\u52a9\u5de5\u5177\u8bf4\u660e","accessibility_usage_title":"\u666e\u901a\u7528\u9014","invalid_color_value":"\u9519\u8bef\u7684\u989c\u8272\u503c"}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/link.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/link.htm deleted file mode 100644 index 4a2459f8a5..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/link.htm +++ /dev/null @@ -1,57 +0,0 @@ - - - - {#advanced_dlg.link_title} - - - - - - - -
                      - - -
                      -
                      - - - - - - - - - - - - - - - - - - - - - -
                      - - - - -
                       
                      -
                      -
                      - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/shortcuts.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/shortcuts.htm deleted file mode 100644 index 436091f145..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/shortcuts.htm +++ /dev/null @@ -1,47 +0,0 @@ - - - - {#advanced_dlg.accessibility_help} - - - - -

                      {#advanced_dlg.accessibility_usage_title}

                      -

                      Toolbars

                      -

                      Press ALT-F10 to move focus to the toolbars. Navigate through the buttons using the arrow keys. - Press enter to activate a button and return focus to the editor. - Press escape to return focus to the editor without performing any actions.

                      - -

                      Status Bar

                      -

                      To access the editor status bar, press ALT-F11. Use the left and right arrow keys to navigate between elements in the path. - Press enter or space to select an element. Press escape to return focus to the editor without changing the selection.

                      - -

                      Context Menu

                      -

                      Press shift-F10 to activate the context menu. Use the up and down arrow keys to move between menu items. To open sub-menus press the right arrow key. - To close submenus press the left arrow key. Press escape to close the context menu.

                      - -

                      Keyboard Shortcuts

                      - - - - - - - - - - - - - - - - - - - - - -
                      KeystrokeFunction
                      Control-BBold
                      Control-IItalic
                      Control-ZUndo
                      Control-YRedo
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/content.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/content.css deleted file mode 100644 index 4d63ca9810..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/content.css +++ /dev/null @@ -1,50 +0,0 @@ -body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} -body {background:#FFF;} -body.mceForceColors {background:#FFF; color:#000;} -body.mceBrowserDefaults {background:transparent; color:inherit; font-size:inherit; font-family:inherit;} -h1 {font-size: 2em} -h2 {font-size: 1.5em} -h3 {font-size: 1.17em} -h4 {font-size: 1em} -h5 {font-size: .83em} -h6 {font-size: .75em} -.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} -a.mceItemAnchor {display:inline-block; -webkit-user-select:all; -webkit-user-modify:read-only; -moz-user-select:all; -moz-user-modify:read-only; width:11px !important; height:11px !important; background:url(img/items.gif) no-repeat center center} -span.mceItemNbsp {background: #DDD} -td.mceSelected, th.mceSelected {background-color:#3399ff !important} -img {border:0;} -table, img, hr, .mceItemAnchor {cursor:default} -table td, table th {cursor:text} -ins {border-bottom:1px solid green; text-decoration: none; color:green} -del {color:red; text-decoration:line-through} -cite {border-bottom:1px dashed blue} -acronym {border-bottom:1px dotted #CCC; cursor:help} -abbr {border-bottom:1px dashed #CCC; cursor:help} - -/* IE */ -* html body { -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -} - -img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} -font[face=mceinline] {font-family:inherit !important} -*[contentEditable]:focus {outline:0} - -.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc} -.mceItemShockWave {background-image:url(../../img/shockwave.gif)} -.mceItemFlash {background-image:url(../../img/flash.gif)} -.mceItemQuickTime {background-image:url(../../img/quicktime.gif)} -.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)} -.mceItemRealMedia {background-image:url(../../img/realmedia.gif)} -.mceItemVideo {background-image:url(../../img/video.gif)} -.mceItemAudio {background-image:url(../../img/video.gif)} -.mceItemEmbeddedAudio {background-image:url(../../img/video.gif)} -.mceItemIframe {background-image:url(../../img/iframe.gif)} -.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/dialog.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/dialog.css deleted file mode 100644 index 8950ba3851..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/dialog.css +++ /dev/null @@ -1,118 +0,0 @@ -/* Generic */ -body { -font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDDDDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -background:#F0F0EE; -padding:0; -margin:8px 8px 0 8px; -} - -html {background:#F0F0EE;} -td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -textarea {resize:none;outline:none;} -a:link, a:visited {color:black;} -a:hover {color:#2B6FB6;} -.nowrap {white-space: nowrap} - -/* Forms */ -fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} -legend {color:#2B6FB6; font-weight:bold;} -label.msg {display:none;} -label.invalid {color:#EE0000; display:inline;} -input.invalid {border:1px solid #EE0000;} -input {background:#FFF; border:1px solid #CCC;} -input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -input, select, textarea {border:1px solid #808080;} -input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} -input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} -.input_noborder {border:0;} - -/* Buttons */ -#insert, #cancel, input.button, .updateButton { -border:0; margin:0; padding:0; -font-weight:bold; -width:94px; height:26px; -background:url(img/buttons.png) 0 -26px; -cursor:pointer; -padding-bottom:2px; -float:left; -} - -#insert {background:url(img/buttons.png) 0 -52px} -#cancel {background:url(img/buttons.png) 0 0; float:right} - -/* Browse */ -a.pickcolor, a.browse {text-decoration:none} -a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} -.mceOldBoxModel a.browse span {width:22px; height:20px;} -a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} -a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} -.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} -a.pickcolor:hover span {background-color:#B2BBD0;} -a.pickcolor:hover span.disabled {} - -/* Charmap */ -table.charmap {border:1px solid #AAA; text-align:center} -td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} -#charmap a {display:block; color:#000; text-decoration:none; border:0} -#charmap a:hover {background:#CCC;color:#2B6FB6} -#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} -#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} - -/* Source */ -.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} -.mceActionPanel {margin-top:5px;} - -/* Tabs classes */ -.tabs {width:100%; height:18px; line-height:normal; background:url(img/tabs.gif) repeat-x 0 -72px;} -.tabs ul {margin:0; padding:0; list-style:none;} -.tabs li {float:left; background:url(img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} -.tabs li.current {background:url(img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} -.tabs span {float:left; display:block; background:url(img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} -.tabs .current span {background:url(img/tabs.gif) no-repeat right -54px;} -.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} -.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} - -/* Panels */ -.panel_wrapper div.panel {display:none;} -.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} -.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} - -/* Columns */ -.column {float:left;} -.properties {width:100%;} -.properties .column1 {} -.properties .column2 {text-align:left;} - -/* Titles */ -h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} -h3 {font-size:14px;} -.title {font-size:12px; font-weight:bold; color:#2B6FB6;} - -/* Dialog specific */ -#link .panel_wrapper, #link div.current {height:125px;} -#image .panel_wrapper, #image div.current {height:200px;} -#plugintable thead {font-weight:bold; background:#DDD;} -#plugintable, #about #plugintable td {border:1px solid #919B9C;} -#plugintable {width:96%; margin-top:10px;} -#pluginscontainer {height:290px; overflow:auto;} -#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px} -#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline} -#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap} -#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} -#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} -#colorpicker #light div {overflow:hidden;} -#colorpicker .panel_wrapper div.current {height:175px;} -#colorpicker #namedcolors {width:150px;} -#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} -#colorpicker #colornamecontainer {margin-top:5px;} -#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/buttons.png b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/buttons.png deleted file mode 100644 index 1e53560e0a..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/buttons.png and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/items.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/items.gif deleted file mode 100644 index d2f93671ca..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/items.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif deleted file mode 100644 index 85e31dfb2d..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/menu_arrow.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/menu_check.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/menu_check.gif deleted file mode 100644 index adfdddccd7..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/menu_check.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/progress.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/progress.gif deleted file mode 100644 index 5bb90fd6a4..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/progress.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/tabs.gif b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/tabs.gif deleted file mode 100644 index 06812cb410..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/img/tabs.gif and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/ui.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/ui.css deleted file mode 100644 index 2e8c658891..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/default/ui.css +++ /dev/null @@ -1,219 +0,0 @@ -/* Reset */ -.defaultSkin table, .defaultSkin tbody, .defaultSkin a, .defaultSkin img, .defaultSkin tr, .defaultSkin div, .defaultSkin td, .defaultSkin iframe, .defaultSkin span, .defaultSkin *, .defaultSkin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} -.defaultSkin a:hover, .defaultSkin a:link, .defaultSkin a:visited, .defaultSkin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} -.defaultSkin table td {vertical-align:middle} - -/* Containers */ -.defaultSkin table {direction:ltr;background:transparent} -.defaultSkin iframe {display:block;} -.defaultSkin .mceToolbar {height:26px} -.defaultSkin .mceLeft {text-align:left} -.defaultSkin .mceRight {text-align:right} - -/* External */ -.defaultSkin .mceExternalToolbar {position:absolute; border:1px solid #CCC; border-bottom:0; display:none;} -.defaultSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} -.defaultSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} - -/* Layout */ -.defaultSkin table.mceLayout {border:0; border-left:1px solid #CCC; border-right:1px solid #CCC} -.defaultSkin table.mceLayout tr.mceFirst td {border-top:1px solid #CCC} -.defaultSkin table.mceLayout tr.mceLast td {border-bottom:1px solid #CCC} -.defaultSkin table.mceToolbar, .defaultSkin tr.mceFirst .mceToolbar tr td, .defaultSkin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0;} -.defaultSkin td.mceToolbar {background:#F0F0EE; padding-top:1px; vertical-align:top} -.defaultSkin .mceIframeContainer {border-top:1px solid #CCC; border-bottom:1px solid #CCC} -.defaultSkin .mceStatusbar {background:#F0F0EE; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; display:block; height:20px} -.defaultSkin .mceStatusbar div {float:left; margin:2px} -.defaultSkin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} -.defaultSkin .mceStatusbar a:hover {text-decoration:underline} -.defaultSkin table.mceToolbar {margin-left:3px} -.defaultSkin span.mceIcon, .defaultSkin img.mceIcon {display:block; width:20px; height:20px} -.defaultSkin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} -.defaultSkin td.mceCenter {text-align:center;} -.defaultSkin td.mceCenter table {margin:0 auto; text-align:left;} -.defaultSkin td.mceRight table {margin:0 0 0 auto;} - -/* Button */ -.defaultSkin .mceButton {display:block; border:1px solid #F0F0EE; width:20px; height:20px; margin-right:1px} -.defaultSkin a.mceButtonEnabled:hover {border:1px solid #0A246A; background-color:#B2BBD0} -.defaultSkin a.mceButtonActive, .defaultSkin a.mceButtonSelected {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSkin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.defaultSkin .mceButtonLabeled {width:auto} -.defaultSkin .mceButtonLabeled span.mceIcon {float:left} -.defaultSkin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} -.defaultSkin .mceButtonDisabled .mceButtonLabel {color:#888} - -/* Separator */ -.defaultSkin .mceSeparator {display:block; background:url(../../img/icons.gif) -180px 0; width:2px; height:20px; margin:2px 2px 0 4px} - -/* ListBox */ -.defaultSkin .mceListBox, .defaultSkin .mceListBox a {display:block} -.defaultSkin .mceListBox .mceText {padding-left:4px; width:70px; text-align:left; border:1px solid #CCC; border-right:0; background:#FFF; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} -.defaultSkin .mceListBox .mceOpen {width:9px; height:20px; background:url(../../img/icons.gif) -741px 0; margin-right:2px; border:1px solid #CCC;} -.defaultSkin table.mceListBoxEnabled:hover .mceText, .defaultSkin .mceListBoxHover .mceText, .defaultSkin .mceListBoxSelected .mceText {border:1px solid #A2ABC0; border-right:0; background:#FFF} -.defaultSkin table.mceListBoxEnabled:hover .mceOpen, .defaultSkin .mceListBoxHover .mceOpen, .defaultSkin .mceListBoxSelected .mceOpen {background-color:#FFF; border:1px solid #A2ABC0} -.defaultSkin .mceListBoxDisabled a.mceText {color:gray; background-color:transparent;} -.defaultSkin .mceListBoxMenu {overflow:auto; overflow-x:hidden} -.defaultSkin .mceOldBoxModel .mceListBox .mceText {height:22px} -.defaultSkin .mceOldBoxModel .mceListBox .mceOpen {width:11px; height:22px;} -.defaultSkin select.mceNativeListBox {font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:7pt; background:#F0F0EE; border:1px solid gray; margin-right:2px;} - -/* SplitButton */ -.defaultSkin .mceSplitButton {width:32px; height:20px; direction:ltr} -.defaultSkin .mceSplitButton a, .defaultSkin .mceSplitButton span {height:20px; display:block} -.defaultSkin .mceSplitButton a.mceAction {width:20px; border:1px solid #F0F0EE; border-right:0;} -.defaultSkin .mceSplitButton span.mceAction {width:20px; background-image:url(../../img/icons.gif);} -.defaultSkin .mceSplitButton a.mceOpen {width:9px; background:url(../../img/icons.gif) -741px 0; border:1px solid #F0F0EE;} -.defaultSkin .mceSplitButton span.mceOpen {display:none} -.defaultSkin table.mceSplitButtonEnabled:hover a.mceAction, .defaultSkin .mceSplitButtonHover a.mceAction, .defaultSkin .mceSplitButtonSelected a.mceAction {border:1px solid #0A246A; border-right:0; background-color:#B2BBD0} -.defaultSkin table.mceSplitButtonEnabled:hover a.mceOpen, .defaultSkin .mceSplitButtonHover a.mceOpen, .defaultSkin .mceSplitButtonSelected a.mceOpen {background-color:#B2BBD0; border:1px solid #0A246A;} -.defaultSkin .mceSplitButtonDisabled .mceAction, .defaultSkin .mceSplitButtonDisabled a.mceOpen {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.defaultSkin .mceSplitButtonActive a.mceAction {border:1px solid #0A246A; background-color:#C2CBE0} -.defaultSkin .mceSplitButtonActive a.mceOpen {border-left:0;} - -/* ColorSplitButton */ -.defaultSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} -.defaultSkin .mceColorSplitMenu td {padding:2px} -.defaultSkin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} -.defaultSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} -.defaultSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} -.defaultSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} -.defaultSkin a.mceMoreColors:hover {border:1px solid #0A246A} -.defaultSkin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a} -.defaultSkin .mce_forecolor span.mceAction, .defaultSkin .mce_backcolor span.mceAction {overflow:hidden; height:16px} - -/* Menu */ -.defaultSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #D4D0C8; direction:ltr} -.defaultSkin .mceNoIcons span.mceIcon {width:0;} -.defaultSkin .mceNoIcons a .mceText {padding-left:10px} -.defaultSkin .mceMenu table {background:#FFF} -.defaultSkin .mceMenu a, .defaultSkin .mceMenu span, .defaultSkin .mceMenu {display:block} -.defaultSkin .mceMenu td {height:20px} -.defaultSkin .mceMenu a {position:relative;padding:3px 0 4px 0} -.defaultSkin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} -.defaultSkin .mceMenu span.mceText, .defaultSkin .mceMenu .mcePreview {font-size:11px} -.defaultSkin .mceMenu pre.mceText {font-family:Monospace} -.defaultSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} -.defaultSkin .mceMenu .mceMenuItemEnabled a:hover, .defaultSkin .mceMenu .mceMenuItemActive {background-color:#dbecf3} -.defaultSkin td.mceMenuItemSeparator {background:#DDD; height:1px} -.defaultSkin .mceMenuItemTitle a {border:0; background:#EEE; border-bottom:1px solid #DDD} -.defaultSkin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} -.defaultSkin .mceMenuItemDisabled .mceText {color:#888} -.defaultSkin .mceMenuItemSelected .mceIcon {background:url(img/menu_check.gif)} -.defaultSkin .mceNoIcons .mceMenuItemSelected a {background:url(img/menu_arrow.gif) no-repeat -6px center} -.defaultSkin .mceMenu span.mceMenuLine {display:none} -.defaultSkin .mceMenuItemSub a {background:url(img/menu_arrow.gif) no-repeat top right;} -.defaultSkin .mceMenuItem td, .defaultSkin .mceMenuItem th {line-height: normal} - -/* Progress,Resize */ -.defaultSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=50)'; filter:alpha(opacity=50); background:#FFF} -.defaultSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} - -/* Rtl */ -.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0} -.mceRtl .mceMenuItem .mceText {text-align: right} - -/* Formats */ -.defaultSkin .mce_formatPreview a {font-size:10px} -.defaultSkin .mce_p span.mceText {} -.defaultSkin .mce_address span.mceText {font-style:italic} -.defaultSkin .mce_pre span.mceText {font-family:monospace} -.defaultSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} -.defaultSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} -.defaultSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} -.defaultSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} -.defaultSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} -.defaultSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} - -/* Theme */ -.defaultSkin span.mce_bold {background-position:0 0} -.defaultSkin span.mce_italic {background-position:-60px 0} -.defaultSkin span.mce_underline {background-position:-140px 0} -.defaultSkin span.mce_strikethrough {background-position:-120px 0} -.defaultSkin span.mce_undo {background-position:-160px 0} -.defaultSkin span.mce_redo {background-position:-100px 0} -.defaultSkin span.mce_cleanup {background-position:-40px 0} -.defaultSkin span.mce_bullist {background-position:-20px 0} -.defaultSkin span.mce_numlist {background-position:-80px 0} -.defaultSkin span.mce_justifyleft {background-position:-460px 0} -.defaultSkin span.mce_justifyright {background-position:-480px 0} -.defaultSkin span.mce_justifycenter {background-position:-420px 0} -.defaultSkin span.mce_justifyfull {background-position:-440px 0} -.defaultSkin span.mce_anchor {background-position:-200px 0} -.defaultSkin span.mce_indent {background-position:-400px 0} -.defaultSkin span.mce_outdent {background-position:-540px 0} -.defaultSkin span.mce_link {background-position:-500px 0} -.defaultSkin span.mce_unlink {background-position:-640px 0} -.defaultSkin span.mce_sub {background-position:-600px 0} -.defaultSkin span.mce_sup {background-position:-620px 0} -.defaultSkin span.mce_removeformat {background-position:-580px 0} -.defaultSkin span.mce_newdocument {background-position:-520px 0} -.defaultSkin span.mce_image {background-position:-380px 0} -.defaultSkin span.mce_help {background-position:-340px 0} -.defaultSkin span.mce_code {background-position:-260px 0} -.defaultSkin span.mce_hr {background-position:-360px 0} -.defaultSkin span.mce_visualaid {background-position:-660px 0} -.defaultSkin span.mce_charmap {background-position:-240px 0} -.defaultSkin span.mce_paste {background-position:-560px 0} -.defaultSkin span.mce_copy {background-position:-700px 0} -.defaultSkin span.mce_cut {background-position:-680px 0} -.defaultSkin span.mce_blockquote {background-position:-220px 0} -.defaultSkin .mce_forecolor span.mceAction {background-position:-720px 0} -.defaultSkin .mce_backcolor span.mceAction {background-position:-760px 0} -.defaultSkin span.mce_forecolorpicker {background-position:-720px 0} -.defaultSkin span.mce_backcolorpicker {background-position:-760px 0} - -/* Plugins */ -.defaultSkin span.mce_advhr {background-position:-0px -20px} -.defaultSkin span.mce_ltr {background-position:-20px -20px} -.defaultSkin span.mce_rtl {background-position:-40px -20px} -.defaultSkin span.mce_emotions {background-position:-60px -20px} -.defaultSkin span.mce_fullpage {background-position:-80px -20px} -.defaultSkin span.mce_fullscreen {background-position:-100px -20px} -.defaultSkin span.mce_iespell {background-position:-120px -20px} -.defaultSkin span.mce_insertdate {background-position:-140px -20px} -.defaultSkin span.mce_inserttime {background-position:-160px -20px} -.defaultSkin span.mce_absolute {background-position:-180px -20px} -.defaultSkin span.mce_backward {background-position:-200px -20px} -.defaultSkin span.mce_forward {background-position:-220px -20px} -.defaultSkin span.mce_insert_layer {background-position:-240px -20px} -.defaultSkin span.mce_insertlayer {background-position:-260px -20px} -.defaultSkin span.mce_movebackward {background-position:-280px -20px} -.defaultSkin span.mce_moveforward {background-position:-300px -20px} -.defaultSkin span.mce_media {background-position:-320px -20px} -.defaultSkin span.mce_nonbreaking {background-position:-340px -20px} -.defaultSkin span.mce_pastetext {background-position:-360px -20px} -.defaultSkin span.mce_pasteword {background-position:-380px -20px} -.defaultSkin span.mce_selectall {background-position:-400px -20px} -.defaultSkin span.mce_preview {background-position:-420px -20px} -.defaultSkin span.mce_print {background-position:-440px -20px} -.defaultSkin span.mce_cancel {background-position:-460px -20px} -.defaultSkin span.mce_save {background-position:-480px -20px} -.defaultSkin span.mce_replace {background-position:-500px -20px} -.defaultSkin span.mce_search {background-position:-520px -20px} -.defaultSkin span.mce_styleprops {background-position:-560px -20px} -.defaultSkin span.mce_table {background-position:-580px -20px} -.defaultSkin span.mce_cell_props {background-position:-600px -20px} -.defaultSkin span.mce_delete_table {background-position:-620px -20px} -.defaultSkin span.mce_delete_col {background-position:-640px -20px} -.defaultSkin span.mce_delete_row {background-position:-660px -20px} -.defaultSkin span.mce_col_after {background-position:-680px -20px} -.defaultSkin span.mce_col_before {background-position:-700px -20px} -.defaultSkin span.mce_row_after {background-position:-720px -20px} -.defaultSkin span.mce_row_before {background-position:-740px -20px} -.defaultSkin span.mce_merge_cells {background-position:-760px -20px} -.defaultSkin span.mce_table_props {background-position:-980px -20px} -.defaultSkin span.mce_row_props {background-position:-780px -20px} -.defaultSkin span.mce_split_cells {background-position:-800px -20px} -.defaultSkin span.mce_template {background-position:-820px -20px} -.defaultSkin span.mce_visualchars {background-position:-840px -20px} -.defaultSkin span.mce_abbr {background-position:-860px -20px} -.defaultSkin span.mce_acronym {background-position:-880px -20px} -.defaultSkin span.mce_attribs {background-position:-900px -20px} -.defaultSkin span.mce_cite {background-position:-920px -20px} -.defaultSkin span.mce_del {background-position:-940px -20px} -.defaultSkin span.mce_ins {background-position:-960px -20px} -.defaultSkin span.mce_pagebreak {background-position:0 -40px} -.defaultSkin span.mce_restoredraft {background-position:-20px -40px} -.defaultSkin span.mce_spellchecker {background-position:-540px -20px} -.defaultSkin span.mce_visualblocks {background-position: -40px -40px} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/content.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/content.css deleted file mode 100644 index ee3d369d02..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/content.css +++ /dev/null @@ -1,24 +0,0 @@ -body, td, pre { margin:8px;} -body.mceForceColors {background:#FFF; color:#000;} -h1 {font-size: 2em} -h2 {font-size: 1.5em} -h3 {font-size: 1.17em} -h4 {font-size: 1em} -h5 {font-size: .83em} -h6 {font-size: .75em} -.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} -a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} -span.mceItemNbsp {background: #DDD} -td.mceSelected, th.mceSelected {background-color:#3399ff !important} -img {border:0;} -table, img, hr, .mceItemAnchor {cursor:default} -table td, table th {cursor:text} -ins {border-bottom:1px solid green; text-decoration: none; color:green} -del {color:red; text-decoration:line-through} -cite {border-bottom:1px dashed blue} -acronym {border-bottom:1px dotted #CCC; cursor:help} -abbr {border-bottom:1px dashed #CCC; cursor:help} - -img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} -font[face=mceinline] {font-family:inherit !important} -*[contentEditable]:focus {outline:0} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/dialog.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/dialog.css deleted file mode 100644 index fa3c31a05d..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/dialog.css +++ /dev/null @@ -1,106 +0,0 @@ -/* Generic */ -body { -font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; -background:#F0F0EE; -color: black; -padding:0; -margin:8px 8px 0 8px; -} - -html {background:#F0F0EE; color:#000;} -td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -textarea {resize:none;outline:none;} -a:link, a:visited {color:black;background-color:transparent;} -a:hover {color:#2B6FB6;background-color:transparent;} -.nowrap {white-space: nowrap} - -/* Forms */ -fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} -legend {color:#2B6FB6; font-weight:bold;} -label.msg {display:none;} -label.invalid {color:#EE0000; display:inline;background-color:transparent;} -input.invalid {border:1px solid #EE0000;background-color:transparent;} -input {background:#FFF; border:1px solid #CCC;color:black;} -input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -input, select, textarea {border:1px solid #808080;} -input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} -input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} -.input_noborder {border:0;} - -/* Buttons */ -#insert, #cancel, input.button, .updateButton { -font-weight:bold; -width:94px; height:23px; -cursor:pointer; -padding-bottom:2px; -float:left; -} - -#cancel {float:right} - -/* Browse */ -a.pickcolor, a.browse {text-decoration:none} -a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} -.mceOldBoxModel a.browse span {width:22px; height:20px;} -a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} -a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} -.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} -a.pickcolor:hover span {background-color:#B2BBD0;} -a.pickcolor:hover span.disabled {} - -/* Charmap */ -table.charmap {border:1px solid #AAA; text-align:center} -td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} -#charmap a {display:block; color:#000; text-decoration:none; border:0} -#charmap a:hover {background:#CCC;color:#2B6FB6} -#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} -#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} - -/* Source */ -.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} -.mceActionPanel {margin-top:5px;} - -/* Tabs classes */ -.tabs {width:100%; height:18px; line-height:normal;} -.tabs ul {margin:0; padding:0; list-style:none;} -.tabs li {float:left; border: 1px solid black; border-bottom:0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block; cursor:pointer;} -.tabs li.current {font-weight: bold; margin-right:2px;} -.tabs span {float:left; display:block; padding:0px 10px 0 0;} -.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} -.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} - -/* Panels */ -.panel_wrapper div.panel {display:none;} -.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} -.panel_wrapper {border:1px solid #919B9C; padding:10px; padding-top:5px; clear:both; background:white;} - -/* Columns */ -.column {float:left;} -.properties {width:100%;} -.properties .column1 {} -.properties .column2 {text-align:left;} - -/* Titles */ -h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} -h3 {font-size:14px;} -.title {font-size:12px; font-weight:bold; color:#2B6FB6;} - -/* Dialog specific */ -#link .panel_wrapper, #link div.current {height:125px;} -#image .panel_wrapper, #image div.current {height:200px;} -#plugintable thead {font-weight:bold; background:#DDD;} -#plugintable, #about #plugintable td {border:1px solid #919B9C;} -#plugintable {width:96%; margin-top:10px;} -#pluginscontainer {height:290px; overflow:auto;} -#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px} -#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline} -#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap} -#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} -#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} -#colorpicker #light div {overflow:hidden;} -#colorpicker .panel_wrapper div.current {height:175px;} -#colorpicker #namedcolors {width:150px;} -#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} -#colorpicker #colornamecontainer {margin-top:5px;} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/ui.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/ui.css deleted file mode 100644 index 86829c59c1..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/highcontrast/ui.css +++ /dev/null @@ -1,106 +0,0 @@ -/* Reset */ -.highcontrastSkin table, .highcontrastSkin tbody, .highcontrastSkin a, .highcontrastSkin img, .highcontrastSkin tr, .highcontrastSkin div, .highcontrastSkin td, .highcontrastSkin iframe, .highcontrastSkin span, .highcontrastSkin *, .highcontrastSkin .mceText {border:0; margin:0; padding:0; vertical-align:baseline; border-collapse:separate;} -.highcontrastSkin a:hover, .highcontrastSkin a:link, .highcontrastSkin a:visited, .highcontrastSkin a:active {text-decoration:none; font-weight:normal; cursor:default;} -.highcontrastSkin table td {vertical-align:middle} - -.highcontrastSkin .mceIconOnly {display: block !important;} - -/* External */ -.highcontrastSkin .mceExternalToolbar {position:absolute; border:1px solid; border-bottom:0; display:none; background-color: white;} -.highcontrastSkin .mceExternalToolbar td.mceToolbar {padding-right:13px;} -.highcontrastSkin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px;} - -/* Layout */ -.highcontrastSkin table.mceLayout {border: 1px solid;} -.highcontrastSkin .mceIframeContainer {border-top:1px solid; border-bottom:1px solid} -.highcontrastSkin .mceStatusbar a:hover {text-decoration:underline} -.highcontrastSkin .mceStatusbar {display:block; line-height:1.5em; overflow:visible;} -.highcontrastSkin .mceStatusbar div {float:left} -.highcontrastSkin .mceStatusbar a.mceResize {display:block; float:right; width:20px; height:20px; cursor:se-resize; outline:0} - -.highcontrastSkin .mceToolbar td { display: inline-block; float: left;} -.highcontrastSkin .mceToolbar tr { display: block;} -.highcontrastSkin .mceToolbar table { display: block; } - -/* Button */ - -.highcontrastSkin .mceButton { display:block; margin: 2px; padding: 5px 10px;border: 1px solid; border-radius: 3px; -moz-border-radius: 3px; -webkit-border-radius: 3px; -ms-border-radius: 3px; height: 2em;} -.highcontrastSkin .mceButton .mceVoiceLabel { height: 100%; vertical-align: center; line-height: 2em} -.highcontrastSkin .mceButtonDisabled .mceVoiceLabel { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);} -.highcontrastSkin .mceButtonActive, .highcontrastSkin .mceButton:focus, .highcontrastSkin .mceButton:active { border: 5px solid; padding: 1px 6px;-webkit-focus-ring-color:none;outline:none;} - -/* Separator */ -.highcontrastSkin .mceSeparator {display:block; width:16px; height:26px;} - -/* ListBox */ -.highcontrastSkin .mceListBox { display: block; margin:2px;-webkit-focus-ring-color:none;outline:none;} -.highcontrastSkin .mceListBox .mceText {padding: 5px 6px; line-height: 2em; width: 15ex; overflow: hidden;} -.highcontrastSkin .mceListBoxDisabled .mceText { opacity:0.6; -ms-filter:'alpha(opacity=60)'; filter:alpha(opacity=60);} -.highcontrastSkin .mceListBox a.mceText { padding: 5px 10px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;} -.highcontrastSkin .mceListBox a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-left: 0; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;} -.highcontrastSkin .mceListBox:focus a.mceText, .highcontrastSkin .mceListBox:active a.mceText { border-width: 5px; padding: 1px 10px 1px 6px;} -.highcontrastSkin .mceListBox:focus a.mceOpen, .highcontrastSkin .mceListBox:active a.mceOpen { border-width: 5px; padding: 1px 0px 1px 4px;} - -.highcontrastSkin .mceListBoxMenu {overflow-y:auto} - -/* SplitButton */ -.highcontrastSkin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} - -.highcontrastSkin .mceSplitButton { border-collapse: collapse; margin: 2px; height: 2em; line-height: 2em;-webkit-focus-ring-color:none;outline:none;} -.highcontrastSkin .mceSplitButton td { display: table-cell; float: none; margin: 0; padding: 0; height: 2em;} -.highcontrastSkin .mceSplitButton tr { display: table-row; } -.highcontrastSkin table.mceSplitButton { display: table; } -.highcontrastSkin .mceSplitButton a.mceAction { padding: 5px 10px; display: block; height: 2em; line-height: 2em; overflow: hidden; border: 1px solid; border-right: 0; border-radius: 3px 0px 0px 3px; -moz-border-radius: 3px 0px 0px 3px; -webkit-border-radius: 3px 0px 0px 3px; -ms-border-radius: 3px 0px 0px 3px;} -.highcontrastSkin .mceSplitButton a.mceOpen { padding: 5px 4px; display: block; height: 2em; line-height: 2em; border: 1px solid; border-radius: 0px 3px 3px 0px; -moz-border-radius: 0px 3px 3px 0px; -webkit-border-radius: 0px 3px 3px 0px; -ms-border-radius: 0px 3px 3px 0px;} -.highcontrastSkin .mceSplitButton .mceVoiceLabel { height: 2em; vertical-align: center; line-height: 2em; } -.highcontrastSkin .mceSplitButton:focus a.mceAction, .highcontrastSkin .mceSplitButton:active a.mceAction { border-width: 5px; border-right-width: 1px; padding: 1px 10px 1px 6px;-webkit-focus-ring-color:none;outline:none;} -.highcontrastSkin .mceSplitButton:focus a.mceOpen, .highcontrastSkin .mceSplitButton:active a.mceOpen { border-width: 5px; border-left-width: 1px; padding: 1px 0px 1px 4px;-webkit-focus-ring-color:none;outline:none;} - -/* Menu */ -.highcontrastSkin .mceNoIcons span.mceIcon {width:0;} -.highcontrastSkin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid; direction:ltr} -.highcontrastSkin .mceMenu table {background:white; color: black} -.highcontrastSkin .mceNoIcons a .mceText {padding-left:10px} -.highcontrastSkin .mceMenu a, .highcontrastSkin .mceMenu span, .highcontrastSkin .mceMenu {display:block;background:white; color: black} -.highcontrastSkin .mceMenu td {height:2em} -.highcontrastSkin .mceMenu a {position:relative;padding:3px 0 4px 0; display: block;} -.highcontrastSkin .mceMenu .mceText {position:relative; display:block; cursor:default; margin:0; padding:0 25px 0 25px;} -.highcontrastSkin .mceMenu pre.mceText {font-family:Monospace} -.highcontrastSkin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:26px;} -.highcontrastSkin td.mceMenuItemSeparator {border-top:1px solid; height:1px} -.highcontrastSkin .mceMenuItemTitle a {border:0; border-bottom:1px solid} -.highcontrastSkin .mceMenuItemTitle span.mceText {font-weight:bold; padding-left:4px} -.highcontrastSkin .mceNoIcons .mceMenuItemSelected span.mceText:before {content: "\2713\A0";} -.highcontrastSkin .mceMenu span.mceMenuLine {display:none} -.highcontrastSkin .mceMenuItemSub a .mceText:after {content: "\A0\25B8"} -.highcontrastSkin .mceMenuItem td, .highcontrastSkin .mceMenuItem th {line-height: normal} - -/* ColorSplitButton */ -.highcontrastSkin div.mceColorSplitMenu table {background:#FFF; border:1px solid; color: #000} -.highcontrastSkin .mceColorSplitMenu td {padding:2px} -.highcontrastSkin .mceColorSplitMenu a {display:block; width:16px; height:16px; overflow:hidden; color:#000; margin: 0; padding: 0;} -.highcontrastSkin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} -.highcontrastSkin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} -.highcontrastSkin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid; background-color:#B6BDD2} -.highcontrastSkin a.mceMoreColors:hover {border:1px solid #0A246A; color: #000;} -.highcontrastSkin .mceColorPreview {display:none;} -.highcontrastSkin .mce_forecolor span.mceAction, .highcontrastSkin .mce_backcolor span.mceAction {height:17px;overflow:hidden} - -/* Progress,Resize */ -.highcontrastSkin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} -.highcontrastSkin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} - -/* Rtl */ -.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0} -.mceRtl .mceMenuItem .mceText {text-align: right} - -/* Formats */ -.highcontrastSkin .mce_p span.mceText {} -.highcontrastSkin .mce_address span.mceText {font-style:italic} -.highcontrastSkin .mce_pre span.mceText {font-family:monospace} -.highcontrastSkin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} -.highcontrastSkin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} -.highcontrastSkin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} -.highcontrastSkin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} -.highcontrastSkin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} -.highcontrastSkin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/content.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/content.css deleted file mode 100644 index 631fa0ec87..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/content.css +++ /dev/null @@ -1,48 +0,0 @@ -body, td, pre {color:#000; font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px; margin:8px;} -body {background:#FFF;} -body.mceForceColors {background:#FFF; color:#000;} -h1 {font-size: 2em} -h2 {font-size: 1.5em} -h3 {font-size: 1.17em} -h4 {font-size: 1em} -h5 {font-size: .83em} -h6 {font-size: .75em} -.mceItemTable, .mceItemTable td, .mceItemTable th, .mceItemTable caption, .mceItemVisualAid {border: 1px dashed #BBB;} -a.mceItemAnchor {display:inline-block; width:11px !important; height:11px !important; background:url(../default/img/items.gif) no-repeat 0 0;} -span.mceItemNbsp {background: #DDD} -td.mceSelected, th.mceSelected {background-color:#3399ff !important} -img {border:0;} -table, img, hr, .mceItemAnchor {cursor:default} -table td, table th {cursor:text} -ins {border-bottom:1px solid green; text-decoration: none; color:green} -del {color:red; text-decoration:line-through} -cite {border-bottom:1px dashed blue} -acronym {border-bottom:1px dotted #CCC; cursor:help} -abbr {border-bottom:1px dashed #CCC; cursor:help} - -/* IE */ -* html body { -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -} - -img:-moz-broken {-moz-force-broken-image-icon:1; width:24px; height:24px} -font[face=mceinline] {font-family:inherit !important} -*[contentEditable]:focus {outline:0} - -.mceItemMedia {border:1px dotted #cc0000; background-position:center; background-repeat:no-repeat; background-color:#ffffcc} -.mceItemShockWave {background-image:url(../../img/shockwave.gif)} -.mceItemFlash {background-image:url(../../img/flash.gif)} -.mceItemQuickTime {background-image:url(../../img/quicktime.gif)} -.mceItemWindowsMedia {background-image:url(../../img/windowsmedia.gif)} -.mceItemRealMedia {background-image:url(../../img/realmedia.gif)} -.mceItemVideo {background-image:url(../../img/video.gif)} -.mceItemAudio {background-image:url(../../img/video.gif)} -.mceItemIframe {background-image:url(../../img/iframe.gif)} -.mcePageBreak {display:block;border:0;width:100%;height:12px;border-top:1px dotted #ccc;margin-top:15px;background:#fff url(../../img/pagebreak.gif) no-repeat center top;} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/dialog.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/dialog.css deleted file mode 100644 index 84d2fe9722..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/dialog.css +++ /dev/null @@ -1,118 +0,0 @@ -/* Generic */ -body { -font-family:Verdana, Arial, Helvetica, sans-serif; font-size:11px; -scrollbar-3dlight-color:#F0F0EE; -scrollbar-arrow-color:#676662; -scrollbar-base-color:#F0F0EE; -scrollbar-darkshadow-color:#DDDDDD; -scrollbar-face-color:#E0E0DD; -scrollbar-highlight-color:#F0F0EE; -scrollbar-shadow-color:#F0F0EE; -scrollbar-track-color:#F5F5F5; -background:#F0F0EE; -padding:0; -margin:8px 8px 0 8px; -} - -html {background:#F0F0EE;} -td {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -textarea {resize:none;outline:none;} -a:link, a:visited {color:black;} -a:hover {color:#2B6FB6;} -.nowrap {white-space: nowrap} - -/* Forms */ -fieldset {margin:0; padding:4px; border:1px solid #919B9C; font-family:Verdana, Arial; font-size:10px;} -legend {color:#2B6FB6; font-weight:bold;} -label.msg {display:none;} -label.invalid {color:#EE0000; display:inline;} -input.invalid {border:1px solid #EE0000;} -input {background:#FFF; border:1px solid #CCC;} -input, select, textarea {font-family:Verdana, Arial, Helvetica, sans-serif; font-size:10px;} -input, select, textarea {border:1px solid #808080;} -input.radio {border:1px none #000000; background:transparent; vertical-align:middle;} -input.checkbox {border:1px none #000000; background:transparent; vertical-align:middle;} -.input_noborder {border:0;} - -/* Buttons */ -#insert, #cancel, input.button, .updateButton { -border:0; margin:0; padding:0; -font-weight:bold; -width:94px; height:26px; -background:url(../default/img/buttons.png) 0 -26px; -cursor:pointer; -padding-bottom:2px; -float:left; -} - -#insert {background:url(../default/img/buttons.png) 0 -52px} -#cancel {background:url(../default/img/buttons.png) 0 0; float:right} - -/* Browse */ -a.pickcolor, a.browse {text-decoration:none} -a.browse span {display:block; width:20px; height:18px; background:url(../../img/icons.gif) -860px 0; border:1px solid #FFF; margin-left:1px;} -.mceOldBoxModel a.browse span {width:22px; height:20px;} -a.browse:hover span {border:1px solid #0A246A; background-color:#B2BBD0;} -a.browse span.disabled {border:1px solid white; opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -a.browse:hover span.disabled {border:1px solid white; background-color:transparent;} -a.pickcolor span {display:block; width:20px; height:16px; background:url(../../img/icons.gif) -840px 0; margin-left:2px;} -.mceOldBoxModel a.pickcolor span {width:21px; height:17px;} -a.pickcolor:hover span {background-color:#B2BBD0;} -a.pickcolor:hover span.disabled {} - -/* Charmap */ -table.charmap {border:1px solid #AAA; text-align:center} -td.charmap, #charmap a {width:18px; height:18px; color:#000; border:1px solid #AAA; text-align:center; font-size:12px; vertical-align:middle; line-height: 18px;} -#charmap a {display:block; color:#000; text-decoration:none; border:0} -#charmap a:hover {background:#CCC;color:#2B6FB6} -#charmap #codeN {font-size:10px; font-family:Arial,Helvetica,sans-serif; text-align:center} -#charmap #codeV {font-size:40px; height:80px; border:1px solid #AAA; text-align:center} - -/* Source */ -.wordWrapCode {vertical-align:middle; border:1px none #000000; background:transparent;} -.mceActionPanel {margin-top:5px;} - -/* Tabs classes */ -.tabs {width:100%; height:18px; line-height:normal; background:url(../default/img/tabs.gif) repeat-x 0 -72px;} -.tabs ul {margin:0; padding:0; list-style:none;} -.tabs li {float:left; background:url(../default/img/tabs.gif) no-repeat 0 0; margin:0 2px 0 0; padding:0 0 0 10px; line-height:17px; height:18px; display:block;} -.tabs li.current {background:url(../default/img/tabs.gif) no-repeat 0 -18px; margin-right:2px;} -.tabs span {float:left; display:block; background:url(../default/img/tabs.gif) no-repeat right -36px; padding:0px 10px 0 0;} -.tabs .current span {background:url(../default/img/tabs.gif) no-repeat right -54px;} -.tabs a {text-decoration:none; font-family:Verdana, Arial; font-size:10px;} -.tabs a:link, .tabs a:visited, .tabs a:hover {color:black;} - -/* Panels */ -.panel_wrapper div.panel {display:none;} -.panel_wrapper div.current {display:block; width:100%; height:300px; overflow:visible;} -.panel_wrapper {border:1px solid #919B9C; border-top:0px; padding:10px; padding-top:5px; clear:both; background:white;} - -/* Columns */ -.column {float:left;} -.properties {width:100%;} -.properties .column1 {} -.properties .column2 {text-align:left;} - -/* Titles */ -h1, h2, h3, h4 {color:#2B6FB6; margin:0; padding:0; padding-top:5px;} -h3 {font-size:14px;} -.title {font-size:12px; font-weight:bold; color:#2B6FB6;} - -/* Dialog specific */ -#link .panel_wrapper, #link div.current {height:125px;} -#image .panel_wrapper, #image div.current {height:200px;} -#plugintable thead {font-weight:bold; background:#DDD;} -#plugintable, #about #plugintable td {border:1px solid #919B9C;} -#plugintable {width:96%; margin-top:10px;} -#pluginscontainer {height:290px; overflow:auto;} -#colorpicker #preview {display:inline-block; padding-left:40px; height:14px; border:1px solid black; margin-left:5px; margin-right: 5px} -#colorpicker #previewblock {position: relative; top: -3px; padding-left:5px; padding-top: 0px; display:inline} -#colorpicker #preview_wrapper { text-align:center; padding-top:4px; white-space: nowrap} -#colorpicker #colors {float:left; border:1px solid gray; cursor:crosshair;} -#colorpicker #light {border:1px solid gray; margin-left:5px; float:left;width:15px; height:150px; cursor:crosshair;} -#colorpicker #light div {overflow:hidden;} -#colorpicker .panel_wrapper div.current {height:175px;} -#colorpicker #namedcolors {width:150px;} -#colorpicker #namedcolors a {display:block; float:left; width:10px; height:10px; margin:1px 1px 0 0; overflow:hidden;} -#colorpicker #colornamecontainer {margin-top:5px;} -#colorpicker #picker_panel fieldset {margin:auto;width:325px;} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png deleted file mode 100644 index 13a5cb0309..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg.png and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png deleted file mode 100644 index 7fc57f2bc2..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_black.png and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png deleted file mode 100644 index c0dcc6cac2..0000000000 Binary files a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/img/button_bg_silver.png and /dev/null differ diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui.css deleted file mode 100644 index abd5d8deba..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui.css +++ /dev/null @@ -1,222 +0,0 @@ -/* Reset */ -.o2k7Skin table, .o2k7Skin tbody, .o2k7Skin a, .o2k7Skin img, .o2k7Skin tr, .o2k7Skin div, .o2k7Skin td, .o2k7Skin iframe, .o2k7Skin span, .o2k7Skin *, .o2k7Skin .mceText {border:0; margin:0; padding:0; background:transparent; white-space:nowrap; text-decoration:none; font-weight:normal; cursor:default; color:#000; vertical-align:baseline; width:auto; border-collapse:separate; text-align:left} -.o2k7Skin a:hover, .o2k7Skin a:link, .o2k7Skin a:visited, .o2k7Skin a:active {text-decoration:none; font-weight:normal; cursor:default; color:#000} -.o2k7Skin table td {vertical-align:middle} - -/* Containers */ -.o2k7Skin table {background:transparent} -.o2k7Skin iframe {display:block;} -.o2k7Skin .mceToolbar {height:26px} - -/* External */ -.o2k7Skin .mceExternalToolbar {position:absolute; border:1px solid #ABC6DD; border-bottom:0; display:none} -.o2k7Skin .mceExternalToolbar td.mceToolbar {padding-right:13px;} -.o2k7Skin .mceExternalClose {position:absolute; top:3px; right:3px; width:7px; height:7px; background:url(../../img/icons.gif) -820px 0} - -/* Layout */ -.o2k7Skin table.mceLayout {border:0; border-left:1px solid #ABC6DD; border-right:1px solid #ABC6DD} -.o2k7Skin table.mceLayout tr.mceFirst td {border-top:1px solid #ABC6DD} -.o2k7Skin table.mceLayout tr.mceLast td {border-bottom:1px solid #ABC6DD} -.o2k7Skin table.mceToolbar, .o2k7Skin tr.mceFirst .mceToolbar tr td, .o2k7Skin tr.mceLast .mceToolbar tr td {border:0; margin:0; padding:0} -.o2k7Skin .mceIframeContainer {border-top:1px solid #ABC6DD; border-bottom:1px solid #ABC6DD} -.o2k7Skin td.mceToolbar{background:#E5EFFD} -.o2k7Skin .mceStatusbar {background:#E5EFFD; display:block; font-family:'MS Sans Serif',sans-serif,Verdana,Arial; font-size:9pt; line-height:16px; overflow:visible; color:#000; height:20px} -.o2k7Skin .mceStatusbar div {float:left; padding:2px} -.o2k7Skin .mceStatusbar a.mceResize {display:block; float:right; background:url(../../img/icons.gif) -800px 0; width:20px; height:20px; cursor:se-resize; outline:0} -.o2k7Skin .mceStatusbar a:hover {text-decoration:underline} -.o2k7Skin table.mceToolbar {margin-left:3px} -.o2k7Skin .mceToolbar .mceToolbarStart span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px; margin-left:3px;} -.o2k7Skin .mceToolbar td.mceFirst span {margin:0} -.o2k7Skin .mceToolbar .mceToolbarEnd span {display:block; background:url(img/button_bg.png) -22px 0; width:1px; height:22px} -.o2k7Skin .mceToolbar .mceToolbarEndListBox span, .o2k7Skin .mceToolbar .mceToolbarStartListBox span {display:none} -.o2k7Skin span.mceIcon, .o2k7Skin img.mceIcon {display:block; width:20px; height:20px} -.o2k7Skin .mceIcon {background:url(../../img/icons.gif) no-repeat 20px 20px} -.o2k7Skin td.mceCenter {text-align:center;} -.o2k7Skin td.mceCenter table {margin:0 auto; text-align:left;} -.o2k7Skin td.mceRight table {margin:0 0 0 auto;} - -/* Button */ -.o2k7Skin .mceButton {display:block; background:url(img/button_bg.png); width:22px; height:22px} -.o2k7Skin a.mceButton span, .o2k7Skin a.mceButton img {margin-left:1px} -.o2k7Skin .mceOldBoxModel a.mceButton span, .o2k7Skin .mceOldBoxModel a.mceButton img {margin:0 0 0 1px} -.o2k7Skin a.mceButtonEnabled:hover {background-color:#B2BBD0; background-position:0 -22px} -.o2k7Skin a.mceButtonActive, .o2k7Skin a.mceButtonSelected {background-position:0 -44px} -.o2k7Skin .mceButtonDisabled .mceIcon {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.o2k7Skin .mceButtonLabeled {width:auto} -.o2k7Skin .mceButtonLabeled span.mceIcon {float:left} -.o2k7Skin span.mceButtonLabel {display:block; font-size:10px; padding:4px 6px 0 22px; font-family:Tahoma,Verdana,Arial,Helvetica} -.o2k7Skin .mceButtonDisabled .mceButtonLabel {color:#888} - -/* Separator */ -.o2k7Skin .mceSeparator {display:block; background:url(img/button_bg.png) -22px 0; width:5px; height:22px} - -/* ListBox */ -.o2k7Skin .mceListBox {padding-left: 3px} -.o2k7Skin .mceListBox, .o2k7Skin .mceListBox a {display:block} -.o2k7Skin .mceListBox .mceText {padding-left:4px; text-align:left; width:70px; border:1px solid #b3c7e1; border-right:0; background:#eaf2fb; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; height:20px; line-height:20px; overflow:hidden} -.o2k7Skin .mceListBox .mceOpen {width:14px; height:22px; background:url(img/button_bg.png) -66px 0} -.o2k7Skin table.mceListBoxEnabled:hover .mceText, .o2k7Skin .mceListBoxHover .mceText, .o2k7Skin .mceListBoxSelected .mceText {background:#FFF} -.o2k7Skin table.mceListBoxEnabled:hover .mceOpen, .o2k7Skin .mceListBoxHover .mceOpen, .o2k7Skin .mceListBoxSelected .mceOpen {background-position:-66px -22px} -.o2k7Skin .mceListBoxDisabled .mceText {color:gray} -.o2k7Skin .mceListBoxMenu {overflow:auto; overflow-x:hidden; margin-left:3px} -.o2k7Skin .mceOldBoxModel .mceListBox .mceText {height:22px} -.o2k7Skin select.mceListBox {font-family:Tahoma,Verdana,Arial,Helvetica; font-size:12px; border:1px solid #b3c7e1; background:#FFF;} - -/* SplitButton */ -.o2k7Skin .mceSplitButton, .o2k7Skin .mceSplitButton a, .o2k7Skin .mceSplitButton span {display:block; height:22px; direction:ltr} -.o2k7Skin .mceSplitButton {background:url(img/button_bg.png)} -.o2k7Skin .mceSplitButton a.mceAction {width:22px} -.o2k7Skin .mceSplitButton span.mceAction {width:22px; background-image:url(../../img/icons.gif)} -.o2k7Skin .mceSplitButton a.mceOpen {width:10px; background:url(img/button_bg.png) -44px 0} -.o2k7Skin .mceSplitButton span.mceOpen {display:none} -.o2k7Skin table.mceSplitButtonEnabled:hover a.mceAction, .o2k7Skin .mceSplitButtonHover a.mceAction, .o2k7Skin .mceSplitButtonSelected {background:url(img/button_bg.png) 0 -22px} -.o2k7Skin table.mceSplitButtonEnabled:hover a.mceOpen, .o2k7Skin .mceSplitButtonHover a.mceOpen, .o2k7Skin .mceSplitButtonSelected a.mceOpen {background-position:-44px -44px} -.o2k7Skin .mceSplitButtonDisabled .mceAction {opacity:0.3; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=30)} -.o2k7Skin .mceSplitButtonActive {background-position:0 -44px} - -/* ColorSplitButton */ -.o2k7Skin div.mceColorSplitMenu table {background:#FFF; border:1px solid gray} -.o2k7Skin .mceColorSplitMenu td {padding:2px} -.o2k7Skin .mceColorSplitMenu a {display:block; width:9px; height:9px; overflow:hidden; border:1px solid #808080} -.o2k7Skin .mceColorSplitMenu td.mceMoreColors {padding:1px 3px 1px 1px} -.o2k7Skin .mceColorSplitMenu a.mceMoreColors {width:100%; height:auto; text-align:center; font-family:Tahoma,Verdana,Arial,Helvetica; font-size:11px; line-height:20px; border:1px solid #FFF} -.o2k7Skin .mceColorSplitMenu a.mceMoreColors:hover {border:1px solid #0A246A; background-color:#B6BDD2} -.o2k7Skin a.mceMoreColors:hover {border:1px solid #0A246A} -.o2k7Skin .mceColorPreview {margin-left:2px; width:16px; height:4px; overflow:hidden; background:#9a9b9a;overflow:hidden} -.o2k7Skin .mce_forecolor span.mceAction, .o2k7Skin .mce_backcolor span.mceAction {height:15px;overflow:hidden} - -/* Menu */ -.o2k7Skin .mceMenu {position:absolute; left:0; top:0; z-index:1000; border:1px solid #ABC6DD; direction:ltr} -.o2k7Skin .mceNoIcons span.mceIcon {width:0;} -.o2k7Skin .mceNoIcons a .mceText {padding-left:10px} -.o2k7Skin .mceMenu table {background:#FFF} -.o2k7Skin .mceMenu a, .o2k7Skin .mceMenu span, .o2k7Skin .mceMenu {display:block} -.o2k7Skin .mceMenu td {height:20px} -.o2k7Skin .mceMenu a {position:relative;padding:3px 0 4px 0} -.o2k7Skin .mceMenu .mceText {position:relative; display:block; font-family:Tahoma,Verdana,Arial,Helvetica; color:#000; cursor:default; margin:0; padding:0 25px 0 25px; display:block} -.o2k7Skin .mceMenu span.mceText, .o2k7Skin .mceMenu .mcePreview {font-size:11px} -.o2k7Skin .mceMenu pre.mceText {font-family:Monospace} -.o2k7Skin .mceMenu .mceIcon {position:absolute; top:0; left:0; width:22px;} -.o2k7Skin .mceMenu .mceMenuItemEnabled a:hover, .o2k7Skin .mceMenu .mceMenuItemActive {background-color:#dbecf3} -.o2k7Skin td.mceMenuItemSeparator {background:#DDD; height:1px} -.o2k7Skin .mceMenuItemTitle a {border:0; background:#E5EFFD; border-bottom:1px solid #ABC6DD} -.o2k7Skin .mceMenuItemTitle span.mceText {color:#000; font-weight:bold; padding-left:4px} -.o2k7Skin .mceMenuItemDisabled .mceText {color:#888} -.o2k7Skin .mceMenuItemSelected .mceIcon {background:url(../default/img/menu_check.gif)} -.o2k7Skin .mceNoIcons .mceMenuItemSelected a {background:url(../default/img/menu_arrow.gif) no-repeat -6px center} -.o2k7Skin .mceMenu span.mceMenuLine {display:none} -.o2k7Skin .mceMenuItemSub a {background:url(../default/img/menu_arrow.gif) no-repeat top right;} -.o2k7Skin .mceMenuItem td, .o2k7Skin .mceMenuItem th {line-height: normal} - -/* Progress,Resize */ -.o2k7Skin .mceBlocker {position:absolute; left:0; top:0; z-index:1000; opacity:0.5; -ms-filter:'alpha(opacity=30)'; filter:alpha(opacity=50); background:#FFF} -.o2k7Skin .mceProgress {position:absolute; left:0; top:0; z-index:1001; background:url(../default/img/progress.gif) no-repeat; width:32px; height:32px; margin:-16px 0 0 -16px} - -/* Rtl */ -.mceRtl .mceListBox .mceText {text-align: right; padding: 0 4px 0 0} -.mceRtl .mceMenuItem .mceText {text-align: right} - -/* Formats */ -.o2k7Skin .mce_formatPreview a {font-size:10px} -.o2k7Skin .mce_p span.mceText {} -.o2k7Skin .mce_address span.mceText {font-style:italic} -.o2k7Skin .mce_pre span.mceText {font-family:monospace} -.o2k7Skin .mce_h1 span.mceText {font-weight:bolder; font-size: 2em} -.o2k7Skin .mce_h2 span.mceText {font-weight:bolder; font-size: 1.5em} -.o2k7Skin .mce_h3 span.mceText {font-weight:bolder; font-size: 1.17em} -.o2k7Skin .mce_h4 span.mceText {font-weight:bolder; font-size: 1em} -.o2k7Skin .mce_h5 span.mceText {font-weight:bolder; font-size: .83em} -.o2k7Skin .mce_h6 span.mceText {font-weight:bolder; font-size: .75em} - -/* Theme */ -.o2k7Skin span.mce_bold {background-position:0 0} -.o2k7Skin span.mce_italic {background-position:-60px 0} -.o2k7Skin span.mce_underline {background-position:-140px 0} -.o2k7Skin span.mce_strikethrough {background-position:-120px 0} -.o2k7Skin span.mce_undo {background-position:-160px 0} -.o2k7Skin span.mce_redo {background-position:-100px 0} -.o2k7Skin span.mce_cleanup {background-position:-40px 0} -.o2k7Skin span.mce_bullist {background-position:-20px 0} -.o2k7Skin span.mce_numlist {background-position:-80px 0} -.o2k7Skin span.mce_justifyleft {background-position:-460px 0} -.o2k7Skin span.mce_justifyright {background-position:-480px 0} -.o2k7Skin span.mce_justifycenter {background-position:-420px 0} -.o2k7Skin span.mce_justifyfull {background-position:-440px 0} -.o2k7Skin span.mce_anchor {background-position:-200px 0} -.o2k7Skin span.mce_indent {background-position:-400px 0} -.o2k7Skin span.mce_outdent {background-position:-540px 0} -.o2k7Skin span.mce_link {background-position:-500px 0} -.o2k7Skin span.mce_unlink {background-position:-640px 0} -.o2k7Skin span.mce_sub {background-position:-600px 0} -.o2k7Skin span.mce_sup {background-position:-620px 0} -.o2k7Skin span.mce_removeformat {background-position:-580px 0} -.o2k7Skin span.mce_newdocument {background-position:-520px 0} -.o2k7Skin span.mce_image {background-position:-380px 0} -.o2k7Skin span.mce_help {background-position:-340px 0} -.o2k7Skin span.mce_code {background-position:-260px 0} -.o2k7Skin span.mce_hr {background-position:-360px 0} -.o2k7Skin span.mce_visualaid {background-position:-660px 0} -.o2k7Skin span.mce_charmap {background-position:-240px 0} -.o2k7Skin span.mce_paste {background-position:-560px 0} -.o2k7Skin span.mce_copy {background-position:-700px 0} -.o2k7Skin span.mce_cut {background-position:-680px 0} -.o2k7Skin span.mce_blockquote {background-position:-220px 0} -.o2k7Skin .mce_forecolor span.mceAction {background-position:-720px 0} -.o2k7Skin .mce_backcolor span.mceAction {background-position:-760px 0} -.o2k7Skin span.mce_forecolorpicker {background-position:-720px 0} -.o2k7Skin span.mce_backcolorpicker {background-position:-760px 0} - -/* Plugins */ -.o2k7Skin span.mce_advhr {background-position:-0px -20px} -.o2k7Skin span.mce_ltr {background-position:-20px -20px} -.o2k7Skin span.mce_rtl {background-position:-40px -20px} -.o2k7Skin span.mce_emotions {background-position:-60px -20px} -.o2k7Skin span.mce_fullpage {background-position:-80px -20px} -.o2k7Skin span.mce_fullscreen {background-position:-100px -20px} -.o2k7Skin span.mce_iespell {background-position:-120px -20px} -.o2k7Skin span.mce_insertdate {background-position:-140px -20px} -.o2k7Skin span.mce_inserttime {background-position:-160px -20px} -.o2k7Skin span.mce_absolute {background-position:-180px -20px} -.o2k7Skin span.mce_backward {background-position:-200px -20px} -.o2k7Skin span.mce_forward {background-position:-220px -20px} -.o2k7Skin span.mce_insert_layer {background-position:-240px -20px} -.o2k7Skin span.mce_insertlayer {background-position:-260px -20px} -.o2k7Skin span.mce_movebackward {background-position:-280px -20px} -.o2k7Skin span.mce_moveforward {background-position:-300px -20px} -.o2k7Skin span.mce_media {background-position:-320px -20px} -.o2k7Skin span.mce_nonbreaking {background-position:-340px -20px} -.o2k7Skin span.mce_pastetext {background-position:-360px -20px} -.o2k7Skin span.mce_pasteword {background-position:-380px -20px} -.o2k7Skin span.mce_selectall {background-position:-400px -20px} -.o2k7Skin span.mce_preview {background-position:-420px -20px} -.o2k7Skin span.mce_print {background-position:-440px -20px} -.o2k7Skin span.mce_cancel {background-position:-460px -20px} -.o2k7Skin span.mce_save {background-position:-480px -20px} -.o2k7Skin span.mce_replace {background-position:-500px -20px} -.o2k7Skin span.mce_search {background-position:-520px -20px} -.o2k7Skin span.mce_styleprops {background-position:-560px -20px} -.o2k7Skin span.mce_table {background-position:-580px -20px} -.o2k7Skin span.mce_cell_props {background-position:-600px -20px} -.o2k7Skin span.mce_delete_table {background-position:-620px -20px} -.o2k7Skin span.mce_delete_col {background-position:-640px -20px} -.o2k7Skin span.mce_delete_row {background-position:-660px -20px} -.o2k7Skin span.mce_col_after {background-position:-680px -20px} -.o2k7Skin span.mce_col_before {background-position:-700px -20px} -.o2k7Skin span.mce_row_after {background-position:-720px -20px} -.o2k7Skin span.mce_row_before {background-position:-740px -20px} -.o2k7Skin span.mce_merge_cells {background-position:-760px -20px} -.o2k7Skin span.mce_table_props {background-position:-980px -20px} -.o2k7Skin span.mce_row_props {background-position:-780px -20px} -.o2k7Skin span.mce_split_cells {background-position:-800px -20px} -.o2k7Skin span.mce_template {background-position:-820px -20px} -.o2k7Skin span.mce_visualchars {background-position:-840px -20px} -.o2k7Skin span.mce_abbr {background-position:-860px -20px} -.o2k7Skin span.mce_acronym {background-position:-880px -20px} -.o2k7Skin span.mce_attribs {background-position:-900px -20px} -.o2k7Skin span.mce_cite {background-position:-920px -20px} -.o2k7Skin span.mce_del {background-position:-940px -20px} -.o2k7Skin span.mce_ins {background-position:-960px -20px} -.o2k7Skin span.mce_pagebreak {background-position:0 -40px} -.o2k7Skin span.mce_restoredraft {background-position:-20px -40px} -.o2k7Skin span.mce_spellchecker {background-position:-540px -20px} -.o2k7Skin span.mce_visualblocks {background-position: -40px -40px} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui_black.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui_black.css deleted file mode 100644 index 85812cde3f..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui_black.css +++ /dev/null @@ -1,8 +0,0 @@ -/* Black */ -.o2k7SkinBlack .mceToolbar .mceToolbarStart span, .o2k7SkinBlack .mceToolbar .mceToolbarEnd span, .o2k7SkinBlack .mceButton, .o2k7SkinBlack .mceSplitButton, .o2k7SkinBlack .mceSeparator, .o2k7SkinBlack .mceSplitButton a.mceOpen, .o2k7SkinBlack .mceListBox a.mceOpen {background-image:url(img/button_bg_black.png)} -.o2k7SkinBlack td.mceToolbar, .o2k7SkinBlack td.mceStatusbar, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack .mceMenuItemTitle span.mceText, .o2k7SkinBlack .mceStatusbar div, .o2k7SkinBlack .mceStatusbar span, .o2k7SkinBlack .mceStatusbar a {background:#535353; color:#FFF} -.o2k7SkinBlack table.mceListBoxEnabled .mceText, o2k7SkinBlack .mceListBox .mceText {background:#FFF; border:1px solid #CBCFD4; border-bottom-color:#989FA9; border-right:0} -.o2k7SkinBlack table.mceListBoxEnabled:hover .mceText, .o2k7SkinBlack .mceListBoxHover .mceText, .o2k7SkinBlack .mceListBoxSelected .mceText {background:#FFF; border:1px solid #FFBD69; border-right:0} -.o2k7SkinBlack .mceExternalToolbar, .o2k7SkinBlack .mceListBox .mceText, .o2k7SkinBlack div.mceMenu, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceFirst td, .o2k7SkinBlack table.mceLayout, .o2k7SkinBlack .mceMenuItemTitle a, .o2k7SkinBlack table.mceLayout tr.mceLast td, .o2k7SkinBlack .mceIframeContainer {border-color: #535353;} -.o2k7SkinBlack table.mceSplitButtonEnabled:hover a.mceAction, .o2k7SkinBlack .mceSplitButtonHover a.mceAction, .o2k7SkinBlack .mceSplitButtonSelected {background-image:url(img/button_bg_black.png)} -.o2k7SkinBlack .mceMenu .mceMenuItemEnabled a:hover, .o2k7SkinBlack .mceMenu .mceMenuItemActive {background-color:#FFE7A1} \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css b/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css deleted file mode 100644 index d64c361693..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/skins/o2k7/ui_silver.css +++ /dev/null @@ -1,5 +0,0 @@ -/* Silver */ -.o2k7SkinSilver .mceToolbar .mceToolbarStart span, .o2k7SkinSilver .mceButton, .o2k7SkinSilver .mceSplitButton, .o2k7SkinSilver .mceSeparator, .o2k7SkinSilver .mceSplitButton a.mceOpen, .o2k7SkinSilver .mceListBox a.mceOpen {background-image:url(img/button_bg_silver.png)} -.o2k7SkinSilver td.mceToolbar, .o2k7SkinSilver td.mceStatusbar, .o2k7SkinSilver .mceMenuItemTitle a {background:#eee} -.o2k7SkinSilver .mceListBox .mceText {background:#FFF} -.o2k7SkinSilver .mceExternalToolbar, .o2k7SkinSilver .mceListBox .mceText, .o2k7SkinSilver div.mceMenu, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceFirst td, .o2k7SkinSilver table.mceLayout, .o2k7SkinSilver .mceMenuItemTitle a, .o2k7SkinSilver table.mceLayout tr.mceLast td, .o2k7SkinSilver .mceIframeContainer {border-color: #bbb} diff --git a/assets/plugins/tinymce/tiny_mce/themes/advanced/source_editor.htm b/assets/plugins/tinymce/tiny_mce/themes/advanced/source_editor.htm deleted file mode 100644 index 2861e05698..0000000000 --- a/assets/plugins/tinymce/tiny_mce/themes/advanced/source_editor.htm +++ /dev/null @@ -1,25 +0,0 @@ - - - {#advanced_dlg.code_title} - - - - -
                      -
                      - -
                      - -
                      - -
                      - - - -
                      - - -
                      -
                      - - diff --git a/assets/plugins/tinymce/tiny_mce/tiny_mce.js b/assets/plugins/tinymce/tiny_mce/tiny_mce.js deleted file mode 100644 index 9d43222ad2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/tiny_mce.js +++ /dev/null @@ -1 +0,0 @@ -(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.11",releaseDate:"2014-05-08",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isIE11=g.indexOf("Trident/")!=-1&&(g.indexOf("rv:")!=-1||o.appName.indexOf("Netscape")!=-1);s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName)||s.isIE11;s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&!s.isIE11&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(c,e,d){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,e,d)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&Object.prototype.toString.call(o)==="[object Array]"){for(i=0,v="[";i0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey},metaKeyPressed:function(b){return a.isMac?b.metaKey:b.ctrlKey&&!b.altKey}}})(tinymce);tinymce.util.Quirks=function(a){var j=tinymce.VK,f=j.BACKSPACE,l=j.DELETE,e=a.dom,n=a.selection,J=a.settings,y=a.parser,q=a.serializer,G=tinymce.each;function C(P,O){try{a.getDoc().execCommand(P,false,O)}catch(N){}}function p(){var N=a.getDoc().documentMode;return N?N:6}function B(N){return N.isDefaultPrevented()}function L(){function N(T){var P,R,O,U,Q,S,V;function W(){if(Q.nodeType==3){if(T&&S==Q.length){return true}if(!T&&S===0){return true}}}P=n.getRng();var X=[P.startContainer,P.startOffset,P.endContainer,P.endOffset];if(!P.collapsed){T=true}Q=P[(T?"start":"end")+"Container"];S=P[(T?"start":"end")+"Offset"];if(Q.nodeType==3){R=e.getParent(P.startContainer,e.isBlock);if(T){R=e.getNext(R,e.isBlock)}if(R&&(W()||!P.collapsed)){O=e.create("em",{id:"__mceDel"});G(tinymce.grep(R.childNodes),function(Y){O.appendChild(Y)});R.appendChild(O)}}P=e.createRng();P.setStart(X[0],X[1]);P.setEnd(X[2],X[3]);n.setRng(P);a.getDoc().execCommand(T?"ForwardDelete":"Delete",false,null);if(O){U=n.getBookmark();while(V=e.get("__mceDel")){e.remove(V,true)}n.moveToBookmark(U)}}a.onKeyDown.add(function(O,Q){var P;P=Q.keyCode==l;if(!B(Q)&&(P||Q.keyCode==f)&&!j.modifierPressed(Q)){Q.preventDefault();N(P)}});a.addCommand("Delete",function(){N()})}function s(){function N(Q){var P=e.create("body");var R=Q.cloneContents();P.appendChild(R);return n.serializer.serialize(P,{format:"html"})}function O(P){var R=N(P);var S=e.createRng();S.selectNode(a.getBody());var Q=N(S);return R===Q}a.onKeyDown.add(function(Q,S){var R=S.keyCode,P;if(!B(S)&&(R==l||R==f)){P=Q.selection.isCollapsed();if(P&&!e.isEmpty(Q.getBody())){return}if(tinymce.isIE&&!P){return}if(!P&&!O(Q.selection.getRng())){return}Q.setContent("");Q.selection.setCursorLocation(Q.getBody(),0);Q.nodeChanged()}})}function K(){a.onKeyDown.add(function(N,O){if(!B(O)&&O.keyCode==65&&j.metaKeyPressed(O)){O.preventDefault();N.execCommand("SelectAll")}})}function M(){if(!a.settings.content_editable){e.bind(a.getDoc(),"focusin",function(N){n.setRng(n.getRng())});e.bind(a.getDoc(),"mousedown",function(N){if(N.target==a.getDoc().documentElement){a.getWin().focus();n.setRng(n.getRng())}})}}function D(){a.onKeyDown.add(function(N,Q){if(!B(Q)&&Q.keyCode===f){if(n.isCollapsed()&&n.getRng(true).startOffset===0){var P=n.getNode();var O=P.previousSibling;if(O&&O.nodeName&&O.nodeName.toLowerCase()==="hr"){e.remove(O);tinymce.dom.Event.cancel(Q)}}}})}function A(){if(!Range.prototype.getClientRects){a.onMouseDown.add(function(O,P){if(!B(P)&&P.target.nodeName==="HTML"){var N=O.getBody();N.blur();setTimeout(function(){N.focus()},0)}})}}function h(){a.onClick.add(function(N,O){O=O.target;if(/^(IMG|HR)$/.test(O.nodeName)){n.getSel().setBaseAndExtent(O,0,O,1)}if(O.nodeName=="A"&&e.hasClass(O,"mceItemAnchor")){n.select(O)}N.nodeChanged()})}function c(){function O(){var Q=e.getAttribs(n.getStart().cloneNode(false));return function(){var R=n.getStart();if(R!==a.getBody()){e.setAttrib(R,"style",null);G(Q,function(S){R.setAttributeNode(S.cloneNode(true))})}}}function N(){return !n.isCollapsed()&&e.getParent(n.getStart(),e.isBlock)!=e.getParent(n.getEnd(),e.isBlock)}function P(Q,R){R.preventDefault();return false}a.onKeyPress.add(function(Q,S){var R;if(!B(S)&&(S.keyCode==8||S.keyCode==46)&&N()){R=O();Q.getDoc().execCommand("delete",false,null);R();S.preventDefault();return false}});e.bind(a.getDoc(),"cut",function(R){var Q;if(!B(R)&&N()){Q=O();a.onKeyUp.addToTop(P);setTimeout(function(){Q();a.onKeyUp.remove(P)},0)}})}function b(){var O,N;e.bind(a.getDoc(),"selectionchange",function(){if(N){clearTimeout(N);N=0}N=window.setTimeout(function(){var P=n.getRng();if(!O||!tinymce.dom.RangeUtils.compareRanges(P,O)){a.nodeChanged();O=P}},50)})}function z(){document.body.setAttribute("role","application")}function v(){a.onKeyDown.add(function(N,P){if(!B(P)&&P.keyCode===f){if(n.isCollapsed()&&n.getRng(true).startOffset===0){var O=n.getNode().previousSibling;if(O&&O.nodeName&&O.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(P)}}}})}function E(){if(p()>7){return}C("RespectVisibilityInDesign",true);a.contentStyles.push(".mceHideBrInPre pre br {display: none}");e.addClass(a.getBody(),"mceHideBrInPre");y.addNodeFilter("pre",function(N,P){var Q=N.length,S,O,T,R;while(Q--){S=N[Q].getAll("br");O=S.length;while(O--){T=S[O];R=T.prev;if(R&&R.type===3&&R.value.charAt(R.value-1)!="\n"){R.value+="\n"}else{T.parent.insert(new tinymce.html.Node("#text",3),T,true).value="\n"}}}});q.addNodeFilter("pre",function(N,P){var Q=N.length,S,O,T,R;while(Q--){S=N[Q].getAll("br");O=S.length;while(O--){T=S[O];R=T.prev;if(R&&R.type==3){R.value=R.value.replace(/\r?\n$/,"")}}}})}function g(){e.bind(a.getBody(),"mouseup",function(P){var O,N=n.getNode();if(N.nodeName=="IMG"){if(O=e.getStyle(N,"width")){e.setAttrib(N,"width",O.replace(/[^0-9%]+/g,""));e.setStyle(N,"width","")}if(O=e.getStyle(N,"height")){e.setAttrib(N,"height",O.replace(/[^0-9%]+/g,""));e.setStyle(N,"height","")}}})}function d(){a.onKeyDown.add(function(T,U){var S,N,O,Q,R,V,P;S=U.keyCode==l;if(!B(U)&&(S||U.keyCode==f)&&!j.modifierPressed(U)){N=n.getRng();O=N.startContainer;Q=N.startOffset;P=N.collapsed;if(O.nodeType==3&&O.nodeValue.length>0&&((Q===0&&!P)||(P&&Q===(S?0:1)))){V=O.previousSibling;if(V&&V.nodeName=="IMG"){return}nonEmptyElements=T.schema.getNonEmptyElements();U.preventDefault();R=e.create("br",{id:"__tmp"});O.parentNode.insertBefore(R,O);T.getDoc().execCommand(S?"ForwardDelete":"Delete",false,null);O=n.getRng().startContainer;V=O.previousSibling;if(V&&V.nodeType==1&&!e.isBlock(V)&&e.isEmpty(V)&&!nonEmptyElements[V.nodeName.toLowerCase()]){e.remove(V)}e.remove("__tmp")}}})}function I(){a.onKeyDown.add(function(R,S){var P,O,T,N,Q;if(B(S)||S.keyCode!=j.BACKSPACE){return}P=n.getRng();O=P.startContainer;T=P.startOffset;N=e.getRoot();Q=O;if(!P.collapsed||T!==0){return}while(Q&&Q.parentNode&&Q.parentNode.firstChild==Q&&Q.parentNode!=N){Q=Q.parentNode}if(Q.tagName==="BLOCKQUOTE"){R.formatter.toggle("blockquote",null,Q);P=e.createRng();P.setStart(O,0);P.setEnd(O,0);n.setRng(P)}})}function H(){function N(){a._refreshContentEditable();C("StyleWithCSS",false);C("enableInlineTableEditing",false);if(!J.object_resizing){C("enableObjectResizing",false)}}if(!J.readonly){a.onBeforeExecCommand.add(N);a.onMouseDown.add(N)}}function u(){function N(O,P){G(e.select("a"),function(S){var Q=S.parentNode,R=e.getRoot();if(Q.lastChild===S){while(Q&&!e.isBlock(Q)){if(Q.parentNode.lastChild!==Q||Q===R){return}Q=Q.parentNode}e.add(Q,"br",{"data-mce-bogus":1})}})}a.onExecCommand.add(function(O,P){if(P==="CreateLink"){N(O)}});a.onSetContent.add(n.onSetContent.add(N))}function o(){if(J.forced_root_block){a.onInit.add(function(){C("DefaultParagraphSeparator",J.forced_root_block)})}}function r(){function N(P,O){if(!P||!O.initial){a.execCommand("mceRepaint")}}a.onUndo.add(N);a.onRedo.add(N);a.onSetContent.add(N)}function i(){a.onKeyDown.add(function(O,P){var N;if(!B(P)&&P.keyCode==f){N=O.getDoc().selection.createRange();if(N&&N.item){P.preventDefault();O.undoManager.beforeChange();e.remove(N.item(0));O.undoManager.add()}}})}function t(){var N;if(p()>=10){N="";G("p div h1 h2 h3 h4 h5 h6".split(" "),function(O,P){N+=(P>0?",":"")+O+":empty"});a.contentStyles.push(N+"{padding-right: 1px !important}")}}function x(){var P,O,af,N,aa,ad,ab,ae,Q,R,ac,Y,X,Z=document,V=a.getDoc();if(!J.object_resizing||J.webkit_fake_resize===false){return}C("enableObjectResizing",false);ac={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};function T(aj){var ai,ah;ai=aj.screenX-ad;ah=aj.screenY-ab;Y=ai*aa[2]+ae;X=ah*aa[3]+Q;Y=Y<5?5:Y;X=X<5?5:X;if(j.modifierPressed(aj)||(af.nodeName=="IMG"&&aa[2]*aa[3]!==0)){Y=Math.round(X/R);X=Math.round(Y*R)}e.setStyles(N,{width:Y,height:X});if(aa[2]<0&&N.clientWidth<=Y){e.setStyle(N,"left",P+(ae-Y))}if(aa[3]<0&&N.clientHeight<=X){e.setStyle(N,"top",O+(Q-X))}}function ag(){function ah(ai,aj){if(aj){if(af.style[ai]||!a.schema.isValid(af.nodeName.toLowerCase(),ai)){e.setStyle(af,ai,aj)}else{e.setAttrib(af,ai,aj)}}}ah("width",Y);ah("height",X);e.unbind(V,"mousemove",T);e.unbind(V,"mouseup",ag);if(Z!=V){e.unbind(Z,"mousemove",T);e.unbind(Z,"mouseup",ag)}e.remove(N);S(af)}function S(ak){var ai,aj,ah;U();ai=e.getPos(ak);P=ai.x;O=ai.y;aj=ak.offsetWidth;ah=ak.offsetHeight;if(af!=ak){af=ak;Y=X=0}G(ac,function(an,al){var am;am=e.get("mceResizeHandle"+al);if(!am){am=e.add(V.documentElement,"div",{id:"mceResizeHandle"+al,"class":"mceResizeHandle",style:"cursor:"+al+"-resize; margin:0; padding:0"});e.bind(am,"mousedown",function(ao){ao.preventDefault();ag();ad=ao.screenX;ab=ao.screenY;ae=af.clientWidth;Q=af.clientHeight;R=Q/ae;aa=an;N=af.cloneNode(true);e.addClass(N,"mceClonedResizable");e.setStyles(N,{left:P,top:O,margin:0});V.documentElement.appendChild(N);e.bind(V,"mousemove",T);e.bind(V,"mouseup",ag);if(Z!=V){e.bind(Z,"mousemove",T);e.bind(Z,"mouseup",ag)}})}else{e.show(am)}e.setStyles(am,{left:(aj*an[0]+P)-(am.offsetWidth/2),top:(ah*an[1]+O)-(am.offsetHeight/2)})});if(!tinymce.isOpera&&af.nodeName=="IMG"){af.setAttribute("data-mce-selected","1")}}function U(){if(af){af.removeAttribute("data-mce-selected")}for(var ah in ac){e.hide("mceResizeHandle"+ah)}}a.contentStyles.push(".mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}");function W(){var ah=e.getParent(n.getNode(),"table,img");G(e.select("img[data-mce-selected]"),function(ai){ai.removeAttribute("data-mce-selected")});if(ah){S(ah)}else{U()}}a.onNodeChange.add(W);e.bind(V,"selectionchange",W);a.serializer.addAttributeFilter("data-mce-selected",function(ah,ai){var aj=ah.length;while(aj--){ah[aj].attr(ai,null)}})}function F(){if(p()<9){y.addNodeFilter("noscript",function(N){var O=N.length,P,Q;while(O--){P=N[O];Q=P.firstChild;if(Q){P.attr("data-mce-innertext",Q.value)}}});q.addNodeFilter("noscript",function(N){var O=N.length,P,R,Q;while(O--){P=N[O];R=N[O].firstChild;if(R){R.value=tinymce.html.Entities.decode(R.value)}else{Q=P.attributes.map["data-mce-innertext"];if(Q){P.attr("data-mce-innertext",null);R=new tinymce.html.Node("#text",3);R.value=Q;R.raw=true;P.append(R)}}}})}}function m(){a.contentStyles.push("body {min-height: 100px}");a.onClick.add(function(N,O){if(O.target.nodeName=="HTML"){a.execCommand("SelectAll");a.selection.collapse(true);a.nodeChanged()}})}function k(){a.onInit.add(function(){var N;a.getBody().addEventListener("mscontrolselect",function(O){setTimeout(function(){if(a.selection.getNode()!=O.target){N=a.selection.getRng();n.fakeRng=a.dom.createRng();n.fakeRng.setStartBefore(O.target);n.fakeRng.setEndAfter(O.target)}},0)},false);a.getDoc().addEventListener("selectionchange",function(O){if(N&&!tinymce.dom.RangeUtils.compareRanges(a.selection.getRng(),N)){n.fakeRng=N=null}},false)})}v();I();s();if(tinymce.isWebKit){d();L();M();h();o();if(tinymce.isIDevice){b()}else{x();K()}}if(tinymce.isIE&&!tinymce.isIE11){D();z();E();g();i();t();F()}if(tinymce.isIE11){m();k()}if(tinymce.isGecko&&!tinymce.isIE11){D();A();c();H();u();r()}if(tinymce.isOpera){x()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':""","'":"'","<":"<",">":">","&":"&"};d={"<":"<",">":">","&":"&",""":'"',"'":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;if(z["border-image"]==="none"){delete z["border-image"]}F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][B]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|border][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]wbr[A][]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script noscript style textarea");q=m("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object script",z);textBlockElementsMap=m("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");v=m("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup",textBlockElementsMap);function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=c.self_closing_elements||e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h1){x.reverse();A=o=f.filterNode(x[0].clone());for(u=0;u0){Q.value=l;Q=Q.prev}else{O=Q.prev;Q.remove();Q=O}}}function H(O){var P,l={};for(P in O){if(P!=="li"&&P!="p"){l[P]=O[P]}}return l}n=new b.html.SaxParser({validate:z,self_closing_elements:H(h.getSelfClosingElements()),cdata:function(l){B.append(K("#cdata",4)).value=l},text:function(P,l){var O;if(!L){P=P.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){P=P.replace(E,"")}}if(P.length!==0){O=K("#text",3);O.raw=!!l;B.append(O).value=P}},comment:function(l){B.append(K("#comment",8)).value=l},pi:function(l,O){B.append(K(l,7)).value=O;I(B)},doctype:function(O){var l;l=B.append(K("#doctype",10));l.value=O;I(B)},start:function(l,W,P){var U,R,Q,O,S,X,V,T;Q=z?h.getElementRule(l):{};if(Q){U=K(Q.outputName||l,1);U.attributes=W;U.shortEnded=P;B.append(U);T=p[B.name];if(T&&p[U.name]&&!T[U.name]){M.push(U)}R=d.length;while(R--){S=d[R].name;if(S in W.map){F=c[S];if(F){F.push(U)}else{c[S]=[U]}}}if(o[l]){I(U)}if(!P){B=U}if(!L&&s[l]){L=true}}},end:function(l){var S,P,R,O,Q;P=z?h.getElementRule(l):{};if(P){if(o[l]){if(!L){S=B.firstChild;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R;S=S.next}else{O=S.next;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.next;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}S=B.lastChild;if(S&&S.type===3){R=S.value.replace(t,"");if(R.length>0){S.value=R;S=S.prev}else{O=S.prev;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.prev;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}}}if(L&&s[l]){L=false}if(P.removeEmpty||P.paddEmpty){if(B.isEmpty(u)){if(P.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name&&!B.attributes.map.id){Q=B.parent;B.empty().remove();B=Q;return}}}}B=B.parent}}},h);J=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&M.length){if(!m.context){j(M)}else{m.invalid=true}}if(q&&J.name=="body"){G()}if(!m.invalid){for(N in i){F=e[N];A=i[N];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("")},comment:function(h){c.push("")},pi:function(h,i){if(i){c.push("")}else{c.push("")}if(a){c.push("\n")}},doctype:function(h){c.push("",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){if(!q){return false}var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&!e.isIE11&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||e.isIE11||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+""}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b&&!e.isIE11){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":(b&&!e.isIE11)?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},addStyle:function(j){var k=this.doc,i;styleElm=k.getElementById("mceDefaultStyles");if(!styleElm){styleElm=k.createElement("style"),styleElm.id="mceDefaultStyles";styleElm.type="text/css";i=k.getElementsByTagName("head")[0];if(i.firstChild){i.insertBefore(styleElm,i.firstChild)}else{i.appendChild(styleElm)}}if(styleElm.styleSheet){styleElm.styleSheet.cssText+=j}else{styleElm.appendChild(k.createTextNode(j))}},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&!e.isIE11&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="
                      "+j;m.removeChild(m.firstChild)}catch(l){var n=i.create("div");n.innerHTML="
                      "+j;g(e.grep(n.childNodes),function(p,o){if(o&&m.canHaveHTML){m.appendChild(p)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(t){switch(t.type||1){case 1:if(t.selectorText){g(t.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:try{q(t.styleSheet)}catch(s){}break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,U=0,F=1,j=2,E=true,S=false,W="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L,toStringIE:T});function x(){return e.createDocumentFragment()}function q(X,t){C(E,X,t)}function s(X,t){C(S,X,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[W]}else{O[h]=O[Q];O[W]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(aa,t){var ad=O[h],Y=O[W],ac=O[Q],X=O[A],ab=t.startContainer,af=t.startOffset,Z=t.endContainer,ae=t.endOffset;if(aa===0){return H(ad,Y,ab,af)}if(aa===1){return H(ac,X,ab,af)}if(aa===2){return H(ac,X,Z,ae)}if(aa===3){return H(ad,Y,Z,ae)}}function p(){l(j)}function I(){return l(U)}function d(){return l(F)}function D(aa){var X=this[h],t=this[W],Z,Y;if((X.nodeType===3||X.nodeType===4)&&X.nodeValue){if(!t){X.parentNode.insertBefore(aa,X)}else{if(t>=X.nodeValue.length){c.insertAfter(aa,X)}else{Z=X.splitText(t);X.parentNode.insertBefore(aa,Z)}}}else{if(X.childNodes.length>0){Y=X.childNodes[t]}if(Y){X.insertBefore(aa,Y)}else{X.appendChild(aa)}}}function N(X){var t=O.extractContents();O.insertNode(X);X.appendChild(t);O.selectNode(X)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[W],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,X){var Y;if(t.nodeType==3){return t}if(X<0){return t}Y=t.firstChild;while(Y&&X>0){--X;Y=Y.nextSibling}if(Y){return Y}return t}function m(){return(O[h]==O[Q]&&O[W]==O[A])}function H(Z,ab,X,aa){var ac,Y,t,ad,af,ae;if(Z==X){if(ab==aa){return 0}if(ab0){O.collapse(X)}}else{O.collapse(X)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ad){var ac,Z=0,af=0,X,ab,Y,aa,t,ae;if(O[h]==O[Q]){return f(ad)}for(ac=O[Q],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[h]){return r(ac,ad)}++Z}for(ac=O[h],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[Q]){return V(ac,ad)}++af}ab=af-Z;Y=O[h];while(ab>0){Y=Y.parentNode;ab--}aa=O[Q];while(ab<0){aa=aa.parentNode;ab++}for(t=Y.parentNode,ae=aa.parentNode;t!=ae;t=t.parentNode,ae=ae.parentNode){Y=t;aa=ae}return o(Y,aa,ad)}function f(ac){var ae,af,t,Y,Z,ad,aa,X,ab;if(ac!=j){ae=x()}if(O[W]==O[A]){return ae}if(O[h].nodeType==3){af=O[h].nodeValue;t=af.substring(O[W],O[A]);if(ac!=F){Y=O[h];X=O[W];ab=O[A]-O[W];if(X===0&&ab>=Y.nodeValue.length-1){Y.parentNode.removeChild(Y)}else{Y.deleteData(X,ab)}O.collapse(E)}if(ac==j){return}if(t.length>0){ae.appendChild(e.createTextNode(t))}return ae}Y=P(O[h],O[W]);Z=O[A]-O[W];while(Y&&Z>0){ad=Y.nextSibling;aa=z(Y,ac);if(ae){ae.appendChild(aa)}--Z;Y=ad}if(ac!=F){O.collapse(E)}return ae}function r(ad,aa){var ac,ab,X,t,Z,Y;if(aa!=j){ac=x()}ab=i(ad,aa);if(ac){ac.appendChild(ab)}X=n(ad);t=X-O[W];if(t<=0){if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}ab=ad.previousSibling;while(t>0){Z=ab.previousSibling;Y=z(ab,aa);if(ac){ac.insertBefore(Y,ac.firstChild)}--t;ab=Z}if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}function V(ab,aa){var ad,X,ac,t,Z,Y;if(aa!=j){ad=x()}ac=R(ab,aa);if(ad){ad.appendChild(ac)}X=n(ab);++X;t=O[A]-X;ac=ab.nextSibling;while(ac&&t>0){Z=ac.nextSibling;Y=z(ac,aa);if(ad){ad.appendChild(Y)}--t;ac=Z}if(aa!=F){O.setStartAfter(ab);O.collapse(E)}return ad}function o(ab,t,ae){var Y,ag,aa,ac,ad,X,af,Z;if(ae!=j){ag=x()}Y=R(ab,ae);if(ag){ag.appendChild(Y)}aa=ab.parentNode;ac=n(ab);ad=n(t);++ac;X=ad-ac;af=ab.nextSibling;while(X>0){Z=af.nextSibling;Y=z(af,ae);if(ag){ag.appendChild(Y)}af=Z;--X}Y=i(t,ae);if(ag){ag.appendChild(Y)}if(ae!=F){O.setStartAfter(ab);O.collapse(E)}return ag}function i(ac,ad){var Y=P(O[Q],O[A]-1),ae,ab,aa,t,X,Z=Y!=O[Q];if(Y==ac){return M(Y,Z,S,ad)}ae=Y.parentNode;ab=M(ae,S,S,ad);while(ae){while(Y){aa=Y.previousSibling;t=M(Y,Z,S,ad);if(ad!=j){ab.insertBefore(t,ab.firstChild)}Z=E;Y=aa}if(ae==ac){return ab}Y=ae.previousSibling;ae=ae.parentNode;X=M(ae,S,S,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function R(ac,ad){var Z=P(O[h],O[W]),aa=Z!=O[h],ae,ab,Y,t,X;if(Z==ac){return M(Z,aa,E,ad)}ae=Z.parentNode;ab=M(ae,S,E,ad);while(ae){while(Z){Y=Z.nextSibling;t=M(Z,aa,E,ad);if(ad!=j){ab.appendChild(t)}aa=E;Z=Y}if(ae==ac){return ab}Z=ae.nextSibling;ae=ae.parentNode;X=M(ae,S,E,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function M(t,aa,ad,ae){var Z,Y,ab,X,ac;if(aa){return z(t,ae)}if(t.nodeType==3){Z=t.nodeValue;if(ad){X=O[W];Y=Z.substring(X);ab=Z.substring(0,X)}else{X=O[A];Y=Z.substring(0,X);ab=Z.substring(X)}if(ae!=F){t.nodeValue=ab}if(ae==j){return}ac=c.clone(t,S);ac.nodeValue=Y;return ac}if(ae==j){return}return c.clone(t,S)}function z(X,t){if(t!=j){return t==F?c.clone(X,E):X}X.parentNode.removeChild(X)}function T(){return c.create("body",null,d()).outerText}return O}a.Range=b;b.prototype.toString=function(){return this.toStringIE()}})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,v,q,t,s=d.dom.doc,m=s.body,r,u;function j(C){var y,B,x,A,z;x=h.create("a");y=C?k:v;B=C?p:q;A=n.duplicate();if(y==s||y==s.documentElement){y=m;B=0}if(y.nodeType==3){y.parentNode.insertBefore(x,y);A.moveToElementText(x);A.moveStart("character",B);h.remove(x);n.setEndPoint(C?"StartToStart":"EndToEnd",A)}else{z=y.childNodes;if(z.length){if(B>=z.length){h.insertAfter(x,z[z.length-1])}else{y.insertBefore(x,z[B])}A.moveToElementText(x)}else{if(y.canHaveHTML){y.innerHTML="\uFEFF";x=y.firstChild;A.moveToElementText(x);A.collapse(f)}}n.setEndPoint(C?"StartToStart":"EndToEnd",A);h.remove(x)}}k=i.startContainer;p=i.startOffset;v=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==v&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){t=k.previousSibling;if(t&&!t.hasChildNodes()&&h.isBlock(t)){t.innerHTML="\uFEFF"}else{t=null}k.innerHTML="\uFEFF\uFEFF";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";if(t){t.innerHTML=""}return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{u=k.childNodes[p];l=m.createControlRange();l.addElement(u);l.select();r=d.getRng();if(r.item&&u===r.item(0)){return}}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return ye[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="

                      ";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="
                      ";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='_';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('_'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var i=this,h=i.getRng(),j,g,l,k;if(h.duplicate||h.item){if(h.item){return h.item(0)}l=h.duplicate();l.collapse(1);j=l.parentElement();if(j.ownerDocument!==i.dom.doc){j=i.dom.getRoot()}g=k=h.parentElement();while(k=k.parentNode){if(k==j){j=g;break}}return j}else{j=h.startContainer;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[Math.min(j.childNodes.length-1,h.startOffset)]}if(j&&j.nodeType==3){return j.parentNode}return j}},getEnd:function(){var h=this,g=h.getRng(),j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);j=g.parentElement();if(j.ownerDocument!==h.dom.doc){j=h.dom.getRoot()}if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=g.endContainer;i=g.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[i>0?i-1:i]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){h=y.getRng();if(h.setStart){h={startContainer:h.startContainer,startOffset:h.startOffset,endContainer:h.endContainer,endOffset:h.endOffset}}return{rng:h}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML(''+m+"");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML(''+m+"")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(q){var v=this,n=v.dom,l,j,g,i,u,k,x,r,s;function h(C){var t=q[C?"start":"end"],z,A,B,y;if(t){B=t[0];for(A=u,z=t.length-1;z>=1;z--){y=A.childNodes;if(t[z]>y.length-1){return}A=y[t[z]]}if(A.nodeType===3){B=Math.min(t[0],A.nodeValue.length)}if(A.nodeType===1){B=Math.min(t[0],A.childNodes.length)}if(C){g.setStart(A,B)}else{g.setEnd(A,B)}}return true}function m(D){var y=n.get(q.id+"_"+D),C,t,A,B,z=q.keep;if(y){C=y.parentNode;if(D=="start"){if(!z){t=n.nodeIndex(y)}else{C=y.firstChild;t=1}k=x=C;r=s=t}else{if(!z){t=n.nodeIndex(y)}else{C=y.firstChild;t=1}x=C;s=t}if(!z){B=y.previousSibling;A=y.nextSibling;e(d.grep(y.childNodes),function(E){if(E.nodeType==3){E.nodeValue=E.nodeValue.replace(/\uFEFF/g,"")}});while(y=n.get(q.id+"_"+D)){n.remove(y,1)}if(B&&A&&B.nodeType==A.nodeType&&B.nodeType==3&&!d.isOpera){t=B.nodeValue.length;B.appendData(A.nodeValue);n.remove(A);if(D=="start"){k=x=B;r=s=t}else{x=B;s=t}}}}}function o(t){if(n.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='
                      '}return t}if(q){if(q.start){g=n.createRng();u=n.getRoot();if(v.tridentSel){return v.tridentSel.moveToBookmark(q)}if(h(true)&&h()){v.setRng(g)}}else{if(q.id){m("start");m("end");if(k){g=n.createRng();g.setStart(o(k),r);g.setEnd(o(x),s);v.setRng(g)}}else{if(q.name){v.select(n.select(q.name)[q.index])}else{if(q.rng){g=q.rng;if(g.startContainer){i=v.dom.createRng();try{i.setStart(g.startContainer,g.startOffset);i.setEnd(g.endContainer,g.endOffset)}catch(p){}g=i}v.setRng(g)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(h.fakeRng){return h.fakeRng}if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&!d.isIE11&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},selectorChanged:function(g,j){var h=this,i;if(!h.selectorChangedData){h.selectorChangedData={};i={};h.editor.onNodeChange.addToTop(function(l,k,o){var p=h.dom,m=p.getParents(o,null,p.getRoot()),n={};e(h.selectorChangedData,function(r,q){e(m,function(s){if(p.is(s,q)){if(!i[q]){e(r,function(t){t(true,{node:s,selector:q,parents:m})});i[q]=r}n[q]=r;return false}})});e(i,function(r,q){if(!n[q]){delete i[q];e(r,function(s){s(false,{node:o,selector:q,parents:m})})}})})}if(!h.selectorChangedData[g]){h.selectorChangedData[g]=[]}h.selectorChangedData[g].push(j);return h},scrollIntoView:function(k){var j,h,g=this,i=g.dom;h=i.getViewPort(g.editor.getWin());j=i.getPos(k).y;if(jh.y+h.h){g.editor.getWin().scrollTo(0,j0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("noscript",function(j){var k=j.length,l;while(k--){l=j[k].firstChild;if(l){l.value=a.html.Entities.decode(l.value)}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/()/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*(()?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// "}}else{if(o.length>0){n.firstChild.value=""}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=document.createElement("script");s.id=n;s.type="text/javascript";s.src=a._addVer(m);if(!a.isIE||a.isIE11){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&dd){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d0&&g=m.length){r=0}}t=m[r];f.setAttrib(g,"tabindex","-1");f.setAttrib(t.id,"tabindex","0");f.get(t.id).focus();if(e.actOnFocus){e.onAction(t.id)}if(s){a.cancel(s)}};p=function(z){var v=37,u=39,y=38,A=40,r=27,t=14,s=13,x=32;switch(z.keyCode){case v:if(i){q.moveFocus(-1)}a.cancel(z);break;case u:if(i){q.moveFocus(1)}a.cancel(z);break;case y:if(o){q.moveFocus(-1)}a.cancel(z);break;case A:if(o){q.moveFocus(1)}a.cancel(z);break;case r:if(e.onCancel){e.onCancel();a.cancel(z)}break;case t:case s:case x:if(e.onAction){e.onAction(g);a.cancel(z)}break}};c(m,function(t,r){var s,u;if(!t.id){t.id=f.uniqueId("_mce_item_")}u=f.get(t.id);if(l){f.bind(u,"blur",h);s="-1"}else{s=(r===0?"0":"-1")}u.setAttribute("tabindex",s);f.bind(u,"focus",k)});if(m[0]){g=m[0].id}f.setAttrib(n,"tabindex","-1");var j=f.get(n);f.bind(j,"focus",d);f.bind(j,"keydown",p)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeightv){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+=''+a.encode(e.title)+''+(c?''+c+"":"")}else{d+=''+(c?''+c+"":"")}d+='";d+="";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keydown",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){b.dom.Event.cancel(f);return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='';j+="";j+="";j+="";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(q){var n,p=37,m=39,l=38,r=40,k=13,o=32;b.remove(h.id,"change",i);j=false;n=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",n)});if(q.keyCode==k||q.keyCode==o){g(q);return b.cancel(q)}else{if(q.keyCode==r||q.keyCode==l){q.stopImmediatePropagation()}}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+=""+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'');i+=""+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"";i+="";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.keyboardNav=new d.ui.KeyboardNavigation({root:f.id+"_menu",items:c.select("a",f.id+"_menu"),onCancel:function(){f.hideMenu();f.focus()}});f.keyboardNav.focus();f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch();f.keyboardNav.destroy()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){var f=this;f.parent();a.clear(f.id+"_menu");a.clear(f.id+"_more");c.remove(f.id+"_menu");if(f.keyboardNav){f.keyboardNav.destroy()}}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('
                      ');i.push("");i.push('");j(e,function(h){i.push(h.renderHTML())});i.push("");i.push("
                      ");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,""))}}if(c.stdMode){f+=''+k.renderHTML()+""}else{f+=""+k.renderHTML()+""}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,""))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,""));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},""+f+"")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}if(!this.editors.hasOwnProperty(l)){return a}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l':"",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.contentStyles=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(!q.content_editable){p.orgVisibility=p.getElement().style.visibility;p.getElement().style.visibility="hidden"}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&typeof q.theme!="function"&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,G=this,H=G.settings,D,y,z,C=G.getElement(),p,m,E,v,B,F,x,r=[];k.add(G);H.aria_label=H.aria_label||l.getAttrib(C,"aria-label",G.getLang("aria.rich_text_area"));if(H.theme){if(typeof H.theme!="function"){H.theme=H.theme.replace(/-/,"");p=h.get(H.theme);G.theme=new p();if(G.theme.init){G.theme.init(G,h.urls[H.theme]||k.documentBaseURL.replace(/\/$/,""))}}else{G.theme=H.theme}}function A(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){A(u)});n=new t(G,o);G.plugins[s]=n;if(n.init){n.init(G,o);r.push(s)}}}i(g(H.plugins.replace(/\-/g,"")),A);if(H.popup_css!==false){if(H.popup_css){H.popup_css=G.documentBaseURI.toAbsolute(H.popup_css)}else{H.popup_css=G.baseURI.toAbsolute("themes/"+H.theme+"/skins/"+H.skin+"/dialog.css")}}if(H.popup_css_add){H.popup_css+=","+G.documentBaseURI.toAbsolute(H.popup_css_add)}G.controlManager=new k.ControlManager(G);G.onBeforeRenderUI.dispatch(G,G.controlManager);if(H.render_ui&&G.theme){G.orgDisplay=C.style.display;if(typeof H.theme!="function"){D=H.width||C.style.width||C.offsetWidth;y=H.height||C.style.height||C.offsetHeight;z=H.min_height||100;F=/^[0-9\.]+(|px)$/i;if(F.test(""+D)){D=Math.max(parseInt(D,10)+(p.deltaWidth||0),100)}if(F.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),z)}p=G.theme.renderUI({targetNode:C,width:D,height:y,deltaWidth:H.delta_width,deltaHeight:H.delta_height});l.setStyles(p.sizeContainer||p.editorContainer,{width:D,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y';if(H.document_base_url!=k.documentBaseURL){G.iframeHTML+=''}if(k.isIE8){if(H.ie7_compat){G.iframeHTML+=''}else{G.iframeHTML+=''}}G.iframeHTML+='';for(x=0;x'}G.contentCSS=[];v=H.body_id||"tinymce";if(v.indexOf("=")!=-1){v=G.getParam("body_id","","hash");v=v[G.id]||v}B=H.body_class||"";if(B.indexOf("=")!=-1){B=G.getParam("body_class","","hash");B=B[G.id]||""}G.iframeHTML+='
                      ";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){E='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+G.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:G.id+"_ifr",src:E||'javascript:""',frameBorder:"0",allowTransparency:"true",title:H.aria_label,style:{width:"100%",height:y,display:"block"}});G.contentAreaContainer=p.iframeContainer;if(p.editorContainer){l.get(p.editorContainer).style.display=G.orgDisplay}C.style.visibility=G.orgVisibility;l.get(G.id).style.display="none";l.setAttrib(G.id,"aria-hidden",true);if(!k.relaxedDomain||!E){G.initContentBody()}C=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m,s;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(t,u){var v=t.length,y,A=n.dom,z,x;while(v--){y=t[v];z=y.attr(u);x="data-mce-"+u;if(!y.attributes.map[x]){if(u==="style"){y.attr(x,A.serializeStyle(A.parseStyle(z),y.name))}else{y.attr(x,n.convertURL(z,u,y.name))}}}});n.parser.addNodeFilter("script",function(t,u){var v=t.length,x;while(v--){x=t[v];x.attr("type","mce-"+(x.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(t,u){var v=t.length,x;while(v--){x=t[v];x.type=8;x.name="#comment";x.value="[CDATA["+x.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(u,v){var x=u.length,y,t=n.schema.getNonEmptyElements();while(x--){y=u[x];if(y.isEmpty(t)){y.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer,n);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.onExecCommand.add(function(t,u){if(!/^(FontName|FontSize)$/.test(u)){n.nodeChanged()}});n.serializer.onPreProcess.add(function(t,u){return n.onPreProcess.dispatch(n,u,t)});n.serializer.onPostProcess.add(function(t,u){return n.onPostProcess.dispatch(n,u,t)});n.onPreInit.dispatch(n);if(!p.browser_spellcheck&&!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(t,u){i(p.protect,function(v){u.content=u.content.replace(v,function(x){return""})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(t,u){u.content=u.content.replace(/^(]*>( | |\s|\u00a0|)<\/p>[\r\n]*|
                      [\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});if(n.contentStyles.length>0){s="";i(n.contentStyles,function(t){s+=t+"\r\n"});n.dom.addStyle(s)}i(n.contentCSS,function(t){n.dom.loadCSS(t)});if(p.auto_focus){setTimeout(function(){var t=k.get(p.auto_focus);t.selection.select(t.getBody(),1);t.selection.collapse(1);t.getBody().focus();t.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){if(u.bookmark){t.moveToBookmark(u.bookmark);u.bookmark=null}n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive&&!k.isIE11){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'>
                      "}else{r='
                      '}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}if(!o.settings.content_editable||document.activeElement===o.getBody()){o.selection.normalize()}return p.content},getContent:function(o){var n=this,p,m=n.getBody();o=o||{};o.format=o.format||"html";o.get=true;o.getInner=true;if(!o.no_events){n.onBeforeGetContent.dispatch(n,o)}if(o.format=="raw"){p=m.innerHTML}else{if(o.format=="text"){p=m.innerText||m.textContent}else{p=n.serializer.serialize(m,o)}}if(o.format!="text"){o.content=k.trim(p)}else{o.content=p}if(!o.no_events){n.onGetContent.dispatch(n,o)}return o.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":if(!p.getAttrib(s,"href",false)){r=p.getAttrib(s,"name")||s.id;m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,o=m.getContainer(),n=m.getDoc();if(!m.removed){m.removed=1;if(b&&n){n.execCommand("SelectAll")}m.save();l.setStyle(m.id,"display",m.orgDisplay);if(!m.settings.content_editable){j.unbind(m.getWin());j.unbind(m.getDoc())}j.unbind(m.getBody());j.clear(o);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(o)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){g.preventDefault();g.stopPropagation()}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(i,m){if(m.keyCode!=65||!a.VK.metaKeyPressed(m)){l.selection.normalize()}l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k(i,n)}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='\uFEFF';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=p.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(//i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.yL.x+L.w||C.x")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();if(p.getRng().setStart){v.setStart(x,0);v.setEnd(x,x.childNodes.length);p.setRng(v)}else{f("SelectAll")}}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(x){var v=m.getParent(p.getNode(),"ul,ol");return v&&(x==="insertunorderedlist"&&v.tagName==="UL"||x==="insertorderedlist"&&v.tagName==="OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}onBeforeAdd=new a(l);k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getBody(),"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onBeforeAdd:onBeforeAdd,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();l.onBeforeAdd.dispatch(l,p);o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i0||this.typing},hasRedo:function(){return i0){g.moveEnd("character",q)}g.select()}catch(n){}}}c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(j){var o,k,g,h=this,m=h.editor,n,f;if(!h.controlFactories){h.controlFactories=[];d(m.plugins,function(i){if(i.createControl){h.controlFactories.push(i)}})}n=h.controlFactories;for(k=0,g=n.length;k1||ag==ay||ag.tagName=="BR"){return ag}}}var aq=aa.selection.getRng();var av=aq.startContainer;var ap=aq.endContainer;if(av!=ap&&aq.endOffset===0){var au=ar(av,ap);var at=au.nodeType==3?au.length:au.childNodes.length;aq.setEnd(au,at)}return aq}function ad(at,ay,aw,av,aq){var ap=[],ar=-1,ax,aA=-1,au=-1,az;T(at.childNodes,function(aC,aB){if(aC.nodeName==="UL"||aC.nodeName==="OL"){ar=aB;ax=aC;return false}});T(at.childNodes,function(aC,aB){if(aC.nodeName==="SPAN"&&c.getAttrib(aC,"data-mce-type")=="bookmark"){if(aC.id==ay.id+"_start"){aA=aB}else{if(aC.id==ay.id+"_end"){au=aB}}}});if(ar<=0||(aAar)){T(a.grep(at.childNodes),aq);return 0}else{az=c.clone(aw,X);T(a.grep(at.childNodes),function(aC,aB){if((aAar&&aB>ar)){ap.push(aC);aC.parentNode.removeChild(aC)}});if(aAar){at.insertBefore(az,ax.nextSibling)}}av.push(az);T(ap,function(aB){az.appendChild(aB)});return az}}function an(aq,at,aw){var ap=[],av,ar,au=true;av=am.inline||am.block;ar=c.create(av);ab(ar);N.walk(aq,function(ax){var ay;function az(aA){var aF,aD,aB,aC,aE;aE=au;aF=aA.nodeName.toLowerCase();aD=aA.parentNode.nodeName.toLowerCase();if(aA.nodeType===1&&x(aA)){aE=au;au=x(aA)==="true";aC=true}if(g(aF,"br")){ay=0;if(am.block){c.remove(aA)}return}if(am.wrapper&&y(aA,ae,al)){ay=0;return}if(au&&!aC&&am.block&&!am.wrapper&&I(aF)){aA=c.rename(aA,av);ab(aA);ap.push(aA);ay=0;return}if(am.selector){T(ah,function(aG){if("collapsed" in aG&&aG.collapsed!==ai){return}if(c.is(aA,aG.selector)&&!b(aA)){ab(aA,aG);aB=true}});if(!am.inline||aB){ay=0;return}}if(au&&!aC&&d(av,aF)&&d(aD,av)&&!(!aw&&aA.nodeType===3&&aA.nodeValue.length===1&&aA.nodeValue.charCodeAt(0)===65279)&&!b(aA)&&(!am.inline||!H(aA))){if(!ay){ay=c.clone(ar,X);aA.parentNode.insertBefore(ay,aA);ap.push(ay)}ay.appendChild(aA)}else{if(aF=="li"&&at){ay=ad(aA,at,ar,ap,az)}else{ay=0;T(a.grep(aA.childNodes),az);if(aC){au=aE}ay=0}}}T(ax,az)});if(am.wrap_links===false){T(ap,function(ax){function ay(aC){var aB,aA,az;if(aC.nodeName==="A"){aA=c.clone(ar,X);ap.push(aA);az=a.grep(aC.childNodes);for(aB=0;aB1||!H(az))&&ax===0){c.remove(az,1);return}if(am.inline||am.wrapper){if(!am.exact&&ax===1){az=ay(az)}T(ah,function(aB){T(c.select(aB.inline,az),function(aD){var aC;if(aB.wrap_links===false){aC=aD.parentNode;do{if(aC.nodeName==="A"){return}}while(aC=aC.parentNode)}Z(aB,al,aD,aB.exact?aD:null)})});if(y(az.parentNode,ae,al)){c.remove(az,1);az=0;return C}if(am.merge_with_parents){c.getParent(az.parentNode,function(aB){if(y(aB,ae,al)){c.remove(az,1);az=0;return C}})}if(az&&am.merge_siblings!==false){az=u(E(az),az);az=u(az,E(az,C))}}})}if(am){if(ag){if(ag.nodeType){ac=c.createRng();ac.setStartBefore(ag);ac.setEndAfter(ag);an(p(ac,ah),null,true)}else{an(ag,null,true)}}else{if(!ai||!am.inline||c.select("td.mceSelected,th.mceSelected").length){var ao=aa.selection.getNode();if(!m&&ah[0].defaultBlock&&!c.getParent(ao,c.isBlock)){Y(ah[0].defaultBlock)}aa.selection.setRng(af());ak=r.getBookmark();an(p(r.getRng(C),ah),ak);if(am.styles&&(am.styles.color||am.styles.textDecoration)){a.walk(ao,L,"childNodes");L(ao)}r.moveToBookmark(ak);R(r.getRng(C));aa.nodeChanged()}else{U("apply",ae,al)}}}}function B(ad,am,af){var ag=V(ad),ao=ag[0],ak,aj,ac,al=true;function ae(av){var au,at,ar,aq,ax,aw;if(av.nodeType===3){return}if(av.nodeType===1&&x(av)){ax=al;al=x(av)==="true";aw=true}au=a.grep(av.childNodes);if(al&&!aw){for(at=0,ar=ag.length;at=0;ac--){ab=ah[ac].selector;if(!ab){return C}for(ag=ad.length-1;ag>=0;ag--){if(c.is(ad[ag],ab)){return C}}}}return X}function J(ab,ae,ac){var ad;if(!P){P={};ad={};aa.onNodeChange.addToTop(function(ag,af,ai){var ah=n(ai),aj={};T(P,function(ak,al){T(ah,function(am){if(y(am,al,{},ak.similar)){if(!ad[al]){T(ak,function(an){an(true,{node:am,format:al,parents:ah})});ad[al]=ak}aj[al]=ak;return false}})});T(ad,function(ak,al){if(!aj[al]){delete ad[al];T(ak,function(am){am(false,{node:ai,format:al,parents:ah})})}})})}T(ab.split(","),function(af){if(!P[af]){P[af]=[];P[af].similar=ac}P[af].push(ae)});return this}a.extend(this,{get:V,register:l,apply:Y,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z,formatChanged:J});j();W();function h(ab,ac){if(g(ab,ac.inline)){return C}if(g(ab,ac.block)){return C}if(ac.selector){return c.is(ab,ac.selector)}}function g(ac,ab){ac=ac||"";ab=ab||"";ac=""+(ac.nodeName||ac);ab=""+(ab.nodeName||ab);return ac.toLowerCase()==ab.toLowerCase()}function O(ac,ab){var ad=c.getStyle(ac,ab);if(ab=="color"||ab=="backgroundColor"){ad=c.toHex(ad)}if(ab=="fontWeight"&&ad==700){ad="bold"}return""+ad}function q(ab,ac){if(typeof(ab)!="string"){ab=ab(ac)}else{if(ac){ab=ab.replace(/%(\w+)/g,function(ae,ad){return ac[ad]||ae})}}return ab}function f(ab){return ab&&ab.nodeType===3&&/^([\t \r\n]+|)$/.test(ab.nodeValue)}function S(ad,ac,ab){var ae=c.create(ac,ab);ad.parentNode.insertBefore(ae,ad);ae.appendChild(ad);return ae}function p(ab,am,ae){var ap,an,ah,al,ad=ab.startContainer,ai=ab.startOffset,ar=ab.endContainer,ak=ab.endOffset;function ao(aA){var au,ax,az,aw,av,at;au=ax=aA?ad:ar;av=aA?"previousSibling":"nextSibling";at=c.getRoot();function ay(aB){return aB.nodeName=="BR"&&aB.getAttribute("data-mce-bogus")&&!aB.nextSibling}if(au.nodeType==3&&!f(au)){if(aA?ai>0:akan?an:ai];if(ad.nodeType==3){ai=0}}if(ar.nodeType==1&&ar.hasChildNodes()){an=ar.childNodes.length-1;ar=ar.childNodes[ak>an?an:ak-1];if(ar.nodeType==3){ak=ar.nodeValue.length}}function aq(au){var at=au;while(at){if(at.nodeType===1&&x(at)){return x(at)==="false"?at:au}at=at.parentNode}return au}function aj(au,ay,aA){var ax,av,az,at;function aw(aC,aE){var aF,aB,aD=aC.nodeValue;if(typeof(aE)=="undefined"){aE=aA?aD.length:0}if(aA){aF=aD.lastIndexOf(" ",aE);aB=aD.lastIndexOf("\u00a0",aE);aF=aF>aB?aF:aB;if(aF!==-1&&!ae){aF++}}else{aF=aD.indexOf(" ",aE);aB=aD.indexOf("\u00a0",aE);aF=aF!==-1&&(aB===-1||aF0&&ah.node.nodeType===3&&ah.node.nodeValue.charAt(ah.offset-1)===" "){if(ah.offset>1){ar=ah.node;ar.splitText(ah.offset-1)}}}}if(am[0].inline||am[0].block_expand){if(!am[0].inline||(ad.nodeType!=3||ai===0)){ad=ao(true)}if(!am[0].inline||(ar.nodeType!=3||ak===ar.nodeValue.length)){ar=ao()}}if(am[0].selector&&am[0].expand!==X&&!am[0].inline){ad=af(ad,"previousSibling");ar=af(ar,"nextSibling")}if(am[0].block||am[0].selector){ad=ac(ad,"previousSibling");ar=ac(ar,"nextSibling");if(am[0].block){if(!H(ad)){ad=ao(true)}if(!H(ar)){ar=ao()}}}if(ad.nodeType==1){ai=s(ad);ad=ad.parentNode}if(ar.nodeType==1){ak=s(ar)+1;ar=ar.parentNode}return{startContainer:ad,startOffset:ai,endContainer:ar,endOffset:ak}}function Z(ah,ag,ae,ab){var ad,ac,af;if(!h(ae,ah)){return X}if(ah.remove!="all"){T(ah.styles,function(aj,ai){aj=q(aj,ag);if(typeof(ai)==="number"){ai=aj;ab=0}if(!ab||g(O(ab,ai),aj)){c.setStyle(ae,ai,"")}af=1});if(af&&c.getAttrib(ae,"style")==""){ae.removeAttribute("style");ae.removeAttribute("data-mce-style")}T(ah.attributes,function(ak,ai){var aj;ak=q(ak,ag);if(typeof(ai)==="number"){ai=ak;ab=0}if(!ab||g(c.getAttrib(ab,ai),ak)){if(ai=="class"){ak=c.getAttrib(ae,ai);if(ak){aj="";T(ak.split(/\s+/),function(al){if(/mce\w+/.test(al)){aj+=(aj?" ":"")+al}});if(aj){c.setAttrib(ae,ai,aj);return}}}if(ai=="class"){ae.removeAttribute("className")}if(e.test(ai)){ae.removeAttribute("data-mce-"+ai)}ae.removeAttribute(ai)}});T(ah.classes,function(ai){ai=q(ai,ag);if(!ab||c.hasClass(ab,ai)){c.removeClass(ae,ai)}});ac=c.getAttribs(ae);for(ad=0;adad?ad:af]}if(ab.nodeType===3&&ag&&af>=ab.nodeValue.length){ab=new t(ab,aa.getBody()).next()||ab}if(ab.nodeType===3&&!ag&&af===0){ab=new t(ab,aa.getBody()).prev()||ab}return ab}function U(ak,ab,ai){var al="_mce_caret",ac=aa.settings.caret_debug;function ad(ap){var ao=c.create("span",{id:al,"data-mce-bogus":true,style:ac?"color:red":""});if(ap){ao.appendChild(aa.getDoc().createTextNode(G))}return ao}function aj(ap,ao){while(ap){if((ap.nodeType===3&&ap.nodeValue!==G)||ap.childNodes.length>1){return false}if(ao&&ap.nodeType===1){ao.push(ap)}ap=ap.firstChild}return true}function ag(ao){while(ao){if(ao.id===al){return ao}ao=ao.parentNode}}function af(ao){var ap;if(ao){ap=new t(ao,ao);for(ao=ap.current();ao;ao=ap.next()){if(ao.nodeType===3){return ao}}}}function ae(aq,ap){var ar,ao;if(!aq){aq=ag(r.getStart());if(!aq){while(aq=c.get(al)){ae(aq,false)}}}else{ao=r.getRng(true);if(aj(aq)){if(ap!==false){ao.setStartBefore(aq);ao.setEndBefore(aq)}c.remove(aq)}else{ar=af(aq);if(ar.nodeValue.charAt(0)===G){ar=ar.deleteData(0,1)}c.remove(aq,1)}r.setRng(ao)}}function ah(){var aq,ao,av,au,ar,ap,at;aq=r.getRng(true);au=aq.startOffset;ap=aq.startContainer;at=ap.nodeValue;ao=ag(r.getStart());if(ao){av=af(ao)}if(at&&au>0&&au=0;au--){aq.appendChild(c.clone(ay[au],false));aq=aq.firstChild}aq.appendChild(c.doc.createTextNode(G));aq=aq.firstChild;var ar=c.getParent(az,I);if(ar&&c.isEmpty(ar)){az.parentNode.replaceChild(ax,az)}else{c.insertAfter(ax,az)}r.setCursorLocation(aq,1);if(c.isEmpty(az)){c.remove(az)}}}function an(){var ap,ao,aq;ao=ag(r.getStart());if(ao&&!c.isEmpty(ao)){a.walk(ao,function(ar){if(ar.nodeType==1&&ar.id!==al&&!c.isEmpty(ar)){c.setAttrib(ar,"data-mce-bogus",null)}},"childNodes")}}if(!self._hasCaretEvents){aa.onBeforeGetContent.addToTop(function(){var ao=[],ap;if(aj(ag(r.getStart()),ao)){ap=ao.length;while(ap--){c.setAttrib(ao[ap],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(ao){aa[ao].addToTop(function(){ae();an()})});aa.onKeyDown.addToTop(function(ao,aq){var ap=aq.keyCode;if(ap==8||ap==37||ap==39){ae(ag(r.getStart()))}an()});r.onSetContent.add(an);self._hasCaretEvents=true}if(ak=="apply"){ah()}else{am()}}function R(ac){var ab=ac.startContainer,ai=ac.startOffset,ae,ah,ag,ad,af;if(ab.nodeType==3&&ai>=ab.nodeValue.length){ai=s(ab);ab=ab.parentNode;ae=true}if(ab.nodeType==1){ad=ab.childNodes;ab=ad[Math.min(ai,ad.length-1)];ah=new t(ab,c.getParent(ab,c.isBlock));if(ai>ad.length-1||ae){ah.next()}for(ag=ah.current();ag;ag=ah.next()){if(ag.nodeType==3&&!f(ag)){af=c.create("a",null,G);ag.parentNode.insertBefore(af,ag);ac.setStart(ag,0);r.setRng(ac);c.remove(af);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(f){var i=f.dom,e=f.selection,d=f.settings,h=f.undoManager,c=f.schema.getNonEmptyElements();function g(B){var v=e.getRng(true),G,j,A,u,p,M,C,o,k,n,t,J,x,D;function E(N){return N&&i.isBlock(N)&&!/^(TD|TH|CAPTION|FORM)$/.test(N.nodeName)&&!/^(fixed|absolute)/i.test(N.style.position)&&i.getContentEditable(N)!=="true"}function F(O){var N;if(b.isIE&&!b.isIE11&&i.isBlock(O)){N=e.getRng();O.appendChild(i.create("span",null,"\u00a0"));e.select(O);O.lastChild.outerHTML="";e.setRng(N)}}function z(P){var O=P,Q=[],N;while(O=O.firstChild){if(i.isBlock(O)){return}if(O.nodeType==1&&!c[O.nodeName.toLowerCase()]){Q.push(O)}}N=Q.length;while(N--){O=Q[N];if(!O.hasChildNodes()||(O.firstChild==O.lastChild&&O.firstChild.nodeValue==="")){i.remove(O)}else{if(O.nodeName=="A"&&(O.innerText||O.textContent)===" "){i.remove(O)}}}}function m(O){var T,R,N,U,S,Q=O,P;N=i.createRng();if(O.hasChildNodes()){T=new a(O,O);while(R=T.current()){if(R.nodeType==3){N.setStart(R,0);N.setEnd(R,0);break}if(c[R.nodeName.toLowerCase()]){N.setStartBefore(R);N.setEndBefore(R);break}Q=R;R=T.next()}if(!R){N.setStart(Q,0);N.setEnd(Q,0)}}else{if(O.nodeName=="BR"){if(O.nextSibling&&i.isBlock(O.nextSibling)){if(!M||M<9){P=i.create("br");O.parentNode.insertBefore(P,O)}N.setStartBefore(O);N.setEndBefore(O)}else{N.setStartAfter(O);N.setEndAfter(O)}}else{N.setStart(O,0);N.setEnd(O,0)}}e.setRng(N);i.remove(P);S=i.getViewPort(f.getWin());U=i.getPos(O).y;if(US.y+S.h){f.getWin().scrollTo(0,U'}return R}function q(Q){var P,O,N;if(A.nodeType==3&&(Q?u>0:u0){return true}}}function L(){var P,O,N;if(A&&A.nodeType==3&&u>=A.nodeValue.length){if((!b.isIE||b.isIE11)&&!y()){P=i.create("br");v.insertNode(P);v.setStartAfter(P);v.setEndAfter(P);O=true}}P=i.create("br");v.insertNode(P);if((b.isIE&&!b.isIE11)&&t=="PRE"&&(!M||M<8)){P.parentNode.insertBefore(i.doc.createTextNode("\r"),P)}N=i.create("span",{}," ");P.parentNode.insertBefore(N,P);e.scrollIntoView(N);i.remove(N);if(!O){v.setStartAfter(P);v.setEndAfter(P)}else{v.setStartBefore(P);v.setEndBefore(P)}e.setRng(v);h.add()}function s(N){do{if(N.nodeType===3){N.nodeValue=N.nodeValue.replace(/^[\r\n]+/,"")}N=N.firstChild}while(N)}function K(P){var N=i.getRoot(),O,Q;O=P;while(O!==N&&i.getContentEditable(O)!=="false"){if(i.getContentEditable(O)==="true"){Q=O}O=O.parentNode}return O!==N?Q:N}function I(O){var N;if(!b.isIE||b.isIE11){O.normalize();N=O.lastChild;if(!N||(/^(left|right)$/gi.test(i.getStyle(N,"float",true)))){i.add(O,"br")}}}if(!v.collapsed){f.execCommand("Delete");return}if(B.isDefaultPrevented()){return}A=v.startContainer;u=v.startOffset;x=(d.force_p_newlines?"p":"")||d.forced_root_block;x=x?x.toUpperCase():"";M=i.doc.documentMode;C=B.shiftKey;if(A.nodeType==1&&A.hasChildNodes()){D=u>A.childNodes.length-1;A=A.childNodes[Math.min(u,A.childNodes.length-1)]||A;if(D&&A.nodeType==3){u=A.nodeValue.length}else{u=0}}j=K(A);if(!j){return}h.beforeChange();if(!i.isBlock(j)&&j!=i.getRoot()){if(!x||C){L()}return}if((x&&!C)||(!x&&C)){A=l(A,u)}p=i.getParent(A,i.isBlock);n=p?i.getParent(p.parentNode,i.isBlock):null;t=p?p.nodeName.toUpperCase():"";J=n?n.nodeName.toUpperCase():"";if(J=="LI"&&!B.ctrlKey){p=n;t=J}if(t=="LI"){if(!x&&C){L();return}if(i.isEmpty(p)){if(/^(UL|OL|LI)$/.test(n.parentNode.nodeName)){return false}H();return}}if(t=="PRE"&&d.br_in_pre!==false){if(!C){L();return}}else{if((!x&&!C&&t!="LI")||(x&&C)){L();return}}x=x||"P";if(q()){if(/^(H[1-6]|PRE)$/.test(t)&&J!="HGROUP"){o=r(x)}else{o=r()}if(d.end_container_on_empty_block&&E(n)&&i.isEmpty(p)){o=i.split(n,p)}else{i.insertAfter(o,p)}m(o)}else{if(q(true)){o=p.parentNode.insertBefore(r(),p);F(o)}else{G=v.cloneRange();G.setEndAfter(p);k=G.extractContents();s(k);o=k.firstChild;i.insertAfter(k,p);z(o);I(p);m(o)}}i.setAttrib(o,"id","");h.add()}f.onKeyDown.add(function(k,j){if(j.keyCode==13){if(g(j)!==false){j.preventDefault()}}})}})(tinymce); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/tiny_mce_popup.js b/assets/plugins/tinymce/tiny_mce/tiny_mce_popup.js deleted file mode 100644 index 0808f8f9b2..0000000000 --- a/assets/plugins/tinymce/tiny_mce/tiny_mce_popup.js +++ /dev/null @@ -1,5 +0,0 @@ - -// Uncomment and change this document.domain value if you are loading the script cross subdomains -// document.domain = 'moxiecode.com'; - -var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});b.dom.bind(window,"ready",b._onDOMLoaded,b);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write(' + '); + // Prepare dataObject for submitting changes + if (isset($modx->modxRTEbridge['editableIds'])) { + $dataEls = array(); + $phs = ''; + foreach ($modx->modxRTEbridge['editableIds'] as $cssId=>$x) { + $dataEls[] = "'{$cssId}': tinymce_clean_html_before_save( $('#modx_{$cssId}').html() )"; + $phs .= (!empty($phs) ? ',' : '') . $cssId; + } + $dataEls = join(",\n ", $dataEls); + + $this->setPlaceholder('dataObject', " + var data = { + 'pluginName':'{$this->pluginParams['pluginName']}', + 'rid':{$modx->documentIdentifier}, + 'secHash':'{$this->prepareAjaxSecHash($modx->documentIdentifier)}', + 'phs':'{$phs}', + {$dataEls} + };"); + } + } + return NULL; + } + + // https://www.tinymce.com/docs/configure/integration-and-setup/#selector + // Requires comma-separated IDs as selector instead of + public function bridge_selector($selector) { + global $modx; + + if ($selector === 'initBridge' && !defined('INITBRIDGE_TINYMCE4')) { // called only once right before looping through $this->pluginParams['elements'] + define('INITBRIDGE_TINYMCE4', 1); // don´t call it at every getEditorScript() / TV-init! + $prefix = $this->getPlaceholder('selectorPrefix'); + $elements = $this->pluginParams['elements']; + + // Sort elements by themes + $sortElArr = array(); + foreach ($elements as $sel) { + if (isset($this->tvOptions[$sel]['theme']) && !empty($this->tvOptions[$sel]['theme'])) { + $theme = $this->tvOptions[$sel]['theme']; + } else { + $theme = $this->modxParams['theme']; + }; + $sortElArr[$theme][] = $sel; + } + $sortOptArr = array(); + foreach ($sortElArr as $theme => $elArr) { + $sortElArr[$theme] = ''; + // return selectors comma-separated per theme as single element for TinyMCE4 & translate options to new selectors + $key = ''; + foreach ($elArr as $el) { + $key .= (!empty($key) ? ',' : '') . $prefix . $el; + } + $sortElArr[$theme] = $key; + $sortOptArr[$key] = $this->tvOptions[$el]; + } + $this->pluginParams['elements'] = $sortElArr; + $this->tvOptions = $sortOptArr; + } + return NULL; + } + + // Handles customSetting "blockFormats" - + // https://www.tinymce.com/docs/configure/content-formatting/#block_formats + public function bridge_block_formats($selector) { + // Format: Paragraph=p;Header 1=h1;Header 2=h2;Header 3=h3 + // params-string could be bridged/modified here from Modx-config to Editor-config + // Right now its enough to return the string + return $this->modxParams['blockFormats']; + } +} \ No newline at end of file diff --git a/assets/plugins/tinymce4/connector.tinymce4.saveProcessor.php b/assets/plugins/tinymce4/connector.tinymce4.saveProcessor.php new file mode 100755 index 0000000000..022fb3a660 --- /dev/null +++ b/assets/plugins/tinymce4/connector.tinymce4.saveProcessor.php @@ -0,0 +1,22 @@ +saveContentProcessor($rid, $pluginName) : 'No ID given'; + +echo (string)$out; // returns ressource-id if successful, otherwise error-message \ No newline at end of file diff --git a/assets/plugins/tinymce4/connector.tinymce4.templates.php b/assets/plugins/tinymce4/connector.tinymce4.templates.php new file mode 100755 index 0000000000..2ddffa79cd --- /dev/null +++ b/assets/plugins/tinymce4/connector.tinymce4.templates.php @@ -0,0 +1,29 @@ +getTemplateChunkList(); // $templatesArr could be modified/bridged now for different editors before sending + +// Make output a real JavaScript file! +header('Content-type: application/x-javascript'); +header('pragma: no-cache'); +header('expires: 0'); +echo json_encode($templatesArr); \ No newline at end of file diff --git a/assets/plugins/tinymce4/gsettings/gsettings.body.inc.html b/assets/plugins/tinymce4/gsettings/gsettings.body.inc.html new file mode 100755 index 0000000000..5f9c7aea9d --- /dev/null +++ b/assets/plugins/tinymce4/gsettings/gsettings.body.inc.html @@ -0,0 +1,13 @@ + + + + + + [+rows+] +

                      [+editorLogo+] [+editorLabel+] [+settings+] v[+editorVersion+]

                      \ No newline at end of file diff --git a/assets/plugins/tinymce4/gsettings/gsettings.row.inc.html b/assets/plugins/tinymce4/gsettings/gsettings.row.inc.html new file mode 100755 index 0000000000..1f9bea2756 --- /dev/null +++ b/assets/plugins/tinymce4/gsettings/gsettings.row.inc.html @@ -0,0 +1,8 @@ + + [+title+] + + [+configTpl+] +
                      [+message+][+messageVal+]
                      + [+default+] + + \ No newline at end of file diff --git a/assets/plugins/tinymce4/gsettings/gsettings.rows.inc.php b/assets/plugins/tinymce4/gsettings/gsettings.rows.inc.php new file mode 100755 index 0000000000..03ceb865d2 --- /dev/null +++ b/assets/plugins/tinymce4/gsettings/gsettings.rows.inc.php @@ -0,0 +1,72 @@ +array( + 'title'=>'editor_theme_title', + 'configTpl'=>' + ', + 'message'=>'editor_theme_message' + ), + 'skin'=>array( + 'title'=>'editor_skin_title', + 'configTpl'=>' + ', + 'message'=>'editor_skin_message', + 'messageVal'=>''. $params['base_url'].$params['skinsDirectory'] .'' + ), + 'template'=>array( + 'title'=>'tpl_title', + 'configTpl'=>' +
                      +
                      ', + 'message'=>'tpl_msg' + ), + 'entermode'=>array( + 'title'=>'editor_entermode_title', + 'configTpl'=>'[+entermode_options+]', + 'message'=>'editor_entermode_message' + ), + 'element_format'=>array( + 'title'=>'element_format_title', + 'configTpl'=>'[+element_format_options+]', + 'message'=>'element_format_message' + ), + 'schema'=>array( + 'title'=>'schema_title', + 'configTpl'=>'[+schema_options+]', + 'message'=>'schema_message' + ), + + 'custom_plugins'=>array( + 'title'=>'editor_custom_plugins_title', + 'configTpl'=>' + ', + 'message'=>'editor_custom_plugins_message' + ), + 'custom_buttons'=>array( + 'title'=>'editor_custom_buttons_title', + 'configTpl'=>' + Row 1: +
                      [+editor_custom_buttons1_msg+]
                      + Row 2: +
                      [+editor_custom_buttons2_msg+]
                      + Row 3: + Row 4: ', + 'message'=>'editor_custom_buttons_message' + ), + 'css_selectors'=>array( + 'title'=>'editor_css_selectors_title', + 'configTpl'=>' + ', + 'message'=>'editor_css_selectors_message' + ) +); + +?> \ No newline at end of file diff --git a/manager/media/style/MODxCarbon/index.html b/assets/plugins/tinymce4/gsettings/index.html similarity index 100% rename from manager/media/style/MODxCarbon/index.html rename to assets/plugins/tinymce4/gsettings/index.html diff --git a/assets/plugins/tinymce4/index.html b/assets/plugins/tinymce4/index.html new file mode 100755 index 0000000000..cfb7d0fe18 --- /dev/null +++ b/assets/plugins/tinymce4/index.html @@ -0,0 +1,2 @@ +

                      Unauthorized access

                      +You're not allowed to access file folder \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/custom/czech.inc.php b/assets/plugins/tinymce4/lang/custom/czech.inc.php new file mode 100755 index 0000000000..6a966a9de3 --- /dev/null +++ b/assets/plugins/tinymce4/lang/custom/czech.inc.php @@ -0,0 +1,13 @@ +Unauthorized access +You're not allowed to access file folder \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/custom/italian.inc.php b/assets/plugins/tinymce4/lang/custom/italian.inc.php new file mode 100755 index 0000000000..c98862c78e --- /dev/null +++ b/assets/plugins/tinymce4/lang/custom/italian.inc.php @@ -0,0 +1,11 @@ +' . $contents); + +$_lang['lang_code'] = 'uk'; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/czech.inc.php b/assets/plugins/tinymce4/lang/gsettings/czech.inc.php new file mode 100755 index 0000000000..ce6b1c5d75 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/czech.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Například řekněme, že chceme mít třídy .mono a .smallText v našem CSS souboru, můžeme je přidat zde ve tvaru:
                      [+editor_css_selectors_example+]
                      Pozor na to, že poslední výraz nesmí být ukončen středníkem.'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'Nastavení'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Advanced'; +$_lang['theme_editor'] = 'MODX style'; +$_lang['theme_custom'] = 'Custom'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Použít globální nastavení'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/danish.inc.php b/assets/plugins/tinymce4/lang/gsettings/danish.inc.php new file mode 100755 index 0000000000..727e8a1294 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/danish.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      [+editor_css_selectors_example+]
                      Note that the last entry should not have a "[+editor_css_selectors_separator+]" after it.'; +$_lang['settings'] = 'Settings'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Advanced'; +$_lang['theme_editor'] = 'MODX Style'; +$_lang['theme_custom'] = 'Custom'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use the global setting'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/english.inc.php b/assets/plugins/tinymce4/lang/gsettings/english.inc.php new file mode 100755 index 0000000000..b96120b9df --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/english.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      [+editor_css_selectors_example+]
                      Note that the last entry should not have a "[+editor_css_selectors_separator+]" after it.'; +$_lang['settings'] = 'Settings'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Advanced'; +$_lang['theme_editor'] = 'MODX Style'; +$_lang['theme_custom'] = 'Custom'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use the global setting'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/finnish.inc.php b/assets/plugins/tinymce4/lang/gsettings/finnish.inc.php new file mode 100755 index 0000000000..95eae16d4b --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/finnish.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Jos sinulla on esim. .leipateksti ja .otsikko valitsimina css-tiedostossasi, lisää ne listaan näin:
                      [+editor_css_selectors_example+]
                      Huomaa, ettei viimeisen kohdan jälkeen le puolipistettä.'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'Asetukset'; +$_lang['theme_simple'] = 'Yksinkertaistettu'; +$_lang['theme_full'] = 'Täysi'; +$_lang['theme_advanced'] = 'Edistynyt'; +$_lang['theme_editor'] = 'Sisällönmuokkaajalle'; +$_lang['theme_custom'] = 'Kustomoitu'; +$_lang['theme_creative'] = 'Luova'; +$_lang['theme_logic'] = 'XHTML'; +$_lang['theme_legacy'] = 'Vanha tyyli'; +$_lang['theme_global_settings'] = 'Käytä maailmanlaajuisesti'; +$_lang['editor_skin_title'] = 'Ulkoasu'; +$_lang['editor_skin_message'] = 'Työkalupalkin visuaalinen tyyli. Katso '; +$_lang['editor_entermode_title'] = 'Enter-näppäimen toiminto'; +$_lang['editor_entermode_message'] = 'Valitse mitä tapahtuu kun enter-näppäintä painetaan.'; +$_lang['entermode_opt1'] = 'Ympäröi kappale-elementillä <p></p>'; +$_lang['entermode_opt2'] = 'Lisää rivivaihtoelementti <br />'; + +$_lang['element_format_title'] = '(X)HTML-elementtien merkintätyyli'; +$_lang['element_format_message'] = 'Tässä voit valita muotoillaanko tyhjät elementit HTML- vai XHTML-tyylisesti. XHTML on oletusvalinta. Tämä tarkoittaa että esimerkiksi <br /> muutetaan muotoon <br>, jos tämä asetus on kohdassa "HTML".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Sivujen IDt'; +$_lang['tpl_chunkname'] = 'Palasten nimet'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/francais-utf8.inc.php b/assets/plugins/tinymce4/lang/gsettings/francais-utf8.inc.php new file mode 100755 index 0000000000..e73c38d621 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/francais-utf8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Prenons l\'exemple de la classe .mono et .smallText dans votre feuille de style. Vous pouvez les appeler de la façon suivante:
                      [+editor_css_selectors_example+]
                      La dernière entrée de la ligne ne doit pas être suivie du point-virgule ( ; ).'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'Configuration'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Avancé'; +$_lang['theme_editor'] = 'Content Editor'; +$_lang['theme_custom'] = 'Personnalisé'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Utilisez le paramètre global'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/francais.inc.php b/assets/plugins/tinymce4/lang/gsettings/francais.inc.php new file mode 100755 index 0000000000..ceeaa0140d --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/francais.inc.php @@ -0,0 +1,5 @@ +' . $contents); diff --git a/assets/plugins/tinymce4/lang/gsettings/german.inc.php b/assets/plugins/tinymce4/lang/gsettings/german.inc.php new file mode 100755 index 0000000000..95e56a129c --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/german.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Beispiel: Sie wollen .mono und .smallText als Selektoren in Ihrer CSS Datei benutzen, dann erstellen Sie folgenden Eintrag:
                      [+editor_css_selectors_example+]
                      Bitte achten Sie darauf, dass der letzte Eintrag nicht mit einem "[+editor_css_selectors_separator+]" abgeschlossen werden darf.'; +$_lang['settings'] = 'Einstellungen'; +$_lang['theme_simple'] = 'Wenige Plugins'; +$_lang['theme_full'] = '[+editorLabel+] komplett'; +$_lang['theme_advanced'] = 'Mittlere Anzahl Plugins'; +$_lang['theme_editor'] = 'Alle Plugins'; +$_lang['theme_custom'] = 'Individuell'; +$_lang['theme_creative'] = 'Kreativ'; +$_lang['theme_logic'] = 'XHTML'; +$_lang['theme_legacy'] = 'Veralteter Stil'; +$_lang['theme_global_settings'] = 'Verwenden Sie die globale Einstellung'; +$_lang['editor_skin_title'] = 'Oberfäche'; +$_lang['editor_skin_message'] = 'Gestaltung der Symbolleiste. Siehe '; +$_lang['editor_entermode_title'] = 'Eingabetasten-Modus'; +$_lang['editor_entermode_message'] = 'Zeichen, die nach dem Drücken der Eingabetaste erzeugt werden.'; +$_lang['entermode_opt1'] = 'Umgeben mit <p></p>'; +$_lang['entermode_opt2'] = 'Einfügen von <br />'; + +$_lang['element_format_title'] = 'Code-Format'; +$_lang['element_format_message'] = 'Mit dieser Einstellung können Sie aktivieren, ob der HTML-Code als HTML oder als XHTML erzeugt wird. Die Standardeinstellung ist XHTML. Im HTML Modus werden z.B. statt <br />-Tags nur <br>-Tags erzeugt.'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'Mit dieser Einstellung können Sie zwischen dem HTML4 und HTML5 Schema umstellen. Damit können Sie steuern, welche Elemente und Attribute im HTML-Code eingegeben werden dürfen.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'Hier können Sie Templates auf Chunk und Ressourcen-Basis für die Template Schaltfläche im [+editorLabel+] definieren (diese wird standardmäßig nicht angezeigt). Der Chunk- bzw. Ressourcen-Inhalt wird dann an der Cursor-Position als HTML Code im [+editorLabel+] eingefügt. Mehrere Chunk-Namen bzw. Ressourcen-IDs können kommasepariert angegeben werden.'; +$_lang['tpl_docid'] = 'Ressource-IDs'; +$_lang['tpl_chunkname'] = 'Chunk-Namen'; + +$_lang['default'] = 'Standard: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/hebrew.inc.php b/assets/plugins/tinymce4/lang/gsettings/hebrew.inc.php new file mode 100755 index 0000000000..af0ee69cc2 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/hebrew.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      [+editor_css_selectors_example+]
                      Note that the last entry should not have a "[+editor_css_selectors_separator+]" after it.'; +$_lang['settings'] = 'Settings'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Advanced'; +$_lang['theme_editor'] = 'MODX Style'; +$_lang['theme_custom'] = 'Custom'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use the global setting'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/index.html b/assets/plugins/tinymce4/lang/gsettings/index.html new file mode 100755 index 0000000000..cfb7d0fe18 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/index.html @@ -0,0 +1,2 @@ +

                      Unauthorized access

                      +You're not allowed to access file folder \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/italian.inc.php b/assets/plugins/tinymce4/lang/gsettings/italian.inc.php new file mode 100755 index 0000000000..78436e68ec --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/italian.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Quindi se per esempio avete i selettori .mono e .smallText nel vostro file CSS, li potete aggiungere come:
                      [+editor_css_selectors_example+]
                      Notare che l\'ultimo elemento NON deve essere teminato da "[+editor_css_selectors_separator+]".'; +$_lang['settings'] = 'Impostazioni'; +$_lang['theme_simple'] = 'Semplice'; +$_lang['theme_full'] = 'Completo'; +$_lang['theme_advanced'] = 'Avanzato'; +$_lang['theme_editor'] = 'Stile MODX'; +$_lang['theme_custom'] = 'Personalizzato'; +$_lang['theme_creative'] = 'Creativo'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'vecchio stile'; +$_lang['theme_global_settings'] = 'Utilizza le impostazioni globali'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Stile della toolbar. Vedete su '; +$_lang['editor_entermode_title'] = 'Inserire la modalità del tasto'; +$_lang['editor_entermode_message'] = 'E\' stata definita l\'operazione da effettuare quando viene premuto il tasto Enter.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Inserisci <br />'; + +$_lang['element_format_title'] = 'Formato dell\'elemento'; +$_lang['element_format_message'] = 'Questa opzione stabilisce se gli elementi devono essere in html o in xhtml. Di default saranno in xhtml. Questo implica che se impostate "html" <br /> diventerà <br> .'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'Questa opzione vi consente di passare da uno schema HTML4 a uno HTML5. In questo modo controllate quali elementi possono essere validamente inserite nel vostro codice HTML. Può assumere il valore di default html4 oppure html5.'; + +$_lang['tpl_title'] = 'Bottone del template'; +$_lang['tpl_msg'] = 'Potete inserire il blocco HTML che avete precedentemente impostato nella toolbar. Potete impostare un blocco HTML come Risorsa o Chunk e definirne diversi separandoli con una virgola.'; +$_lang['tpl_docid'] = 'ID delle risorse'; +$_lang['tpl_chunkname'] = 'Nomi dei chunks'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/japanese-utf8.inc.php b/assets/plugins/tinymce4/lang/gsettings/japanese-utf8.inc.php new file mode 100755 index 0000000000..8329987fa5 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/japanese-utf8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      上記のように、複数のクラスをセミコロンで区切って指定します。
                      [+editor_css_selectors_example+]'; +$_lang['settings'] = 'の設定'; +$_lang['theme_simple'] = 'シンプル'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = '[+editorLabel+]デフォルト'; +$_lang['theme_editor'] = 'MODXデフォルト'; +$_lang['theme_custom'] = 'カスタム'; +$_lang['theme_creative'] = 'クリエイティブ'; +$_lang['theme_logic'] = 'ロジック'; +$_lang['theme_legacy'] = '旧タイプ'; +$_lang['theme_global_settings'] = 'グローバル設定を利用'; +$_lang['editor_skin_title'] = 'スキン'; +$_lang['editor_skin_message'] = 'ツールバーのデザイン。ディレクトリ内のスキンを選択します。 '; +$_lang['editor_entermode_title'] = '改行キーの動作'; +$_lang['editor_entermode_message'] = '改行キーを押した時の動作を設定します。'; +$_lang['entermode_opt1'] = '<p></p>で囲む'; +$_lang['entermode_opt2'] = '<br />を挿入'; + +$_lang['element_format_title'] = 'タグのスタイル'; +$_lang['element_format_message'] = '<br />または<br>'; +$_lang['schema_title'] = 'スキーマ'; +$_lang['schema_message'] = 'スキーマを選択します。'; + +$_lang['tpl_title'] = 'テンプレート挿入'; +$_lang['tpl_msg'] = 'あらかじめ登録しておいたHTMLブロックをツールバーから挿入できます。HTMLブロックはリソースまたはチャンクとして作成し、カンマで区切って複数指定できます。'; +$_lang['tpl_docid'] = 'リソースID'; +$_lang['tpl_chunkname'] = 'チャンク名'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/nederlands-utf8.inc.php b/assets/plugins/tinymce4/lang/gsettings/nederlands-utf8.inc.php new file mode 100755 index 0000000000..175121307d --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/nederlands-utf8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Bijvoorbeeld: je hebt de .mono en .smallText selectors in uw CSS bestand, dan kunt u die hier invullen als:
                      [+editor_css_selectors_example+]
                      Let erop dat de laatste waarde niet wordt afgesloten door een "[+editor_css_selectors_separator+]".'; +$_lang['settings'] = 'Instellingen'; +$_lang['theme_simple'] = 'Eenvoudig'; +$_lang['theme_full'] = 'Volledig'; +$_lang['theme_advanced'] = 'Geavanceerd'; +$_lang['theme_editor'] = 'Content Editor'; +$_lang['theme_custom'] = 'Aangepast'; +$_lang['theme_creative'] = 'Creatief'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy stijl'; +$_lang['theme_global_settings'] = 'Gebruik het algemene instelling'; +$_lang['editor_skin_title'] = 'Weergave'; +$_lang['editor_skin_message'] = 'Ontwerp van de toolbar. zie '; +$_lang['editor_entermode_title'] = 'Voeg versleutel mode in'; +$_lang['editor_entermode_message'] = 'Wat gebeurt er bij indrukken van de ENTER toets.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Voeg <br /> in'; + +$_lang['element_format_title'] = 'Element formaat'; +$_lang['element_format_message'] = 'Deze optie maakt controle mogelijk als elementen in html of xhtml modus zijn. xhtml is de standaard staat voor deze optie. Dit betekent dat bijvoorbeeld
                      zal worden
                      Als u deze optie op "html" ingesteld.'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'Met de schema optie kunt u omschakelen tussen HTML4 en HTML5. Dit regelt de geldige elementen en kenmerken die in de HTML kan worden geplaatst. Deze waarde kan de standaard HTML4 of html5 zijn.'; + +$_lang['tpl_title'] = 'Template knop'; +$_lang['tpl_msg'] = 'U kunt het HTML-blok invoegen welke u vooraf ingeschreven heeft vanuit de werkbalk. Je maakt het HTML blok als pagina of een chunk, en kan met komma\'s benoemd worden.'; +$_lang['tpl_docid'] = 'Pagina ID'; +$_lang['tpl_chunkname'] = 'Chunk namen'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/nederlands.inc.php b/assets/plugins/tinymce4/lang/gsettings/nederlands.inc.php new file mode 100755 index 0000000000..1ecaeb8503 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/nederlands.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Bijvoorbeeld: je hebt de .mono en .smallText selectors in uw CSS bestand, dan kunt u die hier invullen als:
                      [+editor_css_selectors_example+]
                      Let erop dat de laatste waarde niet wordt afgesloten door een "[+editor_css_selectors_separator+]"."; +$_lang['settings'] = "Instellingen"; +$_lang['theme_simple'] = "Eenvoudig"; +$_lang['theme_advanced'] = "Geavanceerd"; +$_lang['theme_editor'] = "Content Editor"; +$_lang['theme_custom'] = "Aangepast"; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = "Gebruik het algemene instelling"; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter key mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template button'; +$_lang['tpl_msg'] = 'You can insert the HTML block which you registered beforehand from toolbar. You make HTML block as resource or a chunk, and can appoint plural number with a comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/norsk.inc.php b/assets/plugins/tinymce4/lang/gsettings/norsk.inc.php new file mode 100755 index 0000000000..d2893f83d2 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/norsk.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      [+editor_css_selectors_example+]
                      Note that the last entry should not have a "[+editor_css_selectors_separator+]" after it.'; +$_lang['settings'] = 'Settings'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Advanced'; +$_lang['theme_editor'] = 'MODX Style'; +$_lang['theme_custom'] = 'Custom'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use the global setting'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/persian.inc.php b/assets/plugins/tinymce4/lang/gsettings/persian.inc.php new file mode 100755 index 0000000000..ccabccca5f --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/persian.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      به نحو دیگر, فرض کنید که .mono و .smallText را در انتخابگرهای فایل CSS خود دارید, شما میتوانید آنها را در اینجا با این عنوان وارد کنید:
                      [+editor_css_selectors_example+]
                      توجه که در انتخای متن آخر نباید سمی-کالن یا نقطه کاما باشد.'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'تنظیمات'; +$_lang['theme_simple'] = 'ساده'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'پیشرفته'; +$_lang['theme_editor'] = 'ویرایشگر متن'; +$_lang['theme_custom'] = 'مخصوص'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'با استفاده از محیط های جهانی'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/polish-utf8.inc.php b/assets/plugins/tinymce4/lang/gsettings/polish-utf8.inc.php new file mode 100755 index 0000000000..c2d92f8e77 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/polish-utf8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Na przykład, powiedzmy że w pliku CSS posiadasz selektory .mono oraz .smallText. Możesz dodać je tak:
                      [+editor_css_selectors_example+]
                      Zwróć uwagę, że ostatni element nie posiada średnika.'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'Ustawienia'; +$_lang['theme_simple'] = 'Prosty'; +$_lang['theme_full'] = 'Pełny'; +$_lang['theme_advanced'] = 'Zaawansowany'; +$_lang['theme_editor'] = 'Styl MODX'; +$_lang['theme_custom'] = 'Niestandardowy'; +$_lang['theme_creative'] = 'Twórczy'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'Klasyczny styl'; +$_lang['theme_global_settings'] = 'Użyj ustawienia globalnego'; +$_lang['editor_skin_title'] = 'Skórka'; +$_lang['editor_skin_message'] = 'Wygląd paska narzędzi. Zobacz '; +$_lang['editor_entermode_title'] = 'Tryb klawisza ENTER'; +$_lang['editor_entermode_message'] = 'Operacja po wciśnięciu klawisza ENTER.'; +$_lang['entermode_opt1'] = 'Owiń w <p></p>'; +$_lang['entermode_opt2'] = 'Wstaw <br />'; + +$_lang['element_format_title'] = 'Format elementu'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schemat'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Przycisk szablonu'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'ID zasobów'; +$_lang['tpl_chunkname'] = 'Nazwy chunków'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/polish.inc.php b/assets/plugins/tinymce4/lang/gsettings/polish.inc.php new file mode 100755 index 0000000000..c985b227b4 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/polish.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      For instance, say you have .mono and .smallText selectors in your CSS file, you could add them here as:
                      [+editor_css_selectors_example+]
                      Note that the last entry should not have a "[+editor_css_selectors_separator+]" after it.'; +$_lang['settings'] = 'Settings'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Advanced'; +$_lang['theme_editor'] = 'MODX Style'; +$_lang['theme_custom'] = 'Custom'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use the global setting'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/portuguese-br.inc.php b/assets/plugins/tinymce4/lang/gsettings/portuguese-br.inc.php new file mode 100755 index 0000000000..f342616e0c --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/portuguese-br.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Por exemplo, se tiver os selectores .mono e .texto Pequeno no seu ficheiro CSS, pode adicioná-los aqui como:
                      [+editor_css_selectors_example+]
                      Note que a última entrada não deverá ter ponto e vírgula a segui-la.'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'Opções'; +$_lang['theme_simple'] = 'Simples'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Avançado'; +$_lang['theme_editor'] = 'Editor de Conteúdo'; +$_lang['theme_custom'] = 'Personalizar'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use a configuração global'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/portuguese.inc.php b/assets/plugins/tinymce4/lang/gsettings/portuguese.inc.php new file mode 100755 index 0000000000..9b9f701e14 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/portuguese.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Por exemplo, se tiver os selectores .mono e .texto Pequeno no seu ficheiro CSS, pode adicioná-los aqui como:
                      [+editor_css_selectors_example+]
                      Note que a última entrada não deverá ter ponto e vírgula a segui-la.'; // add "[+editor_css_selectors_separator+]" +$_lang['settings'] = 'Opções'; +$_lang['theme_simple'] = 'Simples'; +$_lang['theme_full'] = 'Full'; +$_lang['theme_advanced'] = 'Avançado'; +$_lang['theme_editor'] = 'Editor de Conteúdo'; +$_lang['theme_custom'] = 'Personalizar'; +$_lang['theme_creative'] = 'Creative'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy style'; +$_lang['theme_global_settings'] = 'Use a configuração global'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Design of toolbar. see '; +$_lang['editor_entermode_title'] = 'Enter Key Mode'; +$_lang['editor_entermode_message'] = 'Operation when the enter key is pressed is set up.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insert <br />'; + +$_lang['element_format_title'] = 'Element Format'; +$_lang['element_format_message'] = 'This option enables control if elements should be in html or xhtml mode. xhtml is the default state for this option. This means that for example <br /> will be <br> if you set this option to "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'The schema option enables you to switch between the HTML4 and HTML5 schema. This controls the valid elements and attributes that can be placed in the HTML. This value can either be the default html4 or html5.'; + +$_lang['tpl_title'] = 'Template Button'; +$_lang['tpl_msg'] = 'You could define templates on chunk or ressource base for the template button in [+editorLabel+] (won\'t be displayed by default). The content of the chunk/of the resource will be inserted at the cursor position as html code in [+editorLabel+]. Multiple chunk names or ressource IDs have to be separated by comma.'; +$_lang['tpl_docid'] = 'Resource IDs'; +$_lang['tpl_chunkname'] = 'Chunk Names'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/russian-UTF8.inc.php b/assets/plugins/tinymce4/lang/gsettings/russian-UTF8.inc.php new file mode 100755 index 0000000000..4c16e1fe4d --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/russian-UTF8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Например, в вашем CSS файле есть .mono и .smallText селекторы, чтобы их добавить надо прописать:
                      [+editor_css_selectors_example+]
                      NB: не ставьте точку с "[+editor_css_selectors_separator+]" после последней записи.'; +$_lang['settings'] = 'Настройки'; +$_lang['theme_simple'] = 'Простая'; +$_lang['theme_full'] = 'Все возможности'; +$_lang['theme_advanced'] = 'Продвинутая'; +$_lang['theme_editor'] = 'Редактор контента'; +$_lang['theme_custom'] = 'Индивидуальная'; +$_lang['theme_creative'] = 'Творческая'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'legacy-стиль'; +$_lang['theme_global_settings'] = 'Использовать глобальные настройки'; +$_lang['editor_skin_title'] = 'Тема оформления'; +$_lang['editor_skin_message'] = 'Варианты оформления панели инструментов смотрите тут '; +$_lang['editor_entermode_title'] = 'Действие клавиши Enter'; +$_lang['editor_entermode_message'] = 'Устанавливает действие, которое выполняется при нажатии клавиши Enter'; +$_lang['entermode_opt1'] = 'Обернуть в <p></p>'; +$_lang['entermode_opt2'] = 'Добавить <br />'; + +$_lang['element_format_title'] = 'Формат элемента'; +$_lang['element_format_message'] = 'Эта настройка задает формат элементов: html или xhtml. По умолчанию выбран xhtml. Это значит, что <br /> будет <br> если выбран "html".'; +$_lang['schema_title'] = 'Схема'; +$_lang['schema_message'] = 'Эта настройка позволяет выбрать стандарт HTML4 или HTML5. Выбор стандарта определяет допустимые в разметке элементы и атрибуты.'; + +$_lang['tpl_title'] = 'Кнопка шаблона'; +$_lang['tpl_msg'] = 'Вы можете вставить HTML блок, который вы создали заранее из панели инструментов. HTML блоки можно создавать из документов или из чанков, так же можно создать сразу несколько разделяя их запятыми'; +$_lang['tpl_docid'] = 'Список ID ресурсов'; +$_lang['tpl_chunkname'] = 'Название чанка'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/russian.inc.php b/assets/plugins/tinymce4/lang/gsettings/russian.inc.php new file mode 100755 index 0000000000..d9bf6566b1 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/russian.inc.php @@ -0,0 +1,5 @@ +' . $contents); diff --git a/assets/plugins/tinymce4/lang/gsettings/spanish-utf8.inc.php b/assets/plugins/tinymce4/lang/gsettings/spanish-utf8.inc.php new file mode 100755 index 0000000000..49d1ff416d --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/spanish-utf8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Por ejemplo, imagine que tiene los selectores .mono and .smallText en su archivo CSS, puede agregarlos aquí como:
                      [+editor_css_selectors_example+]
                      Note que la última entrada no debe tener el "[+editor_css_selectors_separator+]" luego de ella.'; +$_lang['settings'] = 'Configuraciones'; +$_lang['theme_simple'] = 'Simple'; +$_lang['theme_full'] = 'Completo'; +$_lang['theme_advanced'] = 'Advanzado'; +$_lang['theme_editor'] = 'Editor de contenido'; +$_lang['theme_custom'] = 'Personalizado'; +$_lang['theme_creative'] = 'Creativo'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'estilo obsoleto'; +$_lang['theme_global_settings'] = 'Use la configuración global'; +$_lang['editor_skin_title'] = 'Máscara'; +$_lang['editor_skin_message'] = 'Diseño de barra de herramientas. ver '; +$_lang['editor_entermode_title'] = 'Entrar en modo de clave'; +$_lang['editor_entermode_message'] = 'Se establece la operación cuando se presiona la tecla enter.'; +$_lang['entermode_opt1'] = 'Wrap <p></p>'; +$_lang['entermode_opt2'] = 'Insertar <br />'; + +$_lang['element_format_title'] = 'Formato de elementos'; +$_lang['element_format_message'] = 'Esta opción permite controlar si los elementos deben estar en modo html o xhtml. Xhtml es el estado predeterminado para esta opción. Esto significa que por ejemplo < br / > será < br > si establece esta opción a "html".'; +$_lang['schema_title'] = 'Esquema'; +$_lang['schema_message'] = 'La opción de esquema le permite cambiar entre los esquemas de HTML4 ó HTML5. Controla los elementos válidos y atributos que pueden ser colocados en el HTML.Este valor puede ser por defecto predeterminado html4 o html5 .Este valor puede ser el valor por defecto html4 ó html5.'; + +$_lang['tpl_title'] = 'Botón de Plantilla'; +$_lang['tpl_msg'] = 'Podrá definir plantillas en chucks o recursos base para el botón plantilla en [+editorLabel+] (no se mostrará de forma predeterminada). El contenido del chuck/recurso se insertará en la posición del cursor como código html en [+editorLabel+]. Múltiples nombres de chucks o ID de recursos tienen que estar separados por comas.'; +$_lang['tpl_docid'] = 'ID de los Recursos'; +$_lang['tpl_chunkname'] = 'Nombres de los Chunks'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/spanish.inc.php b/assets/plugins/tinymce4/lang/gsettings/spanish.inc.php new file mode 100755 index 0000000000..1b30a7a1fd --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/spanish.inc.php @@ -0,0 +1,5 @@ +' . $contents); diff --git a/assets/plugins/tinymce4/lang/gsettings/svenska-utf8.inc.php b/assets/plugins/tinymce4/lang/gsettings/svenska-utf8.inc.php new file mode 100755 index 0000000000..09e4747f53 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/svenska-utf8.inc.php @@ -0,0 +1,47 @@ +[+editor_css_selectors_schema+]
                      Om du till exempel har selektorerna .mono och .litenText i din css-fil, så kan du ange dom här som:
                      [+editor_css_selectors_example+]
                      Notera att den sista definitionen inte ska följas av ett semikolon.'; +$_lang['settings'] = 'Inställningar'; +$_lang['theme_simple'] = 'Enkelt'; +$_lang['theme_full'] = 'Komplett'; +$_lang['theme_advanced'] = 'Avancerat'; +$_lang['theme_editor'] = 'Innehållseditor'; +$_lang['theme_custom'] = 'Anpassat'; +$_lang['theme_creative'] = 'Kreativ'; +$_lang['theme_logic'] = 'xhtml'; +$_lang['theme_legacy'] = 'Äldre stil'; +$_lang['theme_global_settings'] = 'Använd globalt'; +$_lang['editor_skin_title'] = 'Skin'; +$_lang['editor_skin_message'] = 'Verktygsradens design. Se '; +$_lang['editor_entermode_title'] = 'Enterknappens funktion'; +$_lang['editor_entermode_message'] = 'Anger vad som händer när Enterknappen trycks ner.'; +$_lang['entermode_opt1'] = 'Inneslut i <p></p>'; +$_lang['entermode_opt2'] = 'Infoga <br />'; + +$_lang['element_format_title'] = 'Elementformat'; +$_lang['element_format_message'] = 'Denna inställning anger om element ska hanteras som html eller xhtml. xhtml är standardvalet. Det här betyder till exempel att <br /> kommer att bli <br> om du sätter det val till "html".'; +$_lang['schema_title'] = 'Schema'; +$_lang['schema_message'] = 'Schemainställningen låter dig växla mellan html4- och html5-schema. Dessa styr vilka element och attribut som kan användas i html-koden. Värdet kan antingen vara standardvärdet html4 eller html5.'; + +$_lang['tpl_title'] = 'Mallknapp'; +$_lang['tpl_msg'] = 'Du kan från verktygsraden infoga HTML-block som du definierat tidigare. HTML-blocken skapas som en resurs eller en chunk och du kan lägga till flera genom att separera dom med kommatecken.'; +$_lang['tpl_docid'] = 'Resurs-ID:n'; +$_lang['tpl_chunkname'] = 'Chunknamn'; + +$_lang['default'] = 'Default: '; \ No newline at end of file diff --git a/assets/plugins/tinymce4/lang/gsettings/svenska.inc.php b/assets/plugins/tinymce4/lang/gsettings/svenska.inc.php new file mode 100755 index 0000000000..cb2f0c3046 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/svenska.inc.php @@ -0,0 +1,5 @@ +' . $contents); diff --git a/assets/plugins/tinymce4/lang/gsettings/ukrainian.inc.php b/assets/plugins/tinymce4/lang/gsettings/ukrainian.inc.php new file mode 100755 index 0000000000..3e8668f065 --- /dev/null +++ b/assets/plugins/tinymce4/lang/gsettings/ukrainian.inc.php @@ -0,0 +1,7 @@ +' . $contents); + +$_lang['lang_code'] = 'uk'; \ No newline at end of file diff --git a/assets/plugins/tinymce4/plugin.tinymce.inc.php b/assets/plugins/tinymce4/plugin.tinymce.inc.php new file mode 100644 index 0000000000..70b049b223 --- /dev/null +++ b/assets/plugins/tinymce4/plugin.tinymce.inc.php @@ -0,0 +1,97 @@ +event; + +if($inlineMode == 'enabled' && $e->name == 'OnWebPagePrerender') { + $options = array('editable'=>array( + 'theme'=>isset($inlineTheme) ? $inlineTheme : 'inline' + )); +} else { + $options = is_array($options) ? $options : array(); +} + +$rte = new tinymce4bridge($options); +$rte->setDebug(false); // true or 'full' for Debug-Infos in HTML-comments + +// Overwrite theme +// $rte->force('width', '75%', 'string' ); // Overwrite width parameter +// $rte->force('height', isset($height) ? $height : '400px', 'string' ); // Get/set height from plugin-configuration +// $rte->force('height', NULL ); // Removes "height" completely from editor-init + +$rte->pluginParams['customParams'] = !empty($rte->pluginParams['customParams']) ? ','. trim($rte->pluginParams['customParams'], ',') : ''; + +// Internal Stuff - Don´t touch! +$showSettingsInterface = true; // Show/Hide interface in Modx- / user-configuration +$editorLabel = $rte->pluginParams['editorLabel']; + +switch ($e->name) { + // register for manager + case "OnRichTextEditorRegister": + $e->output($editorLabel); + break; + + // render script for JS-initialization + case "OnRichTextEditorInit": + if ($editor === $editorLabel) { + // Handle introtext-RTE + if($introtextRte == 'enabled' && isset($rte->pluginParams['elements']) && !defined($editor . '_INIT_INTROTEXT')) { + define($editor . '_INIT_INTROTEXT', 1); + if(!in_array('introtext',$rte->pluginParams['elements'])) { + $rte->pluginParams['elements'][] = 'introtext'; + $rte->tvOptions['introtext']['theme'] = 'introtext'; + }; + } + $script = $rte->getEditorScript(); + $e->output($script); + }; + break; + + // Inline-Mode + case "OnLoadWebPageCache": + case "OnLoadWebDocument": + if($inlineMode == 'enabled' && isset($_SESSION['mgrValidated'])) { + $output = &$modx->documentContent; + $output = $rte->parseEditableIds($output); + $rte->protectModxPhs(); // Avoid breaking content / parsing of Modx-placeholders when editing (Inline-Mode) + } + break; + + case "OnParseDocument": + if($inlineMode == 'enabled' && isset($_SESSION['mgrValidated'])) { + $output = &$modx->documentOutput; + $output = $rte->parseEditableIds($output); + $rte->protectModxPhs(); + } + break; + + case "OnWebPagePrerender": + if($inlineMode == 'enabled' && isset($_SESSION['mgrValidated'])) { + $rte->set('inline', true, 'bool'); // https://www.tinymce.com/docs/configure/editor-appearance/#inline + $rte->setPluginParam('elements', 'editable'); // Set missing plugin-parameter manually for Frontend + $rte->addEditorScriptToBody(); + } + break; + + // render Modx- / User-configuration settings-list + case "OnInterfaceSettingsRender": + if( $showSettingsInterface === true ) { + $html = $rte->getModxSettings(); + $e->output($html); + }; + break; + + default : + return; // important! stop here! + break; +} diff --git a/assets/plugins/tinymce4/plugin.tinymce.php b/assets/plugins/tinymce4/plugin.tinymce.php new file mode 100755 index 0000000000..d8af53b8f8 --- /dev/null +++ b/assets/plugins/tinymce4/plugin.tinymce.php @@ -0,0 +1,24 @@ +(Be careful or leave empty!);textarea; &entityEncoding=Entity Encoding;list;named,numeric,raw;named &entities=Entities;text; &pathOptions=Path Options;list;Site config,Absolute path,Root relative,URL,No convert;Site config &resizing=Advanced Resizing;list;true,false;false &disabledButtons=Disabled Buttons;text; &webTheme=Web Theme;test;webuser &webPlugins=Web Plugins;text; &webButtons1=Web Buttons 1;text;bold italic underline strikethrough removeformat alignleft aligncenter alignright &webButtons2=Web Buttons 2;text;link unlink image undo redo &webButtons3=Web Buttons 3;text; &webButtons4=Web Buttons 4;text; &webAlign=Web Toolbar Alignment;list;ltr,rtl;ltr &width=Width;text;100% &height=Height;text;400px &introtextRte=Introtext RTE
                      add richtext-features to "introtext";list;enabled,disabled;disabled &inlineMode=Inline-Mode;list;enabled,disabled;disabled &inlineTheme=Inline-Mode
                      Theme;text;inline &browser_spellcheck=Browser Spellcheck
                      At least one dictionary must be installed inside your browser;list;enabled,disabled;disabled + * @internal @events OnLoadWebDocument,OnParseDocument,OnWebPagePrerender,OnLoadWebPageCache,OnRichTextEditorRegister,OnRichTextEditorInit,OnInterfaceSettingsRender + * @internal @modx_category Manager and Admin + * @internal @legacy_names TinyMCE4 + * @internal @installset base + * @logo /assets/plugins/tinymce4/tinymce/logo.png + * @reportissues https://github.com/extras-evolution/tinymce4-for-modx-evo + * @documentation Plugin docs https://github.com/extras-evolution/tinymce4-for-modx-evo + * @documentation Official TinyMCE4-docs https://www.tinymce.com/docs/ + * @author Deesen + * @lastupdate 2016-11-01 + */ +if (!defined('MODX_BASE_PATH')) { die('What are you doing? Get out of here!'); } + +require(MODX_BASE_PATH."assets/plugins/tinymce4/plugin.tinymce.inc.php"); \ No newline at end of file diff --git a/assets/plugins/tinymce4/style/content.css b/assets/plugins/tinymce4/style/content.css new file mode 100755 index 0000000000..4379ae3f26 --- /dev/null +++ b/assets/plugins/tinymce4/style/content.css @@ -0,0 +1,69 @@ +@charset "UTF-8"; + +/* body.mceContentBody {margin:8px;text-align:left;} */ + +html { + box-shadow: inset 0px 4px 3px 0px rgba(70, 70, 70, 0.1); +} + +body { + font-family: Arial,Helvetica,sans-serif; + font-size : 13px; + font-style : normal; + line-height : 1.5; + text-align : left; + margin:8px; +} + +pre { + color : #555555; +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color : #111111; + letter-spacing : 1px; +} + +h4, +h5, +h6 { + font-size : 12px; +} +ul { + line-height : 1.5; + margin : 0 0 0.5em 20px; + padding : 0; +} + +ol { + line-height : 1.5; + margin : 0 0 0.5em 18px; + padding : 0; + color : black; +} + +ol li {margin-left:7px;} + +blockquote { + padding-left : 7px; + margin-left : 3px; + background-color: #fcfcfc; +} + +table {margin-bottom:8px;} +td,th {padding:4px;font:inherit;} +th {background-color:#fcfcfc;text-align:left;} + +a:hover { + color: #7fa2ff; +} + +.justifyleft {text-align:left;} +.justifyright {text-align:right;} +img.justifyleft {float:left; margin-right:10px;margin-bottom:5px;} +img.justifyright {float:right; margin-left:10px;margin-bottom:5px;} diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.advanced.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.advanced.inc.php new file mode 100755 index 0000000000..63d60a381d --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.advanced.inc.php @@ -0,0 +1,23 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: Modify plugins-list? +$this->set('plugins', 'anchor autolink lists spellchecker pagebreak layer table save hr modxlink image imagetools code emoticons insertdatetime preview media searchreplace print contextmenu paste directionality fullscreen noneditable visualchars nonbreaking youtube autosave advlist visualblocks charmap', 'string'); +$this->set('toolbar1', 'bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | styleselect formatselect', 'string'); +$this->set('toolbar2', 'bullist numlist | outdent indent | undo redo | link unlink anchor image help code', 'string'); +$this->set('toolbar3', 'hr removeformat visualblocks | subscript superscript | charmap', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.base.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.base.inc.php new file mode 100755 index 0000000000..b940bfee89 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.base.inc.php @@ -0,0 +1,86 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// TinyMCE4 - Base config --- See gsettings/bridge.tinymce4.inc.php for more base params + +// Migration-Info +// These plugins where removed in 4.0: advhr, advimage, advlink, iespell, inlinepopups, style, emotions, xhtmlxtras +// These are the new plugins in 4.0: anchor, charmap, compat3x, hr, image, link, emoticons, code, textcolor + + +// $this->set('toolbar_items_size', 'small', 'string'); // @todo: No docs - deprecated parameter? +// @todo: make "styleprops"-button work with "compat3x-plugin"? http://archive.tinymce.com/forum/viewtopic.php?pid=115507#p115507 +// @todo: "pasteword"-button is now commercial -> https://www.tinymce.com/docs/enterprise/paste-from-word/ +// @todo: layer-Plugin: Buttons broken +// @todo: selectall-Button broken + +$this->set('skin', 'lightgray', 'string' ); // Set default skin (setting param first time sets its value also as default val) +$this->set('skin', $this->modxParams['skin'] ); // Overwrite with Modx-setting (if empty, default is used)) + +$this->set('width', $this->pluginParams['width'], 'string' ); // https://www.tinymce.com/docs/configure/editor-appearance/#width +$this->set('height', $this->pluginParams['height'], 'string' ); // https://www.tinymce.com/docs/configure/editor-appearance/#height + +// @todo: Make optional in Modx-configuration? +$this->set('menubar', true, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar +$this->set('statusbar', true, 'bool' ); // https://www.tinymce.com/docs/get-started/customize-ui/#hidingthestatusbar + +$this->set('document_base_url', MODX_SITE_URL, 'string' ); // https://www.tinymce.com/docs/configure/url-handling/#document_base_url +$this->set('entity_encoding', $this->pluginParams['entityEncoding'],'string'); // https://www.tinymce.com/docs/configure/content-filtering/#encodingtypes +$this->set('entities', $this->pluginParams['entities'], 'string'); // https://www.tinymce.com/docs/configure/content-filtering/#entities + +$this->set('language', $this->lang('lang_code'), 'string'); // https://www.tinymce.com/docs/configure/localization/#language +if($this->lang('lang_code') != 'en') + $this->set('language_url', $this->pluginParams['base_url'].'tinymce/langs/'. $this->lang('lang_code') .'.js', 'string'); // https://www.tinymce.com/docs/configure/localization/#language_url + +$this->set('schema', $this->modxParams['schema'], 'string' ); // https://www.tinymce.com/docs/configure/content-filtering/#schema +$this->set('element_format', $this->modxParams['element_format'], 'string' ); // https://www.tinymce.com/docs/configure/content-filtering/#element_format +// $this->set('inline', true, 'bool' ); // https://www.tinymce.com/docs/configure/integration-and-setup/#inlineeditingmodeonadivelementwithideditable + +// Avoid set empty content_css - accepts comma-separated list of multiple css-files +if( !empty( $modx->config['editor_css_path'] )) { + $this->set('content_css', explode(',',$modx->config['editor_css_path']), 'array'); // https://www.tinymce.com/docs/configure/content-appearance/#content_css +}; + +// Load templates and chunks by connector +$this->set('templates', $this->pluginParams['base_url'].'connector.tinymce4.templates.php', 'string' ); // https://www.tinymce.com/docs/plugins/template/#templates + +$this->set('image_caption', true, 'bool' ); // https://www.tinymce.com/docs/plugins/image/#image_caption +$this->set('image_advtab', 'small', 'string' ); // https://www.tinymce.com/docs/plugins/image/#image_advtab +$this->set('image_advtab', true, 'bool' ); // https://www.tinymce.com/docs/plugins/image/#image_advtab // replacement for 3.x-plugin advimage +$this->set('image_class_list', '[{title: "None", value: ""},{title: "Float left", value: "justifyleft"},{title: "Float right", value: "justifyright"},{title: "Image Responsive",value: "img-responsive"}]', 'json' ); + +// https://www.tinymce.com/docs/plugins/spellchecker/ +// https://github.com/extras-evolution/tinymce4-for-modx-evo/issues/26 +$this->set('browser_spellcheck', ($this->pluginParams['browser_spellcheck'] == 'enabled' ? true : false), 'bool' ); + +// https://www.tinymce.com/docs/plugins/paste/#paste_word_valid_elements +$this->set('paste_word_valid_elements', 'a[href|name],p,b,strong,i,em,h1,h2,h3,h4,h5,h6,table,th,td[colspan|rowspan],tr,thead,tfoot,tbody,br,hr,sub,sup,u', 'string'); + +// @todo: final base-setup like tinymce3 "default"-theme? +$this->set('plugins', 'anchor visualblocks autolink autosave save advlist fullscreen paste modxlink media contextmenu table youtube image imagetools code textcolor', 'string'); // https://www.tinymce.com/docs/get-started/basic-setup/#pluginconfiguration +$this->set('toolbar1', 'undo redo | bold forecolor backcolor strikethrough formatselect fontsizeselect pastetext code | fullscreen help', 'string'); +$this->set('toolbar2', 'image media youtube link unlink anchor | alignleft aligncenter alignright | bullist numlist | blockquote outdent indent | table hr | visualblocks styleprops removeformat', 'string'); + +// Bridge does not return NULL, and does not use this->set() itself, so these parameters must be set at least once.. +// Params get translated by bridge because it does not return NULL, so the returned values will be used +$this->set('style_formats', array(), 'json'); // https://www.tinymce.com/docs/configure/content-formatting/#style_formats +$this->set('block_formats', '', 'string'); // https://www.tinymce.com/docs/configure/content-formatting/#block_formats +$this->set('forced_root_block', '', 'string'); // https://www.tinymce.com/docs/configure/content-filtering/#forced_root_block + +$this->set('setup', 'function(ed) { ed.on("change", function(e) { documentDirty=true; }); }', 'object'); +$this->set('save_onsavecallback', 'function () { documentDirty=false; document.getElementById("stay").value = 2; document.mutate.save.click(); }', 'object'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.creative.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.creative.inc.php new file mode 100755 index 0000000000..362f74df9a --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.creative.inc.php @@ -0,0 +1,27 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: make "styleprops"-button work with "compat3x-plugin"? +// http://archive.tinymce.com/forum/viewtopic.php?pid=115507#p115507 + +// @todo: layer-Plugin: Buttons broken + +$this->set('plugins', 'anchor save autolink autosave advlist layer fullscreen hr paste modxlink media contextmenu table youtube image imagetools code textcolor', 'string'); +$this->set('toolbar1', 'undo redo | bold forecolor backcolor strikethrough formatselect styleselect fontsizeselect code', 'string'); +$this->set('toolbar2', 'image media youtube link unlink anchor | bullist numlist | blockquote outdent indent | alignleft aligncenter alignright | hr | styleprops removeformat | pastetext', 'string'); +$this->set('toolbar3', 'insertlayer absolute moveforward movebackward | table | fullscreen help', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.custom.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.custom.inc.php new file mode 100755 index 0000000000..e2e5c034ee --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.custom.inc.php @@ -0,0 +1,29 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +if( !empty( $this->modxParams['custom_plugins'])) { + $this->set('plugins', $this->modxParams['custom_plugins'], 'string' ); +}; +$this->appendSet('plugins', 'template', ' '); // Assure plugin is loaded / in plugins-list + +$this->set('menubar', false, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar + +$this->set('toolbar1', $this->modxParams['custom_buttons1'], 'string', false ); +$this->set('toolbar2', $this->modxParams['custom_buttons2'], 'string', false ); +$this->set('toolbar3', $this->modxParams['custom_buttons3'], 'string', false ); +$this->set('toolbar4', $this->modxParams['custom_buttons4'], 'string', false ); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.editor.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.editor.inc.php new file mode 100755 index 0000000000..ea92c5e020 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.editor.inc.php @@ -0,0 +1,21 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +$this->set('plugins', 'anchor advlist autolink lists modxlink image charmap print preview hr anchor pagebreak searchreplace wordcount visualblocks visualchars code fullscreen spellchecker insertdatetime media nonbreaking save table contextmenu directionality emoticons paste textcolor codesample colorpicker textpattern imagetools paste youtube', 'string'); +$this->set('toolbar1', 'undo redo | cut copy paste | searchreplace | bold italic underline strikethrough | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent blockquote | formatselect', 'string'); +$this->set('toolbar2', 'link unlink anchor image media codesample table | hr removeformat | subscript superscript charmap | nonbreaking | visualchars visualblocks print preview fullscreen code', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.full.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.full.inc.php new file mode 100755 index 0000000000..43e27b5140 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.full.inc.php @@ -0,0 +1,27 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: make "styleprops"-button work with "compat3x-plugin"? +// http://archive.tinymce.com/forum/viewtopic.php?pid=115507#p115507 + +// @todo: Is this list complete for a "full"-theme? +$this->set('plugins', 'anchor autolink lists spellchecker pagebreak layer table save hr modxlink image imagetools emoticons insertdatetime preview media searchreplace print code contextmenu paste directionality fullscreen noneditable visualchars textcolor nonbreaking template youtube autosave advlist visualblocks charmap wordcount codesample', 'string'); +$this->set('toolbar1', 'save print newdocument | undo redo | searchreplace | cut copy paste pastetext | visualchars spellchecker | visualblocks code | preview fullscreen', 'string'); +$this->set('toolbar2', 'styleselect formatselect fontselect fontsizeselect | forecolor backcolor', 'string'); +$this->set('toolbar3', 'bold italic underline strikethrough subscript superscript removeformat | alignleft aligncenter alignright alignjustify | bullist numlist | outdent indent blockquote | ltr rtl', 'string'); +$this->set('toolbar4', 'image youtube media | link unlink anchor | table | pagebreak hr | template codesample nonbreaking insertdatetime | charmap emoticons', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.inline.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.inline.inc.php new file mode 100644 index 0000000000..e891119841 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.inline.inc.php @@ -0,0 +1,30 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +$this->set('plugins', 'autolink save emoticons modxlink paste image imagetools contextmenu template', 'string'); + +$this->set('toolbar1', 'undo redo | formatselect | bold strikethrough | alignleft aligncenter alignright | link unlink image emoticons template | help', 'string'); +$this->set('toolbar2', NULL, 'string'); + +// Hide bars +$this->set('menubar', false, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar +$this->set('statusbar', false, 'bool' ); // https://www.tinymce.com/docs/get-started/customize-ui/#hidingthestatusbar + +// When using template-plugin/button, you can mark elements as noneditable via
                      Contents
                      +// https://www.tinymce.com/docs/plugins/noneditable/ +$this->appendSet('plugins', 'noneditable', ' '); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.introtext.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.introtext.inc.php new file mode 100755 index 0000000000..f53d79ab78 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.introtext.inc.php @@ -0,0 +1,34 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: clean plugins for mini + +// $this->set('plugins', 'advlist autolink lists modxlink image charmap print preview hr anchor pagebreak searchreplace wordcount visualblocks visualchars code fullscreen spellchecker insertdatetime media nonbreaking save table contextmenu directionality emoticons template paste textcolor codesample colorpicker textpattern imagetools paste youtube', 'string'); +$this->set('toolbar1', 'bold italic underline strikethrough | alignleft aligncenter alignright | undo redo', 'string'); +$this->set('toolbar2', NULL); +$this->set('toolbar3', NULL); +$this->set('toolbar4', NULL); + +// Hide bars +$this->set('menubar', false, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar +$this->set('statusbar', true, 'bool' ); // https://www.tinymce.com/docs/get-started/customize-ui/#hidingthestatusbar + +// Will be overwritten by force() within plugin-code anyhow +$this->set('height', '100px', 'string' ); +$this->set('width', '350px', 'string' ); +$this->set('resize', 'both', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.legacy.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.legacy.inc.php new file mode 100755 index 0000000000..bcab349dbd --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.legacy.inc.php @@ -0,0 +1,24 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: make "styleprops"-button work with "compat3x-plugin"? +// http://archive.tinymce.com/forum/viewtopic.php?pid=115507#p115507 + +$this->set('plugins', 'anchor save autosave advlist modxlink image imagetools searchreplace print contextmenu paste fullscreen nonbreaking visualchars media youtube code', 'string'); +$this->set('toolbar1', 'undo redo selectall | pastetext | search replace | nonbreaking hr charmap | image link unlink anchor media youtube | removeformat | fullscreen print code help', 'string'); +$this->set('toolbar2', 'bold italic underline strikethrough subscript superscript | blockquote | bullist numlist outdent indent | alignleft aligncenter alignright alignjustify | styleselect formatselect | styleprops', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.logic.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.logic.inc.php new file mode 100755 index 0000000000..b74a47b982 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.logic.inc.php @@ -0,0 +1,25 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: make "styleprops"-button work with "compat3x-plugin"? +// http://archive.tinymce.com/forum/viewtopic.php?pid=115507#p115507 + +$this->set('plugins', 'anchor save autolink autosave advlist image imagetools fullscreen paste modxlink media contextmenu table youtube code textcolor', 'string'); +$this->set('toolbar1', 'undo redo | bold forecolor backcolor strikethrough formatselect styleselect fontsizeselect code | fullscreen help', 'string'); +$this->set('toolbar2', 'image media youtube link unlink anchor | bullist numlist | blockquote outdent indent | alignleft aligncenter alignright | table | hr | styleprops removeformat | pastetext', 'string'); +$this->set('toolbar3', 'charmap subscript superscript | cite ins del abbr acronym attribs', 'string'); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.mini.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.mini.inc.php new file mode 100755 index 0000000000..c182624e17 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.mini.inc.php @@ -0,0 +1,33 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +// @todo: clean plugins for mini + +// $this->set('plugins', 'advlist autolink lists modxlink image charmap print preview hr anchor pagebreak searchreplace wordcount visualblocks visualchars code fullscreen spellchecker insertdatetime media nonbreaking save table contextmenu directionality emoticons template paste textcolor codesample colorpicker textpattern imagetools paste youtube', 'string'); +$this->set('toolbar1', 'bold italic underline strikethrough', 'string'); +$this->set('toolbar2', 'alignleft aligncenter alignright | undo redo', 'string'); +$this->set('toolbar3', NULL); +$this->set('toolbar4', NULL); + +// Hide bars +$this->set('menubar', false, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar +$this->set('statusbar', false, 'bool' ); // https://www.tinymce.com/docs/get-started/customize-ui/#hidingthestatusbar + +// Will be overwritten by force() within plugin-code anyhow +$this->set('height', '200px', 'string' ); +$this->set('width', '100%', 'string' ); \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.simple.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.simple.inc.php new file mode 100755 index 0000000000..51a83cb395 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.simple.inc.php @@ -0,0 +1,25 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +$this->set('plugins', 'autolink save emoticons modxlink paste image imagetools contextmenu', 'string'); +$this->set('toolbar1', 'undo redo | bold strikethrough | alignleft aligncenter alignright | link unlink image emoticons | hr | help', 'string'); +$this->set('toolbar2', NULL, 'string'); + +// Hide bars +$this->set('menubar', false, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar +$this->set('statusbar', false, 'bool' ); // https://www.tinymce.com/docs/get-started/customize-ui/#hidingthestatusbar \ No newline at end of file diff --git a/assets/plugins/tinymce4/theme/theme.tinymce4.webuser.inc.php b/assets/plugins/tinymce4/theme/theme.tinymce4.webuser.inc.php new file mode 100755 index 0000000000..f9784ca622 --- /dev/null +++ b/assets/plugins/tinymce4/theme/theme.tinymce4.webuser.inc.php @@ -0,0 +1,33 @@ +set( $editorParam, $value, $type, $emptyAllowed=false ) + * + * $editorParam = param to set + * $value = value to set + * $type = string, number, bool, json (array or string) + * $emptyAllowed = true, false (allows param:'' instead of falling back to default) + * If $editorParam is empty and $emptyAllowed is true, $defaultValue will be ignored + * + * $this->modxParams holds an array of actual Modx- / user-settings + * + * */ + +$this->set('menubar', true, 'bool' ); // https://www.tinymce.com/docs/configure/editor-appearance/#menubar +$this->set('statusbar', false, 'bool' ); // https://www.tinymce.com/docs/get-started/customize-ui/#hidingthestatusbar + +// @todo: Set default plugins for webusers +// $this->set('plugins', '', 'string' ); + +// Overwrite default plugins if given +if( !empty( $this->pluginParams['webPlugins'])) { + $this->set('plugins', $this->pluginParams['webPlugins'], 'string' ); +}; + +$this->set('toolbar1', $this->pluginParams['webButtons1'], 'string', false ); +$this->set('toolbar2', $this->pluginParams['webButtons2'], 'string', false ); +$this->set('toolbar3', $this->pluginParams['webButtons3'], 'string', false ); +$this->set('toolbar4', $this->pluginParams['webButtons4'], 'string', false ); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/bg_BG.js b/assets/plugins/tinymce4/tinymce/langs/bg_BG.js new file mode 100755 index 0000000000..254b5fa020 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/bg_BG.js @@ -0,0 +1,219 @@ +tinymce.addI18n('bg_BG',{ +"Cut": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435", +"Heading 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5", +"Header 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448\u0438\u044f\u0442 \u0431\u0440\u0430\u0443\u0437\u044a\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u044a\u0440\u0436\u0430 \u0434\u0438\u0440\u0435\u043a\u0442\u0435\u043d \u0434\u043e\u0441\u0442\u044a\u043f \u0434\u043e \u043a\u043b\u0438\u043f\u0431\u043e\u0440\u0434\u0430. \u0412\u043c\u0435\u0441\u0442\u043e \u0442\u043e\u0432\u0430 \u0438\u0437\u043f\u043e\u043b\u0437\u0432\u0430\u0439\u0442\u0435 \u043a\u043b\u0430\u0432\u0438\u0448\u043d\u0438\u0442\u0435 \u043a\u043e\u043c\u0431\u0438\u043d\u0430\u0446\u0438\u0438 Ctrl+X (\u0437\u0430 \u0438\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435), Ctrl+C (\u0437\u0430 \u043a\u043e\u043f\u0438\u0440\u0430\u043d\u0435) \u0438 Ctrl+V (\u0437\u0430 \u043f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435).", +"Heading 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4", +"Div": "\u0411\u043b\u043e\u043a", +"Heading 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2", +"Paste": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435", +"Close": "\u0417\u0430\u0442\u0432\u0430\u0440\u044f\u043d\u0435", +"Font Family": "\u0428\u0440\u0438\u0444\u0442", +"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u0435\u043d \u0442\u0435\u043a\u0441\u0442", +"Align right": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u0434\u044f\u0441\u043d\u043e", +"New document": "\u041d\u043e\u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", +"Blockquote": "\u0426\u0438\u0442\u0430\u0442", +"Numbered list": "\u041d\u043e\u043c\u0435\u0440\u0438\u0440\u0430\u043d \u0441\u043f\u0438\u0441\u044a\u043a", +"Heading 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1", +"Headings": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f", +"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0430\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430", +"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435", +"Headers": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u044f", +"Select all": "\u041c\u0430\u0440\u043a\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0446\u044f\u043b\u043e\u0442\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435", +"Header 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3", +"Blocks": "\u0411\u043b\u043e\u043a\u043e\u0432\u0435", +"Undo": "\u0412\u044a\u0440\u043d\u0438", +"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u0442\u0430\u0432\u0430\u043d\u0435", +"Bullet list": "\u0421\u043f\u0438\u0441\u044a\u043a \u0441 \u0432\u043e\u0434\u0430\u0447\u0438", +"Header 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1", +"Superscript": "\u0413\u043e\u0440\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441", +"Clear formatting": "\u0418\u0437\u0447\u0438\u0441\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435\u0442\u043e", +"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430", +"Subscript": "\u0414\u043e\u043b\u0435\u043d \u0438\u043d\u0434\u0435\u043a\u0441", +"Header 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6", +"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438", +"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444", +"Ok": "\u0414\u043e\u0431\u0440\u0435", +"Bold": "\u0423\u0434\u0435\u0431\u0435\u043b\u0435\u043d (\u043f\u043e\u043b\u0443\u0447\u0435\u0440)", +"Code": "\u041a\u043e\u0434", +"Italic": "\u041d\u0430\u043a\u043b\u043e\u043d\u0435\u043d (\u043a\u0443\u0440\u0441\u0438\u0432)", +"Align center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e", +"Header 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5", +"Heading 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6", +"Heading 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3", +"Decrease indent": "\u041d\u0430\u043c\u0430\u043b\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043e\u0442\u0441\u0442\u044a\u043f\u0430", +"Header 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435\u0442\u043e \u0432 \u043c\u043e\u043c\u0435\u043d\u0442\u0430 \u0435 \u0432 \u043e\u0431\u0438\u043a\u043d\u043e\u0432\u0435\u043d \u0440\u0435\u0436\u0438\u043c. \u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e \u0449\u0435 \u0431\u044a\u0434\u0435 \u043f\u043e\u0441\u0442\u0430\u0432\u0435\u043d\u043e \u043a\u0430\u0442\u043e \u043d\u0435\u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442, \u0434\u043e\u043a\u0430\u0442\u043e \u0438\u0437\u043a\u043b\u044e\u0447\u0438\u0442\u0435 \u0442\u0430\u0437\u0438 \u043e\u043f\u0446\u0438\u044f.", +"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u0442\u0430\u043d", +"Cancel": "\u041e\u0442\u043a\u0430\u0437", +"Justify": "\u0414\u0432\u0443\u0441\u0442\u0440\u0430\u043d\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435", +"Inline": "\u041d\u0430 \u0435\u0434\u0438\u043d \u0440\u0435\u0434", +"Copy": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435", +"Align left": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435 \u043e\u0442\u043b\u044f\u0432\u043e", +"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u043d\u043e \u043e\u0442\u043a\u0440\u043e\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0438 \u0431\u0435\u0437 \u043a\u0430\u043d\u0442\u043e\u0432\u0435 (\u0440\u0430\u043c\u043a\u0438)", +"Lower Greek": "\u041c\u0430\u043b\u043a\u0438 \u0433\u0440\u044a\u0446\u043a\u0438 \u0431\u0443\u043a\u0432\u0438", +"Square": "\u0417\u0430\u043f\u044a\u043b\u043d\u0435\u043d\u0438 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u0438", +"Default": "\u041f\u043e \u043f\u043e\u0434\u0440\u0430\u0437\u0431\u0438\u0440\u0430\u043d\u0435", +"Lower Alpha": "\u041c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438", +"Circle": "\u041e\u043a\u0440\u044a\u0436\u043d\u043e\u0441\u0442\u0438", +"Disc": "\u041a\u0440\u044a\u0433\u0447\u0435\u0442\u0430", +"Upper Alpha": "\u0413\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438", +"Upper Roman": "\u0420\u0438\u043c\u0441\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438", +"Lower Roman": "\u0420\u0438\u043c\u0441\u043a\u0438 \u0447\u0438\u0441\u043b\u0430 \u0441 \u043c\u0430\u043b\u043a\u0438 \u0431\u0443\u043a\u0432\u0438", +"Name": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435", +"Anchor": "\u041a\u043e\u0442\u0432\u0430 (\u0432\u0440\u044a\u0437\u043a\u0430 \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430)", +"You have unsaved changes are you sure you want to navigate away?": "\u0412 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0438\u043c\u0430 \u043d\u0435\u0437\u0430\u043f\u0430\u0437\u0435\u043d\u0438 \u043f\u0440\u043e\u043c\u0435\u043d\u0438. \u0429\u0435 \u043f\u0440\u043e\u0434\u044a\u043b\u0436\u0438\u0442\u0435 \u043b\u0438?", +"Restore last draft": "\u0412\u044a\u0437\u0441\u0442\u0430\u043d\u043e\u0432\u044f\u0432\u0430\u043d\u0435 \u043d\u0430 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0430\u0442\u0430 \u0447\u0435\u0440\u043d\u043e\u0432\u0430", +"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u0435\u043d \u0437\u043d\u0430\u043a", +"Source code": "\u0418\u0437\u0445\u043e\u0434\u0435\u043d \u043a\u043e\u0434 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430 \u0432 HTML", +"B": "B", +"R": "R", +"G": "G", +"Color": "\u0426\u0432\u044f\u0442", +"Right to left": "\u041e\u0442\u0434\u044f\u0441\u043d\u043e \u043d\u0430\u043b\u044f\u0432\u043e", +"Left to right": "\u041e\u0442\u043b\u044f\u0432\u043e \u043d\u0430\u0434\u044f\u0441\u043d\u043e", +"Emoticons": "\u0415\u043c\u043e\u0442\u0438\u043a\u043e\u043d\u0438", +"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438 \u043d\u0430 \u0443\u0435\u0431 \u0442\u044a\u0440\u0441\u0430\u0447\u043a\u0438", +"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", +"Title": "\u041d\u0430\u0438\u043c\u0435\u043d\u043e\u0432\u0430\u043d\u0438\u0435", +"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0438 \u0434\u0443\u043c\u0438", +"Encoding": "\u041a\u043e\u0434\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0437\u043d\u0430\u0446\u0438\u0442\u0435", +"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", +"Author": "\u0410\u0432\u0442\u043e\u0440", +"Fullscreen": "\u041d\u0430 \u0446\u044f\u043b \u0435\u043a\u0440\u0430\u043d", +"Horizontal line": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u0430 \u0447\u0435\u0440\u0442\u0430", +"Horizontal space": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e", +"Insert\/edit image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430", +"General": "\u041e\u0431\u0449\u043e", +"Advanced": "\u041f\u043e\u0434\u0440\u043e\u0431\u043d\u043e", +"Source": "\u0410\u0434\u0440\u0435\u0441", +"Border": "\u041a\u0430\u043d\u0442 (\u0440\u0430\u043c\u043a\u0430)", +"Constrain proportions": "\u0417\u0430\u0432\u0430\u0437\u043d\u0430\u0432\u0435 \u043d\u0430 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438\u0442\u0435", +"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0441\u0442\u0432\u043e", +"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u043d\u0430 \u043a\u0430\u0440\u0442\u0438\u043d\u043a\u0430\u0442\u0430", +"Style": "\u0421\u0442\u0438\u043b", +"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440", +"Insert image": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", +"Zoom in": "\u041f\u0440\u0438\u0431\u043b\u0438\u0436\u0438", +"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442", +"Back": "\u041d\u0430\u0437\u0430\u0434", +"Gamma": "\u0413\u0430\u043c\u0430", +"Flip horizontally": "\u041e\u0431\u044a\u0440\u043d\u0438 \u0445\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e", +"Resize": "\u041f\u0440\u0435\u043e\u0440\u0430\u0437\u043c\u0435\u0440\u044f\u0432\u0430\u043d\u0435", +"Sharpen": "\u0418\u0437\u043e\u0441\u0442\u0440\u044f\u043d\u0435", +"Zoom out": "\u041e\u0442\u0434\u0430\u043b\u0435\u0447\u0438", +"Image options": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e", +"Apply": "\u041f\u0440\u0438\u043b\u043e\u0436\u0438", +"Brightness": "\u042f\u0440\u043a\u043e\u0441\u0442", +"Rotate clockwise": "\u0417\u0430\u0432\u044a\u0440\u0442\u0430\u043d\u0435 \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043d\u0438\u043a\u0430", +"Rotate counterclockwise": "\u0417\u0430\u0432\u044a\u0440\u0442\u0430\u043d\u0435 \u043e\u0431\u0440\u0430\u0442\u043d\u043e \u043d\u0430 \u0447\u0430\u0441\u043e\u0432\u043d\u0438\u043a\u0430", +"Edit image": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435\u0442\u043e", +"Color levels": "\u0426\u0432\u0435\u0442\u043d\u0438 \u043d\u0438\u0432\u0430", +"Crop": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435", +"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f", +"Flip vertically": "\u041e\u0431\u044a\u0440\u043d\u0438 \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e", +"Invert": "\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f", +"Insert date\/time": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0434\u0430\u0442\u0430\/\u0447\u0430\u0441", +"Remove link": "\u041f\u0440\u0435\u043c\u0430\u0445\u0432\u0430\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430", +"Url": "\u0410\u0434\u0440\u0435\u0441 (URL)", +"Text to display": "\u0422\u0435\u043a\u0441\u0442", +"Anchors": "\u041a\u043e\u0442\u0432\u0438", +"Insert link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)", +"New window": "\u0412 \u043d\u043e\u0432 \u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446 (\u043f\u043e\u0434\u043f\u0440\u043e\u0437\u043e\u0440\u0435\u0446)", +"None": "\u0411\u0435\u0437", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u044a\u0442, \u043a\u043e\u0439\u0442\u043e \u0432\u044a\u0432\u0434\u043e\u0445\u0442\u0435 \u043f\u0440\u0438\u043b\u0438\u0447\u0430 \u0432\u044a\u043d\u0448\u0435\u043d \u0430\u0434\u0440\u0435\u0441. \u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0438\u044f http:\/\/ \u043f\u0440\u0435\u0444\u0438\u043a\u0441?", +"Target": "\u0426\u0435\u043b \u0432 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL \u0430\u0434\u0440\u0435\u0441\u044a\u0442, \u043a\u043e\u0439\u0442\u043e \u0432\u044a\u0432\u0434\u043e\u0445\u0442\u0435 \u043f\u0440\u0438\u043b\u0438\u0447\u0430 \u043d\u0430 \u0435-\u043c\u0435\u0439\u043b \u0430\u0434\u0440\u0435\u0441. \u0418\u0441\u043a\u0430\u0442\u0435 \u043b\u0438 \u0434\u0430 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u0435 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u0438\u044f mailto: \u043f\u0440\u0435\u0444\u0438\u043a\u0441?", +"Insert\/edit link": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0445\u0438\u043f\u0435\u0440\u0432\u0440\u044a\u0437\u043a\u0430 (\u043b\u0438\u043d\u043a)", +"Insert\/edit video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435\/\u043a\u043e\u0440\u0435\u043a\u0446\u0438\u044f \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", +"Poster": "\u041f\u043e\u0441\u0442\u0435\u0440", +"Alternative source": "\u0410\u043b\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0435\u043d \u0430\u0434\u0440\u0435\u0441", +"Paste your embed code below:": "\u041f\u043e\u0441\u0442\u0430\u0432\u0435\u0442\u0435 \u043a\u043e\u0434\u0430 \u0437\u0430 \u0432\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435 \u0432 \u043f\u043e\u043b\u0435\u0442\u043e \u043f\u043e-\u0434\u043e\u043b\u0443:", +"Insert video": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0432\u0438\u0434\u0435\u043e", +"Embed": "\u0412\u0433\u0440\u0430\u0436\u0434\u0430\u043d\u0435", +"Nonbreaking space": "\u0418\u043d\u0442\u0435\u0440\u0432\u0430\u043b", +"Page break": "\u041d\u043e\u0432\u0430 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430", +"Paste as text": "\u041f\u043e\u0441\u0442\u0430\u0432\u0438 \u043a\u0430\u0442\u043e \u0442\u0435\u043a\u0441\u0442", +"Preview": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u0435\u043d \u0438\u0437\u0433\u043b\u0435\u0434", +"Print": "\u041f\u0435\u0447\u0430\u0442", +"Save": "\u0421\u044a\u0445\u0440\u0430\u043d\u044f\u0432\u0430\u043d\u0435", +"Could not find the specified string.": "\u0422\u044a\u0440\u0441\u0435\u043d\u0438\u044f\u0442 \u0442\u0435\u043a\u0441\u0442 \u043d\u0435 \u0435 \u043d\u0430\u043c\u0435\u0440\u0435\u043d.", +"Replace": "\u0417\u0430\u043c\u044f\u043d\u0430", +"Next": "\u0421\u043b\u0435\u0434\u0432\u0430\u0449", +"Whole words": "\u0421\u0430\u043c\u043e \u0446\u0435\u043b\u0438 \u0434\u0443\u043c\u0438", +"Find and replace": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0438 \u0437\u0430\u043c\u044f\u043d\u0430", +"Replace with": "\u0417\u0430\u043c\u044f\u043d\u0430 \u0441", +"Find": "\u0422\u044a\u0440\u0441\u0435\u043d\u0435 \u0437\u0430", +"Replace all": "\u0417\u0430\u043c\u044f\u043d\u0430 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u0438 \u0441\u0440\u0435\u0449\u0430\u043d\u0438\u044f", +"Match case": "\u0421\u044a\u0432\u043f\u0430\u0434\u0435\u043d\u0438\u0435 \u043d\u0430 \u0440\u0435\u0433\u0438\u0441\u0442\u044a\u0440\u0430 (\u043c\u0430\u043b\u043a\u0438\/\u0433\u043b\u0430\u0432\u043d\u0438 \u0431\u0443\u043a\u0432\u0438)", +"Prev": "\u041f\u0440\u0435\u0434\u0438\u0448\u0435\u043d", +"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430", +"Finish": "\u041a\u0440\u0430\u0439", +"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0432\u0441\u0438\u0447\u043a\u043e", +"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u0430\u043d\u0435", +"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438 \u0432 \u0440\u0435\u0447\u043d\u0438\u043a\u0430", +"Insert row before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438", +"Rows": "\u0420\u0435\u0434\u043e\u0432\u0435", +"Height": "\u0412\u0438\u0441\u043e\u0447\u0438\u043d\u0430", +"Paste row after": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434", +"Alignment": "\u041f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435", +"Border color": "\u0426\u0432\u044f\u0442 \u043d\u0430 \u0440\u0430\u043c\u043a\u0430\u0442\u0430", +"Column group": "Column group", +"Row": "\u0420\u0435\u0434", +"Insert column before": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u043f\u0440\u0435\u0434\u0438", +"Split cell": "\u0420\u0430\u0437\u0434\u0435\u043b\u044f\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430", +"Cell padding": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u0434\u043e \u0441\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435\u0442\u043e", +"Cell spacing": "\u0420\u0430\u0437\u0441\u0442\u043e\u044f\u043d\u0438\u0435 \u043c\u0435\u0436\u0434\u0443 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435", +"Row type": "\u0422\u0438\u043f \u043d\u0430 \u0440\u0435\u0434\u0430", +"Insert table": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430", +"Body": "\u0421\u044a\u0434\u044a\u0440\u0436\u0430\u043d\u0438\u0435 (body)", +"Caption": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0437\u0430\u0433\u043b\u0430\u0432\u0438\u0435 \u043f\u0440\u0435\u0434\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430", +"Footer": "\u0414\u043e\u043b\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (footer)", +"Delete row": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434\u0430", +"Paste row before": "\u041f\u043e\u0441\u0442\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u043f\u0440\u0435\u0434\u0438", +"Scope": "\u041e\u0431\u0445\u0432\u0430\u0442", +"Delete table": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430", +"H Align": "\u0425\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435", +"Top": "\u0413\u043e\u0440\u0435", +"Header cell": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430 (\u0430\u043d\u0442\u0435\u0442\u043a\u0430)", +"Column": "\u041a\u043e\u043b\u043e\u043d\u0430", +"Row group": "Row group", +"Cell": "\u041a\u043b\u0435\u0442\u043a\u0430", +"Middle": "\u041f\u043e \u0441\u0440\u0435\u0434\u0430\u0442\u0430", +"Cell type": "\u0422\u0438\u043f \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430", +"Copy row": "\u041a\u043e\u043f\u0438\u0440\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434", +"Row properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0440\u0435\u0434\u0430", +"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u0430\u0442\u0430", +"Bottom": "\u0414\u043e\u043b\u0443", +"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u043d\u043e \u043f\u043e\u0434\u0440\u0430\u0432\u043d\u044f\u0432\u0430\u043d\u0435", +"Header": "\u0413\u043e\u0440\u0435\u043d \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b (header)", +"Right": "\u0414\u044f\u0441\u043d\u043e", +"Insert column after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430 \u0441\u043b\u0435\u0434", +"Cols": "\u041a\u043e\u043b\u043e\u043d\u0438", +"Insert row after": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434 \u0441\u043b\u0435\u0434", +"Width": "\u0428\u0438\u0440\u0438\u043d\u0430", +"Cell properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0430\u0442\u0430", +"Left": "\u041b\u044f\u0432\u043e", +"Cut row": "\u0418\u0437\u0440\u044f\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0440\u0435\u0434", +"Delete column": "\u0418\u0437\u0442\u0440\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043e\u043b\u043e\u043d\u0430\u0442\u0430", +"Center": "\u0426\u0435\u043d\u0442\u0440\u0438\u0440\u0430\u043d\u043e", +"Merge cells": "\u0421\u043b\u0438\u0432\u0430\u043d\u0435 \u043d\u0430 \u043a\u043b\u0435\u0442\u043a\u0438\u0442\u0435", +"Insert template": "\u0414\u043e\u0431\u0430\u0432\u044f\u043d\u0435 \u043d\u0430 \u0448\u0430\u0431\u043b\u043e\u043d", +"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438", +"Background color": "\u0424\u043e\u043d\u043e\u0432 \u0446\u0432\u044f\u0442", +"Custom...": "\u0418\u0437\u0431\u0440\u0430\u043d...", +"Custom color": "\u0426\u0432\u044f\u0442 \u043f\u043e \u0438\u0437\u0431\u043e\u0440", +"No color": "\u0411\u0435\u0437 \u0446\u0432\u044f\u0442", +"Text color": "\u0426\u0432\u044f\u0442 \u043d\u0430 \u0448\u0440\u0438\u0444\u0442\u0430", +"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u0431\u043b\u043e\u043a\u043e\u0432\u0435\u0442\u0435", +"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0432\u0430\u043d\u0435 \u043d\u0430 \u043d\u0435\u043f\u0435\u0447\u0430\u0442\u0430\u0435\u043c\u0438 \u0437\u043d\u0430\u0446\u0438", +"Words: {0}": "\u0411\u0440\u043e\u0439 \u0434\u0443\u043c\u0438: {0}", +"Insert": "\u0412\u043c\u044a\u043a\u0432\u0430\u043d\u0435", +"File": "\u0424\u0430\u0439\u043b", +"Edit": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u0430\u043d\u0435", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041f\u043e\u043b\u0435 \u0437\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d \u0442\u0435\u043a\u0441\u0442. \u041d\u0430\u0442\u0438\u0441\u043d\u0435\u0442\u0435 Alt+F9 \u0437\u0430 \u043c\u0435\u043d\u044e; Alt+F10 \u0437\u0430 \u043b\u0435\u043d\u0442\u0430 \u0441 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438; Alt+0 \u0437\u0430 \u043f\u043e\u043c\u043e\u0449.", +"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438", +"View": "\u0418\u0437\u0433\u043b\u0435\u0434", +"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430", +"Format": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u0430\u043d\u0435" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/cs.js b/assets/plugins/tinymce4/tinymce/langs/cs.js new file mode 100755 index 0000000000..255fa9a5c5 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/cs.js @@ -0,0 +1,219 @@ +tinymce.addI18n('cs',{ +"Cut": "Vyjmout", +"Heading 5": "Nadpis 5", +"Header 2": "Nadpis 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "V\u00e1\u0161 prohl\u00ed\u017ee\u010d nepodporuje p\u0159\u00edm\u00fd p\u0159\u00edstup do schr\u00e1nky. Pou\u017eijte pros\u00edm kl\u00e1vesov\u00e9 zkratky Ctrl+X\/C\/V.", +"Heading 4": "Nadpis 4", +"Div": "Div (blok)", +"Heading 2": "Nadpis 2", +"Paste": "Vlo\u017eit", +"Close": "Zav\u0159\u00edt", +"Font Family": "Typ p\u00edsma", +"Pre": "Pre (p\u0159edform\u00e1tov\u00e1no)", +"Align right": "Zarovnat vpravo", +"New document": "Nov\u00fd dokument", +"Blockquote": "Citace", +"Numbered list": "\u010c\u00edslov\u00e1n\u00ed", +"Heading 1": "Nadpis 1", +"Headings": "Nadpisy", +"Increase indent": "Zv\u011bt\u0161it odsazen\u00ed", +"Formats": "Form\u00e1ty", +"Headers": "Nadpisy", +"Select all": "Vybrat v\u0161e", +"Header 3": "Nadpis 3", +"Blocks": "Blokov\u00e9 zobrazen\u00ed (block)", +"Undo": "Zp\u011bt", +"Strikethrough": "P\u0159e\u0161rktnut\u00e9", +"Bullet list": "Odr\u00e1\u017eky", +"Header 1": "Nadpis 1", +"Superscript": "Horn\u00ed index", +"Clear formatting": "Vymazat form\u00e1tov\u00e1n\u00ed", +"Font Sizes": "Velikost p\u00edsma", +"Subscript": "Doln\u00ed index", +"Header 6": "Nadpis 6", +"Redo": "Znovu", +"Paragraph": "Odstavec", +"Ok": "OK", +"Bold": "Tu\u010dn\u00e9", +"Code": "Code (k\u00f3d)", +"Italic": "Kurz\u00edva", +"Align center": "Zarovnat na st\u0159ed", +"Header 5": "Nadpis 5", +"Heading 6": "Nadpis 6", +"Heading 3": "Nadpis 3", +"Decrease indent": "Zmen\u0161it odsazen\u00ed", +"Header 4": "Nadpis 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Je zapnuto vkl\u00e1d\u00e1n\u00ed \u010dist\u00e9ho textu. Dokud nebude tato volba vypnuta, bude ve\u0161ker\u00fd obsah vlo\u017een jako \u010dist\u00fd text.", +"Underline": "Podtr\u017een\u00e9", +"Cancel": "Zru\u0161it", +"Justify": "Zarovnat do bloku", +"Inline": "\u0158\u00e1dkov\u00e9 zobrazen\u00ed (inline)", +"Copy": "Kop\u00edrovat", +"Align left": "Zarovnat vlevo", +"Visual aids": "Vizu\u00e1ln\u00ed pom\u016fcky", +"Lower Greek": "Mal\u00e9 p\u00edsmenkov\u00e1n\u00ed", +"Square": "\u010ctvere\u010dek", +"Default": "V\u00fdchoz\u00ed", +"Lower Alpha": "Norm\u00e1ln\u00ed \u010d\u00edslov\u00e1n\u00ed", +"Circle": "Kole\u010dko", +"Disc": "Punt\u00edk", +"Upper Alpha": "velk\u00e9 p\u00edsmenkov\u00e1n\u00ed", +"Upper Roman": "\u0158\u00edmsk\u00e9 \u010d\u00edslice", +"Lower Roman": "Mal\u00e9 \u0159\u00edmsk\u00e9 \u010d\u00edslice", +"Name": "N\u00e1zev", +"Anchor": "Kotva", +"You have unsaved changes are you sure you want to navigate away?": "M\u00e1te neulo\u017een\u00e9 zm\u011bny. Opravdu chcete opustit str\u00e1nku?", +"Restore last draft": "Obnovit posledn\u00ed koncept", +"Special character": "Speci\u00e1ln\u00ed znak", +"Source code": "Zdrojov\u00fd k\u00f3d", +"B": "B", +"R": "R", +"G": "G", +"Color": "Barva", +"Right to left": "Zprava doleva", +"Left to right": "Zleva doprava", +"Emoticons": "Emotikony", +"Robots": "Roboti", +"Document properties": "Vlastnosti dokumentu", +"Title": "Titulek", +"Keywords": "Kl\u00ed\u010dov\u00e1 slova", +"Encoding": "K\u00f3dov\u00e1n\u00ed", +"Description": "Popis", +"Author": "Autor", +"Fullscreen": "Na celou obrazovku", +"Horizontal line": "Vodorovn\u00e1 \u010d\u00e1ra", +"Horizontal space": "Horizont\u00e1ln\u00ed mezera", +"Insert\/edit image": "Vlo\u017eit \/ upravit obr\u00e1zek", +"General": "Obecn\u00e9", +"Advanced": "Pokro\u010dil\u00e9", +"Source": "URL", +"Border": "R\u00e1me\u010dek", +"Constrain proportions": "Zachovat proporce", +"Vertical space": "Vertik\u00e1ln\u00ed mezera", +"Image description": "Popis obr\u00e1zku", +"Style": "Styl", +"Dimensions": "Rozm\u011bry", +"Insert image": "Vlo\u017eit obr\u00e1zek", +"Zoom in": "P\u0159ibl\u00ed\u017eit", +"Contrast": "Kontrast", +"Back": "Zp\u011bt", +"Gamma": "Gama", +"Flip horizontally": "P\u0159evr\u00e1tit vodorovn\u011b", +"Resize": "Zm\u011bnit velikost", +"Sharpen": "Ostrost", +"Zoom out": "Odd\u00e1lit", +"Image options": "Vlastnosti obr\u00e1zku", +"Apply": "Pou\u017e\u00edt", +"Brightness": "Jas", +"Rotate clockwise": "Oto\u010dit doprava", +"Rotate counterclockwise": "Oto\u010dit doleva", +"Edit image": "Upravit obr\u00e1zek", +"Color levels": "\u00darovn\u011b barev", +"Crop": "O\u0159\u00edznout", +"Orientation": "Transformovat", +"Flip vertically": "P\u0159evr\u00e1tit svisle", +"Invert": "Invertovat", +"Insert date\/time": "Vlo\u017eit datum \/ \u010das", +"Remove link": "Odstranit odkaz", +"Url": "URL", +"Text to display": "Text k zobrazen\u00ed", +"Anchors": "Kotvy", +"Insert link": "Vlo\u017eit odkaz", +"New window": "Nov\u00e9 okno", +"None": "\u017d\u00e1dn\u00e9", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Zadan\u00e9 URL vypad\u00e1 jako odkaz na jin\u00fd web. Chcete doplnit povinn\u00fd prefix http:\/\/?", +"Target": "C\u00edl", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Zadan\u00e9 URL vypad\u00e1 jako e-mailov\u00e1 adresa. Chcete doplnit povinn\u00fd prefix mailto:?", +"Insert\/edit link": "Vlo\u017eit \/ upravit odkaz", +"Insert\/edit video": "Vlo\u017eit \/ upravit video", +"Poster": "N\u00e1hled", +"Alternative source": "Alternativn\u00ed zdroj", +"Paste your embed code below:": "Vlo\u017ete k\u00f3d pro vlo\u017een\u00ed n\u00ed\u017ee:", +"Insert video": "Vlo\u017eit video", +"Embed": "Vlo\u017eit", +"Nonbreaking space": "Pevn\u00e1 mezera", +"Page break": "Konec str\u00e1nky", +"Paste as text": "Vlo\u017eit jako \u010dist\u00fd text", +"Preview": "N\u00e1hled", +"Print": "Tisk", +"Save": "Ulo\u017eit", +"Could not find the specified string.": "Zadan\u00fd \u0159et\u011bzec nebyl nalezen.", +"Replace": "Nahradit", +"Next": "Dal\u0161\u00ed", +"Whole words": "Pouze cel\u00e1 slova", +"Find and replace": "Naj\u00edt a nahradit", +"Replace with": "Nahradit za", +"Find": "Naj\u00edt", +"Replace all": "Nahradit v\u0161e", +"Match case": "Rozli\u0161ovat mal\u00e1 a velk\u00e1 p\u00edsmena", +"Prev": "P\u0159edchoz\u00ed", +"Spellcheck": "Kontrola pravopisu", +"Finish": "Ukon\u010dit", +"Ignore all": "Ignorovat v\u0161e", +"Ignore": "Ignorovat", +"Add to Dictionary": "P\u0159idat do slovn\u00edku", +"Insert row before": "Vlo\u017eit \u0159\u00e1dek nad", +"Rows": "\u0158\u00e1dek", +"Height": "V\u00fd\u0161ka", +"Paste row after": "Vlo\u017eit \u0159\u00e1dek pod", +"Alignment": "Zarovn\u00e1n\u00ed", +"Border color": "Barva r\u00e1me\u010dku", +"Column group": "Skupina sloupc\u016f", +"Row": "\u0158\u00e1dek", +"Insert column before": "Vlo\u017eit sloupec vlevo", +"Split cell": "Rozd\u011blit bu\u0148ky", +"Cell padding": "Vnit\u0159n\u00ed okraj bun\u011bk", +"Cell spacing": "Vn\u011bj\u0161\u00ed okraj bun\u011bk", +"Row type": "Typ \u0159\u00e1dku", +"Insert table": "Vlo\u017eit tabulku", +"Body": "T\u011blo", +"Caption": "Nadpis", +"Footer": "Pati\u010dka", +"Delete row": "Smazat \u0159\u00e1dek", +"Paste row before": "Vlo\u017eit \u0159\u00e1dek nad", +"Scope": "Rozsah", +"Delete table": "Smazat tabulku", +"H Align": "Horizont\u00e1ln\u00ed zarovn\u00e1n\u00ed", +"Top": "Nahoru", +"Header cell": "Hlavi\u010dkov\u00e1 bu\u0148ka", +"Column": "Sloupec", +"Row group": "Skupina \u0159\u00e1dk\u016f", +"Cell": "Bu\u0148ka", +"Middle": "Uprost\u0159ed", +"Cell type": "Typ bu\u0148ky", +"Copy row": "Kop\u00edrovat \u0159\u00e1dek", +"Row properties": "Vlastnosti \u0159\u00e1dku", +"Table properties": "Vlastnosti tabulky", +"Bottom": "Dol\u016f", +"V Align": "Vertik\u00e1ln\u00ed zarovn\u00e1n\u00ed", +"Header": "Hlavi\u010dka", +"Right": "Vpravo", +"Insert column after": "Vlo\u017eit sloupec vpravo", +"Cols": "Sloupc\u016f", +"Insert row after": "Vlo\u017eit \u0159\u00e1dek pod", +"Width": "\u0160\u00ed\u0159ka", +"Cell properties": "Vlastnosti bu\u0148ky", +"Left": "Vlevo", +"Cut row": "Vyjmout \u0159\u00e1dek", +"Delete column": "Smazat sloupec", +"Center": "Na st\u0159ed", +"Merge cells": "Slou\u010dit bu\u0148ky", +"Insert template": "Vlo\u017eit \u0161ablonu", +"Templates": "\u0160ablony", +"Background color": "Barva pozad\u00ed", +"Custom...": "Vlastn\u00ed...", +"Custom color": "Vlastn\u00ed barva", +"No color": "Bez barvy", +"Text color": "Barva p\u00edsma", +"Show blocks": "Uk\u00e1zat bloky", +"Show invisible characters": "Zobrazit speci\u00e1ln\u00ed znaky", +"Words: {0}": "Po\u010det slov: {0}", +"Insert": "Vlo\u017eit", +"File": "Soubor", +"Edit": "\u00dapravy", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Editor. Stiskn\u011bte ALT-F9 pro menu, ALT-F10 pro n\u00e1strojovou li\u0161tu a ALT-0 pro n\u00e1pov\u011bdu.", +"Tools": "N\u00e1stroje", +"View": "Zobrazit", +"Table": "Tabulka", +"Format": "Form\u00e1t" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/da.js b/assets/plugins/tinymce4/tinymce/langs/da.js new file mode 100755 index 0000000000..d295bf5750 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/da.js @@ -0,0 +1,219 @@ +tinymce.addI18n('da',{ +"Cut": "Klip", +"Heading 5": "Overskrift 5", +"Header 2": "Overskrift 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser underst\u00f8tter ikke direkte adgang til clipboard. Benyt Ctrl+X\/C\/ keybord shortcuts i stedet for.", +"Heading 4": "Overskrift 4", +"Div": "Div", +"Heading 2": "Overskrift 2", +"Paste": "Inds\u00e6t", +"Close": "Luk", +"Font Family": "Skrifttype", +"Pre": "Pre", +"Align right": "H\u00f8jrejusteret", +"New document": "Nyt dokument", +"Blockquote": "Indrykning", +"Numbered list": "Nummerering", +"Heading 1": "Overskrift 1", +"Headings": "Overskrifter", +"Increase indent": "For\u00f8g indrykning", +"Formats": "Formater", +"Headers": "Overskrifter", +"Select all": "V\u00e6lg alle", +"Header 3": "Overskrift 3", +"Blocks": "Blokke", +"Undo": "Fortryd", +"Strikethrough": "Gennemstreg", +"Bullet list": "Punkt tegn", +"Header 1": "Overskrift 1", +"Superscript": "H\u00e6vet", +"Clear formatting": "Nulstil formattering", +"Font Sizes": "Skriftst\u00f8rrelse", +"Subscript": "S\u00e6nket", +"Header 6": "Overskrift 6", +"Redo": "Genopret", +"Paragraph": "S\u00e6tning", +"Ok": "Ok", +"Bold": "Fed", +"Code": "Code", +"Italic": "Kursiv", +"Align center": "Centreret", +"Header 5": "Overskrift 5", +"Heading 6": "Overskrift 6", +"Heading 3": "Overskrift 3", +"Decrease indent": "Formindsk indrykning", +"Header 4": "Overskrift 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "S\u00e6t ind er indstillet til at inds\u00e6tte som ren tekst. Indhold bliver nu indsat uden formatering indtil du \u00e6ndrer indstillingen.", +"Underline": "Understreg", +"Cancel": "Fortryd", +"Justify": "Justering", +"Inline": "Inline", +"Copy": "Kopier", +"Align left": "Venstrejusteret", +"Visual aids": "Visuel hj\u00e6lp", +"Lower Greek": "Lower Gr\u00e6sk", +"Square": "Kvadrat", +"Default": "Standard", +"Lower Alpha": "Lower Alpha", +"Circle": "Cirkel", +"Disc": "Disk", +"Upper Alpha": "Upper Alpha", +"Upper Roman": "Upper Roman", +"Lower Roman": "Lower Roman", +"Name": "Navn", +"Anchor": "Anchor", +"You have unsaved changes are you sure you want to navigate away?": "Du har ikke gemte \u00e6ndringer. Er du sikker p\u00e5 at du vil forts\u00e6tte?", +"Restore last draft": "Genopret sidste kladde", +"Special character": "Specielle tegn", +"Source code": "Kildekode", +"B": "B", +"R": "R", +"G": "G", +"Color": "Farve", +"Right to left": "H\u00f8jre til venstre", +"Left to right": "Venstre til h\u00f8jre", +"Emoticons": "Emot-ikoner", +"Robots": "Robotter", +"Document properties": "Dokument egenskaber", +"Title": "Titel", +"Keywords": "S\u00f8geord", +"Encoding": "Kodning", +"Description": "Beskrivelse", +"Author": "Forfatter", +"Fullscreen": "Fuldsk\u00e6rm", +"Horizontal line": "Vandret linie", +"Horizontal space": "Vandret afstand", +"Insert\/edit image": "Inds\u00e6t\/ret billede", +"General": "Generet", +"Advanced": "Avanceret", +"Source": "Kilde", +"Border": "Kant", +"Constrain proportions": "Behold propertioner", +"Vertical space": "Lodret afstand", +"Image description": "Billede beskrivelse", +"Style": "Stil", +"Dimensions": "Dimensioner", +"Insert image": "Inds\u00e6t billede", +"Zoom in": "Zoom ind", +"Contrast": "Kontrast", +"Back": "Tilbage", +"Gamma": "Gamma", +"Flip horizontally": "Flip horisontalt", +"Resize": "Skaler", +"Sharpen": "G\u00f8r skarpere", +"Zoom out": "Zoom ud", +"Image options": "Billede indstillinger", +"Apply": "Anvend", +"Brightness": "Lysstyrke", +"Rotate clockwise": "Drej med urets retning", +"Rotate counterclockwise": "Drej modsat urets retning", +"Edit image": "Rediger billede", +"Color levels": "Farve niveauer", +"Crop": "Besk\u00e6r", +"Orientation": "Retning", +"Flip vertically": "Flip vertikalt", +"Invert": "Inverter", +"Insert date\/time": "Inds\u00e6t dato\/klokkeslet", +"Remove link": "Fjern link", +"Url": "Url", +"Text to display": "Vis tekst", +"Anchors": "Ankre", +"Insert link": "Inds\u00e6t link", +"New window": "Nyt vindue", +"None": "Ingen", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URLen som du angav ser ud til at v\u00e6re et eksternt link. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks http:\/\/ ?", +"Target": "Target", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URLen som du angav ser ud til at v\u00e6re en email adresse. \u00d8nsker du at tilf\u00f8je det kr\u00e6vede prefiks mailto: ?", +"Insert\/edit link": "Inds\u00e6t\/ret link", +"Insert\/edit video": "Inds\u00e6t\/ret video", +"Poster": "Poster", +"Alternative source": "Alternativ kilde", +"Paste your embed code below:": "Inds\u00e6t din embed kode herunder:", +"Insert video": "Inds\u00e6t video", +"Embed": "Integrer", +"Nonbreaking space": "H\u00e5rdt mellemrum", +"Page break": "Sideskift", +"Paste as text": "Inds\u00e6t som ren tekst", +"Preview": "Forh\u00e5ndsvisning", +"Print": "Udskriv", +"Save": "Gem", +"Could not find the specified string.": "Kunne ikke finde s\u00f8getekst", +"Replace": "Erstat", +"Next": "N\u00e6ste", +"Whole words": "Hele ord", +"Find and replace": "Find og erstat", +"Replace with": "Erstat med", +"Find": "Find", +"Replace all": "Erstat alt", +"Match case": "STORE og sm\u00e5 bogstaver", +"Prev": "Forrige", +"Spellcheck": "Stavekontrol", +"Finish": "F\u00e6rdig", +"Ignore all": "Ignorer alt", +"Ignore": "Ignorer", +"Add to Dictionary": "Tilf\u00f8j til ordbog", +"Insert row before": "Inds\u00e6t r\u00e6kke f\u00f8r", +"Rows": "R\u00e6kker", +"Height": "H\u00f8jde", +"Paste row after": "Inds\u00e6t r\u00e6kke efter", +"Alignment": "Tilpasning", +"Border color": "Kant farve", +"Column group": "Kolonne gruppe", +"Row": "R\u00e6kke", +"Insert column before": "Inds\u00e6t kolonne f\u00f8r", +"Split cell": "Split celle", +"Cell padding": "Celle padding", +"Cell spacing": "Celle afstand", +"Row type": "R\u00e6kke type", +"Insert table": "Inds\u00e6t tabel", +"Body": "Krop", +"Caption": "Tekst", +"Footer": "Sidefod", +"Delete row": "Slet r\u00e6kke", +"Paste row before": "Inds\u00e6t r\u00e6kke f\u00f8r", +"Scope": "Anvendelsesomr\u00e5de", +"Delete table": "Slet tabel", +"H Align": "H juster", +"Top": "Top", +"Header cell": "Sidehoved celle", +"Column": "Kolonne", +"Row group": "R\u00e6kke gruppe", +"Cell": "Celle", +"Middle": "Midt", +"Cell type": "Celle type", +"Copy row": "Kopier r\u00e6kke", +"Row properties": "R\u00e6kke egenskaber", +"Table properties": "Tabel egenskaber", +"Bottom": "Bund", +"V Align": "V juster", +"Header": "Sidehoved", +"Right": "H\u00f8jre", +"Insert column after": "Inds\u00e6t kolonne efter", +"Cols": "Kolonne", +"Insert row after": "Inds\u00e6t r\u00e6kke efter", +"Width": "Bredde", +"Cell properties": "Celle egenskaber", +"Left": "Venstre", +"Cut row": "Klip r\u00e6kke", +"Delete column": "Slet kolonne", +"Center": "Centrering", +"Merge cells": "Flet celler", +"Insert template": "Inds\u00e6t skabelon", +"Templates": "Skabeloner", +"Background color": "Baggrunds farve", +"Custom...": "Brugerdefineret...", +"Custom color": "Brugerdefineret farve", +"No color": "Ingen farve", +"Text color": "Tekst farve", +"Show blocks": "Vis klokke", +"Show invisible characters": "Vis usynlige tegn", +"Words: {0}": "Ord: {0}", +"Insert": "Inds\u00e6t", +"File": "Fil", +"Edit": "Rediger", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text omr\u00e5de. Tryk ALT-F9 for menu. Tryk ALT-F10 for toolbar. Tryk ALT-0 for hj\u00e6lp", +"Tools": "V\u00e6rkt\u00f8j", +"View": "Vis", +"Table": "Tabel", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/de.js b/assets/plugins/tinymce4/tinymce/langs/de.js new file mode 100755 index 0000000000..9a31056850 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/de.js @@ -0,0 +1,219 @@ +tinymce.addI18n('de',{ +"Cut": "Ausschneiden", +"Heading 5": "\u00dcberschrift 5", +"Header 2": "\u00dcberschrift 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Ihr Browser unterst\u00fctzt leider keinen direkten Zugriff auf die Zwischenablage. Bitte benutzen Sie die Strg + X \/ C \/ V Tastenkombinationen.", +"Heading 4": "\u00dcberschrift 4", +"Div": "Textblock", +"Heading 2": "\u00dcberschrift 2", +"Paste": "Einf\u00fcgen", +"Close": "Schlie\u00dfen", +"Font Family": "Schriftart", +"Pre": "Vorformatierter Text", +"Align right": "Rechtsb\u00fcndig ausrichten", +"New document": "Neues Dokument", +"Blockquote": "Zitat", +"Numbered list": "Nummerierte Liste", +"Heading 1": "\u00dcberschrift 1", +"Headings": "\u00dcberschriften", +"Increase indent": "Einzug vergr\u00f6\u00dfern", +"Formats": "Formate", +"Headers": "\u00dcberschriften", +"Select all": "Alles ausw\u00e4hlen", +"Header 3": "\u00dcberschrift 3", +"Blocks": "Absatzformate", +"Undo": "R\u00fcckg\u00e4ngig", +"Strikethrough": "Durchgestrichen", +"Bullet list": "Aufz\u00e4hlung", +"Header 1": "\u00dcberschrift 1", +"Superscript": "Hochgestellt", +"Clear formatting": "Formatierung entfernen", +"Font Sizes": "Schriftgr\u00f6\u00dfe", +"Subscript": "Tiefgestellt", +"Header 6": "\u00dcberschrift 6", +"Redo": "Wiederholen", +"Paragraph": "Absatz", +"Ok": "Ok", +"Bold": "Fett", +"Code": "Quelltext", +"Italic": "Kursiv", +"Align center": "Zentriert ausrichten", +"Header 5": "\u00dcberschrift 5", +"Heading 6": "\u00dcberschrift 6", +"Heading 3": "\u00dcberschrift 3", +"Decrease indent": "Einzug verkleinern", +"Header 4": "\u00dcberschrift 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Einf\u00fcgen ist nun im einfachen Textmodus. Inhalte werden ab jetzt als unformatierter Text eingef\u00fcgt, bis Sie diese Einstellung wieder ausschalten!", +"Underline": "Unterstrichen", +"Cancel": "Abbrechen", +"Justify": "Blocksatz", +"Inline": "Zeichenformate", +"Copy": "Kopieren", +"Align left": "Linksb\u00fcndig ausrichten", +"Visual aids": "Visuelle Hilfen", +"Lower Greek": "Griechische Kleinbuchstaben", +"Square": "Quadrat", +"Default": "Standard", +"Lower Alpha": "Kleinbuchstaben", +"Circle": "Kreis", +"Disc": "Punkt", +"Upper Alpha": "Gro\u00dfbuchstaben", +"Upper Roman": "R\u00f6mische Zahlen (Gro\u00dfbuchstaben)", +"Lower Roman": "R\u00f6mische Zahlen (Kleinbuchstaben)", +"Name": "Name", +"Anchor": "Textmarke", +"You have unsaved changes are you sure you want to navigate away?": "Die \u00c4nderungen wurden noch nicht gespeichert, sind Sie sicher, dass Sie diese Seite verlassen wollen?", +"Restore last draft": "Letzten Entwurf wiederherstellen", +"Special character": "Sonderzeichen", +"Source code": "Quelltext", +"B": "B", +"R": "R", +"G": "G", +"Color": "Farbe", +"Right to left": "Von rechts nach links", +"Left to right": "Von links nach rechts", +"Emoticons": "Emoticons", +"Robots": "Robots", +"Document properties": "Dokumenteigenschaften", +"Title": "Titel", +"Keywords": "Sch\u00fcsselw\u00f6rter", +"Encoding": "Zeichenkodierung", +"Description": "Beschreibung", +"Author": "Verfasser", +"Fullscreen": "Vollbild", +"Horizontal line": "Horizontale Linie", +"Horizontal space": "Horizontaler Abstand", +"Insert\/edit image": "Bild einf\u00fcgen\/bearbeiten", +"General": "Allgemein", +"Advanced": "Erweitert", +"Source": "Quelle", +"Border": "Rahmen", +"Constrain proportions": "Seitenverh\u00e4ltnis beibehalten", +"Vertical space": "Vertikaler Abstand", +"Image description": "Bildbeschreibung", +"Style": "Stil", +"Dimensions": "Abmessungen", +"Insert image": "Bild einf\u00fcgen", +"Zoom in": "Ansicht vergr\u00f6\u00dfern", +"Contrast": "Kontrast", +"Back": "Zur\u00fcck", +"Gamma": "Gamma", +"Flip horizontally": "Horizontal spiegeln", +"Resize": "Skalieren", +"Sharpen": "Sch\u00e4rfen", +"Zoom out": "Ansicht verkleinern", +"Image options": "Bildeigenschaften", +"Apply": "Anwenden", +"Brightness": "Helligkeit", +"Rotate clockwise": "Im Uhrzeigersinn drehen", +"Rotate counterclockwise": "Gegen den Uhrzeigersinn drehen", +"Edit image": "Bild bearbeiten", +"Color levels": "Farbwerte", +"Crop": "Bescheiden", +"Orientation": "Ausrichtung", +"Flip vertically": "Vertikal spiegeln", +"Invert": "Invertieren", +"Insert date\/time": "Datum\/Uhrzeit einf\u00fcgen ", +"Remove link": "Link entfernen", +"Url": "URL", +"Text to display": "Anzuzeigender Text", +"Anchors": "Textmarken", +"Insert link": "Link einf\u00fcgen", +"New window": "Neues Fenster", +"None": "Keine", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Diese Adresse scheint ein externer Link zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"http:\/\/\" voranstellen?", +"Target": "Ziel", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Diese Adresse scheint eine E-Mail-Adresse zu sein. M\u00f6chten Sie das dazu ben\u00f6tigte \"mailto:\" voranstellen?", +"Insert\/edit link": "Link einf\u00fcgen\/bearbeiten", +"Insert\/edit video": "Video einf\u00fcgen\/bearbeiten", +"Poster": "Poster", +"Alternative source": "Alternative Quelle", +"Paste your embed code below:": "F\u00fcgen Sie Ihren Einbettungscode hier ein:", +"Insert video": "Video einf\u00fcgen", +"Embed": "Einbetten", +"Nonbreaking space": "Gesch\u00fctztes Leerzeichen", +"Page break": "Seitenumbruch", +"Paste as text": "Als Text einf\u00fcgen", +"Preview": "Vorschau", +"Print": "Drucken", +"Save": "Speichern", +"Could not find the specified string.": "Die Zeichenfolge wurde nicht gefunden.", +"Replace": "Ersetzen", +"Next": "Weiter", +"Whole words": "Nur ganze W\u00f6rter", +"Find and replace": "Suchen und ersetzen", +"Replace with": "Ersetzen durch", +"Find": "Suchen", +"Replace all": "Alles ersetzen", +"Match case": "Gro\u00df-\/Kleinschreibung beachten", +"Prev": "Zur\u00fcck", +"Spellcheck": "Rechtschreibpr\u00fcfung", +"Finish": "Ende", +"Ignore all": "Alles Ignorieren", +"Ignore": "Ignorieren", +"Add to Dictionary": "Zum W\u00f6rterbuch hinzuf\u00fcgen", +"Insert row before": "Neue Zeile davor einf\u00fcgen ", +"Rows": "Zeilen", +"Height": "H\u00f6he", +"Paste row after": "Zeile danach einf\u00fcgen", +"Alignment": "Ausrichtung", +"Border color": "Rahmenfarbe", +"Column group": "Spaltengruppe", +"Row": "Zeile", +"Insert column before": "Neue Spalte davor einf\u00fcgen", +"Split cell": "Zelle aufteilen", +"Cell padding": "Zelleninnenabstand", +"Cell spacing": "Zellenabstand", +"Row type": "Zeilentyp", +"Insert table": "Tabelle einf\u00fcgen", +"Body": "Inhalt", +"Caption": "Beschriftung", +"Footer": "Fu\u00dfzeile", +"Delete row": "Zeile l\u00f6schen", +"Paste row before": "Zeile davor einf\u00fcgen", +"Scope": "G\u00fcltigkeitsbereich", +"Delete table": "Tabelle l\u00f6schen", +"H Align": "Horizontale Ausrichtung", +"Top": "Oben", +"Header cell": "Kopfzelle", +"Column": "Spalte", +"Row group": "Zeilengruppe", +"Cell": "Zelle", +"Middle": "Mitte", +"Cell type": "Zellentyp", +"Copy row": "Zeile kopieren", +"Row properties": "Zeileneigenschaften", +"Table properties": "Tabelleneigenschaften", +"Bottom": "Unten", +"V Align": "Vertikale Ausrichtung", +"Header": "Kopfzeile", +"Right": "Rechtsb\u00fcndig", +"Insert column after": "Neue Spalte danach einf\u00fcgen", +"Cols": "Spalten", +"Insert row after": "Neue Zeile danach einf\u00fcgen", +"Width": "Breite", +"Cell properties": "Zelleneigenschaften", +"Left": "Linksb\u00fcndig", +"Cut row": "Zeile ausschneiden", +"Delete column": "Spalte l\u00f6schen", +"Center": "Zentriert", +"Merge cells": "Zellen verbinden", +"Insert template": "Vorlage einf\u00fcgen ", +"Templates": "Vorlagen", +"Background color": "Hintergrundfarbe", +"Custom...": "Benutzerdefiniert...", +"Custom color": "Benutzerdefinierte Farbe", +"No color": "Keine Farbe", +"Text color": "Textfarbe", +"Show blocks": " Bl\u00f6cke anzeigen", +"Show invisible characters": "Unsichtbare Zeichen anzeigen", +"Words: {0}": "W\u00f6rter: {0}", +"Insert": "Einf\u00fcgen", +"File": "Datei", +"Edit": "Bearbeiten", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich-Text- Area. Dr\u00fccken Sie ALT-F9 f\u00fcr das Men\u00fc. Dr\u00fccken Sie ALT-F10 f\u00fcr Symbolleiste. Dr\u00fccken Sie ALT-0 f\u00fcr Hilfe", +"Tools": "Werkzeuge", +"View": "Ansicht", +"Table": "Tabelle", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/en_CA.js b/assets/plugins/tinymce4/tinymce/langs/en_CA.js new file mode 100755 index 0000000000..25323604ba --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/en_CA.js @@ -0,0 +1,219 @@ +tinymce.addI18n('en_CA',{ +"Cut": "Cut", +"Heading 5": "Heading 5", +"Header 2": "Header 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.", +"Heading 4": "Heading 4", +"Div": "Div", +"Heading 2": "Heading 2", +"Paste": "Paste", +"Close": "Close", +"Font Family": "Font Family", +"Pre": "Pre", +"Align right": "Align right", +"New document": "New document", +"Blockquote": "Blockquote", +"Numbered list": "Numbered list", +"Heading 1": "Heading 1", +"Headings": "Headings", +"Increase indent": "Increase indent", +"Formats": "Formats", +"Headers": "Headers", +"Select all": "Select all", +"Header 3": "Header 3", +"Blocks": "Blocks", +"Undo": "Undo", +"Strikethrough": "Strikethrough", +"Bullet list": "Bullet list", +"Header 1": "Header 1", +"Superscript": "Superscript", +"Clear formatting": "Clear formatting", +"Font Sizes": "Font Sizes", +"Subscript": "Subscript", +"Header 6": "Header 6", +"Redo": "Redo", +"Paragraph": "Paragraph", +"Ok": "Ok", +"Bold": "Bold", +"Code": "Code", +"Italic": "Italic", +"Align center": "Align center", +"Header 5": "Header 5", +"Heading 6": "Heading 6", +"Heading 3": "Heading 3", +"Decrease indent": "Decrease indent", +"Header 4": "Header 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.", +"Underline": "Underline", +"Cancel": "Cancel", +"Justify": "Justify", +"Inline": "Inline", +"Copy": "Copy", +"Align left": "Align left", +"Visual aids": "Visual aids", +"Lower Greek": "Lower Greek", +"Square": "Square", +"Default": "Default", +"Lower Alpha": "Lower Alpha", +"Circle": "Circle", +"Disc": "Disc", +"Upper Alpha": "Upper Alpha", +"Upper Roman": "Upper Roman", +"Lower Roman": "Lower Roman", +"Name": "Name", +"Anchor": "Anchor", +"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?", +"Restore last draft": "Restore last draft", +"Special character": "Special character", +"Source code": "Source code", +"B": "B", +"R": "R", +"G": "G", +"Color": "Colour", +"Right to left": "Right to left", +"Left to right": "Left to right", +"Emoticons": "Emoticons", +"Robots": "Robots", +"Document properties": "Document properties", +"Title": "Title", +"Keywords": "Keywords", +"Encoding": "Encoding", +"Description": "Description", +"Author": "Author", +"Fullscreen": "Fullscreen", +"Horizontal line": "Horizontal line", +"Horizontal space": "Horizontal space", +"Insert\/edit image": "Insert\/edit image", +"General": "General", +"Advanced": "Advanced", +"Source": "Source", +"Border": "Border", +"Constrain proportions": "Constrain proportions", +"Vertical space": "Vertical space", +"Image description": "Image description", +"Style": "Style", +"Dimensions": "Dimensions", +"Insert image": "Insert image", +"Zoom in": "Zoom in", +"Contrast": "Contrast", +"Back": "Back", +"Gamma": "Gamma", +"Flip horizontally": "Flip horizontally", +"Resize": "Resize", +"Sharpen": "Sharpen", +"Zoom out": "Zoom out", +"Image options": "Image options", +"Apply": "Apply", +"Brightness": "Brightness", +"Rotate clockwise": "Rotate clockwise", +"Rotate counterclockwise": "Rotate counterclockwise", +"Edit image": "Edit image", +"Color levels": "Colour levels", +"Crop": "Crop", +"Orientation": "Orientation", +"Flip vertically": "Flip vertically", +"Invert": "Invert", +"Insert date\/time": "Insert date\/time", +"Remove link": "Remove link", +"Url": "Url", +"Text to display": "Text to display", +"Anchors": "Anchors", +"Insert link": "Insert link", +"New window": "New window", +"None": "None", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?", +"Target": "Target", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", +"Insert\/edit link": "Insert\/edit link", +"Insert\/edit video": "Insert\/edit video", +"Poster": "Poster", +"Alternative source": "Alternative source", +"Paste your embed code below:": "Paste your embed code below:", +"Insert video": "Insert video", +"Embed": "Embed", +"Nonbreaking space": "Nonbreaking space", +"Page break": "Page break", +"Paste as text": "Paste as text", +"Preview": "Preview", +"Print": "Print", +"Save": "Save", +"Could not find the specified string.": "Could not find the specified string.", +"Replace": "Replace", +"Next": "Next", +"Whole words": "Whole words", +"Find and replace": "Find and replace", +"Replace with": "Replace with", +"Find": "Find", +"Replace all": "Replace all", +"Match case": "Match case", +"Prev": "Prev", +"Spellcheck": "Spellcheck", +"Finish": "Finish", +"Ignore all": "Ignore all", +"Ignore": "Ignore", +"Add to Dictionary": "Add to Dictionary", +"Insert row before": "Insert row before", +"Rows": "Rows", +"Height": "Height", +"Paste row after": "Paste row after", +"Alignment": "Alignment", +"Border color": "Border colour", +"Column group": "Column group", +"Row": "Row", +"Insert column before": "Insert column before", +"Split cell": "Split cell", +"Cell padding": "Cell padding", +"Cell spacing": "Cell spacing", +"Row type": "Row type", +"Insert table": "Insert table", +"Body": "Body", +"Caption": "Caption", +"Footer": "Footer", +"Delete row": "Delete row", +"Paste row before": "Paste row before", +"Scope": "Scope", +"Delete table": "Delete table", +"H Align": "H Align", +"Top": "Top", +"Header cell": "Header cell", +"Column": "Column", +"Row group": "Row group", +"Cell": "Cell", +"Middle": "Middle", +"Cell type": "Cell type", +"Copy row": "Copy row", +"Row properties": "Row properties", +"Table properties": "Table properties", +"Bottom": "Bottom", +"V Align": "V Align", +"Header": "Header", +"Right": "Right", +"Insert column after": "Insert column after", +"Cols": "Cols", +"Insert row after": "Insert row after", +"Width": "Width", +"Cell properties": "Cell properties", +"Left": "Left", +"Cut row": "Cut row", +"Delete column": "Delete column", +"Center": "Center", +"Merge cells": "Merge cells", +"Insert template": "Insert template", +"Templates": "Templates", +"Background color": "Background colour", +"Custom...": "Custom...", +"Custom color": "Custom colour", +"No color": "No colour", +"Text color": "Text colour", +"Show blocks": "Show blocks", +"Show invisible characters": "Show invisible characters", +"Words: {0}": "Words: {0}", +"Insert": "Insert", +"File": "File", +"Edit": "Edit", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help", +"Tools": "Tools", +"View": "View", +"Table": "Table", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/en_GB.js b/assets/plugins/tinymce4/tinymce/langs/en_GB.js new file mode 100755 index 0000000000..a588b88745 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/en_GB.js @@ -0,0 +1,179 @@ +tinymce.addI18n('en_GB',{ +"Cut": "Cut", +"Header 2": "Header 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.", +"Div": "Div", +"Paste": "Paste", +"Close": "Close", +"Font Family": "Font Family", +"Pre": "Pre", +"Align right": "Align right", +"New document": "New document", +"Blockquote": "Blockquote", +"Numbered list": "Numbered list", +"Increase indent": "Increase indent", +"Formats": "Formats", +"Headers": "Headers", +"Select all": "Select all", +"Header 3": "Header 3", +"Blocks": "Blocks", +"Undo": "Undo", +"Strikethrough": "Strike-through", +"Bullet list": "Bullet list", +"Header 1": "Header 1", +"Superscript": "Superscript", +"Clear formatting": "Clear formatting", +"Font Sizes": "Font Sizes", +"Subscript": "Subscript", +"Header 6": "Header 6", +"Redo": "Redo", +"Paragraph": "Paragraph", +"Ok": "Ok", +"Bold": "Bold", +"Code": "Code", +"Italic": "Italic", +"Align center": "Align centre", +"Header 5": "Header 5", +"Decrease indent": "Decrease indent", +"Header 4": "Header 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.", +"Underline": "Underline", +"Cancel": "Cancel", +"Justify": "Justify", +"Inline": "Inline", +"Copy": "Copy", +"Align left": "Align left", +"Visual aids": "Visual aids", +"Lower Greek": "Lower Greek", +"Square": "Square", +"Default": "Default", +"Lower Alpha": "Lower Alpha", +"Circle": "Circle", +"Disc": "Disc", +"Upper Alpha": "Upper Alpha", +"Upper Roman": "Upper Roman", +"Lower Roman": "Lower Roman", +"Name": "Name", +"Anchor": "Anchor", +"You have unsaved changes are you sure you want to navigate away?": "You have unsaved changes are you sure you want to navigate away?", +"Restore last draft": "Restore last draft", +"Special character": "Special character", +"Source code": "Source code", +"Right to left": "Right to left", +"Left to right": "Left to right", +"Emoticons": "Emoticons", +"Robots": "Robots", +"Document properties": "Document properties", +"Title": "Title", +"Keywords": "Keywords", +"Encoding": "Encoding", +"Description": "Description", +"Author": "Author", +"Fullscreen": "Full-screen", +"Horizontal line": "Horizontal line", +"Horizontal space": "Horizontal space", +"Insert\/edit image": "Insert\/edit image", +"General": "General", +"Advanced": "Advanced", +"Source": "Source", +"Border": "Border", +"Constrain proportions": "Constrain proportions", +"Vertical space": "Vertical space", +"Image description": "Image description", +"Style": "Style", +"Dimensions": "Dimensions", +"Insert image": "Insert image", +"Insert date\/time": "Insert date\/time", +"Remove link": "Remove link", +"Url": "URL", +"Text to display": "Text to display", +"Anchors": "Anchors", +"Insert link": "Insert link", +"New window": "New window", +"None": "None", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?", +"Target": "Target", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", +"Insert\/edit link": "Insert\/edit link", +"Insert\/edit video": "Insert\/edit video", +"Poster": "Poster", +"Alternative source": "Alternative source", +"Paste your embed code below:": "Paste your embed code below:", +"Insert video": "Insert video", +"Embed": "Embed", +"Nonbreaking space": "Non-breaking space", +"Page break": "Page break", +"Paste as text": "Paste as text", +"Preview": "Preview", +"Print": "Print", +"Save": "Save", +"Could not find the specified string.": "Could not find the specified string.", +"Replace": "Replace", +"Next": "Next", +"Whole words": "Whole words", +"Find and replace": "Find and replace", +"Replace with": "Replace with", +"Find": "Find", +"Replace all": "Replace all", +"Match case": "Match case", +"Prev": "Prev", +"Spellcheck": "Spell-check", +"Finish": "Finish", +"Ignore all": "Ignore all", +"Ignore": "Ignore", +"Insert row before": "Insert row before", +"Rows": "Rows", +"Height": "Height", +"Paste row after": "Paste row after", +"Alignment": "Alignment", +"Column group": "Column group", +"Row": "Row", +"Insert column before": "Insert column before", +"Split cell": "Split cell", +"Cell padding": "Cell padding", +"Cell spacing": "Cell spacing", +"Row type": "Row type", +"Insert table": "Insert table", +"Body": "Body", +"Caption": "Caption", +"Footer": "Footer", +"Delete row": "Delete row", +"Paste row before": "Paste row before", +"Scope": "Scope", +"Delete table": "Delete table", +"Header cell": "Header cell", +"Column": "Column", +"Cell": "Cell", +"Header": "Header", +"Cell type": "Cell type", +"Copy row": "Copy row", +"Row properties": "Row properties", +"Table properties": "Table properties", +"Row group": "Row group", +"Right": "Right", +"Insert column after": "Insert column after", +"Cols": "Cols", +"Insert row after": "Insert row after", +"Width": "Width", +"Cell properties": "Cell properties", +"Left": "Left", +"Cut row": "Cut row", +"Delete column": "Delete column", +"Center": "Centre", +"Merge cells": "Merge cells", +"Insert template": "Insert template", +"Templates": "Templates", +"Background color": "Background colour", +"Text color": "Text colour", +"Show blocks": "Show blocks", +"Show invisible characters": "Show invisible characters", +"Words: {0}": "Words: {0}", +"Insert": "Insert", +"File": "File", +"Edit": "Edit", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help", +"Tools": "Tools", +"View": "View", +"Table": "Table", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/es.js b/assets/plugins/tinymce4/tinymce/langs/es.js new file mode 100755 index 0000000000..d0e7bd0f89 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/es.js @@ -0,0 +1,219 @@ +tinymce.addI18n('es',{ +"Cut": "Cortar", +"Heading 5": "Encabezado 5", +"Header 2": "Encabezado 2 ", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Tu navegador no soporta acceso directo al portapapeles. Por favor usa las teclas Crtl+X\/C\/V de tu teclado", +"Heading 4": "Encabezado 4", +"Div": "Capa", +"Heading 2": "Encabezado 2", +"Paste": "Pegar", +"Close": "Cerrar", +"Font Family": "Familia de fuentes", +"Pre": "Pre", +"Align right": "Alinear a la derecha", +"New document": "Nuevo documento", +"Blockquote": "Bloque de cita", +"Numbered list": "Lista numerada", +"Heading 1": "Encabezado 1", +"Headings": "Encabezados", +"Increase indent": "Incrementar sangr\u00eda", +"Formats": "Formatos", +"Headers": "Encabezados", +"Select all": "Seleccionar todo", +"Header 3": "Encabezado 3", +"Blocks": "Bloques", +"Undo": "Deshacer", +"Strikethrough": "Tachado", +"Bullet list": "Lista de vi\u00f1etas", +"Header 1": "Encabezado 1", +"Superscript": "Super\u00edndice", +"Clear formatting": "Limpiar formato", +"Font Sizes": "Tama\u00f1os de fuente", +"Subscript": "Sub\u00edndice", +"Header 6": "Encabezado 6", +"Redo": "Rehacer", +"Paragraph": "P\u00e1rrafo", +"Ok": "Ok", +"Bold": "Negrita", +"Code": "C\u00f3digo", +"Italic": "It\u00e1lica", +"Align center": "Alinear al centro", +"Header 5": "Encabezado 5 ", +"Heading 6": "Encabezado 6", +"Heading 3": "Encabezado 3", +"Decrease indent": "Disminuir sangr\u00eda", +"Header 4": "Encabezado 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Pegar est\u00e1 ahora en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.", +"Underline": "Subrayado", +"Cancel": "Cancelar", +"Justify": "Justificar", +"Inline": "en l\u00ednea", +"Copy": "Copiar", +"Align left": "Alinear a la izquierda", +"Visual aids": "Ayudas visuales", +"Lower Greek": "Inferior Griega", +"Square": "Cuadrado", +"Default": "Por defecto", +"Lower Alpha": "Inferior Alfa", +"Circle": "C\u00edrculo", +"Disc": "Disco", +"Upper Alpha": "Superior Alfa", +"Upper Roman": "Superior Romana", +"Lower Roman": "Inferior Romana", +"Name": "Nombre", +"Anchor": "Ancla", +"You have unsaved changes are you sure you want to navigate away?": "Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que quiere salir?", +"Restore last draft": "Restaurar el \u00faltimo borrador", +"Special character": "Car\u00e1cter especial", +"Source code": "C\u00f3digo fuente", +"B": "A", +"R": "R", +"G": "V", +"Color": "Color", +"Right to left": "De derecha a izquierda", +"Left to right": "De izquierda a derecha", +"Emoticons": "Emoticonos", +"Robots": "Robots", +"Document properties": "Propiedades del documento", +"Title": "T\u00edtulo", +"Keywords": "Palabras clave", +"Encoding": "Codificaci\u00f3n", +"Description": "Descripci\u00f3n", +"Author": "Autor", +"Fullscreen": "Pantalla completa", +"Horizontal line": "L\u00ednea horizontal", +"Horizontal space": "Espacio horizontal", +"Insert\/edit image": "Insertar\/editar imagen", +"General": "General", +"Advanced": "Avanzado", +"Source": "Enlace", +"Border": "Borde", +"Constrain proportions": "Restringir proporciones", +"Vertical space": "Espacio vertical", +"Image description": "Descripci\u00f3n de la imagen", +"Style": "Estilo", +"Dimensions": "Dimensiones", +"Insert image": "Insertar imagen", +"Zoom in": "Acercar", +"Contrast": "Contraste", +"Back": "Atr\u00e1s", +"Gamma": "Gamma", +"Flip horizontally": "Invertir horizontalmente", +"Resize": "Redimensionar", +"Sharpen": "Forma", +"Zoom out": "Alejar", +"Image options": "Opciones de imagen", +"Apply": "Aplicar", +"Brightness": "Brillo", +"Rotate clockwise": "Girar a la derecha", +"Rotate counterclockwise": "Girar a la izquierda", +"Edit image": "Editar imagen", +"Color levels": "Niveles de color", +"Crop": "Recortar", +"Orientation": "Orientaci\u00f3n", +"Flip vertically": "Invertir verticalmente", +"Invert": "Invertir", +"Insert date\/time": "Insertar fecha\/hora", +"Remove link": "Quitar enlace", +"Url": "URL", +"Text to display": "Texto para mostrar", +"Anchors": "Anclas", +"Insert link": "Insertar enlace", +"New window": "Nueva ventana", +"None": "Ninguno", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "El enlace que has introducido no parece ser una enlace externo. Quieres a\u00f1adir el prefijo necesario http:\/\/ ?", +"Target": "Destino", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "El enlace que has introducido no parece ser una direcci\u00f3n de correo electr\u00f3nico. Quieres a\u00f1adir el prefijo necesario mailto: ?", +"Insert\/edit link": "Insertar\/editar enlace", +"Insert\/edit video": "Insertar\/editar video", +"Poster": "Miniatura", +"Alternative source": "Enlace alternativo", +"Paste your embed code below:": "Pega tu c\u00f3digo embebido debajo", +"Insert video": "Insertar video", +"Embed": "Incrustado", +"Nonbreaking space": "Espacio fijo", +"Page break": "Salto de p\u00e1gina", +"Paste as text": "Pegar como texto", +"Preview": "Previsualizar", +"Print": "Imprimir", +"Save": "Guardar", +"Could not find the specified string.": "No se encuentra la cadena de texto especificada", +"Replace": "Reemplazar", +"Next": "Siguiente", +"Whole words": "Palabras completas", +"Find and replace": "Buscar y reemplazar", +"Replace with": "Reemplazar con", +"Find": "Buscar", +"Replace all": "Reemplazar todo", +"Match case": "Coincidencia exacta", +"Prev": "Anterior", +"Spellcheck": "Corrector ortogr\u00e1fico", +"Finish": "Finalizar", +"Ignore all": "Ignorar todos", +"Ignore": "Ignorar", +"Add to Dictionary": "A\u00f1adir al Diccionario", +"Insert row before": "Insertar fila antes", +"Rows": "Filas", +"Height": "Alto", +"Paste row after": "Pegar la fila despu\u00e9s", +"Alignment": "Alineaci\u00f3n", +"Border color": "Color del borde", +"Column group": "Grupo de columnas", +"Row": "Fila", +"Insert column before": "Insertar columna antes", +"Split cell": "Dividir celdas", +"Cell padding": "Relleno de celda", +"Cell spacing": "Espacio entre celdas", +"Row type": "Tipo de fila", +"Insert table": "Insertar tabla", +"Body": "Cuerpo", +"Caption": "Subt\u00edtulo", +"Footer": "Pie de p\u00e1gina", +"Delete row": "Eliminar fila", +"Paste row before": "Pegar la fila antes", +"Scope": "\u00c1mbito", +"Delete table": "Eliminar tabla", +"H Align": "Alineamiento Horizontal", +"Top": "Arriba", +"Header cell": "Celda de la cebecera", +"Column": "Columna", +"Row group": "Grupo de filas", +"Cell": "Celda", +"Middle": "Centro", +"Cell type": "Tipo de celda", +"Copy row": "Copiar fila", +"Row properties": "Propiedades de la fila", +"Table properties": "Propiedades de la tabla", +"Bottom": "Abajo", +"V Align": "Alineamiento Vertical", +"Header": "Cabecera", +"Right": "Derecha", +"Insert column after": "Insertar columna despu\u00e9s", +"Cols": "Columnas", +"Insert row after": "Insertar fila despu\u00e9s ", +"Width": "Ancho", +"Cell properties": "Propiedades de la celda", +"Left": "Izquierda", +"Cut row": "Cortar fila", +"Delete column": "Eliminar columna", +"Center": "Centrado", +"Merge cells": "Combinar celdas", +"Insert template": "Insertar plantilla", +"Templates": "Plantillas", +"Background color": "Color de fondo", +"Custom...": "Personalizar...", +"Custom color": "Color personalizado", +"No color": "Sin color", +"Text color": "Color del texto", +"Show blocks": "Mostrar bloques", +"Show invisible characters": "Mostrar caracteres invisibles", +"Words: {0}": "Palabras: {0}", +"Insert": "Insertar", +"File": "Archivo", +"Edit": "Editar", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda", +"Tools": "Herramientas", +"View": "Ver", +"Table": "Tabla", +"Format": "Formato" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/fa.js b/assets/plugins/tinymce4/tinymce/langs/fa.js new file mode 100755 index 0000000000..bbd09586e9 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/fa.js @@ -0,0 +1,187 @@ +tinymce.addI18n('fa',{ +"Cut": "\u0628\u0631\u062f\u0627\u0634\u062a\u0646", +"Heading 5": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 5", +"Header 2": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0645\u0631\u0648\u0631\u06af\u0631 \u0634\u0645\u0627 \u0627\u0632 \u062f\u0633\u062a\u0631\u0633\u06cc \u0645\u0633\u062a\u0642\u06cc\u0645 \u0628\u0647 \u062d\u0627\u0641\u0638\u0647 \u06a9\u067e\u06cc \u067e\u0634\u062a\u06cc\u0628\u0627\u0646\u06cc \u0646\u0645\u06cc \u06a9\u0646\u062f. \u0644\u0637\u0641\u0627 \u0627\u0632 \u06a9\u0644\u06cc\u062f \u0647\u0627\u06cc Ctrl+X\/C\/V \u062f\u0631 \u06a9\u06cc\u0628\u0648\u0631\u062f \u0628\u0631\u0627\u06cc \u0627\u06cc\u0646 \u06a9\u0627\u0631 \u0627\u0633\u062a\u0641\u0627\u062f\u0647 \u06a9\u0646\u06cc\u062f.", +"Heading 4": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 4", +"Div": "\u062a\u06af \u0628\u062e\u0634 - Div", +"Heading 2": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 2", +"Paste": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646", +"Close": "\u0628\u0633\u062a\u0646", +"Font Family": "\u0641\u0648\u0646\u062a", +"Pre": "\u062a\u06af \u062a\u0628\u062f\u06cc\u0644 \u0628\u0647 \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 - Pre", +"Align right": "\u0631\u0627\u0633\u062a \u0686\u06cc\u0646", +"New document": "\u0633\u0646\u062f \u062c\u062f\u06cc\u062f", +"Blockquote": "\u062a\u06af \u0646\u0642\u0644 \u0642\u0648\u0644 - Blockquote", +"Numbered list": "\u0644\u06cc\u0633\u062a \u0634\u0645\u0627\u0631\u0647 \u0627\u06cc", +"Heading 1": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 1", +"Headings": "\u0639\u0646\u0648\u0627\u0646", +"Increase indent": "\u0627\u0641\u0632\u0627\u06cc\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc", +"Formats": "\u0642\u0627\u0644\u0628", +"Headers": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647\u200c\u0647\u0627", +"Select all": "\u0627\u0646\u062a\u062e\u0627\u0628 \u0647\u0645\u0647", +"Header 3": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 3", +"Blocks": "\u0628\u0644\u0648\u06a9", +"Undo": "\t\n\u0628\u0627\u0637\u0644 \u06a9\u0631\u062f\u0646", +"Strikethrough": "\u062e\u0637 \u062e\u0648\u0631\u062f\u0647", +"Bullet list": "\u0644\u06cc\u0633\u062a \u062f\u0627\u06cc\u0631\u0647 \u0627\u06cc", +"Header 1": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 1", +"Superscript": "\u0628\u0627\u0644\u0627\u0646\u0648\u06cc\u0633 - \u062d\u0627\u0644\u062a \u062a\u0648\u0627\u0646", +"Clear formatting": "\u067e\u0627\u06a9 \u06a9\u0631\u062f\u0646 \u0642\u0627\u0644\u0628 \u0628\u0646\u062f\u06cc", +"Font Sizes": "\u0627\u0646\u062f\u0627\u0632\u0647 \u0641\u0648\u0646\u062a", +"Subscript": "\u0632\u06cc\u0631 \u0646\u0648\u06cc\u0633 - \u062d\u0627\u0644\u062a \u0627\u0646\u062f\u06cc\u0633", +"Header 6": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 6", +"Redo": "\u0627\u0646\u062c\u0627\u0645 \u062f\u0648\u0628\u0627\u0631\u0647", +"Paragraph": "\u062a\u06af \u067e\u0627\u0631\u0627\u06af\u0631\u0627\u0641 - Paragraph", +"Ok": "\u0628\u0627\u0634\u0647", +"Bold": "\u062f\u0631\u0634\u062a", +"Code": "\u062a\u06af \u06a9\u062f - Code", +"Italic": "\u062e\u0637 \u06a9\u062c", +"Align center": "\u0648\u0633\u0637 \u0686\u06cc\u0646", +"Header 5": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 5", +"Heading 6": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 6", +"Heading 3": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 3", +"Decrease indent": "\u06a9\u0627\u0647\u0634 \u062a\u0648 \u0631\u0641\u062a\u06af\u06cc", +"Header 4": "\u0633\u0631\u200c\u0635\u0641\u062d\u0647 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0647\u0645 \u0627\u06a9\u0646\u0648\u0646 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0633\u062a. \u062a\u0627 \u0632\u0645\u0627\u0646\u06cc \u06a9\u0647 \u0627\u06cc\u0646 \u062d\u0627\u0644\u062a \u0631\u0627 \u063a\u06cc\u0631\u200c\u0641\u0639\u0627\u0644 \u0646\u06a9\u0646\u06cc\u062f\u060c \u0645\u062d\u062a\u0648\u0627 \u062f\u0631 \u062d\u0627\u0644\u062a \u0645\u062a\u0646 \u0633\u0627\u062f\u0647 \u0627\u0636\u0627\u0641\u0647 \u0645\u06cc\u200c\u0634\u0648\u062f.", +"Underline": "\u062e\u0637 \u0632\u06cc\u0631", +"Cancel": "\u0644\u063a\u0648", +"Justify": "\u0645\u0633\u0627\u0648\u06cc \u0627\u0632 \u0637\u0631\u0641\u06cc\u0646", +"Inline": "\u062e\u0637\u06cc", +"Copy": "\u06a9\u067e\u06cc", +"Align left": "\u0686\u067e \u0686\u06cc\u0646", +"Visual aids": "\u06a9\u0645\u06a9 \u0647\u0627\u06cc \u0628\u0635\u0631\u06cc", +"Lower Greek": "\u06cc\u0648\u0646\u0627\u0646\u06cc \u06a9\u0648\u0686\u06a9", +"Square": "\u0645\u0631\u0628\u0639", +"Default": "\u067e\u06cc\u0634\u0641\u0631\u0636", +"Lower Alpha": "\u0622\u0644\u0641\u0627\u0621 \u06a9\u0648\u0686\u06a9", +"Circle": "\u062f\u0627\u06cc\u0631\u0647", +"Disc": "\u062f\u06cc\u0633\u06a9", +"Upper Alpha": "\u0622\u0644\u0641\u0627\u0621 \u0628\u0632\u0631\u06af", +"Upper Roman": "\u0631\u0648\u0645\u06cc \u0628\u0632\u0631\u06af", +"Lower Roman": "\u0631\u0648\u0645\u06cc \u06a9\u0648\u0686\u06a9", +"Name": "\u0646\u0627\u0645", +"Anchor": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9", +"You have unsaved changes are you sure you want to navigate away?": "\u0634\u0645\u0627 \u062a\u063a\u06cc\u06cc\u0631\u0627\u062a \u0630\u062e\u06cc\u0631\u0647 \u0646\u0634\u062f\u0647 \u0627\u06cc \u062f\u0627\u0631\u06cc\u062f\u060c \u0622\u06cc\u0627 \u0645\u0637\u0645\u0626\u0646\u06cc\u062f \u06a9\u0647 \u0645\u06cc\u062e\u0648\u0627\u0647\u06cc\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0635\u0641\u062d\u0647 \u0628\u0631\u0648\u06cc\u062f\u061f", +"Restore last draft": "\u0628\u0627\u0632\u06af\u0631\u062f\u0627\u0646\u062f\u0646 \u0622\u062e\u0631\u06cc\u0646 \u067e\u06cc\u0634 \u0646\u0648\u06cc\u0633", +"Special character": "\u06a9\u0627\u0631\u0627\u06a9\u062a\u0631 \u0647\u0627\u06cc \u062e\u0627\u0635", +"Source code": "\u06a9\u062f \u0645\u0646\u0628\u0639", +"Right to left": "\u0631\u0627\u0633\u062a \u0628\u0647 \u0686\u067e", +"Left to right": "\u0686\u067e \u0628\u0647 \u0631\u0627\u0633\u062a", +"Emoticons": "\u0634\u06a9\u0644\u06a9\u200c\u0647\u0627", +"Robots": "\u0631\u0628\u0627\u062a\u200c\u0647\u0627", +"Document properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0646\u062f", +"Title": "\u0639\u0646\u0648\u0627\u0646", +"Keywords": "\u06a9\u0644\u0645\u0627\u062a \u06a9\u0644\u06cc\u062f\u06cc", +"Encoding": "\u06a9\u062f \u06af\u0630\u0627\u0631\u06cc", +"Description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a", +"Author": "\u0646\u0648\u06cc\u0633\u0646\u062f\u0647", +"Fullscreen": "\u062a\u0645\u0627\u0645 \u0635\u0641\u062d\u0647", +"Horizontal line": "\u062e\u0637 \u0627\u0641\u0642\u06cc", +"Horizontal space": "\u0641\u0636\u0627\u06cc \u0627\u0641\u0642\u06cc", +"Insert\/edit image": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631", +"General": "\u0639\u0645\u0648\u0645\u06cc", +"Advanced": "\u067e\u06cc\u0634\u0631\u0641\u062a\u0647", +"Source": "\u0645\u0646\u0628\u0639", +"Border": "\u062d\u0627\u0634\u06cc\u0647", +"Constrain proportions": "\u062d\u0641\u0638 \u062a\u0646\u0627\u0633\u0628", +"Vertical space": "\u0641\u0636\u0627\u06cc \u0639\u0645\u0648\u062f\u06cc", +"Image description": "\u062a\u0648\u0636\u06cc\u062d\u0627\u062a \u0639\u06a9\u0633", +"Style": "\u0633\u0628\u06a9", +"Dimensions": "\u0627\u0628\u0639\u0627\u062f", +"Insert image": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0635\u0648\u06cc\u0631", +"Insert date\/time": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062a\u0627\u0631\u06cc\u062e\/\u0632\u0645\u0627\u0646", +"Remove link": "\u062d\u0630\u0641 \u0644\u06cc\u0646\u06a9", +"Url": "\u0627\u062f\u0631\u0633 \u0644\u06cc\u0646\u06a9", +"Text to display": "\u0645\u062a\u0646 \u0628\u0631\u0627\u06cc \u0646\u0645\u0627\u06cc\u0634", +"Anchors": "\u0644\u0646\u06af\u0631 - \u0644\u06cc\u0646\u06a9 \u062f\u0627\u062e\u0644 \u0635\u0641\u062d\u0647", +"Insert link": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9", +"New window": "\u067e\u0646\u062c\u0631\u0647 \u062c\u062f\u06cc\u062f", +"None": "\u0647\u06cc\u0686 \u06a9\u062f\u0627\u0645", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?", +"Target": "\u0646\u062d\u0648\u0647 \u0628\u0627\u0632 \u0634\u062f\u0646 \u062f\u0631 \u0645\u0631\u0648\u0631\u06af\u0631", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", +"Insert\/edit link": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0644\u06cc\u0646\u06a9", +"Insert\/edit video": "\u0627\u0636\u0627\u0641\u0647\/\u0648\u06cc\u0631\u0627\u06cc\u0634 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc", +"Poster": "\u067e\u0648\u0633\u062a\u0631", +"Alternative source": "\u0645\u0646\u0628\u0639 \u062f\u06cc\u06af\u0631", +"Paste your embed code below:": "\u06a9\u062f \u062e\u0648\u062f \u0631\u0627 \u0628\u0631\u0627\u06cc \u062c\u0627 \u062f\u0627\u062f\u0646 \u062f\u0631 \u0633\u0627\u06cc\u062a - embed - \u060c \u062f\u0631 \u0632\u06cc\u0631 \u0642\u0631\u0627\u0631 \u062f\u0647\u06cc\u062f:", +"Insert video": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0641\u0627\u06cc\u0644 \u062a\u0635\u0648\u06cc\u0631\u06cc", +"Embed": "\u062c\u0627 \u062f\u0627\u062f\u0646", +"Nonbreaking space": "\u0641\u0636\u0627\u06cc \u063a\u06cc\u0631 \u0634\u06a9\u0633\u062a\u0646", +"Page break": "\u0634\u06a9\u0633\u062a\u0646 \u0635\u0641\u062d\u0647", +"Paste as text": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0628\u0647 \u0639\u0646\u0648\u0627\u0646 \u0645\u062a\u0646", +"Preview": "\u067e\u06cc\u0634 \u0646\u0645\u0627\u06cc\u0634", +"Print": "\u0686\u0627\u067e", +"Save": "\u0630\u062e\u06cc\u0631\u0647", +"Could not find the specified string.": "\u0631\u0634\u062a\u0647 \u0645\u062a\u0646\u06cc \u0645\u0648\u0631\u062f \u0646\u0638\u0631 \u067e\u06cc\u062f\u0627 \u0646\u0634\u062f.", +"Replace": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646", +"Next": "\u0628\u0639\u062f\u06cc", +"Whole words": "\u0647\u0645\u0647 \u06a9\u0644\u0645\u0647\u200c\u0647\u0627", +"Find and replace": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648 \u0648 \u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646", +"Replace with": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0628\u0627", +"Find": "\u062c\u0633\u062a\u200c\u0648\u200c\u062c\u0648", +"Replace all": "\u062c\u0627\u06cc\u06af\u0632\u06cc\u0646 \u06a9\u0631\u062f\u0646 \u0647\u0645\u0647", +"Match case": "\u062d\u0633\u0627\u0633 \u0628\u0647 \u062d\u0631\u0648\u0641 \u06a9\u0648\u0686\u06a9 \u0648 \u0628\u0632\u0631\u06af", +"Prev": "\u0642\u0628\u0644\u06cc", +"Spellcheck": "\u0628\u0631\u0631\u0633\u06cc \u0627\u0645\u0644\u0627\u06cc\u06cc", +"Finish": "\u067e\u0627\u06cc\u0627\u0646", +"Ignore all": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646 \u0647\u0645\u0647", +"Ignore": "\u0646\u0627\u062f\u06cc\u062f\u0647 \u06af\u0631\u0641\u062a\u0646", +"Insert row before": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631", +"Rows": "\u062a\u0639\u062f\u0627\u062f \u0633\u0637\u0631\u200c\u0647\u0627", +"Height": "\u0627\u0631\u062a\u0641\u0627\u0639", +"Paste row after": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631", +"Alignment": "\u0631\u062f\u06cc\u0641 \u0628\u0646\u062f\u06cc \u0646\u0648\u0634\u062a\u0647", +"Column group": "\u06af\u0631\u0648\u0647 \u0633\u062a\u0648\u0646", +"Row": "\u0633\u0637\u0631", +"Insert column before": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646", +"Split cell": "\u062a\u0642\u0633\u06cc\u0645 \u0633\u0644\u0648\u0644 \u062c\u062f\u0648\u0644", +"Cell padding": "\u062d\u0627\u0634\u06cc\u0647 \u0633\u0644\u0648\u0644 \u0647\u0627", +"Cell spacing": "\u0641\u0627\u0635\u0644\u0647\u200c\u06cc \u0628\u06cc\u0646 \u0633\u0644\u0648\u0644 \u0647\u0627", +"Row type": "\u0646\u0648\u0639 \u0633\u0637\u0631", +"Insert table": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u062c\u062f\u0648\u0644", +"Body": "\u0628\u062f\u0646\u0647", +"Caption": "\u0639\u0646\u0648\u0627\u0646", +"Footer": "\u067e\u0627\u0646\u0648\u06cc\u0633", +"Delete row": "\u062d\u0630\u0641 \u0633\u0637\u0631", +"Paste row before": "\u0686\u0633\u0628\u0627\u0646\u062f\u0646 \u0633\u0637\u0631\u060c \u0642\u0628\u0644 \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631", +"Scope": "\u0645\u062d\u062f\u0648\u062f\u0647\u200c\u06cc \u0639\u0646\u0648\u0627\u0646", +"Delete table": "\u062d\u0630\u0641 \u062c\u062f\u0648\u0644", +"Header cell": "\u0633\u0631\u0622\u06cc\u0646\u062f \u0633\u0644\u0648\u0644", +"Column": "\u0633\u062a\u0648\u0646", +"Cell": "\u0633\u0644\u0648\u0644", +"Header": "\u0633\u0631\u0622\u06cc\u0646\u062f", +"Cell type": "\u0646\u0648\u0639 \u0633\u0644\u0648\u0644", +"Copy row": "\u06a9\u067e\u06cc \u0633\u0637\u0631", +"Row properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0637\u0631", +"Table properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u062c\u062f\u0648\u0644", +"Row group": "\u06af\u0631\u0648\u0647 \u0633\u0637\u0631", +"Right": "\u0631\u0627\u0633\u062a", +"Insert column after": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u062a\u0648\u0646 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u062a\u0648\u0646", +"Cols": "\u062a\u0639\u062f\u0627\u062f \u0633\u062a\u0648\u0646\u200c\u0647\u0627", +"Insert row after": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0633\u0637\u0631 \u062c\u062f\u06cc\u062f \u0628\u0639\u062f \u0627\u0632 \u0627\u06cc\u0646 \u0633\u0637\u0631", +"Width": "\u0639\u0631\u0636", +"Cell properties": "\u0648\u06cc\u0698\u06af\u06cc\u200c\u0647\u0627\u06cc \u0633\u0644\u0648\u0644", +"Left": "\u0686\u067e", +"Cut row": "\u0628\u0631\u0634 \u0633\u0637\u0631", +"Delete column": "\u062d\u0630\u0641 \u0633\u062a\u0648\u0646", +"Center": "\u0648\u0633\u0637", +"Merge cells": "\u0627\u062f\u063a\u0627\u0645 \u0633\u0644\u0648\u0644\u200c\u0647\u0627", +"Insert template": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646 \u0627\u0644\u06af\u0648", +"Templates": "\u0627\u0644\u06af\u0648\u200c\u0647\u0627", +"Background color": "\u0631\u0646\u06af \u0632\u0645\u06cc\u0646\u0647 \u0645\u062a\u0646", +"Text color": "\u0631\u0646\u06af \u0645\u062a\u0646", +"Show blocks": "\u0646\u0645\u0627\u06cc\u0634 \u0628\u062e\u0634\u200c\u0647\u0627", +"Show invisible characters": "\u0646\u0645\u0627\u06cc\u0634 \u06a9\u0627\u0631\u0627\u06a9\u062a\u0631\u0647\u0627\u06cc \u063a\u06cc\u0631 \u0642\u0627\u0628\u0644 \u0686\u0627\u067e", +"Words: {0}": "\u06a9\u0644\u0645\u0627\u062a : {0}", +"Insert": "\u0627\u0636\u0627\u0641\u0647 \u06a9\u0631\u062f\u0646", +"File": "\u067e\u0631\u0648\u0646\u062f\u0647", +"Edit": "\u0648\u06cc\u0631\u0627\u06cc\u0634", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0648\u06cc\u0631\u0627\u06cc\u0634\u06af\u0631 \u067e\u06cc\u0634\u0631\u0641\u062a\u0647\u200c\u06cc \u0645\u062a\u0646. \u0628\u0631\u0627\u06cc \u062f\u0633\u062a\u0631\u0633\u06cc \u0628\u0647 \u0645\u0646\u0648 \u06a9\u0644\u06cc\u062f\u0647\u0627\u06cc ALT-F9\u060c \u0646\u0648\u0627\u0631 \u0627\u0628\u0632\u0627\u0631 ALT-F10 \u0648 \u0628\u0631\u0627\u06cc \u0645\u0634\u0627\u0647\u062f\u0647\u200c\u06cc \u0631\u0627\u0647\u0646\u0645\u0627 ALT-0 \u0631\u0627 \u0641\u0634\u0627\u0631 \u062f\u0647\u06cc\u062f.", +"Tools": "\u0627\u0628\u0632\u0627\u0631\u0647\u0627", +"View": "\u0646\u0645\u0627\u06cc\u0634", +"Table": "\u062c\u062f\u0648\u0644", +"Format": "\u0642\u0627\u0644\u0628", +"_dir": "rtl" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/fi.js b/assets/plugins/tinymce4/tinymce/langs/fi.js new file mode 100755 index 0000000000..87677bd3ff --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/fi.js @@ -0,0 +1,219 @@ +tinymce.addI18n('fi',{ +"Cut": "Leikkaa", +"Heading 5": "Otsikko 5", +"Header 2": "Otsikko 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Selaimesi ei tue leikep\u00f6yd\u00e4n suoraa k\u00e4ytt\u00e4mist\u00e4. Ole hyv\u00e4 ja k\u00e4yt\u00e4 n\u00e4pp\u00e4imist\u00f6n Ctrl+X\/C\/V n\u00e4pp\u00e4inyhdistelmi\u00e4.", +"Heading 4": "Otsikko 4", +"Div": "Div", +"Heading 2": "Otsikko 2", +"Paste": "Liit\u00e4", +"Close": "Sulje", +"Font Family": "Fontti", +"Pre": "Esimuotoiltu", +"Align right": "Tasaa oikealle", +"New document": "Uusi dokumentti", +"Blockquote": "Lainauslohko", +"Numbered list": "J\u00e4rjestetty lista", +"Heading 1": "Otsikko 1", +"Headings": "Otsikot", +"Increase indent": "Loitonna", +"Formats": "Muotoilut", +"Headers": "Otsikot", +"Select all": "Valitse kaikki", +"Header 3": "Otsikko 3", +"Blocks": "Lohkot", +"Undo": "Peru", +"Strikethrough": "Yliviivaus", +"Bullet list": "J\u00e4rjest\u00e4m\u00e4t\u00f6n lista", +"Header 1": "Otsikko 1", +"Superscript": "Yl\u00e4indeksi", +"Clear formatting": "Poista muotoilu", +"Font Sizes": "Fonttikoko", +"Subscript": "Alaindeksi", +"Header 6": "Otsikko 6", +"Redo": "Tee uudelleen", +"Paragraph": "Kappale", +"Ok": "Ok", +"Bold": "Lihavointi", +"Code": "Koodi", +"Italic": "Kursivointi", +"Align center": "Keskit\u00e4", +"Header 5": "Otsikko 5", +"Heading 6": "Otsikko 6", +"Heading 3": "Otsikko 3", +"Decrease indent": "Sisenn\u00e4", +"Header 4": "Otsikko 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Liitt\u00e4minen on nyt pelk\u00e4n tekstin -tilassa. Sis\u00e4ll\u00f6t liitet\u00e4\u00e4n nyt pelkk\u00e4n\u00e4 tekstin\u00e4, kunnes otat vaihtoehdon pois k\u00e4yt\u00f6st\u00e4.", +"Underline": "Alleviivaus", +"Cancel": "Peruuta", +"Justify": "Tasaa", +"Inline": "Samalla rivill\u00e4", +"Copy": "Kopioi", +"Align left": "Tasaa vasemmalle", +"Visual aids": "Visuaaliset neuvot", +"Lower Greek": "pienet kirjaimet: \u03b1, \u03b2, \u03b3", +"Square": "Neli\u00f6", +"Default": "Oletus", +"Lower Alpha": "pienet kirjaimet: a, b, c", +"Circle": "Pallo", +"Disc": "Ympyr\u00e4", +"Upper Alpha": "isot kirjaimet: A, B, C", +"Upper Roman": "isot kirjaimet: I, II, III", +"Lower Roman": "pienet kirjaimet: i, ii, iii", +"Name": "Nimi", +"Anchor": "Ankkuri", +"You have unsaved changes are you sure you want to navigate away?": "Sinulla on tallentamattomia muutoksia, haluatko varmasti siirty\u00e4 toiselle sivulle?", +"Restore last draft": "Palauta aiempi luonnos", +"Special character": "Erikoismerkki", +"Source code": "L\u00e4hdekoodi", +"B": "B", +"R": "R", +"G": "G", +"Color": "V\u00e4ri", +"Right to left": "Oikealta vasemmalle", +"Left to right": "Vasemmalta oikealle", +"Emoticons": "Hymi\u00f6t", +"Robots": "Robotit", +"Document properties": "Dokumentin ominaisuudet", +"Title": "Otsikko", +"Keywords": "Avainsanat", +"Encoding": "Merkist\u00f6", +"Description": "Kuvaus", +"Author": "Tekij\u00e4", +"Fullscreen": "Koko ruutu", +"Horizontal line": "Vaakasuora viiva", +"Horizontal space": "Horisontaalinen tila", +"Insert\/edit image": "Lis\u00e4\u00e4\/muokkaa kuva", +"General": "Yleiset", +"Advanced": "Lis\u00e4asetukset", +"Source": "L\u00e4hde", +"Border": "Reunus", +"Constrain proportions": "S\u00e4ilyt\u00e4 mittasuhteet", +"Vertical space": "Vertikaalinen tila", +"Image description": "Kuvaus", +"Style": "Tyyli", +"Dimensions": "Mittasuhteet", +"Insert image": "Lis\u00e4\u00e4 kuva", +"Zoom in": "L\u00e4henn\u00e4", +"Contrast": "Kontrasti", +"Back": "Takaisin", +"Gamma": "Gamma", +"Flip horizontally": "K\u00e4\u00e4nn\u00e4 vaakasuunnassa", +"Resize": "Kuvan koon muutos", +"Sharpen": "Ter\u00e4vyys", +"Zoom out": "Loitonna", +"Image options": "Kuvan asetukset", +"Apply": "Aseta", +"Brightness": "Kirkkaus", +"Rotate clockwise": "Kierr\u00e4 my\u00f6t\u00e4p\u00e4iv\u00e4\u00e4n", +"Rotate counterclockwise": "Kierr\u00e4 vastap\u00e4iv\u00e4\u00e4n", +"Edit image": "Muokkaa kuvaa", +"Color levels": "V\u00e4ritasot", +"Crop": "Rajaa valintaan", +"Orientation": "Suunta", +"Flip vertically": "K\u00e4\u00e4nn\u00e4 pystysuunnassa", +"Invert": "K\u00e4\u00e4nteinen", +"Insert date\/time": "Lis\u00e4\u00e4 p\u00e4iv\u00e4m\u00e4\u00e4r\u00e4 tai aika", +"Remove link": "Poista linkki", +"Url": "Osoite", +"Text to display": "N\u00e4ytett\u00e4v\u00e4 teksti", +"Anchors": "Ankkurit", +"Insert link": "Lis\u00e4\u00e4 linkki", +"New window": "Uusi ikkuna", +"None": "Ei mit\u00e4\u00e4n", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan ulkoinen linkki. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun http:\/\/ -etuliitteen?", +"Target": "Kohde", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Antamasi osoite n\u00e4ytt\u00e4\u00e4 olevan s\u00e4hk\u00f6postiosoite. Haluatko lis\u00e4t\u00e4 osoitteeseen vaaditun mailto: -etuliitteen?", +"Insert\/edit link": "Lis\u00e4\u00e4\/muokkaa linkki", +"Insert\/edit video": "Lis\u00e4\u00e4\/muokkaa video", +"Poster": "L\u00e4hett\u00e4j\u00e4", +"Alternative source": "Vaihtoehtoinen l\u00e4hde", +"Paste your embed code below:": "Liit\u00e4 upotuskoodisi alapuolelle:", +"Insert video": "Lis\u00e4\u00e4 video", +"Embed": "Upota", +"Nonbreaking space": "Sitova v\u00e4lily\u00f6nti", +"Page break": "Sivunvaihto", +"Paste as text": "Liit\u00e4 tekstin\u00e4", +"Preview": "Esikatselu", +"Print": "Tulosta", +"Save": "Tallenna", +"Could not find the specified string.": "Haettua merkkijonoa ei l\u00f6ytynyt.", +"Replace": "Korvaa", +"Next": "Seur.", +"Whole words": "Koko sanat", +"Find and replace": "Etsi ja korvaa", +"Replace with": "Korvaa", +"Find": "Etsi", +"Replace all": "Korvaa kaikki", +"Match case": "Erota isot ja pienet kirjaimet", +"Prev": "Edel.", +"Spellcheck": "Oikolue", +"Finish": "Lopeta", +"Ignore all": "\u00c4l\u00e4 huomioi mit\u00e4\u00e4n", +"Ignore": "\u00c4l\u00e4 huomioi", +"Add to Dictionary": "Lis\u00e4\u00e4 sanakirjaan", +"Insert row before": "Lis\u00e4\u00e4 rivi ennen", +"Rows": "Rivit", +"Height": "Korkeus", +"Paste row after": "Liit\u00e4 rivi j\u00e4lkeen", +"Alignment": "Tasaus", +"Border color": "Reunuksen v\u00e4ri", +"Column group": "Sarakeryhm\u00e4", +"Row": "Rivi", +"Insert column before": "Lis\u00e4\u00e4 rivi ennen", +"Split cell": "Jaa solu", +"Cell padding": "Solun tyhj\u00e4 tila", +"Cell spacing": "Solun v\u00e4li", +"Row type": "Rivityyppi", +"Insert table": "Lis\u00e4\u00e4 taulukko", +"Body": "Runko", +"Caption": "Seloste", +"Footer": "Alaosa", +"Delete row": "Poista rivi", +"Paste row before": "Liit\u00e4 rivi ennen", +"Scope": "Laajuus", +"Delete table": "Poista taulukko", +"H Align": "H tasaus", +"Top": "Yl\u00e4reuna", +"Header cell": "Otsikkosolu", +"Column": "Sarake", +"Row group": "Riviryhm\u00e4", +"Cell": "Solu", +"Middle": "Keskikohta", +"Cell type": "Solun tyyppi", +"Copy row": "Kopioi rivi", +"Row properties": "Rivin ominaisuudet", +"Table properties": "Taulukon ominaisuudet", +"Bottom": "Alareuna", +"V Align": "V tasaus", +"Header": "Otsikko", +"Right": "Oikea", +"Insert column after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen", +"Cols": "Sarakkeet", +"Insert row after": "Lis\u00e4\u00e4 rivi j\u00e4lkeen", +"Width": "Leveys", +"Cell properties": "Solun ominaisuudet", +"Left": "Vasen", +"Cut row": "Leikkaa rivi", +"Delete column": "Poista sarake", +"Center": "Keskell\u00e4", +"Merge cells": "Yhdist\u00e4 solut", +"Insert template": "Lis\u00e4\u00e4 pohja", +"Templates": "Pohjat", +"Background color": "Taustan v\u00e4ri", +"Custom...": "Mukauta...", +"Custom color": "Mukautettu v\u00e4ri", +"No color": "Ei v\u00e4ri\u00e4", +"Text color": "Tekstin v\u00e4ri", +"Show blocks": "N\u00e4yt\u00e4 lohkot", +"Show invisible characters": "N\u00e4yt\u00e4 n\u00e4kym\u00e4tt\u00f6m\u00e4t merkit", +"Words: {0}": "Sanat: {0}", +"Insert": "Lis\u00e4\u00e4", +"File": "Tiedosto", +"Edit": "Muokkaa", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rikastetun tekstin alue. Paina ALT-F9 valikkoon. Paina ALT-F10 ty\u00f6kaluriviin. Paina ALT-0 ohjeeseen.", +"Tools": "Ty\u00f6kalut", +"View": "N\u00e4yt\u00e4", +"Table": "Taulukko", +"Format": "Muotoilu" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/fr_FR.js b/assets/plugins/tinymce4/tinymce/langs/fr_FR.js new file mode 100755 index 0000000000..b74abd48db --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/fr_FR.js @@ -0,0 +1,219 @@ +tinymce.addI18n('fr_FR',{ +"Cut": "Couper", +"Heading 5": "En-t\u00eate 5", +"Header 2": "Titre 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.", +"Heading 4": "En-t\u00eate 4", +"Div": "Div", +"Heading 2": "En-t\u00eate 2", +"Paste": "Coller", +"Close": "Fermer", +"Font Family": "Police", +"Pre": "Pre", +"Align right": "Aligner \u00e0 droite", +"New document": "Nouveau document", +"Blockquote": "Citation", +"Numbered list": "Num\u00e9rotation", +"Heading 1": "En-t\u00eate 1", +"Headings": "En-t\u00eates", +"Increase indent": "Augmenter le retrait", +"Formats": "Formats", +"Headers": "Titres", +"Select all": "Tout s\u00e9lectionner", +"Header 3": "Titre 3", +"Blocks": "Blocs", +"Undo": "Annuler", +"Strikethrough": "Barr\u00e9", +"Bullet list": "Puces", +"Header 1": "Titre 1", +"Superscript": "Exposant", +"Clear formatting": "Effacer la mise en forme", +"Font Sizes": "Taille de police", +"Subscript": "Indice", +"Header 6": "Titre 6", +"Redo": "R\u00e9tablir", +"Paragraph": "Paragraphe", +"Ok": "Ok", +"Bold": "Gras", +"Code": "Code", +"Italic": "Italique", +"Align center": "Centrer", +"Header 5": "Titre 5", +"Heading 6": "En-t\u00eate 6", +"Heading 3": "En-t\u00eate 3", +"Decrease indent": "Diminuer le retrait", +"Header 4": "Titre 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.", +"Underline": "Soulign\u00e9", +"Cancel": "Annuler", +"Justify": "Justifier", +"Inline": "En ligne", +"Copy": "Copier", +"Align left": "Aligner \u00e0 gauche", +"Visual aids": "Aides visuelle", +"Lower Greek": "Grec minuscule", +"Square": "Carr\u00e9", +"Default": "Par d\u00e9faut", +"Lower Alpha": "Alpha minuscule", +"Circle": "Cercle", +"Disc": "Disque", +"Upper Alpha": "Alpha majuscule", +"Upper Roman": "Romain majuscule", +"Lower Roman": "Romain minuscule", +"Name": "Nom", +"Anchor": "Ancre", +"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?", +"Restore last draft": "Restaurer le dernier brouillon", +"Special character": "Caract\u00e8res sp\u00e9ciaux", +"Source code": "Code source", +"B": "B", +"R": "R", +"G": "V", +"Color": "Couleur", +"Right to left": "Droite \u00e0 gauche", +"Left to right": "Gauche \u00e0 droite", +"Emoticons": "Emotic\u00f4nes", +"Robots": "Robots", +"Document properties": "Propri\u00e9t\u00e9 du document", +"Title": "Titre", +"Keywords": "Mots-cl\u00e9s", +"Encoding": "Encodage", +"Description": "Description", +"Author": "Auteur", +"Fullscreen": "Plein \u00e9cran", +"Horizontal line": "Ligne horizontale", +"Horizontal space": "Espacement horizontal", +"Insert\/edit image": "Ins\u00e9rer\/modifier une image", +"General": "G\u00e9n\u00e9ral", +"Advanced": "Avanc\u00e9", +"Source": "Source", +"Border": "Bordure", +"Constrain proportions": "Conserver les proportions", +"Vertical space": "Espacement vertical", +"Image description": "Description de l'image", +"Style": "Style", +"Dimensions": "Dimensions", +"Insert image": "Ins\u00e9rer une image", +"Zoom in": "Zoomer", +"Contrast": "Contraste", +"Back": "Retour", +"Gamma": "Gamma", +"Flip horizontally": "Retournement horizontal", +"Resize": "Redimensionner", +"Sharpen": "Affiner", +"Zoom out": "D\u00e9zoomer", +"Image options": "Options de l'image", +"Apply": "Appliquer", +"Brightness": "Luminosit\u00e9", +"Rotate clockwise": "Rotation horaire", +"Rotate counterclockwise": "Rotation anti-horaire", +"Edit image": "Modifier l'image", +"Color levels": "Niveaux de couleur", +"Crop": "Rogner", +"Orientation": "Orientation", +"Flip vertically": "Retournement vertical", +"Invert": "Inverser", +"Insert date\/time": "Ins\u00e9rer date\/heure", +"Remove link": "Enlever le lien", +"Url": "Url", +"Text to display": "Texte \u00e0 afficher", +"Anchors": "Ancres", +"Insert link": "Ins\u00e9rer un lien", +"New window": "Nouvelle fen\u00eatre", +"None": "n\/a", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?", +"Target": "Cible", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?", +"Insert\/edit link": "Ins\u00e9rer\/modifier un lien", +"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o", +"Poster": "Publier", +"Alternative source": "Source alternative", +"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :", +"Insert video": "Ins\u00e9rer une vid\u00e9o", +"Embed": "Int\u00e9grer", +"Nonbreaking space": "Espace ins\u00e9cable", +"Page break": "Saut de page", +"Paste as text": "Coller comme texte", +"Preview": "Pr\u00e9visualiser", +"Print": "Imprimer", +"Save": "Enregistrer", +"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.", +"Replace": "Remplacer", +"Next": "Suiv", +"Whole words": "Mots entiers", +"Find and replace": "Trouver et remplacer", +"Replace with": "Remplacer par", +"Find": "Chercher", +"Replace all": "Tout remplacer", +"Match case": "Respecter la casse", +"Prev": "Pr\u00e9c ", +"Spellcheck": "V\u00e9rification orthographique", +"Finish": "Finie", +"Ignore all": "Tout ignorer", +"Ignore": "Ignorer", +"Add to Dictionary": "Ajouter au dictionnaire", +"Insert row before": "Ins\u00e9rer une ligne avant", +"Rows": "Lignes", +"Height": "Hauteur", +"Paste row after": "Coller la ligne apr\u00e8s", +"Alignment": "Alignement", +"Border color": "Couleur de la bordure", +"Column group": "Groupe de colonnes", +"Row": "Ligne", +"Insert column before": "Ins\u00e9rer une colonne avant", +"Split cell": "Diviser la cellule", +"Cell padding": "Espacement interne cellule", +"Cell spacing": "Espacement inter-cellulles", +"Row type": "Type de ligne", +"Insert table": "Ins\u00e9rer un tableau", +"Body": "Corps", +"Caption": "Titre", +"Footer": "Pied", +"Delete row": "Effacer la ligne", +"Paste row before": "Coller la ligne avant", +"Scope": "Etendue", +"Delete table": "Supprimer le tableau", +"H Align": "Alignement H", +"Top": "Haut", +"Header cell": "Cellule d'en-t\u00eate", +"Column": "Colonne", +"Row group": "Groupe de lignes", +"Cell": "Cellule", +"Middle": "Milieu", +"Cell type": "Type de cellule", +"Copy row": "Copier la ligne", +"Row properties": "Propri\u00e9t\u00e9s de la ligne", +"Table properties": "Propri\u00e9t\u00e9s du tableau", +"Bottom": "Bas", +"V Align": "Alignement V", +"Header": "En-t\u00eate", +"Right": "Droite", +"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s", +"Cols": "Colonnes", +"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s", +"Width": "Largeur", +"Cell properties": "Propri\u00e9t\u00e9s de la cellule", +"Left": "Gauche", +"Cut row": "Couper la ligne", +"Delete column": "Effacer la colonne", +"Center": "Centr\u00e9", +"Merge cells": "Fusionner les cellules", +"Insert template": "Ajouter un th\u00e8me", +"Templates": "Th\u00e8mes", +"Background color": "Couleur d'arri\u00e8re-plan", +"Custom...": "Personnalis\u00e9...", +"Custom color": "Couleur personnalis\u00e9e", +"No color": "Aucune couleur", +"Text color": "Couleur du texte", +"Show blocks": "Afficher les blocs", +"Show invisible characters": "Afficher les caract\u00e8res invisibles", +"Words: {0}": "Mots : {0}", +"Insert": "Ins\u00e9rer", +"File": "Fichier", +"Edit": "Editer", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.", +"Tools": "Outils", +"View": "Voir", +"Table": "Tableau", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/he_IL.js b/assets/plugins/tinymce4/tinymce/langs/he_IL.js new file mode 100755 index 0000000000..8fb45553eb --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/he_IL.js @@ -0,0 +1,220 @@ +tinymce.addI18n('he_IL',{ +"Cut": "\u05d2\u05d6\u05d5\u05e8", +"Heading 5": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea 5", +"Header 2": "\u05db\u05d5\u05ea\u05e8\u05ea 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u05d4\u05d3\u05e4\u05d3\u05e4\u05df \u05e9\u05dc\u05da \u05d0\u05d9\u05e0\u05d5 \u05de\u05d0\u05e4\u05e9\u05e8 \u05d2\u05d9\u05e9\u05d4 \u05d9\u05e9\u05d9\u05e8\u05d4 \u05dc\u05dc\u05d5\u05d7. \u05d0\u05e0\u05d0 \u05d4\u05e9\u05ea\u05de\u05e9 \u05d1\u05e7\u05d9\u05e6\u05d5\u05e8\u05d9 \u05d4\u05de\u05e7\u05dc\u05d3\u05ea Ctrl+X\/C\/V \u05d1\u05de\u05e7\u05d5\u05dd.", +"Heading 4": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea 4", +"Div": "\u05de\u05e7\u05d8\u05e2 \u05e7\u05d5\u05d3 Div", +"Heading 2": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea 2", +"Paste": "\u05d4\u05d3\u05d1\u05e7", +"Close": "\u05e1\u05d2\u05d5\u05e8", +"Font Family": "\u05e1\u05d5\u05d2 \u05d2\u05d5\u05e4\u05df", +"Pre": "\u05e7\u05d8\u05e2 \u05de\u05e7\u05d3\u05d9\u05dd Pre", +"Align right": "\u05d9\u05d9\u05e9\u05e8 \u05dc\u05d9\u05de\u05d9\u05df", +"New document": "\u05de\u05e1\u05de\u05da \u05d7\u05d3\u05e9", +"Blockquote": "\u05de\u05e7\u05d8\u05e2 \u05e6\u05d9\u05d8\u05d5\u05d8", +"Numbered list": "\u05e8\u05e9\u05d9\u05de\u05d4 \u05de\u05de\u05d5\u05e1\u05e4\u05e8\u05ea", +"Heading 1": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea 1", +"Headings": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea", +"Increase indent": "\u05d4\u05d2\u05d3\u05dc \u05d4\u05d6\u05d7\u05d4", +"Formats": "\u05e2\u05d9\u05e6\u05d5\u05d1\u05d9\u05dd", +"Headers": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea", +"Select all": "\u05d1\u05d7\u05e8 \u05d4\u05db\u05dc", +"Header 3": "\u05db\u05d5\u05ea\u05e8\u05ea 3", +"Blocks": "\u05de\u05d1\u05e0\u05d9\u05dd", +"Undo": "\u05d1\u05d8\u05dc \u05e4\u05e2\u05d5\u05dc\u05d4", +"Strikethrough": "\u05e7\u05d5 \u05d7\u05d5\u05e6\u05d4", +"Bullet list": "\u05e8\u05e9\u05d9\u05de\u05ea \u05ea\u05d1\u05dc\u05d9\u05d8\u05d9\u05dd", +"Header 1": "\u05db\u05d5\u05ea\u05e8\u05ea 1", +"Superscript": "\u05db\u05ea\u05d1 \u05e2\u05d9\u05dc\u05d9", +"Clear formatting": "\u05e0\u05e7\u05d4 \u05e2\u05d9\u05e6\u05d5\u05d1", +"Font Sizes": "\u05d2\u05d5\u05d3\u05dc \u05d2\u05d5\u05e4\u05df", +"Subscript": "\u05db\u05ea\u05d1 \u05ea\u05d7\u05ea\u05d9", +"Header 6": "\u05db\u05d5\u05ea\u05e8\u05ea 6", +"Redo": "\u05d1\u05e6\u05e2 \u05e9\u05d5\u05d1", +"Paragraph": "\u05e4\u05d9\u05e1\u05e7\u05d4", +"Ok": "\u05d0\u05d9\u05e9\u05d5\u05e8", +"Bold": "\u05de\u05d5\u05d3\u05d2\u05e9", +"Code": "\u05e7\u05d5\u05d3", +"Italic": "\u05e0\u05d8\u05d5\u05d9", +"Align center": "\u05de\u05e8\u05db\u05d6", +"Header 5": "\u05db\u05d5\u05ea\u05e8\u05ea 5", +"Heading 6": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea 6", +"Heading 3": "\u05db\u05d5\u05ea\u05e8\u05d5\u05ea 3", +"Decrease indent": "\u05d4\u05e7\u05d8\u05df \u05d4\u05d6\u05d7\u05d4", +"Header 4": "\u05db\u05d5\u05ea\u05e8\u05ea 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u05d4\u05d3\u05d1\u05e7\u05d4 \u05d1\u05de\u05e6\u05d1 \u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc. \u05ea\u05db\u05e0\u05d9\u05dd \u05d9\u05d5\u05d3\u05d1\u05e7\u05d5 \u05de\u05e2\u05ea\u05d4 \u05db\u05d8\u05e7\u05e1\u05d8 \u05e8\u05d2\u05d9\u05dc \u05e2\u05d3 \u05e9\u05ea\u05db\u05d1\u05d4 \u05d0\u05e4\u05e9\u05e8\u05d5\u05ea \u05d6\u05d5.", +"Underline": "\u05e7\u05d5 \u05ea\u05d7\u05ea\u05d9", +"Cancel": "\u05d1\u05d8\u05dc", +"Justify": "\u05de\u05ea\u05d7 \u05dc\u05e6\u05d3\u05d3\u05d9\u05dd", +"Inline": "\u05d1\u05d2\u05d5\u05e3 \u05d4\u05d8\u05e7\u05e1\u05d8", +"Copy": "\u05d4\u05e2\u05ea\u05e7", +"Align left": "\u05d9\u05d9\u05e9\u05e8 \u05dc\u05e9\u05de\u05d0\u05dc", +"Visual aids": "\u05e2\u05d6\u05e8\u05d9\u05dd \u05d7\u05d6\u05d5\u05ea\u05d9\u05d9\u05dd", +"Lower Greek": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d9\u05d5\u05d5\u05e0\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea", +"Square": "\u05e8\u05d9\u05d1\u05d5\u05e2", +"Default": "\u05d1\u05e8\u05d9\u05e8\u05ea \u05de\u05d7\u05d3\u05dc", +"Lower Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea", +"Circle": "\u05e2\u05d9\u05d2\u05d5\u05dc", +"Disc": "\u05d7\u05d9\u05e9\u05d5\u05e7", +"Upper Alpha": "\u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05d0\u05e0\u05d2\u05dc\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea", +"Upper Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05d2\u05d3\u05d5\u05dc\u05d5\u05ea", +"Lower Roman": "\u05e1\u05e4\u05e8\u05d5\u05ea \u05e8\u05d5\u05de\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea", +"Name": "\u05e9\u05dd", +"Anchor": "\u05de\u05e7\u05d5\u05dd \u05e2\u05d9\u05d2\u05d5\u05df", +"You have unsaved changes are you sure you want to navigate away?": "\u05d4\u05e9\u05d9\u05e0\u05d5\u05d9\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e9\u05de\u05e8\u05d5. \u05d1\u05d8\u05d5\u05d7 \u05e9\u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05e6\u05d0\u05ea \u05de\u05d4\u05d3\u05e3?", +"Restore last draft": "\u05e9\u05d7\u05d6\u05e8 \u05d8\u05d9\u05d5\u05d8\u05d4 \u05d0\u05d7\u05e8\u05d5\u05e0\u05d4", +"Special character": "\u05ea\u05d5\u05d5\u05d9\u05dd \u05de\u05d9\u05d5\u05d7\u05d3\u05d9\u05dd", +"Source code": "\u05e7\u05d5\u05d3 \u05de\u05e7\u05d5\u05e8", +"B": "\u05db'", +"R": "\u05d0'", +"G": "\u05d9'", +"Color": "\u05e6\u05d1\u05e2", +"Right to left": "\u05de\u05d9\u05de\u05d9\u05df \u05dc\u05e9\u05de\u05d0\u05dc", +"Left to right": "\u05de\u05e9\u05de\u05d0\u05dc \u05dc\u05d9\u05de\u05d9\u05df", +"Emoticons": "\u05de\u05d7\u05d5\u05d5\u05ea", +"Robots": "\u05e8\u05d5\u05d1\u05d5\u05d8\u05d9\u05dd", +"Document properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05de\u05e1\u05de\u05da", +"Title": "\u05db\u05d5\u05ea\u05e8\u05ea", +"Keywords": "\u05de\u05d9\u05dc\u05d5\u05ea \u05de\u05e4\u05ea\u05d7", +"Encoding": "\u05e7\u05d9\u05d3\u05d5\u05d3", +"Description": "\u05ea\u05d9\u05d0\u05d5\u05e8", +"Author": "\u05de\u05d7\u05d1\u05e8", +"Fullscreen": "\u05de\u05e1\u05da \u05de\u05dc\u05d0", +"Horizontal line": "\u05e7\u05d5 \u05d0\u05d5\u05e4\u05e7\u05d9", +"Horizontal space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05d5\u05e4\u05e7\u05d9", +"Insert\/edit image": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d4", +"General": "\u05db\u05dc\u05dc\u05d9", +"Advanced": "\u05de\u05ea\u05e7\u05d3\u05dd", +"Source": "\u05de\u05e7\u05d5\u05e8", +"Border": "\u05de\u05e1\u05d2\u05e8\u05ea", +"Constrain proportions": "\u05d4\u05d2\u05d1\u05dc\u05ea \u05e4\u05e8\u05d5\u05e4\u05d5\u05e8\u05e6\u05d9\u05d5\u05ea", +"Vertical space": "\u05de\u05e8\u05d5\u05d5\u05d7 \u05d0\u05e0\u05db\u05d9", +"Image description": "\u05ea\u05d9\u05d0\u05d5\u05e8 \u05d4\u05ea\u05de\u05d5\u05e0\u05d4", +"Style": "\u05e1\u05d2\u05e0\u05d5\u05df", +"Dimensions": "\u05de\u05d9\u05de\u05d3\u05d9\u05dd", +"Insert image": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05de\u05d5\u05e0\u05d4", +"Zoom in": "\u05d4\u05d2\u05d3\u05dc \u05ea\u05e6\u05d5\u05d2\u05d4", +"Contrast": "\u05e0\u05d9\u05d2\u05d5\u05d3\u05d9\u05d5\u05ea", +"Back": "\u05d7\u05d6\u05d5\u05e8", +"Gamma": "\u05d2\u05d0\u05de\u05d4", +"Flip horizontally": "\u05d4\u05e4\u05d5\u05da \u05d0\u05d5\u05e4\u05e7\u05d9\u05ea", +"Resize": "\u05e9\u05e0\u05d4 \u05d2\u05d5\u05d3\u05dc", +"Sharpen": "\u05d7\u05d3\u05d3", +"Zoom out": "\u05d4\u05e7\u05d8\u05df \u05ea\u05e6\u05d5\u05d2\u05d4", +"Image options": "\u05d0\u05e4\u05e9\u05e8\u05d5\u05d9\u05d5\u05ea \u05ea\u05de\u05d5\u05e0\u05d4", +"Apply": "\u05d9\u05d9\u05e9\u05dd", +"Brightness": "\u05d1\u05d4\u05d9\u05e8\u05d5\u05ea", +"Rotate clockwise": "\u05e1\u05d5\u05d1\u05d1 \u05d1\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e9\u05e2\u05d5\u05df", +"Rotate counterclockwise": "\u05e1\u05d5\u05d1\u05d1 \u05d1\u05db\u05d9\u05d5\u05d5\u05df \u05d4\u05e4\u05d5\u05da \u05dc\u05e9\u05e2\u05d5\u05df", +"Edit image": "\u05e2\u05e8\u05d5\u05da \u05ea\u05de\u05d5\u05e0\u05d4", +"Color levels": "\u05e8\u05de\u05d5\u05ea \u05e6\u05d1\u05e2\u05d9\u05dd", +"Crop": "\u05e7\u05e6\u05e5", +"Orientation": "\u05db\u05d9\u05d5\u05d5\u05df \u05dc\u05d0\u05d5\u05e8\u05da \/ \u05dc\u05e8\u05d5\u05d7\u05d1", +"Flip vertically": "\u05d4\u05e4\u05d5\u05da \u05d0\u05e0\u05db\u05d9\u05ea", +"Invert": "\u05d4\u05d9\u05e4\u05d5\u05da \u05e6\u05d1\u05e2\u05d9\u05dd", +"Insert date\/time": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d0\u05e8\u05d9\u05da\/\u05e9\u05e2\u05d4", +"Remove link": "\u05de\u05d7\u05e7 \u05e7\u05d9\u05e9\u05d5\u05e8", +"Url": "\u05db\u05ea\u05d5\u05d1\u05ea \u05e7\u05d9\u05e9\u05d5\u05e8", +"Text to display": "\u05d8\u05e7\u05e1\u05d8 \u05dc\u05d4\u05e6\u05d2\u05d4", +"Anchors": "\u05e2\u05d5\u05d2\u05e0\u05d9\u05dd", +"Insert link": "\u05d4\u05db\u05e0\u05e1 \u05e7\u05d9\u05e9\u05d5\u05e8", +"New window": "\u05d7\u05dc\u05d5\u05df \u05d7\u05d3\u05e9", +"None": "\u05dc\u05dc\u05d0", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05db\u05ea\u05d5\u05d1\u05ea \u05e9\u05d4\u05db\u05e0\u05e1\u05ea \u05d4\u05d9\u05d0 \u05e7\u05d9\u05e9\u05d5\u05e8 \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9 \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05e7\u05d9\u05d3\u05d5\u05de\u05ea http:\/\/?", +"Target": "\u05de\u05d8\u05e8\u05d4", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u05e0\u05e8\u05d0\u05d4 \u05e9\u05d4\u05db\u05ea\u05d5\u05d1\u05ea \u05e9\u05d4\u05db\u05e0\u05e1\u05ea \u05d4\u05d9\u05d0 \u05db\u05ea\u05d5\u05d1\u05ea \u05d0\u05d9\u05de\u05d9\u05d9\u05dc. \u05d4\u05d0\u05dd \u05d1\u05e8\u05e6\u05d5\u05e0\u05da \u05dc\u05d4\u05d5\u05e1\u05d9\u05e3 \u05d0\u05ea \u05d4\u05e7\u05d9\u05d3\u05d5\u05de\u05ea :mailto?", +"Insert\/edit link": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e7\u05d9\u05e9\u05d5\u05e8", +"Insert\/edit video": "\u05d4\u05db\u05e0\u05e1\/\u05e2\u05e8\u05d5\u05da \u05e1\u05e8\u05d8\u05d5\u05df", +"Poster": "\u05e4\u05d5\u05e1\u05d8\u05e8", +"Alternative source": "\u05de\u05e7\u05d5\u05e8 \u05de\u05e9\u05e0\u05d9", +"Paste your embed code below:": "\u05d4\u05d3\u05d1\u05e7 \u05e7\u05d5\u05d3 \u05d4\u05d8\u05de\u05e2\u05d4 \u05de\u05ea\u05d7\u05ea:", +"Insert video": "\u05d4\u05db\u05e0\u05e1 \u05e1\u05e8\u05d8\u05d5\u05df", +"Embed": "\u05d4\u05d8\u05de\u05e2", +"Nonbreaking space": "\u05e8\u05d5\u05d5\u05d7 (\u05dc\u05dc\u05d0 \u05e9\u05d1\u05d9\u05e8\u05ea \u05e9\u05d5\u05e8\u05d4)", +"Page break": "\u05d3\u05e3 \u05d7\u05d3\u05e9", +"Paste as text": "\u05d4\u05d3\u05d1\u05e7 \u05db\u05d8\u05e7\u05e1\u05d8", +"Preview": "\u05ea\u05e6\u05d5\u05d2\u05d4 \u05de\u05e7\u05d3\u05d9\u05de\u05d4", +"Print": "\u05d4\u05d3\u05e4\u05e1", +"Save": "\u05e9\u05de\u05d9\u05e8\u05d4", +"Could not find the specified string.": "\u05de\u05d7\u05e8\u05d5\u05d6\u05ea \u05dc\u05d0 \u05e0\u05de\u05e6\u05d0\u05d4", +"Replace": "\u05d4\u05d7\u05dc\u05e3", +"Next": "\u05d4\u05d1\u05d0", +"Whole words": "\u05de\u05d9\u05dc\u05d4 \u05e9\u05dc\u05de\u05d4", +"Find and replace": "\u05d7\u05e4\u05e9 \u05d5\u05d4\u05d7\u05dc\u05e3", +"Replace with": "\u05d4\u05d7\u05dc\u05e3 \u05d1", +"Find": "\u05d7\u05e4\u05e9", +"Replace all": "\u05d4\u05d7\u05dc\u05e3 \u05d4\u05db\u05dc", +"Match case": "\u05d4\u05d1\u05d7\u05df \u05d1\u05d9\u05df \u05d0\u05d5\u05ea\u05d9\u05d5\u05ea \u05e7\u05d8\u05e0\u05d5\u05ea \u05dc\u05d2\u05d3\u05d5\u05dc\u05d5\u05ea", +"Prev": "\u05e7\u05d5\u05d3\u05dd", +"Spellcheck": "\u05d1\u05d5\u05d3\u05e7 \u05d0\u05d9\u05d5\u05ea", +"Finish": "\u05e1\u05d9\u05d9\u05dd", +"Ignore all": "\u05d4\u05ea\u05e2\u05dc\u05dd \u05de\u05d4\u05db\u05dc", +"Ignore": "\u05d4\u05ea\u05e2\u05dc\u05dd", +"Add to Dictionary": "\u05d4\u05d5\u05e1\u05e3 \u05dc\u05de\u05d9\u05dc\u05d5\u05df", +"Insert row before": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9", +"Rows": "\u05e9\u05d5\u05e8\u05d5\u05ea", +"Height": "\u05d2\u05d5\u05d1\u05d4", +"Paste row after": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9", +"Alignment": "\u05d9\u05d9\u05e9\u05d5\u05e8", +"Border color": "\u05e6\u05d1\u05e2 \u05d2\u05d1\u05d5\u05dc", +"Column group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e2\u05de\u05d5\u05d3\u05d5\u05ea", +"Row": "\u05e9\u05d5\u05e8\u05d4", +"Insert column before": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05dc\u05e4\u05e0\u05d9", +"Split cell": "\u05e4\u05e6\u05dc \u05ea\u05d0", +"Cell padding": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05e4\u05e0\u05d9\u05de\u05d9\u05d9\u05dd \u05dc\u05ea\u05d0", +"Cell spacing": "\u05e9\u05d5\u05dc\u05d9\u05d9\u05dd \u05d7\u05d9\u05e6\u05d5\u05e0\u05d9\u05dd \u05dc\u05ea\u05d0", +"Row type": "\u05e1\u05d5\u05d2 \u05e9\u05d5\u05e8\u05d4", +"Insert table": "\u05d4\u05db\u05e0\u05e1 \u05d8\u05d1\u05dc\u05d4", +"Body": "\u05d2\u05d5\u05e3 \u05d4\u05d8\u05d1\u05dc\u05d0", +"Caption": "\u05db\u05d9\u05ea\u05d5\u05d1", +"Footer": "\u05db\u05d5\u05ea\u05e8\u05ea \u05ea\u05d7\u05ea\u05d5\u05e0\u05d4", +"Delete row": "\u05de\u05d7\u05e7 \u05e9\u05d5\u05e8\u05d4", +"Paste row before": "\u05d4\u05d3\u05d1\u05e7 \u05e9\u05d5\u05e8\u05d4 \u05dc\u05e4\u05e0\u05d9", +"Scope": "\u05d4\u05d9\u05e7\u05e3", +"Delete table": "\u05de\u05d7\u05e7 \u05d8\u05d1\u05dc\u05d4", +"H Align": "\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d0\u05d5\u05e4\u05e7\u05d9", +"Top": "\u05e2\u05dc\u05d9\u05d5\u05df", +"Header cell": "\u05db\u05d5\u05ea\u05e8\u05ea \u05dc\u05ea\u05d0", +"Column": "\u05e2\u05de\u05d5\u05d3\u05d4", +"Row group": "\u05e7\u05d9\u05d1\u05d5\u05e5 \u05e9\u05d5\u05e8\u05d5\u05ea", +"Cell": "\u05ea\u05d0", +"Middle": "\u05d0\u05de\u05e6\u05e2", +"Cell type": "\u05e1\u05d5\u05d2 \u05ea\u05d0", +"Copy row": "\u05d4\u05e2\u05ea\u05e7 \u05e9\u05d5\u05e8\u05d4", +"Row properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05e9\u05d5\u05e8\u05d4", +"Table properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05d8\u05d1\u05dc\u05d4", +"Bottom": "\u05ea\u05d7\u05ea\u05d9\u05ea", +"V Align": "\u05d9\u05d9\u05e9\u05d5\u05e8 \u05d0\u05e0\u05db\u05d9", +"Header": "\u05db\u05d5\u05ea\u05e8\u05ea", +"Right": "\u05d9\u05de\u05d9\u05df", +"Insert column after": "\u05d4\u05e2\u05ea\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4 \u05d0\u05d7\u05e8\u05d9", +"Cols": "\u05e2\u05de\u05d5\u05d3\u05d5\u05ea", +"Insert row after": "\u05d4\u05d5\u05e1\u05e3 \u05e9\u05d5\u05e8\u05d4 \u05d0\u05d7\u05e8\u05d9", +"Width": "\u05e8\u05d5\u05d7\u05d1", +"Cell properties": "\u05de\u05d0\u05e4\u05d9\u05d9\u05e0\u05d9 \u05ea\u05d0", +"Left": "\u05e9\u05de\u05d0\u05dc", +"Cut row": "\u05d2\u05d6\u05d5\u05e8 \u05e9\u05d5\u05e8\u05d4", +"Delete column": "\u05de\u05d7\u05e7 \u05e2\u05de\u05d5\u05d3\u05d4", +"Center": "\u05de\u05e8\u05db\u05d6", +"Merge cells": "\u05de\u05d6\u05d2 \u05ea\u05d0\u05d9\u05dd", +"Insert template": "\u05d4\u05db\u05e0\u05e1 \u05ea\u05d1\u05e0\u05d9\u05ea", +"Templates": "\u05ea\u05d1\u05e0\u05d9\u05d5\u05ea", +"Background color": "\u05e6\u05d1\u05e2 \u05e8\u05e7\u05e2", +"Custom...": "\u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea...", +"Custom color": "\u05e6\u05d1\u05e2 \u05de\u05d5\u05ea\u05d0\u05dd \u05d0\u05d9\u05e9\u05d9\u05ea", +"No color": "\u05dc\u05dc\u05d0 \u05e6\u05d1\u05e2", +"Text color": "\u05e6\u05d1\u05e2 \u05d4\u05db\u05ea\u05d1", +"Show blocks": "\u05d4\u05e6\u05d2 \u05ea\u05d9\u05d1\u05d5\u05ea", +"Show invisible characters": "\u05d4\u05e6\u05d2 \u05ea\u05d5\u05d5\u05d9\u05dd \u05dc\u05d0 \u05e0\u05e8\u05d0\u05d9\u05dd", +"Words: {0}": "\u05de\u05d9\u05dc\u05d9\u05dd: {0}", +"Insert": "\u05d4\u05d5\u05e1\u05e4\u05d4", +"File": "\u05e7\u05d5\u05d1\u05e5", +"Edit": "\u05e2\u05e8\u05d9\u05db\u05d4", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u05ea\u05d9\u05d1\u05ea \u05e2\u05e8\u05d9\u05db\u05d4 \u05d7\u05db\u05de\u05d4. \u05dc\u05d7\u05e5 Alt-F9 \u05dc\u05ea\u05e4\u05e8\u05d9\u05d8. Alt-F10 \u05dc\u05ea\u05e6\u05d5\u05d2\u05ea \u05db\u05e4\u05ea\u05d5\u05e8\u05d9\u05dd, Alt-0 \u05dc\u05e2\u05d6\u05e8\u05d4", +"Tools": "\u05db\u05dc\u05d9\u05dd", +"View": "\u05ea\u05e6\u05d5\u05d2\u05d4", +"Table": "\u05d8\u05d1\u05dc\u05d4", +"Format": "\u05e4\u05d5\u05e8\u05de\u05d8", +"_dir": "rtl" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/it.js b/assets/plugins/tinymce4/tinymce/langs/it.js new file mode 100755 index 0000000000..d97803d2b3 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/it.js @@ -0,0 +1,219 @@ +tinymce.addI18n('it',{ +"Cut": "Taglia", +"Heading 5": "Intestazione 5", +"Header 2": "Header 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Il tuo browser non supporta l'accesso diretto negli Appunti. Per favore usa i tasti di scelta rapida Ctrl+X\/C\/V.", +"Heading 4": "Intestazione 4", +"Div": "Div", +"Heading 2": "Intestazione 2", +"Paste": "Incolla", +"Close": "Chiudi", +"Font Family": "Famiglia font", +"Pre": "Pre", +"Align right": "Allinea a Destra", +"New document": "Nuovo Documento", +"Blockquote": "Blockquote", +"Numbered list": "Elenchi Numerati", +"Heading 1": "Intestazione 1", +"Headings": "Intestazioni", +"Increase indent": "Aumenta Rientro", +"Formats": "Formattazioni", +"Headers": "Intestazioni", +"Select all": "Seleziona Tutto", +"Header 3": "Intestazione 3", +"Blocks": "Blocchi", +"Undo": "Indietro", +"Strikethrough": "Barrato", +"Bullet list": "Elenchi Puntati", +"Header 1": "Intestazione 1", +"Superscript": "Apice", +"Clear formatting": "Cancella Formattazione", +"Font Sizes": "Dimensioni font", +"Subscript": "Pedice", +"Header 6": "Intestazione 6", +"Redo": "Ripeti", +"Paragraph": "Paragrafo", +"Ok": "Ok", +"Bold": "Grassetto", +"Code": "Codice", +"Italic": "Corsivo", +"Align center": "Allinea al Cento", +"Header 5": "Intestazione 5", +"Heading 6": "Intestazione 6", +"Heading 3": "Intestazione 3", +"Decrease indent": "Riduci Rientro", +"Header 4": "Intestazione 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Incolla \u00e8 in modalit\u00e0 testo normale. I contenuti sono incollati come testo normale se non disattivi l'opzione.", +"Underline": "Sottolineato", +"Cancel": "Annulla", +"Justify": "Giustifica", +"Inline": "Inlinea", +"Copy": "Copia", +"Align left": "Allinea a Sinistra", +"Visual aids": "Elementi Visivi", +"Lower Greek": "Greek Minore", +"Square": "Quadrato", +"Default": "Default", +"Lower Alpha": "Alpha Minore", +"Circle": "Cerchio", +"Disc": "Disco", +"Upper Alpha": "Alpha Superiore", +"Upper Roman": "Roman Superiore", +"Lower Roman": "Roman Minore", +"Name": "Nome", +"Anchor": "Fissa", +"You have unsaved changes are you sure you want to navigate away?": "Non hai salvato delle modifiche, sei sicuro di andartene?", +"Restore last draft": "Ripristina l'ultima bozza.", +"Special character": "Carattere Speciale", +"Source code": "Codice Sorgente", +"B": "B", +"R": "R", +"G": "G", +"Color": "Colore", +"Right to left": "Da Destra a Sinistra", +"Left to right": "Da Sinistra a Destra", +"Emoticons": "Emoction", +"Robots": "Robot", +"Document properties": "Propriet\u00e0 Documento", +"Title": "Titolo", +"Keywords": "Parola Chiave", +"Encoding": "Codifica", +"Description": "Descrizione", +"Author": "Autore", +"Fullscreen": "Schermo Intero", +"Horizontal line": "Linea Orizzontale", +"Horizontal space": "Spazio Orizzontale", +"Insert\/edit image": "Aggiungi\/Modifica Immagine", +"General": "Generale", +"Advanced": "Avanzato", +"Source": "Fonte", +"Border": "Bordo", +"Constrain proportions": "Mantieni Proporzioni", +"Vertical space": "Spazio Verticale", +"Image description": "Descrizione Immagine", +"Style": "Stile", +"Dimensions": "Dimenzioni", +"Insert image": "Inserisci immagine", +"Zoom in": "Ingrandisci", +"Contrast": "Contrasto", +"Back": "Indietro", +"Gamma": "Gamma", +"Flip horizontally": "Rifletti orizzontalmente", +"Resize": "Ridimensiona", +"Sharpen": "Contrasta", +"Zoom out": "Rimpicciolisci", +"Image options": "Opzioni immagine", +"Apply": "Applica", +"Brightness": "Luminosit\u00e0", +"Rotate clockwise": "Ruota in senso orario", +"Rotate counterclockwise": "Ruota in senso antiorario", +"Edit image": "Modifica immagine", +"Color levels": "Livelli colore", +"Crop": "Taglia", +"Orientation": "Orientamento", +"Flip vertically": "Rifletti verticalmente", +"Invert": "Inverti", +"Insert date\/time": "Inserisci Data\/Ora", +"Remove link": "Rimuovi link", +"Url": "Url", +"Text to display": "Testo da Visualizzare", +"Anchors": "Anchors", +"Insert link": "Inserisci il Link", +"New window": "Nuova Finestra", +"None": "No", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL inserito sembra essere un collegamento esterno. Vuoi aggiungere il prefisso necessario http:\/\/?", +"Target": "Target", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL inserito sembra essere un indirizzo email. Vuoi aggiungere il prefisso necessario mailto:?", +"Insert\/edit link": "Inserisci\/Modifica Link", +"Insert\/edit video": "Inserisci\/Modifica Video", +"Poster": "Anteprima", +"Alternative source": "Alternativo", +"Paste your embed code below:": "Incolla il codice d'incorporamento qui:", +"Insert video": "Inserisci Video", +"Embed": "Incorporare", +"Nonbreaking space": "Spazio unificatore", +"Page break": "Interruzione di pagina", +"Paste as text": "incolla come testo", +"Preview": "Anteprima", +"Print": "Stampa", +"Save": "Salva", +"Could not find the specified string.": "Impossibile trovare la parola specifica.", +"Replace": "Sostituisci", +"Next": "Successivo", +"Whole words": "Parole Sbagliate", +"Find and replace": "Trova e Sostituisci", +"Replace with": "Sostituisci Con", +"Find": "Trova", +"Replace all": "Sostituisci Tutto", +"Match case": "Maiuscole\/Minuscole ", +"Prev": "Precedente", +"Spellcheck": "Controllo ortografico", +"Finish": "Termina", +"Ignore all": "Ignora Tutto", +"Ignore": "Ignora", +"Add to Dictionary": "Aggiungi al Dizionario", +"Insert row before": "Inserisci una Riga Prima", +"Rows": "Righe", +"Height": "Altezza", +"Paste row after": "Incolla una Riga Dopo", +"Alignment": "Allineamento", +"Border color": "Colore bordo", +"Column group": "Gruppo di Colonne", +"Row": "Riga", +"Insert column before": "Inserisci una Colonna Prima", +"Split cell": "Dividi Cella", +"Cell padding": "Padding della Cella", +"Cell spacing": "Spaziatura della Cella", +"Row type": "Tipo di Riga", +"Insert table": "Inserisci Tabella", +"Body": "Body", +"Caption": "Didascalia", +"Footer": "Footer", +"Delete row": "Cancella Riga", +"Paste row before": "Incolla una Riga Prima", +"Scope": "Campo", +"Delete table": "Cancella Tabella", +"H Align": "Allineamento H", +"Top": "In alto", +"Header cell": "cella d'intestazione", +"Column": "Colonna", +"Row group": "Gruppo di Righe", +"Cell": "Cella", +"Middle": "In mezzo", +"Cell type": "Tipo di Cella", +"Copy row": "Copia Riga", +"Row properties": "Propriet\u00e0 della Riga", +"Table properties": "Propiet\u00e0 della Tabella", +"Bottom": "In fondo", +"V Align": "Allineamento V", +"Header": "Header", +"Right": "Destra", +"Insert column after": "Inserisci una Colonna Dopo", +"Cols": "Colonne", +"Insert row after": "Inserisci una Riga Dopo", +"Width": "Larghezza", +"Cell properties": "Propiet\u00e0 della Cella", +"Left": "Sinistra", +"Cut row": "Taglia Riga", +"Delete column": "Cancella Colonna", +"Center": "Centro", +"Merge cells": "Unisci Cella", +"Insert template": "Inserisci Template", +"Templates": "Template", +"Background color": "Colore Background", +"Custom...": "Personalizzato...", +"Custom color": "Colore personalizzato", +"No color": "Nessun colore", +"Text color": "Colore Testo", +"Show blocks": "Mostra Blocchi", +"Show invisible characters": "Mostra Caratteri Invisibili", +"Words: {0}": "Parole: {0}", +"Insert": "Inserisci", +"File": "File", +"Edit": "Modifica", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Premi ALT-F9 per il men\u00f9. Premi ALT-F10 per la barra degli strumenti. Premi ALT-0 per l'aiuto.", +"Tools": "Strumenti", +"View": "Visualiza", +"Table": "Tabella", +"Format": "Formato" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/ja.js b/assets/plugins/tinymce4/tinymce/langs/ja.js new file mode 100755 index 0000000000..848cbd36b9 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/ja.js @@ -0,0 +1,219 @@ +tinymce.addI18n('ja',{ +"Cut": "\u5207\u308a\u53d6\u308a", +"Heading 5": "\u898b\u51fa\u3057 5", +"Header 2": "\u30d8\u30c3\u30c0\u30fc 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u304a\u4f7f\u3044\u306e\u30d6\u30e9\u30a6\u30b6\u3067\u306f\u30af\u30ea\u30c3\u30d7\u30dc\u30fc\u30c9\u6a5f\u80fd\u3092\u5229\u7528\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u305b\u3093\u3002\u30ad\u30fc\u30dc\u30fc\u30c9\u306e\u30b7\u30e7\u30fc\u30c8\u30ab\u30c3\u30c8\uff08Ctrl+X, Ctrl+C, Ctrl+V\uff09\u3092\u304a\u4f7f\u3044\u4e0b\u3055\u3044\u3002", +"Heading 4": "\u898b\u51fa\u3057 4", +"Div": "Div", +"Heading 2": "\u898b\u51fa\u3057 2", +"Paste": "\u8cbc\u308a\u4ed8\u3051", +"Close": "\u9589\u3058\u308b", +"Font Family": "\u30d5\u30a9\u30f3\u30c8\u30d5\u30a1\u30df\u30ea\u30fc", +"Pre": "Pre", +"Align right": "\u53f3\u5bc4\u305b", +"New document": "\u65b0\u898f\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8", +"Blockquote": "\u5f15\u7528", +"Numbered list": "\u756a\u53f7\u4ed8\u304d\u7b87\u6761\u66f8\u304d", +"Heading 1": "\u898b\u51fa\u3057 1", +"Headings": "\u898b\u51fa\u3057", +"Increase indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u5897\u3084\u3059", +"Formats": "\u66f8\u5f0f", +"Headers": "\u30d8\u30c3\u30c0\u30fc", +"Select all": "\u5168\u3066\u3092\u9078\u629e", +"Header 3": "\u30d8\u30c3\u30c0\u30fc 3", +"Blocks": "\u30d6\u30ed\u30c3\u30af", +"Undo": "\u5143\u306b\u623b\u3059", +"Strikethrough": "\u53d6\u308a\u6d88\u3057\u7dda", +"Bullet list": "\u7b87\u6761\u66f8\u304d", +"Header 1": "\u30d8\u30c3\u30c0\u30fc 1", +"Superscript": "\u4e0a\u4ed8\u304d\u6587\u5b57", +"Clear formatting": "\u66f8\u5f0f\u3092\u30af\u30ea\u30a2", +"Font Sizes": "\u30d5\u30a9\u30f3\u30c8\u30b5\u30a4\u30ba", +"Subscript": "\u4e0b\u4ed8\u304d\u6587\u5b57", +"Header 6": "\u30d8\u30c3\u30c0\u30fc 6", +"Redo": "\u3084\u308a\u76f4\u3059", +"Paragraph": "\u6bb5\u843d", +"Ok": "OK", +"Bold": "\u592a\u5b57", +"Code": "\u30b3\u30fc\u30c9", +"Italic": "\u659c\u4f53", +"Align center": "\u4e2d\u592e\u63c3\u3048", +"Header 5": "\u30d8\u30c3\u30c0\u30fc 5", +"Heading 6": "\u898b\u51fa\u3057 6", +"Heading 3": "\u898b\u51fa\u3057 3", +"Decrease indent": "\u30a4\u30f3\u30c7\u30f3\u30c8\u3092\u6e1b\u3089\u3059", +"Header 4": "\u30d8\u30c3\u30c0\u30fc 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u8cbc\u308a\u4ed8\u3051\u306f\u73fe\u5728\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u30e2\u30fc\u30c9\u3067\u3059\u3002\u3053\u306e\u30aa\u30d7\u30b7\u30e7\u30f3\u3092\u30aa\u30d5\u306b\u3057\u306a\u3044\u9650\u308a\u5185\u5bb9\u306f\u30d7\u30ec\u30fc\u30f3\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051\u3089\u308c\u307e\u3059\u3002", +"Underline": "\u4e0b\u7dda", +"Cancel": "\u30ad\u30e3\u30f3\u30bb\u30eb", +"Justify": "\u4e21\u7aef\u63c3\u3048", +"Inline": "\u30a4\u30f3\u30e9\u30a4\u30f3", +"Copy": "\u30b3\u30d4\u30fc", +"Align left": "\u5de6\u5bc4\u305b", +"Visual aids": "\u8868\u306e\u67a0\u7dda\u3092\u70b9\u7dda\u3067\u8868\u793a", +"Lower Greek": "\u5c0f\u6587\u5b57\u306e\u30ae\u30ea\u30b7\u30e3\u6587\u5b57", +"Square": "\u56db\u89d2", +"Default": "\u30c7\u30d5\u30a9\u30eb\u30c8", +"Lower Alpha": "\u5c0f\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8", +"Circle": "\u5186", +"Disc": "\u70b9", +"Upper Alpha": "\u5927\u6587\u5b57\u306e\u30a2\u30eb\u30d5\u30a1\u30d9\u30c3\u30c8", +"Upper Roman": "\u5927\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57", +"Lower Roman": "\u5c0f\u6587\u5b57\u306e\u30ed\u30fc\u30de\u6570\u5b57", +"Name": "\u30a2\u30f3\u30ab\u30fc\u540d", +"Anchor": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09", +"You have unsaved changes are you sure you want to navigate away?": "\u307e\u3060\u4fdd\u5b58\u3057\u3066\u3044\u306a\u3044\u5909\u66f4\u304c\u3042\u308a\u307e\u3059\u304c\u3001\u672c\u5f53\u306b\u3053\u306e\u30da\u30fc\u30b8\u3092\u96e2\u308c\u307e\u3059\u304b\uff1f", +"Restore last draft": "\u524d\u56de\u306e\u4e0b\u66f8\u304d\u3092\u5fa9\u6d3b\u3055\u305b\u308b", +"Special character": "\u7279\u6b8a\u6587\u5b57", +"Source code": "\u30bd\u30fc\u30b9\u30b3\u30fc\u30c9", +"B": "B", +"R": "R", +"G": "G", +"Color": "\u30ab\u30e9\u30fc", +"Right to left": "\u53f3\u304b\u3089\u5de6", +"Left to right": "\u5de6\u304b\u3089\u53f3", +"Emoticons": "\u7d75\u6587\u5b57", +"Robots": "\u30ed\u30dc\u30c3\u30c4", +"Document properties": "\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306e\u30d7\u30ed\u30d1\u30c6\u30a3", +"Title": "\u30bf\u30a4\u30c8\u30eb", +"Keywords": "\u30ad\u30fc\u30ef\u30fc\u30c9", +"Encoding": "\u30a8\u30f3\u30b3\u30fc\u30c7\u30a3\u30f3\u30b0", +"Description": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u5185\u5bb9", +"Author": "\u8457\u8005", +"Fullscreen": "\u5168\u753b\u9762\u8868\u793a", +"Horizontal line": "\u6c34\u5e73\u7f6b\u7dda", +"Horizontal space": "\u6a2a\u65b9\u5411\u306e\u4f59\u767d", +"Insert\/edit image": "\u753b\u50cf\u306e\u633f\u5165\u30fb\u7de8\u96c6", +"General": "\u4e00\u822c", +"Advanced": "\u8a73\u7d30\u8a2d\u5b9a", +"Source": "\u753b\u50cf\u306e\u30bd\u30fc\u30b9", +"Border": "\u67a0\u7dda", +"Constrain proportions": "\u7e26\u6a2a\u6bd4\u3092\u4fdd\u6301\u3059\u308b", +"Vertical space": "\u7e26\u65b9\u5411\u306e\u4f59\u767d", +"Image description": "\u753b\u50cf\u306e\u8aac\u660e\u6587", +"Style": "\u30b9\u30bf\u30a4\u30eb", +"Dimensions": "\u753b\u50cf\u30b5\u30a4\u30ba\uff08\u6a2a\u30fb\u7e26\uff09", +"Insert image": "\u753b\u50cf\u306e\u633f\u5165", +"Zoom in": "\u30ba\u30fc\u30e0\u30a4\u30f3", +"Contrast": "\u30b3\u30f3\u30c8\u30e9\u30b9\u30c8", +"Back": "\u623b\u308b", +"Gamma": "\u30ac\u30f3\u30de", +"Flip horizontally": "\u6c34\u5e73\u306b\u53cd\u8ee2", +"Resize": "\u30ea\u30b5\u30a4\u30ba", +"Sharpen": "\u30b7\u30e3\u30fc\u30d7\u5316", +"Zoom out": "\u30ba\u30fc\u30e0\u30a2\u30a6\u30c8", +"Image options": "\u753b\u50cf\u30aa\u30d7\u30b7\u30e7\u30f3", +"Apply": "\u9069\u7528", +"Brightness": "\u660e\u308b\u3055", +"Rotate clockwise": "\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2", +"Rotate counterclockwise": "\u53cd\u6642\u8a08\u56de\u308a\u306b\u56de\u8ee2", +"Edit image": "\u753b\u50cf\u306e\u7de8\u96c6", +"Color levels": "\u30ab\u30e9\u30fc\u30ec\u30d9\u30eb", +"Crop": "\u30af\u30ed\u30c3\u30d7", +"Orientation": "\u5411\u304d", +"Flip vertically": "\u4e0a\u4e0b\u306b\u53cd\u8ee2", +"Invert": "\u53cd\u8ee2", +"Insert date\/time": "\u65e5\u4ed8\u30fb\u6642\u523b", +"Remove link": "\u30ea\u30f3\u30af\u306e\u524a\u9664", +"Url": "\u30ea\u30f3\u30af\u5148URL", +"Text to display": "\u30ea\u30f3\u30af\u5143\u30c6\u30ad\u30b9\u30c8", +"Anchors": "\u30a2\u30f3\u30ab\u30fc\uff08\u30ea\u30f3\u30af\u306e\u5230\u9054\u70b9\uff09", +"Insert link": "\u30ea\u30f3\u30af", +"New window": "\u65b0\u898f\u30a6\u30a3\u30f3\u30c9\u30a6", +"None": "\u306a\u3057", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u5916\u90e8\u30ea\u30f3\u30af\u306e\u3088\u3046\u3067\u3059\u3002\u300chttp:\/\/\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f", +"Target": "\u30bf\u30fc\u30b2\u30c3\u30c8\u5c5e\u6027", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u5165\u529b\u3055\u308c\u305fURL\u306f\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u306e\u3088\u3046\u3067\u3059\u3002\u300cmailto:\u300d\u30d7\u30ec\u30d5\u30a3\u30c3\u30af\u30b9\u3092\u8ffd\u52a0\u3057\u307e\u3059\u304b\uff1f", +"Insert\/edit link": "\u30ea\u30f3\u30af\u306e\u633f\u5165\u30fb\u7de8\u96c6", +"Insert\/edit video": "\u52d5\u753b\u306e\u633f\u5165\u30fb\u7de8\u96c6", +"Poster": "\u4ee3\u66ff\u753b\u50cf\u306e\u5834\u6240", +"Alternative source": "\u4ee3\u66ff\u52d5\u753b\u306e\u5834\u6240", +"Paste your embed code below:": "\u57cb\u3081\u8fbc\u307f\u7528\u30b3\u30fc\u30c9\u3092\u4e0b\u8a18\u306b\u8cbc\u308a\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002", +"Insert video": "\u52d5\u753b", +"Embed": "\u57cb\u3081\u8fbc\u307f", +"Nonbreaking space": "\u56fa\u5b9a\u30b9\u30da\u30fc\u30b9\uff08 \uff09", +"Page break": "\u30da\u30fc\u30b8\u533a\u5207\u308a", +"Paste as text": "\u30c6\u30ad\u30b9\u30c8\u3068\u3057\u3066\u8cbc\u308a\u4ed8\u3051", +"Preview": "\u30d7\u30ec\u30d3\u30e5\u30fc", +"Print": "\u5370\u5237", +"Save": "\u4fdd\u5b58", +"Could not find the specified string.": "\u304a\u63a2\u3057\u306e\u6587\u5b57\u304c\u898b\u3064\u304b\u308a\u307e\u305b\u3093\u3067\u3057\u305f\u3002", +"Replace": "\u7f6e\u304d\u63db\u3048", +"Next": "\u6b21", +"Whole words": "\u5358\u8a9e\u5358\u4f4d\u3067\u691c\u7d22\u3059\u308b", +"Find and replace": "\u691c\u7d22\u3068\u7f6e\u304d\u63db\u3048", +"Replace with": "\u7f6e\u304d\u63db\u3048\u308b\u6587\u5b57", +"Find": "\u691c\u7d22", +"Replace all": "\u5168\u3066\u3092\u7f6e\u304d\u63db\u3048\u308b", +"Match case": "\u5927\u6587\u5b57\u30fb\u5c0f\u6587\u5b57\u3092\u533a\u5225\u3059\u308b", +"Prev": "\u524d", +"Spellcheck": "\u30b9\u30da\u30eb\u30c1\u30a7\u30c3\u30af", +"Finish": "\u7d42\u4e86", +"Ignore all": "\u5168\u3066\u3092\u7121\u8996", +"Ignore": "\u7121\u8996", +"Add to Dictionary": "\u8f9e\u66f8\u306b\u8ffd\u52a0", +"Insert row before": "\u4e0a\u5074\u306b\u884c\u3092\u633f\u5165", +"Rows": "\u884c\u6570", +"Height": "\u9ad8\u3055", +"Paste row after": "\u4e0b\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051", +"Alignment": "\u914d\u7f6e", +"Border color": "\u67a0\u7dda\u306e\u8272", +"Column group": "\u5217\u30b0\u30eb\u30fc\u30d7", +"Row": "\u884c", +"Insert column before": "\u5de6\u5074\u306b\u5217\u3092\u633f\u5165", +"Split cell": "\u30bb\u30eb\u306e\u5206\u5272", +"Cell padding": "\u30bb\u30eb\u5185\u4f59\u767d\uff08\u30d1\u30c7\u30a3\u30f3\u30b0\uff09", +"Cell spacing": "\u30bb\u30eb\u306e\u9593\u9694", +"Row type": "\u884c\u30bf\u30a4\u30d7", +"Insert table": "\u8868\u306e\u633f\u5165", +"Body": "\u30dc\u30c7\u30a3\u30fc", +"Caption": "\u8868\u984c", +"Footer": "\u30d5\u30c3\u30bf\u30fc", +"Delete row": "\u884c\u306e\u524a\u9664", +"Paste row before": "\u4e0a\u5074\u306b\u884c\u3092\u8cbc\u308a\u4ed8\u3051", +"Scope": "\u30b9\u30b3\u30fc\u30d7", +"Delete table": "\u8868\u306e\u524a\u9664", +"H Align": "\u6c34\u5e73\u65b9\u5411\u306e\u914d\u7f6e", +"Top": "\u4e0a", +"Header cell": "\u30d8\u30c3\u30c0\u30fc\u30bb\u30eb", +"Column": "\u5217", +"Row group": "\u884c\u30b0\u30eb\u30fc\u30d7", +"Cell": "\u30bb\u30eb", +"Middle": "\u4e2d\u592e", +"Cell type": "\u30bb\u30eb\u30bf\u30a4\u30d7", +"Copy row": "\u884c\u306e\u30b3\u30d4\u30fc", +"Row properties": "\u884c\u306e\u8a73\u7d30\u8a2d\u5b9a", +"Table properties": "\u8868\u306e\u8a73\u7d30\u8a2d\u5b9a", +"Bottom": "\u4e0b", +"V Align": "\u5782\u76f4\u65b9\u5411\u306e\u914d\u7f6e", +"Header": "\u30d8\u30c3\u30c0\u30fc", +"Right": "\u53f3\u5bc4\u305b", +"Insert column after": "\u53f3\u5074\u306b\u5217\u3092\u633f\u5165", +"Cols": "\u5217\u6570", +"Insert row after": "\u4e0b\u5074\u306b\u884c\u3092\u633f\u5165", +"Width": "\u5e45", +"Cell properties": "\u30bb\u30eb\u306e\u8a73\u7d30\u8a2d\u5b9a", +"Left": "\u5de6\u5bc4\u305b", +"Cut row": "\u884c\u306e\u5207\u308a\u53d6\u308a", +"Delete column": "\u5217\u306e\u524a\u9664", +"Center": "\u4e2d\u592e\u63c3\u3048", +"Merge cells": "\u30bb\u30eb\u306e\u7d50\u5408", +"Insert template": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u306e\u633f\u5165", +"Templates": "\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u540d", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u30ab\u30b9\u30bf\u30e0...", +"Custom color": "\u30ab\u30b9\u30bf\u30e0\u30ab\u30e9\u30fc", +"No color": "\u30ab\u30e9\u30fc\u306a\u3057", +"Text color": "\u30c6\u30ad\u30b9\u30c8\u306e\u8272", +"Show blocks": "\u6587\u7ae0\u306e\u533a\u5207\u308a\u3092\u70b9\u7dda\u3067\u8868\u793a", +"Show invisible characters": "\u4e0d\u53ef\u8996\u6587\u5b57\u3092\u8868\u793a", +"Words: {0}": "\u5358\u8a9e\u6570: {0}", +"Insert": "\u633f\u5165", +"File": "\u30d5\u30a1\u30a4\u30eb", +"Edit": "\u7de8\u96c6", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u66f8\u5f0f\u4ed8\u304d\u30c6\u30ad\u30b9\u30c8\u306e\u7de8\u96c6\u753b\u9762\u3002ALT-F9\u3067\u30e1\u30cb\u30e5\u30fc\u3001ALT-F10\u3067\u30c4\u30fc\u30eb\u30d0\u30fc\u3001ALT-0\u3067\u30d8\u30eb\u30d7\u304c\u8868\u793a\u3055\u308c\u307e\u3059\u3002", +"Tools": "\u30c4\u30fc\u30eb", +"View": "\u8868\u793a", +"Table": "\u8868", +"Format": "\u66f8\u5f0f" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/nb_NO.js b/assets/plugins/tinymce4/tinymce/langs/nb_NO.js new file mode 100755 index 0000000000..03df100409 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/nb_NO.js @@ -0,0 +1,219 @@ +tinymce.addI18n('nb_NO',{ +"Cut": "Klipp ut", +"Heading 5": "Overskrift 5", +"Header 2": "Overskrift 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Nettleseren din st\u00f8tter ikke direkte tilgang til utklippsboken. Bruk istedet tastatur-snarveiene Ctrl+X\/C\/V, eller Cmd+X\/C\/V p\u00e5 Mac.", +"Heading 4": "Overskrift 4", +"Div": "Delblokk
                      ", +"Heading 2": "Overskrift 2", +"Paste": "Lim inn", +"Close": "Lukk", +"Font Family": "Skriftsnitt", +"Pre": "Definert
                      ",
                      +"Align right": "H\u00f8yrejustert",
                      +"New document": "Nytt dokument",
                      +"Blockquote": "Sitatblokk 
                      ", +"Numbered list": "Nummerliste", +"Heading 1": "Overskrift 1", +"Headings": "Overskrifter", +"Increase indent": "\u00d8k innrykk", +"Formats": "Stiler", +"Headers": "Overskrifter", +"Select all": "Marker alt", +"Header 3": "Overskrift 3", +"Blocks": "Blokker", +"Undo": "Angre", +"Strikethrough": "Gjennomstreket", +"Bullet list": "Punktliste", +"Header 1": "Overskrift 1", +"Superscript": "Hevet skrift", +"Clear formatting": "Fjern formateringer", +"Font Sizes": "St\u00f8rrelse", +"Subscript": "Senket skrift", +"Header 6": "Overskrift 6", +"Redo": "Utf\u00f8r likevel", +"Paragraph": "Avsnitt

                      ", +"Ok": "OK", +"Bold": "Halvfet", +"Code": "Kode ", +"Italic": "Kursiv", +"Align center": "Midtstilt", +"Header 5": "Overskrift 5", +"Heading 6": "Overskrift 6", +"Heading 3": "Overskrift 3", +"Decrease indent": "Reduser innrykk", +"Header 4": "Overskrift 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Lim inn er n\u00e5 i ren-tekst modus. Kopiert innhold vil bli limt inn som ren tekst inntil du sl\u00e5r av dette valget.", +"Underline": "Understreket", +"Cancel": "Avbryt", +"Justify": "Juster alle linjer", +"Inline": "Innkapslet ", +"Copy": "Kopier", +"Align left": "Venstrejustert", +"Visual aids": "Visuelle hjelpemidler", +"Lower Greek": "Greske minuskler", +"Square": "Fylt firkant", +"Default": "Normal", +"Lower Alpha": "Minuskler", +"Circle": "\u00c5pen sirkel", +"Disc": "Fylt sirkel", +"Upper Alpha": "Versaler", +"Upper Roman": "Romerske versaler", +"Lower Roman": "Romerske minuskler", +"Name": "Navn", +"Anchor": "Anker", +"You have unsaved changes are you sure you want to navigate away?": "Du har ikke arkivert endringene. Vil du fortsette uten \u00e5 arkivere?", +"Restore last draft": "Gjenopprett siste utkast", +"Special character": "Spesialtegn", +"Source code": "Kildekode", +"B": "B", +"R": "R", +"G": "G", +"Color": "Farge", +"Right to left": "H\u00f8yre til venstre", +"Left to right": "Venstre til h\u00f8yre", +"Emoticons": "Hum\u00f8rfjes", +"Robots": "Roboter", +"Document properties": "Dokumentegenskaper", +"Title": "Tittel", +"Keywords": "N\u00f8kkelord", +"Encoding": "Tegnkoding", +"Description": "Beskrivelse", +"Author": "Forfatter", +"Fullscreen": "Fullskjerm", +"Horizontal line": "Horisontal linje", +"Horizontal space": "Horisontal marg", +"Insert\/edit image": "Sett inn\/endre bilde", +"General": "Generelt", +"Advanced": "Avansert", +"Source": "Bildelenke", +"Border": "Ramme", +"Constrain proportions": "Behold proporsjoner", +"Vertical space": "Vertikal marg", +"Image description": "Bildebeskrivelse", +"Style": "Stil", +"Dimensions": "Dimensjoner", +"Insert image": "Sett inn bilde", +"Zoom in": "Zoom inn", +"Contrast": "Kontrast", +"Back": "Tilbake", +"Gamma": "Gamma", +"Flip horizontally": "Speilvend horisontalt", +"Resize": "Skaler", +"Sharpen": "Skarphet", +"Zoom out": "Zoom ut", +"Image options": "Bilde innstillinger", +"Apply": "Utf\u00f8r", +"Brightness": "Lysstyrke", +"Rotate clockwise": "Roter mot h\u00f8yre", +"Rotate counterclockwise": "Roter mot venstre", +"Edit image": "Rediger bilde", +"Color levels": "Fargeniv\u00e5", +"Crop": "Beskj\u00e6r", +"Orientation": "Orientering", +"Flip vertically": "Speilvend vertikalt", +"Invert": "Inverter", +"Insert date\/time": "Sett inn dato\/tid", +"Remove link": "Fjern lenke", +"Url": "Url", +"Text to display": "Tekst som skal vises", +"Anchors": "Anker", +"Insert link": "Sett inn lenke", +"New window": "Nytt vindu", +"None": "Ingen", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Oppgitt URL ser ut til \u00e5 v\u00e6re en e-postadresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevd mailto:-prefiks foran e-postadressen?", +"Target": "M\u00e5l", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Oppgitte URL ser ut til \u00e5 v\u00e6re en epost-adresse. \u00d8nsker du \u00e5 sette inn p\u00e5krevet mailto: prefiks forran epost-adressen?", +"Insert\/edit link": "Sett inn\/endre lenke", +"Insert\/edit video": "Sett inn\/rediger video", +"Poster": "Plakatbilde", +"Alternative source": "Alternativ kilde", +"Paste your embed code below:": "Lim inn inkluderings-koden nedenfor", +"Insert video": "Sett inn video", +"Embed": "Inkluder", +"Nonbreaking space": "Hardt mellomrom", +"Page break": "Sideskifte", +"Paste as text": "Lim inn som tekst", +"Preview": "Forh\u00e5ndsvisning", +"Print": "Skriv ut", +"Save": "Arkiver", +"Could not find the specified string.": "Kunne ikke finne den spesifiserte teksten", +"Replace": "Erstatt", +"Next": "Neste", +"Whole words": "Hele ord", +"Find and replace": "Finn og erstatt", +"Replace with": "Erstatt med", +"Find": "Finn", +"Replace all": "Erstatt alle", +"Match case": "Match store og sm\u00e5 bokstaver", +"Prev": "Forrige", +"Spellcheck": "Stavekontroll", +"Finish": "Avslutt", +"Ignore all": "Ignorer alle", +"Ignore": "Ignorer", +"Add to Dictionary": "Legg til i ordliste", +"Insert row before": "Sett inn rad f\u00f8r", +"Rows": "Rader", +"Height": "H\u00f8yde", +"Paste row after": "Lim inn rad etter", +"Alignment": "Justering", +"Border color": "Rammefarge", +"Column group": "Kolonnegruppe", +"Row": "Rad", +"Insert column before": "Sett inn kolonne f\u00f8r", +"Split cell": "Splitt celle", +"Cell padding": "Cellemarg", +"Cell spacing": "Celleavstand", +"Row type": "Rad-type", +"Insert table": "Sett inn tabell", +"Body": "Br\u00f8dtekst", +"Caption": "Tittel", +"Footer": "Bunntekst", +"Delete row": "Slett rad", +"Paste row before": "Lim inn rad f\u00f8r", +"Scope": "Omfang", +"Delete table": "Slett tabell", +"H Align": "H Justering", +"Top": "Topp", +"Header cell": "Topptekst-celle", +"Column": "Kolonne", +"Row group": "Radgruppe", +"Cell": "Celle", +"Middle": "Midten", +"Cell type": "Celletype", +"Copy row": "Kopier rad", +"Row properties": "Rad egenskaper", +"Table properties": "Tabell egenskaper", +"Bottom": "Bunn", +"V Align": "V Justering", +"Header": "Topptekst", +"Right": "H\u00f8yre", +"Insert column after": "Sett inn kolonne etter", +"Cols": "Kolonner", +"Insert row after": "Sett in rad etter", +"Width": "Bredde", +"Cell properties": "Celle egenskaper", +"Left": "Venstre", +"Cut row": "Klipp ut rad", +"Delete column": "Slett kolonne", +"Center": "Midtstilt", +"Merge cells": "Sl\u00e5 sammen celler", +"Insert template": "Sett inn mal", +"Templates": "Maler", +"Background color": "Bakgrunnsfarge", +"Custom...": "Tilpass...", +"Custom color": "Tilpasset farge", +"No color": "Ingen farge", +"Text color": "Tekstfarge", +"Show blocks": "Vis blokker", +"Show invisible characters": "Vis skjulte tegn", +"Words: {0}": "Antall ord: {0}", +"Insert": "Sett inn", +"File": "Arkiv", +"Edit": "Rediger", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Tekstredigering. Tast ALT-F9 for meny. Tast ALT-F10 for verkt\u00f8ys-rader. Tast ALT-0 for hjelp.", +"Tools": "Verkt\u00f8y", +"View": "Vis", +"Table": "Tabell", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/nl.js b/assets/plugins/tinymce4/tinymce/langs/nl.js new file mode 100755 index 0000000000..ee1f335624 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/nl.js @@ -0,0 +1,219 @@ +tinymce.addI18n('nl',{ +"Cut": "Knippen", +"Heading 5": "Kop 5", +"Header 2": "Kop 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Uw browser ondersteunt geen toegang tot het clipboard. Gelieve ctrl+X\/C\/V sneltoetsen te gebruiken.", +"Heading 4": "Kop 4", +"Div": "Div", +"Heading 2": "Kop 2", +"Paste": "Plakken", +"Close": "Sluiten", +"Font Family": "Lettertype", +"Pre": "Pre", +"Align right": "Rechts uitlijnen", +"New document": "Nieuw document", +"Blockquote": "Quote", +"Numbered list": "Nummering", +"Heading 1": "Kop 1", +"Headings": "Koppen", +"Increase indent": "Inspringen vergroten", +"Formats": "Opmaak", +"Headers": "Kopteksten", +"Select all": "Alles selecteren", +"Header 3": "Kop 3", +"Blocks": "Blok", +"Undo": "Ongedaan maken", +"Strikethrough": "Doorhalen", +"Bullet list": "Opsommingsteken", +"Header 1": "Kop 1", +"Superscript": "Superscript", +"Clear formatting": "Opmaak verwijderen", +"Font Sizes": "Tekengrootte", +"Subscript": "Subscript", +"Header 6": "Kop 6", +"Redo": "Opnieuw", +"Paragraph": "Paragraaf", +"Ok": "Ok\u00e9", +"Bold": "Vet", +"Code": "Code", +"Italic": "Cursief", +"Align center": "Centreren", +"Header 5": "Kop 5", +"Heading 6": "Kop 6", +"Heading 3": "Kop 3", +"Decrease indent": "Inspringen verkleinen", +"Header 4": "Kop 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Plakken gebeurt nu als platte tekst. Tekst wordt nu ingevoegd zonder opmaak tot deze optie uitgeschakeld wordt.", +"Underline": "Onderstreept", +"Cancel": "Annuleren", +"Justify": "Uitlijnen", +"Inline": "Inlijn", +"Copy": "Kopi\u00ebren", +"Align left": "Links uitlijnen", +"Visual aids": "Hulpmiddelen", +"Lower Greek": "Griekse letters", +"Square": "Vierkant", +"Default": "Standaard", +"Lower Alpha": "Kleine letters", +"Circle": "Cirkel", +"Disc": "Bolletje", +"Upper Alpha": "Hoofdletters", +"Upper Roman": "Romeinse cijfers groot", +"Lower Roman": "Romeinse cijfers klein", +"Name": "Naam", +"Anchor": "Anker", +"You have unsaved changes are you sure you want to navigate away?": "U hebt niet alles opgeslagen bent u zeker dat u de pagina wenst te verlaten?", +"Restore last draft": "Herstel het laatste concept", +"Special character": "Speciale karakters", +"Source code": "Broncode", +"B": "Blauw", +"R": "Rood", +"G": "Groen", +"Color": "Kleur", +"Right to left": "Rechts naar links", +"Left to right": "Links naar rechts", +"Emoticons": "Emoticons", +"Robots": "Robots", +"Document properties": "Document eigenschappen", +"Title": "Titel", +"Keywords": "Sleutelwoorden", +"Encoding": "Codering", +"Description": "Omschrijving", +"Author": "Auteur", +"Fullscreen": "Volledig scherm", +"Horizontal line": "Horizontale lijn", +"Horizontal space": "Horizontale ruimte", +"Insert\/edit image": "Afbeelding invoegen\/bewerken", +"General": "Algemeen", +"Advanced": "Geavanceerd", +"Source": "Bron", +"Border": "Rand", +"Constrain proportions": "Verhoudingen behouden", +"Vertical space": "Verticale ruimte", +"Image description": "Afbeelding omschrijving", +"Style": "Stijl", +"Dimensions": "Afmetingen", +"Insert image": "Afbeelding invoegen", +"Zoom in": "Inzoomen", +"Contrast": "Contrast", +"Back": "Terug", +"Gamma": "Gamma", +"Flip horizontally": "Horizontaal spiegelen", +"Resize": "Formaat aanpassen", +"Sharpen": "Scherpte", +"Zoom out": "Uitzoomen", +"Image options": "Afbeelding opties", +"Apply": "Toepassen", +"Brightness": "Helderheid", +"Rotate clockwise": "Rechtsom draaien", +"Rotate counterclockwise": "Linksom draaien", +"Edit image": "Bewerk afbeelding", +"Color levels": "Kleurniveau's", +"Crop": "Uitsnijden", +"Orientation": "Orientatie", +"Flip vertically": "Verticaal spiegelen", +"Invert": "Omkeren", +"Insert date\/time": "Voeg datum\/tijd in", +"Remove link": "Link verwijderen", +"Url": "Url", +"Text to display": "Linktekst", +"Anchors": "Anker", +"Insert link": "Hyperlink invoegen", +"New window": "Nieuw venster", +"None": "Geen", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "De ingegeven URL verwijst naar een extern adres. Wil je er \"http:\/\/\" aan toevoegen?", +"Target": "Doel", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "De ingegeven URL lijkt op een e-mailadres. Wil je er \"mailto:\" aan toevoegen?", +"Insert\/edit link": "Hyperlink invoegen\/bewerken", +"Insert\/edit video": "Video invoegen\/bewerken", +"Poster": "Poster", +"Alternative source": "Alternatieve bron", +"Paste your embed code below:": "Plak u in te sluiten code hieronder:", +"Insert video": "Video invoegen", +"Embed": "Insluiten", +"Nonbreaking space": "Vaste spatie invoegen", +"Page break": "Pagina einde", +"Paste as text": "Plakken als tekst", +"Preview": "Voorbeeld", +"Print": "Print", +"Save": "Opslaan", +"Could not find the specified string.": "Geen resultaten gevonden", +"Replace": "Vervangen", +"Next": "Volgende", +"Whole words": "Alleen hele woorden", +"Find and replace": "Zoek en vervang", +"Replace with": "Vervangen door", +"Find": "Zoeken", +"Replace all": "Alles vervangen", +"Match case": "Identieke hoofd\/kleine letters", +"Prev": "Vorige", +"Spellcheck": "Spellingscontrole", +"Finish": "Einde", +"Ignore all": "Alles negeren", +"Ignore": "Negeren", +"Add to Dictionary": "Toevoegen aan woordenlijst", +"Insert row before": "Voeg rij boven toe", +"Rows": "Rijen", +"Height": "Hoogte", +"Paste row after": "Plak rij onder", +"Alignment": "Uitlijning", +"Border color": "Randkleur", +"Column group": "Kolomgroep", +"Row": "Rij", +"Insert column before": "Voeg kolom in voor", +"Split cell": "Cel splitsen", +"Cell padding": "Ruimte binnen cel", +"Cell spacing": "Celruimte", +"Row type": "Rijtype", +"Insert table": "Tabel invoegen", +"Body": "Body", +"Caption": "Onderschrift", +"Footer": "Voettekst", +"Delete row": "Verwijder rij", +"Paste row before": "Plak rij boven", +"Scope": "Bereik", +"Delete table": "Verwijder tabel", +"H Align": "Links uitlijnen", +"Top": "Bovenaan", +"Header cell": "Kopcel", +"Column": "Kolom", +"Row group": "Rijgroep", +"Cell": "Cel", +"Middle": "Centreren", +"Cell type": "Celtype", +"Copy row": "Kopieer rij", +"Row properties": "Rij eigenschappen", +"Table properties": "Tabel eigenschappen", +"Bottom": "Onderaan", +"V Align": "Boven uitlijnen", +"Header": "Koptekst", +"Right": "Rechts", +"Insert column after": "Voeg kolom in na", +"Cols": "Kolommen", +"Insert row after": "Voeg rij onder toe", +"Width": "Breedte", +"Cell properties": "Cel eigenschappen", +"Left": "Links", +"Cut row": "Knip rij", +"Delete column": "Verwijder kolom", +"Center": "Midden", +"Merge cells": "Cellen samenvoegen", +"Insert template": "Sjabloon invoegen", +"Templates": "Sjablonen", +"Background color": "Achtergrondkleur", +"Custom...": "Eigen...", +"Custom color": "Eigen kleur", +"No color": "Geen kleur", +"Text color": "Tekstkleur", +"Show blocks": "Blokken tonen", +"Show invisible characters": "Onzichtbare karakters tonen", +"Words: {0}": "Woorden: {0}", +"Insert": "Invoegen", +"File": "Bestand", +"Edit": "Bewerken", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Rich Text Area. Druk ALT-F9 voor het menu. Druk ALT-F10 voor de toolbar. Druk ALT-0 voor help.", +"Tools": "Gereedschap", +"View": "Beeld", +"Table": "Tabel", +"Format": "Opmaak" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/pl.js b/assets/plugins/tinymce4/tinymce/langs/pl.js new file mode 100755 index 0000000000..c93b4b1fc8 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/pl.js @@ -0,0 +1,219 @@ +tinymce.addI18n('pl',{ +"Cut": "Wytnij", +"Heading 5": "Nag\u0142\u00f3wek 5", +"Header 2": "Nag\u0142\u00f3wek 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Twoja przegl\u0105darka nie obs\u0142uguje bezpo\u015bredniego dost\u0119pu do schowka. U\u017cyj zamiast tego kombinacji klawiszy Ctrl+X\/C\/V.", +"Heading 4": "Nag\u0142\u00f3wek 4", +"Div": "Div", +"Heading 2": "Nag\u0142\u00f3wek 2", +"Paste": "Wklej", +"Close": "Zamknij", +"Font Family": "Kr\u00f3j czcionki", +"Pre": "Sformatowany tekst", +"Align right": "Wyr\u00f3wnaj do prawej", +"New document": "Nowy dokument", +"Blockquote": "Blok cytatu", +"Numbered list": "Lista numerowana", +"Heading 1": "Nag\u0142\u00f3wek 1", +"Headings": "Nag\u0142\u00f3wki", +"Increase indent": "Zwi\u0119ksz wci\u0119cie", +"Formats": "Formaty", +"Headers": "Nag\u0142\u00f3wki", +"Select all": "Zaznacz wszystko", +"Header 3": "Nag\u0142\u00f3wek 3", +"Blocks": "Bloki", +"Undo": "Cofnij", +"Strikethrough": "Przekre\u015blenie", +"Bullet list": "Lista wypunktowana", +"Header 1": "Nag\u0142\u00f3wek 1", +"Superscript": "Indeks g\u00f3rny", +"Clear formatting": "Wyczy\u015b\u0107 formatowanie", +"Font Sizes": "Rozmiar czcionki", +"Subscript": "Indeks dolny", +"Header 6": "Nag\u0142\u00f3wek 6", +"Redo": "Pon\u00f3w", +"Paragraph": "Akapit", +"Ok": "Ok", +"Bold": "Pogrubienie", +"Code": "Kod \u017ar\u00f3d\u0142owy", +"Italic": "Kursywa", +"Align center": "Wyr\u00f3wnaj do \u015brodka", +"Header 5": "Nag\u0142\u00f3wek 5", +"Heading 6": "Nag\u0142\u00f3wek 6", +"Heading 3": "Nag\u0142\u00f3wek 3", +"Decrease indent": "Zmniejsz wci\u0119cie", +"Header 4": "Nag\u0142\u00f3wek 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Wklejanie jest w trybie tekstowym. Zawarto\u015b\u0107 zostanie wklejona jako zwyk\u0142y tekst dop\u00f3ki nie wy\u0142\u0105czysz tej opcji.", +"Underline": "Podkre\u015blenie", +"Cancel": "Anuluj", +"Justify": "Do lewej i prawej", +"Inline": "W tek\u015bcie", +"Copy": "Kopiuj", +"Align left": "Wyr\u00f3wnaj do lewej", +"Visual aids": "Pomoce wizualne", +"Lower Greek": "Ma\u0142e greckie", +"Square": "Kwadrat", +"Default": "Domy\u015blne", +"Lower Alpha": "Ma\u0142e litery", +"Circle": "K\u00f3\u0142ko", +"Disc": "Dysk", +"Upper Alpha": "Wielkie litery", +"Upper Roman": "Wielkie rzymskie", +"Lower Roman": "Ma\u0142e rzymskie", +"Name": "Nazwa", +"Anchor": "Kotwica", +"You have unsaved changes are you sure you want to navigate away?": "Masz niezapisane zmiany. Czy na pewno chcesz opu\u015bci\u0107 stron\u0119?", +"Restore last draft": "Przywr\u00f3\u0107 ostatni szkic", +"Special character": "Znak specjalny", +"Source code": "Kod \u017ar\u00f3d\u0142owy", +"B": "B", +"R": "R", +"G": "G", +"Color": "Kolor", +"Right to left": "Od prawej do lewej", +"Left to right": "Od lewej do prawej", +"Emoticons": "Ikony emocji", +"Robots": "Roboty", +"Document properties": "W\u0142a\u015bciwo\u015bci dokumentu", +"Title": "Tytu\u0142", +"Keywords": "S\u0142owa kluczowe", +"Encoding": "Kodowanie", +"Description": "Opis", +"Author": "Autor", +"Fullscreen": "Pe\u0142ny ekran", +"Horizontal line": "Pozioma linia", +"Horizontal space": "Odst\u0119p poziomy", +"Insert\/edit image": "Wstaw\/edytuj obrazek", +"General": "Og\u00f3lne", +"Advanced": "Zaawansowane", +"Source": "\u0179r\u00f3d\u0142o", +"Border": "Ramka", +"Constrain proportions": "Zachowaj proporcje", +"Vertical space": "Odst\u0119p pionowy", +"Image description": "Opis obrazka", +"Style": "Styl", +"Dimensions": "Wymiary", +"Insert image": "Wstaw obrazek", +"Zoom in": "Powi\u0119ksz", +"Contrast": "Kontrast", +"Back": "Cofnij", +"Gamma": "Gamma", +"Flip horizontally": "Przerzu\u0107 w poziomie", +"Resize": "Zmiana rozmiaru", +"Sharpen": "Wyostrz", +"Zoom out": "Pomniejsz", +"Image options": "Opcje obrazu", +"Apply": "Zaakceptuj", +"Brightness": "Jasno\u015b\u0107", +"Rotate clockwise": "Obr\u00f3\u0107 w prawo", +"Rotate counterclockwise": "Obr\u00f3\u0107 w lewo", +"Edit image": "Edytuj obrazek", +"Color levels": "Poziom koloru", +"Crop": "Przytnij", +"Orientation": "Orientacja", +"Flip vertically": "Przerzu\u0107 w pionie", +"Invert": "Odwr\u00f3\u0107", +"Insert date\/time": "Wstaw dat\u0119\/czas", +"Remove link": "Usu\u0144 link", +"Url": "Url", +"Text to display": "Tekst do wy\u015bwietlenia", +"Anchors": "Kotwice", +"Insert link": "Wstaw \u0142\u0105cze", +"New window": "Nowe okno", +"None": "\u017baden", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na link zewn\u0119trzny. Czy chcesz doda\u0107 http:\/\/ jako prefiks?", +"Target": "Cel", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "URL, kt\u00f3ry wprowadzi\u0142e\u015b wygl\u0105da na adres e-mail. Czy chcesz doda\u0107 mailto: jako prefiks?", +"Insert\/edit link": "Wstaw\/edytuj link", +"Insert\/edit video": "Wstaw\/edytuj wideo", +"Poster": "Plakat", +"Alternative source": "Alternatywne \u017ar\u00f3d\u0142o", +"Paste your embed code below:": "Wklej tutaj kod do osadzenia:", +"Insert video": "Wstaw wideo", +"Embed": "Osad\u017a", +"Nonbreaking space": "Nie\u0142amliwa spacja", +"Page break": "Podzia\u0142 strony", +"Paste as text": "Wklej jako zwyk\u0142y tekst", +"Preview": "Podgl\u0105d", +"Print": "Drukuj", +"Save": "Zapisz", +"Could not find the specified string.": "Nie znaleziono szukanego tekstu.", +"Replace": "Zamie\u0144", +"Next": "Nast.", +"Whole words": "Ca\u0142e s\u0142owa", +"Find and replace": "Znajd\u017a i zamie\u0144", +"Replace with": "Zamie\u0144 na", +"Find": "Znajd\u017a", +"Replace all": "Zamie\u0144 wszystko", +"Match case": "Dopasuj wielko\u015b\u0107 liter", +"Prev": "Poprz.", +"Spellcheck": "Sprawdzanie pisowni", +"Finish": "Zako\u0144cz", +"Ignore all": "Ignoruj wszystko", +"Ignore": "Ignoruj", +"Add to Dictionary": "Dodaj do s\u0142ownika", +"Insert row before": "Wstaw wiersz przed", +"Rows": "Wiersz.", +"Height": "Wysoko\u015b\u0107", +"Paste row after": "Wklej wiersz po", +"Alignment": "Wyr\u00f3wnanie", +"Border color": "Kolor ramki", +"Column group": "Grupa kolumn", +"Row": "Wiersz", +"Insert column before": "Wstaw kolumn\u0119 przed", +"Split cell": "Podziel kom\u00f3rk\u0119", +"Cell padding": "Dope\u0142nienie kom\u00f3rki", +"Cell spacing": "Odst\u0119py kom\u00f3rek", +"Row type": "Typ wiersza", +"Insert table": "Wstaw tabel\u0119", +"Body": "Tre\u015b\u0107", +"Caption": "Tytu\u0142", +"Footer": "Stopka", +"Delete row": "Usu\u0144 wiersz", +"Paste row before": "Wklej wiersz przed", +"Scope": "Kontekst", +"Delete table": "Usu\u0144 tabel\u0119", +"H Align": "Wyr\u00f3wnanie w pionie", +"Top": "G\u00f3ra", +"Header cell": "Kom\u00f3rka nag\u0142\u00f3wka", +"Column": "Kolumna", +"Row group": "Grupa wierszy", +"Cell": "Kom\u00f3rka", +"Middle": "\u015arodek", +"Cell type": "Typ kom\u00f3rki", +"Copy row": "Kopiuj wiersz", +"Row properties": "W\u0142a\u015bciwo\u015bci wiersza", +"Table properties": "W\u0142a\u015bciwo\u015bci tabeli", +"Bottom": "D\u00f3\u0142", +"V Align": "Wyr\u00f3wnanie w poziomie", +"Header": "Nag\u0142\u00f3wek", +"Right": "Prawo", +"Insert column after": "Wstaw kolumn\u0119 po", +"Cols": "Kol.", +"Insert row after": "Wstaw wiersz po", +"Width": "Szeroko\u015b\u0107", +"Cell properties": "W\u0142a\u015bciwo\u015bci kom\u00f3rki", +"Left": "Lewo", +"Cut row": "Wytnij wiersz", +"Delete column": "Usu\u0144 kolumn\u0119", +"Center": "\u015arodek", +"Merge cells": "\u0141\u0105cz kom\u00f3rki", +"Insert template": "Wstaw szablon", +"Templates": "Szablony", +"Background color": "Kolor t\u0142a", +"Custom...": "Niestandardowy...", +"Custom color": "Kolor niestandardowy", +"No color": "Bez koloru", +"Text color": "Kolor tekstu", +"Show blocks": "Poka\u017c bloki", +"Show invisible characters": "Poka\u017c niewidoczne znaki", +"Words: {0}": "S\u0142\u00f3w: {0}", +"Insert": "Wstaw", +"File": "Plik", +"Edit": "Edycja", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Obszar Edycji. ALT-F9 - menu. ALT-F10 - pasek narz\u0119dzi. ALT-0 - pomoc", +"Tools": "Narz\u0119dzia", +"View": "Widok", +"Table": "Tabela", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/pt_BR.js b/assets/plugins/tinymce4/tinymce/langs/pt_BR.js new file mode 100755 index 0000000000..2e89759511 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/pt_BR.js @@ -0,0 +1,219 @@ +tinymce.addI18n('pt_BR',{ +"Cut": "Recortar", +"Heading 5": "Cabe\u00e7alho 5", +"Header 2": "Cabe\u00e7alho 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X - C - V do teclado", +"Heading 4": "Cabe\u00e7alho 4", +"Div": "Div", +"Heading 2": "Cabe\u00e7alho 2", +"Paste": "Colar", +"Close": "Fechar", +"Font Family": "Fonte", +"Pre": "Pre", +"Align right": "Alinhar \u00e0 direita", +"New document": "Novo documento", +"Blockquote": "Aspas", +"Numbered list": "Lista ordenada", +"Heading 1": "Cabe\u00e7alho 1", +"Headings": "Cabe\u00e7alhos", +"Increase indent": "Aumentar recuo", +"Formats": "Formatos", +"Headers": "Cabe\u00e7alhos", +"Select all": "Selecionar tudo", +"Header 3": "Cabe\u00e7alho 3", +"Blocks": "Blocos", +"Undo": "Desfazer", +"Strikethrough": "Riscar", +"Bullet list": "Lista n\u00e3o ordenada", +"Header 1": "Cabe\u00e7alho 1", +"Superscript": "Sobrescrito", +"Clear formatting": "Limpar formata\u00e7\u00e3o", +"Font Sizes": "Tamanho", +"Subscript": "Subscrever", +"Header 6": "Cabe\u00e7alho 6", +"Redo": "Refazer", +"Paragraph": "Par\u00e1grafo", +"Ok": "Ok", +"Bold": "Negrito", +"Code": "C\u00f3digo", +"Italic": "It\u00e1lico", +"Align center": "Centralizar", +"Header 5": "Cabe\u00e7alho 5", +"Heading 6": "Cabe\u00e7alho 6", +"Heading 3": "Cabe\u00e7alho 3", +"Decrease indent": "Diminuir recuo", +"Header 4": "Cabe\u00e7alho 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 agora em modo texto plano. O conte\u00fado ser\u00e1 colado como texto plano at\u00e9 voc\u00ea desligar esta op\u00e7\u00e3o.", +"Underline": "Sublinhar", +"Cancel": "Cancelar", +"Justify": "Justificar", +"Inline": "Em linha", +"Copy": "Copiar", +"Align left": "Alinhar \u00e0 esquerda", +"Visual aids": "Ajuda visual", +"Lower Greek": "\u03b1. \u03b2. \u03b3. ...", +"Square": "Quadrado", +"Default": "Padr\u00e3o", +"Lower Alpha": "a. b. c. ...", +"Circle": "C\u00edrculo", +"Disc": "Disco", +"Upper Alpha": "A. B. C. ...", +"Upper Roman": "I. II. III. ...", +"Lower Roman": "i. ii. iii. ...", +"Name": "Nome", +"Anchor": "\u00c2ncora", +"You have unsaved changes are you sure you want to navigate away?": "Voc\u00ea tem mudan\u00e7as n\u00e3o salvas. Voc\u00ea tem certeza que deseja sair?", +"Restore last draft": "Restaurar \u00faltimo rascunho", +"Special character": "Caracteres especiais", +"Source code": "C\u00f3digo fonte", +"B": "B", +"R": "R", +"G": "G", +"Color": "Cor", +"Right to left": "Da direita para a esquerda", +"Left to right": "Da esquerda para a direita", +"Emoticons": "Emoticons", +"Robots": "Rob\u00f4s", +"Document properties": "Propriedades do documento", +"Title": "T\u00edtulo", +"Keywords": "Palavras-chave", +"Encoding": "Codifica\u00e7\u00e3o", +"Description": "Descri\u00e7\u00e3o", +"Author": "Autor", +"Fullscreen": "Tela cheia", +"Horizontal line": "Linha horizontal", +"Horizontal space": "Espa\u00e7amento horizontal", +"Insert\/edit image": "Inserir\/editar imagem", +"General": "Geral", +"Advanced": "Avan\u00e7ado", +"Source": "Endere\u00e7o da imagem", +"Border": "Borda", +"Constrain proportions": "Manter propor\u00e7\u00f5es", +"Vertical space": "Espa\u00e7amento vertical", +"Image description": "Inserir descri\u00e7\u00e3o", +"Style": "Estilo", +"Dimensions": "Dimens\u00f5es", +"Insert image": "Inserir imagem", +"Zoom in": "Aumentar zoom", +"Contrast": "Contraste", +"Back": "Voltar", +"Gamma": "Gama", +"Flip horizontally": "Virar horizontalmente", +"Resize": "Redimensionar", +"Sharpen": "Aumentar nitidez", +"Zoom out": "Diminuir zoom", +"Image options": "Op\u00e7\u00f5es de Imagem", +"Apply": "Aplicar", +"Brightness": "Brilho", +"Rotate clockwise": "Girar em sentido anti-hor\u00e1rio", +"Rotate counterclockwise": "Girar em sentido hor\u00e1rio", +"Edit image": "Editar imagem", +"Color levels": "N\u00edveis de cor", +"Crop": "Cortar", +"Orientation": "Orienta\u00e7\u00e3o", +"Flip vertically": "Virar verticalmente", +"Invert": "Inverter", +"Insert date\/time": "Inserir data\/hora", +"Remove link": "Remover link", +"Url": "Url", +"Text to display": "Texto para mostrar", +"Anchors": "\u00c2ncoras", +"Insert link": "Inserir link", +"New window": "Nova janela", +"None": "Nenhum", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "A URL que voc\u00ea informou parece ser um link externo. Deseja incluir o prefixo http:\/\/?", +"Target": "Alvo", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?", +"Insert\/edit link": "Inserir\/editar link", +"Insert\/edit video": "Inserir\/editar v\u00eddeo", +"Poster": "Autor", +"Alternative source": "Fonte alternativa", +"Paste your embed code below:": "Insira o c\u00f3digo de incorpora\u00e7\u00e3o abaixo:", +"Insert video": "Inserir v\u00eddeo", +"Embed": "Incorporar", +"Nonbreaking space": "Espa\u00e7o n\u00e3o separ\u00e1vel", +"Page break": "Quebra de p\u00e1gina", +"Paste as text": "Colar como texto", +"Preview": "Pr\u00e9-visualizar", +"Print": "Imprimir", +"Save": "Salvar", +"Could not find the specified string.": "N\u00e3o foi poss\u00edvel encontrar o termo especificado", +"Replace": "Substituir", +"Next": "Pr\u00f3ximo", +"Whole words": "Palavras inteiras", +"Find and replace": "Localizar e substituir", +"Replace with": "Substituir por", +"Find": "Localizar", +"Replace all": "Substituir tudo", +"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas", +"Prev": "Anterior", +"Spellcheck": "Corretor ortogr\u00e1fico", +"Finish": "Finalizar", +"Ignore all": "Ignorar tudo", +"Ignore": "Ignorar", +"Add to Dictionary": "Adicionar ao Dicion\u00e1rio", +"Insert row before": "Inserir linha antes", +"Rows": "Linhas", +"Height": "Altura", +"Paste row after": "Colar linha depois", +"Alignment": "Alinhamento", +"Border color": "Cor da borda", +"Column group": "Agrupar coluna", +"Row": "Linha", +"Insert column before": "Inserir coluna antes", +"Split cell": "Dividir c\u00e9lula", +"Cell padding": "Espa\u00e7amento interno da c\u00e9lula", +"Cell spacing": "Espa\u00e7amento da c\u00e9lula", +"Row type": "Tipo de linha", +"Insert table": "Inserir tabela", +"Body": "Corpo", +"Caption": "Legenda", +"Footer": "Rodap\u00e9", +"Delete row": "Excluir linha", +"Paste row before": "Colar linha antes", +"Scope": "Escopo", +"Delete table": "Excluir tabela", +"H Align": "Alinhamento H", +"Top": "Superior", +"Header cell": "C\u00e9lula cabe\u00e7alho", +"Column": "Coluna", +"Row group": "Agrupar linha", +"Cell": "C\u00e9lula", +"Middle": "Meio", +"Cell type": "Tipo de c\u00e9lula", +"Copy row": "Copiar linha", +"Row properties": "Propriedades da linha", +"Table properties": "Propriedades da tabela", +"Bottom": "Inferior", +"V Align": "Alinhamento V", +"Header": "Cabe\u00e7alho", +"Right": "Direita", +"Insert column after": "Inserir coluna depois", +"Cols": "Colunas", +"Insert row after": "Inserir linha depois", +"Width": "Largura", +"Cell properties": "Propriedades da c\u00e9lula", +"Left": "Esquerdo", +"Cut row": "Recortar linha", +"Delete column": "Excluir coluna", +"Center": "Centro", +"Merge cells": "Agrupar c\u00e9lulas", +"Insert template": "Inserir modelo", +"Templates": "Modelos", +"Background color": "Cor do fundo", +"Custom...": "Personalizado...", +"Custom color": "Cor personalizada", +"No color": "Nenhuma cor", +"Text color": "Cor do texto", +"Show blocks": "Mostrar blocos", +"Show invisible characters": "Exibir caracteres invis\u00edveis", +"Words: {0}": "Palavras: {0}", +"Insert": "Inserir", +"File": "Arquivo", +"Edit": "Editar", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u00c1rea de texto formatado. Pressione ALT-F9 para exibir o menu, ALT-F10 para exibir a barra de ferramentas ou ALT-0 para exibir a ajuda", +"Tools": "Ferramentas", +"View": "Visualizar", +"Table": "Tabela", +"Format": "Formatar" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/pt_PT.js b/assets/plugins/tinymce4/tinymce/langs/pt_PT.js new file mode 100755 index 0000000000..ee1a4ace89 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/pt_PT.js @@ -0,0 +1,219 @@ +tinymce.addI18n('pt_PT',{ +"Cut": "Cortar", +"Heading 5": "T\u00edtulo 5", +"Header 2": "Cabe\u00e7alho 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "O seu navegador n\u00e3o suporta acesso direto \u00e0 \u00e1rea de transfer\u00eancia. Por favor use os atalhos Ctrl+X\/C\/V do seu teclado.", +"Heading 4": "T\u00edtulo 4", +"Div": "Div", +"Heading 2": "T\u00edtulo 2", +"Paste": "Colar", +"Close": "Fechar", +"Font Family": "Fonte", +"Pre": "Pre", +"Align right": "Alinhar \u00e0 direita", +"New document": "Novo documento", +"Blockquote": "Cita\u00e7\u00e3o em bloco", +"Numbered list": "Lista numerada", +"Heading 1": "T\u00edtulo 1", +"Headings": "T\u00edtulos", +"Increase indent": "Aumentar avan\u00e7o", +"Formats": "Formatos", +"Headers": "Cabe\u00e7alhos", +"Select all": "Selecionar tudo", +"Header 3": "Cabe\u00e7alho 3", +"Blocks": "Blocos", +"Undo": "Desfazer", +"Strikethrough": "Rasurado", +"Bullet list": "Lista com marcadores", +"Header 1": "Cabe\u00e7alho 1", +"Superscript": "Superior \u00e0 linha", +"Clear formatting": "Limpar formata\u00e7\u00e3o", +"Font Sizes": "Tamanhos", +"Subscript": "Inferior \u00e0 linha", +"Header 6": "Cabe\u00e7alho 6", +"Redo": "Refazer", +"Paragraph": "Par\u00e1grafo", +"Ok": "Ok", +"Bold": "Negrito", +"Code": "C\u00f3digo", +"Italic": "It\u00e1lico", +"Align center": "Alinhar ao centro", +"Header 5": "Cabe\u00e7alho 5", +"Heading 6": "T\u00edtulo 6", +"Heading 3": "T\u00edtulo 3", +"Decrease indent": "Diminuir avan\u00e7o", +"Header 4": "Cabe\u00e7alho 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "O comando colar est\u00e1 em modo de texto simples. O conte\u00fado ser\u00e1 colado como texto simples at\u00e9 desativar esta op\u00e7\u00e3o.", +"Underline": "Sublinhado", +"Cancel": "Cancelar", +"Justify": "Justificado", +"Inline": "Na linha", +"Copy": "Copiar", +"Align left": "Alinhar \u00e0 esquerda", +"Visual aids": "Ajuda visual", +"Lower Greek": "\\u03b1. \\u03b2. \\u03b3. ...", +"Square": "Quadrado", +"Default": "Padr\u00e3o", +"Lower Alpha": "a. b. c. ...", +"Circle": "C\u00edrculo", +"Disc": "Disco", +"Upper Alpha": "A. B. C. ...", +"Upper Roman": "I. II. III. ...", +"Lower Roman": "i. ii. iii. ...", +"Name": "Nome", +"Anchor": "\u00c2ncora", +"You have unsaved changes are you sure you want to navigate away?": "Existem altera\u00e7\u00f5es que ainda n\u00e3o foram guardadas. Tem a certeza que pretende sair?", +"Restore last draft": "Restaurar o \u00faltimo rascunho", +"Special character": "Car\u00e1cter especial", +"Source code": "C\u00f3digo fonte", +"B": "B", +"R": "R", +"G": "G", +"Color": "Cor", +"Right to left": "Da direita para a esquerda", +"Left to right": "Da esquerda para a direita", +"Emoticons": "Emo\u00e7\u00f5es", +"Robots": "Rob\u00f4s", +"Document properties": "Propriedades do documento", +"Title": "T\u00edtulo", +"Keywords": "Palavras-chave", +"Encoding": "Codifica\u00e7\u00e3o", +"Description": "Descri\u00e7\u00e3o", +"Author": "Autor", +"Fullscreen": "Ecr\u00e3 completo", +"Horizontal line": "Linha horizontal", +"Horizontal space": "Espa\u00e7amento horizontal", +"Insert\/edit image": "Inserir\/editar imagem", +"General": "Geral", +"Advanced": "Avan\u00e7ado", +"Source": "Localiza\u00e7\u00e3o", +"Border": "Contorno", +"Constrain proportions": "Manter propor\u00e7\u00f5es", +"Vertical space": "Espa\u00e7amento vertical", +"Image description": "Descri\u00e7\u00e3o da imagem", +"Style": "Estilo", +"Dimensions": "Dimens\u00f5es", +"Insert image": "Inserir imagem", +"Zoom in": "Aproximar", +"Contrast": "Contraste", +"Back": "Voltar", +"Gamma": "Gama", +"Flip horizontally": "Inverter horizontalmente", +"Resize": "Redimensionar", +"Sharpen": "Mais nitidez", +"Zoom out": "Afastar", +"Image options": "Op\u00e7\u00f5es de imagem", +"Apply": "Aplicar", +"Brightness": "Brilho", +"Rotate clockwise": "Rota\u00e7\u00e3o hor\u00e1ria", +"Rotate counterclockwise": "Rota\u00e7\u00e3o anti-hor\u00e1ria", +"Edit image": "Editar imagem", +"Color levels": "N\u00edveis de cor", +"Crop": "Recortar", +"Orientation": "Orienta\u00e7\u00e3o", +"Flip vertically": "Inverter verticalmente", +"Invert": "Inverter", +"Insert date\/time": "Inserir data\/hora", +"Remove link": "Remover liga\u00e7\u00e3o", +"Url": "URL", +"Text to display": "Texto a exibir", +"Anchors": "\u00c2ncora", +"Insert link": "Inserir liga\u00e7\u00e3o", +"New window": "Nova janela", +"None": "Nenhum", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "O URL que indicou parece ser um endere\u00e7o web. Quer adicionar o prefixo http:\/\/ tal como necess\u00e1rio?", +"Target": "Alvo", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "O URL que indicou parece ser um endere\u00e7o de email. Quer adicionar o prefixo mailto: tal como necess\u00e1rio?", +"Insert\/edit link": "Inserir\/editar liga\u00e7\u00e3o", +"Insert\/edit video": "Inserir\/editar v\u00eddeo", +"Poster": "Autor", +"Alternative source": "Localiza\u00e7\u00e3o alternativa", +"Paste your embed code below:": "Colar c\u00f3digo para embeber:", +"Insert video": "Inserir v\u00eddeo", +"Embed": "Incorporar", +"Nonbreaking space": "Espa\u00e7o n\u00e3o quebr\u00e1vel", +"Page break": "Quebra de p\u00e1gina", +"Paste as text": "Colar como texto", +"Preview": "Pr\u00e9-visualizar", +"Print": "Imprimir", +"Save": "Guardar", +"Could not find the specified string.": "N\u00e3o foi poss\u00edvel localizar o termo especificado.", +"Replace": "Substituir", +"Next": "Pr\u00f3ximo", +"Whole words": "Palavras completas", +"Find and replace": "Pesquisar e substituir", +"Replace with": "Substituir por", +"Find": "Pesquisar", +"Replace all": "Substituir tudo", +"Match case": "Diferenciar mai\u00fasculas e min\u00fasculas", +"Prev": "Anterior", +"Spellcheck": "Corretor ortogr\u00e1fico", +"Finish": "Concluir", +"Ignore all": "Ignorar tudo", +"Ignore": "Ignorar", +"Add to Dictionary": "Adicionar ao Dicion\u00e1rio", +"Insert row before": "Inserir linha antes", +"Rows": "Linhas", +"Height": "Altura", +"Paste row after": "Colar linha depois", +"Alignment": "Alinhamento", +"Border color": "Cor de contorno", +"Column group": "Agrupar coluna", +"Row": "Linha", +"Insert column before": "Inserir coluna antes", +"Split cell": "Dividir c\u00e9lula", +"Cell padding": "Espa\u00e7amento interno da c\u00e9lula", +"Cell spacing": "Espa\u00e7amento entre c\u00e9lulas", +"Row type": "Tipo de linha", +"Insert table": "Inserir tabela", +"Body": "Corpo", +"Caption": "Legenda", +"Footer": "Rodap\u00e9", +"Delete row": "Eliminar linha", +"Paste row before": "Colar linha antes", +"Scope": "Escopo", +"Delete table": "Eliminar tabela", +"H Align": "Alinhamento H", +"Top": "Topo", +"Header cell": "C\u00e9lula de cabe\u00e7alho", +"Column": "Coluna", +"Row group": "Agrupar linha", +"Cell": "C\u00e9lula", +"Middle": "Meio", +"Cell type": "Tipo de c\u00e9lula", +"Copy row": "Copiar linha", +"Row properties": "Propriedades da linha", +"Table properties": "Propriedades da tabela", +"Bottom": "Fundo", +"V Align": "Alinhamento V", +"Header": "Cabe\u00e7alho", +"Right": "Direita", +"Insert column after": "Inserir coluna depois", +"Cols": "Colunas", +"Insert row after": "Inserir linha depois", +"Width": "Largura", +"Cell properties": "Propriedades da c\u00e9lula", +"Left": "Esquerda", +"Cut row": "Cortar linha", +"Delete column": "Eliminar coluna", +"Center": "Centro", +"Merge cells": "Unir c\u00e9lulas", +"Insert template": "Inserir modelo", +"Templates": "Modelos", +"Background color": "Cor de fundo", +"Custom...": "Personalizada...", +"Custom color": "Cor personalizada", +"No color": "Sem cor", +"Text color": "Cor do texto", +"Show blocks": "Mostrar blocos", +"Show invisible characters": "Mostrar caracteres invis\u00edveis", +"Words: {0}": "Palavras: {0}", +"Insert": "Inserir", +"File": "Ficheiro", +"Edit": "Editar", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Caixa de texto formatado. Pressione ALT-F9 para exibir o menu. Pressione ALT-F10 para exibir a barra de ferramentas. Pressione ALT-0 para exibir a ajuda", +"Tools": "Ferramentas", +"View": "Ver", +"Table": "Tabela", +"Format": "Formatar" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/ru.js b/assets/plugins/tinymce4/tinymce/langs/ru.js new file mode 100755 index 0000000000..b9861c8592 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/ru.js @@ -0,0 +1,220 @@ +tinymce.addI18n('ru',{ +"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c", +"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u041f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0441\u043e\u0447\u0435\u0442\u0430\u043d\u0438\u044f \u043a\u043b\u0430\u0432\u0438\u0448: Ctrl+X\/C\/V.", +"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Div": "\u0411\u043b\u043e\u043a", +"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c", +"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", +"Font Family": "\u0428\u0440\u0438\u0444\u0442", +"Pre": "\u041f\u0440\u0435\u0434\u0432\u0430\u0440\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", +"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", +"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430", +"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438", +"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f", +"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442", +"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438", +"Select all": "\u0412\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0441\u0435", +"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Blocks": "\u0411\u043b\u043e\u043a\u0438", +"Undo": "\u0412\u0435\u0440\u043d\u0443\u0442\u044c", +"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439", +"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441", +"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442", +"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430", +"Subscript": "\u041d\u0438\u0436\u043d\u0438\u0439 \u0438\u043d\u0434\u0435\u043a\u0441", +"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Redo": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", +"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444", +"Ok": "\u041e\u043a", +"Bold": "\u041f\u043e\u043b\u0443\u0436\u0438\u0440\u043d\u044b\u0439", +"Code": "\u041a\u043e\u0434", +"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432", +"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f", +"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u043e\u0441\u0443\u0449\u0435\u0441\u0442\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432 \u0432\u0438\u0434\u0435 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0430, \u043f\u043e\u043a\u0430 \u043d\u0435 \u043e\u0442\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0434\u0430\u043d\u043d\u0443\u044e \u043e\u043f\u0446\u0438\u044e.", +"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439", +"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", +"Justify": "\u041f\u043e \u0448\u0438\u0440\u0438\u043d\u0435", +"Inline": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435", +"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c", +"Align left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Visual aids": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0442\u0443\u0440\u044b", +"Lower Greek": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0433\u0440\u0435\u0447\u0435\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b", +"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u044b", +"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u044b\u0439", +"Lower Alpha": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b", +"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0438", +"Disc": "\u041a\u0440\u0443\u0433\u0438", +"Upper Alpha": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u043b\u0430\u0442\u0438\u043d\u0441\u043a\u0438\u0435 \u0431\u0443\u043a\u0432\u044b", +"Upper Roman": "\u0417\u0430\u0433\u043b\u0430\u0432\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b", +"Lower Roman": "\u0421\u0442\u0440\u043e\u0447\u043d\u044b\u0435 \u0440\u0438\u043c\u0441\u043a\u0438\u0435 \u0446\u0438\u0444\u0440\u044b", +"Name": "\u0418\u043c\u044f", +"Anchor": "\u042f\u043a\u043e\u0440\u044c", +"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0435\u0441\u0442\u044c \u043d\u0435 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u044f. \u0412\u044b \u0443\u0432\u0435\u0440\u0435\u043d\u044b, \u0447\u0442\u043e \u0445\u043e\u0442\u0438\u0442\u0435 \u0443\u0439\u0442\u0438?", +"Restore last draft": "\u0412\u043e\u0441\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0430", +"Special character": "\u0421\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b", +"Source code": "\u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0439 \u043a\u043e\u0434", +"B": "B", +"R": "R", +"G": "G", +"Color": "\u0426\u0432\u0435\u0442", +"Right to left": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0435\u0432\u043e", +"Left to right": "\u041d\u0430\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e", +"Emoticons": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u043c\u0430\u0439\u043b", +"Robots": "\u0420\u043e\u0431\u043e\u0442\u044b", +"Document properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", +"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Keywords": "\u041a\u043b\u044e\u0447\u0438\u0432\u044b\u0435 \u0441\u043b\u043e\u0432\u0430", +"Encoding": "\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430", +"Description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", +"Author": "\u0410\u0432\u0442\u043e\u0440", +"Fullscreen": "\u041f\u043e\u043b\u043d\u043e\u044d\u043a\u0440\u0430\u043d\u043d\u044b\u0439 \u0440\u0435\u0436\u0438\u043c", +"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430\u044f \u043b\u0438\u043d\u0438\u044f", +"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b", +"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", +"General": "\u041e\u0431\u0449\u0435\u0435", +"Advanced": "\u0420\u0430\u0441\u0448\u0438\u0440\u0435\u043d\u043d\u044b\u0435", +"Source": "\u0418\u0441\u0442\u043e\u0447\u043d\u0438\u043a", +"Border": "\u0420\u0430\u043c\u043a\u0430", +"Constrain proportions": "\u0421\u043e\u0445\u0440\u0430\u043d\u044f\u0442\u044c \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0438\u0438", +"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u044b\u0439 \u0438\u043d\u0442\u0435\u0440\u0432\u0430\u043b", +"Image description": "\u041e\u043f\u0438\u0441\u0430\u043d\u0438\u0435 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", +"Style": "\u0421\u0442\u0438\u043b\u044c", +"Dimensions": "\u0420\u0430\u0437\u043c\u0435\u0440", +"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", +"Zoom in": "\u041f\u0440\u0438\u0431\u043b\u0438\u0437\u0438\u0442\u044c", +"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442", +"Back": "\u041d\u0430\u0437\u0430\u0434", +"Gamma": "\u0413\u0430\u043c\u043c\u0430", +"Flip horizontally": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0438", +"Resize": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c \u0440\u0430\u0437\u043c\u0435\u0440", +"Sharpen": "\u0427\u0435\u0442\u043a\u043e\u0441\u0442\u044c", +"Zoom out": "\u041e\u0442\u0434\u0430\u043b\u0438\u0442\u044c", +"Image options": "\u041d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0438 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f", +"Apply": "\u041f\u0440\u0438\u043c\u0435\u043d\u0438\u0442\u044c", +"Brightness": "\u042f\u0440\u043a\u043e\u0441\u0442\u044c", +"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u043e \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0435", +"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u044c \u043f\u0440\u043e\u0442\u0438\u0432 \u0447\u0430\u0441\u043e\u0432\u043e\u0439 \u0441\u0442\u0440\u0435\u043b\u043a\u0438", +"Edit image": "\u0420\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", +"Color levels": "\u0426\u0432\u0435\u0442\u043e\u0432\u044b\u0435 \u0443\u0440\u043e\u0432\u043d\u0438", +"Crop": "\u041e\u0431\u0440\u0435\u0437\u0430\u0442\u044c", +"Orientation": "\u041e\u0440\u0438\u0435\u043d\u0442\u0430\u0446\u0438\u044f", +"Flip vertically": "\u041e\u0442\u0440\u0430\u0437\u0438\u0442\u044c \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0438", +"Invert": "\u0418\u043d\u0432\u0435\u0440\u0441\u0438\u044f", +"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0434\u0430\u0442\u0443\/\u0432\u0440\u0435\u043c\u044f", +"Remove link": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443", +"Url": "\u0410\u0434\u0440\u0435\u0441 \u0441\u0441\u044b\u043b\u043a\u0438", +"Search in MODX": "\u041f\u043e\u0438\u0441\u043a \u0441\u0440\u0435\u0434\u0438 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u043e\u0432 MODX", +"Text to display": "\u041e\u0442\u043e\u0431\u0440\u0430\u0436\u0430\u0435\u043c\u044b\u0439 \u0442\u0435\u043a\u0441\u0442", +"Anchors": "\u042f\u043a\u043e\u0440\u044f", +"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443", +"New window": "\u0412 \u043d\u043e\u0432\u043e\u043c \u043e\u043a\u043d\u0435", +"None": "\u041d\u0435\u0442", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u0432\u043d\u0435\u0448\u043d\u0435\u0439 \u0441\u0441\u044b\u043b\u043a\u043e\u0439. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abhttp:\/\/\u00bb?", +"Target": "\u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0412\u0432\u0435\u0434\u0451\u043d\u043d\u044b\u0439 URL \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u043c \u0430\u0434\u0440\u0435\u0441\u043e\u043c \u044d\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0439 \u043f\u043e\u0447\u0442\u044b. \u0412\u044b \u0436\u0435\u043b\u0430\u0435\u0442\u0435 \u0434\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u043f\u0440\u0435\u0444\u0438\u043a\u0441 \u00abmailto:\u00bb?", +"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0441\u044b\u043b\u043a\u0443", +"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c\/\u0440\u0435\u0434\u0430\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0438\u0434\u0435\u043e", +"Poster": "\u0418\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435", +"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u044b\u0439 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a", +"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u044c\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0435:", +"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0432\u0438\u0434\u0435\u043e", +"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438", +"Nonbreaking space": "\u041d\u0435\u0440\u0430\u0437\u0440\u044b\u0432\u043d\u044b\u0439 \u043f\u0440\u043e\u0431\u0435\u043b", +"Page break": "\u0420\u0430\u0437\u0440\u044b\u0432 \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u044b", +"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442", +"Preview": "\u041f\u0440\u0435\u0434\u043f\u0440\u043e\u0441\u043c\u043e\u0442\u0440", +"Print": "\u041f\u0435\u0447\u0430\u0442\u044c", +"Save": "\u0421\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c", +"Could not find the specified string.": "\u0417\u0430\u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0440\u043e\u043a\u0430 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d\u0430", +"Replace": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c", +"Next": "\u0412\u043d\u0438\u0437", +"Whole words": "\u0421\u043b\u043e\u0432\u043e \u0446\u0435\u043b\u0438\u043a\u043e\u043c", +"Find and replace": "\u041f\u043e\u0438\u0441\u043a \u0438 \u0437\u0430\u043c\u0435\u043d\u0430", +"Replace with": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u043d\u0430", +"Find": "\u041d\u0430\u0439\u0442\u0438", +"Replace all": "\u0417\u0430\u043c\u0435\u043d\u0438\u0442\u044c \u0432\u0441\u0435", +"Match case": "\u0423\u0447\u0438\u0442\u044b\u0432\u0430\u0442\u044c \u0440\u0435\u0433\u0438\u0441\u0442\u0440", +"Prev": "\u0412\u0432\u0435\u0440\u0445", +"Spellcheck": "\u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u043e\u043f\u0438\u0441\u0430\u043d\u0438\u0435", +"Finish": "\u0417\u0430\u043a\u043e\u043d\u0447\u0438\u0442\u044c", +"Ignore all": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0432\u0441\u0435", +"Ignore": "\u0418\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c", +"Add to Dictionary": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0432 \u0441\u043b\u043e\u0432\u0430\u0440\u044c", +"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443", +"Rows": "\u0421\u0442\u0440\u043e\u043a\u0438", +"Height": "\u0412\u044b\u0441\u043e\u0442\u0430", +"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443", +"Alignment": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435", +"Border color": "\u0426\u0432\u0435\u0442 \u0440\u0430\u043c\u043a\u0438", +"Column group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u043a\u043e\u043b\u043e\u043d\u043e\u043a", +"Row": "\u0421\u0442\u0440\u043e\u043a\u0430", +"Insert column before": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043b\u0435\u0432\u0430", +"Split cell": "\u0420\u0430\u0437\u0431\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0443", +"Cell padding": "\u0412\u043d\u0443\u0442\u0440\u0435\u043d\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f", +"Cell spacing": "\u0412\u043d\u0435\u0448\u043d\u0438\u0439 \u043e\u0442\u0441\u0442\u0443\u043f", +"Row type": "\u0422\u0438\u043f \u0441\u0442\u0440\u043e\u043a\u0438", +"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443", +"Body": "\u0422\u0435\u043b\u043e", +"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Footer": "\u041d\u0438\u0437", +"Delete row": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443", +"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u0432\u0435\u0440\u0445\u0443", +"Scope": "Scope", +"Delete table": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0442\u0430\u0431\u043b\u0438\u0446\u0443", +"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435", +"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u0443", +"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Column": "\u0421\u0442\u043e\u043b\u0431\u0435\u0446", +"Row group": "\u0413\u0440\u0443\u043f\u043f\u0430 \u0441\u0442\u0440\u043e\u043a", +"Cell": "\u042f\u0447\u0435\u0439\u043a\u0430", +"Middle": "\u041f\u043e \u0441\u0435\u0440\u0435\u0434\u0438\u043d\u0435", +"Cell type": "\u0422\u0438\u043f \u044f\u0447\u0435\u0439\u043a\u0438", +"Copy row": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443", +"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u0441\u0442\u0440\u043e\u043a\u0438", +"Table properties": "\u0421\u0432\u043e\u0439\u0441\u0442\u0432\u0430 \u0442\u0430\u0431\u043b\u0438\u0446\u044b", +"Bottom": "\u041f\u043e \u043d\u0438\u0437\u0443", +"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u043e\u0435 \u0432\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435", +"Header": "\u0428\u0430\u043f\u043a\u0430", +"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Insert column after": "\u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446 \u0441\u043f\u0440\u0430\u0432\u0430", +"Cols": "\u0421\u0442\u043e\u043b\u0431\u0446\u044b", +"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043f\u0443\u0441\u0442\u0443\u044e \u0441\u0442\u0440\u043e\u043a\u0443 \u0441\u043d\u0438\u0437\u0443", +"Width": "\u0428\u0438\u0440\u0438\u043d\u0430", +"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u044b \u044f\u0447\u0435\u0439\u043a\u0438", +"Left": "\u041f\u043e \u043b\u0435\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Cut row": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443", +"Delete column": "\u0423\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0442\u043e\u043b\u0431\u0435\u0446", +"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Merge cells": "\u041e\u0431\u044a\u0435\u0434\u0438\u043d\u0438\u0442\u044c \u044f\u0447\u0435\u0439\u043a\u0438", +"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u0448\u0430\u0431\u043b\u043e\u043d", +"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u044b", +"Background color": "\u0426\u0432\u0435\u0442 \u0444\u043e\u043d\u0430", +"Custom...": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c\u2026", +"Custom color": "\u041f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044c\u0441\u043a\u0438\u0439 \u0446\u0432\u0435\u0442", +"No color": "\u0411\u0435\u0437 \u0446\u0432\u0435\u0442\u0430", +"Text color": "\u0426\u0432\u0435\u0442 \u0442\u0435\u043a\u0441\u0442\u0430", +"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u0431\u043b\u043e\u043a\u0438", +"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u044b\u0435 \u0441\u0438\u043c\u0432\u043e\u043b\u044b", +"Words: {0}": "\u041a\u043e\u043b\u0438\u0447\u0435\u0441\u0442\u0432\u043e \u0441\u043b\u043e\u0432: {0}", +"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c", +"File": "\u0424\u0430\u0439\u043b", +"Edit": "\u0418\u0437\u043c\u0435\u043d\u0438\u0442\u044c", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u043e\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0436\u043c\u0438\u0442\u0435 ALT-F9 \u0447\u0442\u043e\u0431\u044b \u0432\u044b\u0437\u0432\u0430\u0442\u044c \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432, ALT-0 \u0434\u043b\u044f \u0432\u044b\u0437\u043e\u0432\u0430 \u043f\u043e\u043c\u043e\u0449\u0438.", +"Tools": "\u0418\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b", +"View": "\u0412\u0438\u0434", +"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u0430", +"Format": "\u0424\u043e\u0440\u043c\u0430\u0442" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/ru_RU.js b/assets/plugins/tinymce4/tinymce/langs/ru_RU.js new file mode 100755 index 0000000000..6b8321d1d9 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/ru_RU.js @@ -0,0 +1,54 @@ +tinymce.addI18n('ru_RU',{ +"Cut": "\u0412\u044b\u0440\u0435\u0437\u0430\u0442\u044c", +"Heading 5": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 5", +"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u043f\u0440\u044f\u043c\u043e\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u043a \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0435\u043d\u0430. \u0418\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0439\u0442\u0435, \u043f\u043e\u0436\u0430\u043b\u0443\u0439\u0441\u0442\u0430, Ctrl+X\/C\/V \u043d\u0430 \u043a\u043b\u0430\u0432\u0438\u0430\u0442\u0443\u0440\u0435.", +"Heading 4": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 4", +"Div": "Div", +"Heading 2": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 2", +"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c", +"Close": "\u0417\u0430\u043a\u0440\u044b\u0442\u044c", +"Font Family": "\u0428\u0440\u0438\u0444\u0442", +"Pre": "Pre", +"Align right": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043f\u0440\u0430\u0432\u0430", +"New document": "\u041d\u043e\u0432\u044b\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", +"Blockquote": "Blockquote", +"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Heading 1": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 1", +"Headings": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435", +"Increase indent": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f", +"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u044b", +"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438", +"Select all": "\u0412\u044b\u0431\u0440\u0430\u0442\u044c \u0432\u0441\u0451", +"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Blocks": "Blocks", +"Undo": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", +"Strikethrough": "\u0417\u0430\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439", +"Bullet list": "\u041c\u0430\u0440\u043a\u0438\u0440\u043e\u0432\u0430\u043d\u043d\u044b\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Superscript": "\u0421\u0443\u043f\u0435\u0440\u0441\u043a\u0440\u0438\u043f\u0442", +"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u044c \u0444\u043e\u0440\u043c\u0430\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435", +"Font Sizes": "\u0420\u0430\u0437\u043c\u0435\u0440\u044b \u0448\u0440\u0438\u0444\u0442\u043e\u0432", +"Subscript": "\u041f\u043e\u0434\u0441\u043a\u0440\u0438\u043f\u0442", +"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Redo": "\u041f\u043e\u0432\u0442\u043e\u0440\u0438\u0442\u044c", +"Paragraph": "Paragraph", +"Ok": "\u043e\u043a", +"Bold": "\u0416\u0438\u0440\u043d\u044b\u0439", +"Code": "Code", +"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432", +"Align center": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e-\u0446\u0435\u043d\u0442\u0440\u0443", +"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Heading 6": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 6", +"Heading 3": "\u0417\u0430\u0433\u043b\u0430\u0432\u0438\u0435 3", +"Decrease indent": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c \u043e\u0442\u0441\u0442\u0443\u043f", +"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u044c \u043a\u0430\u043a \u0447\u0438\u0441\u0442\u044b\u0439 \u0442\u0435\u043a\u0441\u0442. \u0421\u043e\u0434\u0435\u0440\u0436\u0438\u043c\u043e\u0435 \u0432\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044f \u043a\u0430\u043a \u0442\u0435\u043a\u0441\u0442, \u0434\u043e \u0442\u0435\u0445 \u043f\u043e\u0440, \u043f\u043e\u043a\u0430 \u0432\u043a\u043b\u044e\u0447\u0435\u043d\u0430 \u044d\u0442\u0430 \u043e\u043f\u0446\u0438\u044f", +"Underline": "\u041f\u043e\u0434\u0447\u0435\u0440\u043a\u043d\u0443\u0442\u044b\u0439", +"Cancel": "\u041e\u0442\u043c\u0435\u043d\u0438\u0442\u044c", +"Justify": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u043f\u043e \u0448\u0438\u0440\u0438\u043d\u0435", +"Inline": "Inline", +"Copy": "\u041a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u0442\u044c", +"Align left": "\u0412\u044b\u0440\u0430\u0432\u043d\u0438\u0432\u0430\u043d\u0438\u0435 \u0441\u043b\u0435\u0432\u0430", +"Visual aids": "\u0412\u0438\u0437\u0443\u0430\u043b\u044c\u043d\u044b\u0435 \u044d\u043b\u0435\u043c\u0435\u043d\u0442\u044b" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/sv_SE.js b/assets/plugins/tinymce4/tinymce/langs/sv_SE.js new file mode 100755 index 0000000000..86c753e5ce --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/sv_SE.js @@ -0,0 +1,219 @@ +tinymce.addI18n('sv_SE',{ +"Cut": "Klipp ut", +"Heading 5": "Rubrik 5", +"Header 2": "Rubrik 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Din browser st\u00f6djer inte direkt \u00e5tkomst till klippboken. V\u00e4nligen anv\u00e4nd kortkommandona Ctrl+X\/C\/V i st\u00e4llet.", +"Heading 4": "Rubrik 4", +"Div": "Div", +"Heading 2": "Rubrik 2", +"Paste": "Klistra in", +"Close": "St\u00e4ng", +"Font Family": "Teckensnitt", +"Pre": "F\u00f6rformaterad", +"Align right": "H\u00f6gerst\u00e4ll", +"New document": "Nytt dokument", +"Blockquote": "Blockcitat", +"Numbered list": "Nummerlista", +"Heading 1": "Rubrik 1", +"Headings": "Rubriker", +"Increase indent": "\u00d6ka indrag", +"Formats": "Format", +"Headers": "Rubriker", +"Select all": "Markera allt", +"Header 3": "Rubrik 3", +"Blocks": "Block", +"Undo": "\u00c5ngra", +"Strikethrough": "Genomstruken", +"Bullet list": "Punktlista", +"Header 1": "Rubrik 1", +"Superscript": "Upph\u00f6jd text", +"Clear formatting": "Avformatera", +"Font Sizes": "Storlek", +"Subscript": "Neds\u00e4nkt text", +"Header 6": "Rubrik 6", +"Redo": "G\u00f6r om", +"Paragraph": "Br\u00f6dtext", +"Ok": "Ok", +"Bold": "Fetstil", +"Code": "Kod", +"Italic": "Kursiv stil", +"Align center": "Centrera", +"Header 5": "Rubrik 5", +"Heading 6": "Rubrik 6", +"Heading 3": "Rubrik 3", +"Decrease indent": "Minska indrag", +"Header 4": "Rubrik 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Klistra in \u00e4r nu i textl\u00e4ge. Inneh\u00e5ll kommer att konverteras till text tills du sl\u00e5r av detta l\u00e4ge.", +"Underline": "Understruken", +"Cancel": "Avbryt", +"Justify": "Justera", +"Inline": "Inline", +"Copy": "Kopiera", +"Align left": "V\u00e4nsterst\u00e4ll", +"Visual aids": "Visuella hj\u00e4lpmedel", +"Lower Greek": "Grekiska gemener", +"Square": "Fyrkant", +"Default": "Original", +"Lower Alpha": "Gemener", +"Circle": "Cirkel", +"Disc": "Disk", +"Upper Alpha": "Versaler", +"Upper Roman": "Romerska versaler", +"Lower Roman": "Romerska gemener", +"Name": "Namn", +"Anchor": "Ankare", +"You have unsaved changes are you sure you want to navigate away?": "Du har f\u00f6r\u00e4ndringar som du inte har sparat. \u00c4r du s\u00e4ker p\u00e5 att du vill navigera vidare?", +"Restore last draft": "\u00c5terst\u00e4ll senaste utkast", +"Special character": "Specialtecken", +"Source code": "K\u00e4llkod", +"B": "B", +"R": "R", +"G": "G", +"Color": "F\u00e4rg", +"Right to left": "H\u00f6ger till v\u00e4nster", +"Left to right": "V\u00e4nster till h\u00f6ger", +"Emoticons": "Emoticons", +"Robots": "Robotar", +"Document properties": "Dokumentegenskaper", +"Title": "Titel", +"Keywords": "Nyckelord", +"Encoding": "Encoding", +"Description": "Beskrivning", +"Author": "F\u00f6rfattare", +"Fullscreen": "Fullsk\u00e4rm", +"Horizontal line": "Horisontell linje", +"Horizontal space": "Horisontellt utrymme", +"Insert\/edit image": "Infoga\/redigera bild", +"General": "Generella", +"Advanced": "Avancerat", +"Source": "K\u00e4lla", +"Border": "Ram", +"Constrain proportions": "Begr\u00e4nsa proportioner", +"Vertical space": "Vertikaltutrymme", +"Image description": "Bildbeskrivning", +"Style": "Stil", +"Dimensions": "Dimensioner", +"Insert image": "Infoga bild", +"Zoom in": "Zooma in", +"Contrast": "Kontrast", +"Back": "Tillbaka", +"Gamma": "Gamma", +"Flip horizontally": "Spegelv\u00e4nd horisontellt", +"Resize": "Skala om", +"Sharpen": "Sk\u00e4rpa", +"Zoom out": "Zooma ut", +"Image options": "Bild inst\u00e4llningar", +"Apply": "Applicera", +"Brightness": "Ljusstyrka", +"Rotate clockwise": "Rotera medurs", +"Rotate counterclockwise": "Rotera moturs", +"Edit image": "Redigera bild", +"Color levels": "F\u00e4rgniv\u00e5er", +"Crop": "Besk\u00e4r", +"Orientation": "Orientera", +"Flip vertically": "Spegelv\u00e4nd vertikalt", +"Invert": "Invertera", +"Insert date\/time": "Infoga datum\/tid", +"Remove link": "Ta bort l\u00e4nk", +"Url": "Url", +"Text to display": "Text att visa", +"Anchors": "Bokm\u00e4rken", +"Insert link": "Infoga l\u00e4nk", +"New window": "Nytt f\u00f6nster", +"None": "Ingen", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "Urlen du angav verkar vara en extern l\u00e4nk. Vill du l\u00e4gga till http:\/\/ prefixet?", +"Target": "M\u00e5l", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "Urlen du angav verkar vara en epost adress. Vill du l\u00e4gga till ett mailto: prefix?", +"Insert\/edit link": "Infoga\/redigera l\u00e4nk", +"Insert\/edit video": "Infoga\/redigera video", +"Poster": "Affish", +"Alternative source": "Alternativ k\u00e4lla", +"Paste your embed code below:": "Klistra in din inb\u00e4ddningskod nedan:", +"Insert video": "Infoga video", +"Embed": "Inb\u00e4ddning", +"Nonbreaking space": "Avbrottsfritt mellanrum", +"Page break": "Sydbrytning", +"Paste as text": "Klistra in som text", +"Preview": "F\u00f6rhandsgranska", +"Print": "Skriv ut", +"Save": "Spara", +"Could not find the specified string.": "Kunde inte hitta den specifierade st\u00e4ngen.", +"Replace": "Ers\u00e4tt", +"Next": "N\u00e4sta", +"Whole words": "Hela ord", +"Find and replace": "S\u00f6k och ers\u00e4tt", +"Replace with": "Ers\u00e4tt med", +"Find": "S\u00f6k", +"Replace all": "Ers\u00e4tt alla", +"Match case": "Matcha gemener\/versaler", +"Prev": "F\u00f6reg\u00e5ende", +"Spellcheck": "R\u00e4ttstava", +"Finish": "Avsluta", +"Ignore all": "Ignorera alla", +"Ignore": "Ignorera", +"Add to Dictionary": "L\u00e4gg till i ordlista", +"Insert row before": "Infoga rad f\u00f6re", +"Rows": "Rader", +"Height": "H\u00f6jd", +"Paste row after": "Klistra in rad efter", +"Alignment": "Justering", +"Border color": "Ramf\u00e4rg", +"Column group": "Kolumngrupp", +"Row": "Rad", +"Insert column before": "Infoga kolumn f\u00f6re", +"Split cell": "Bryt is\u00e4r celler", +"Cell padding": "Cellpaddning", +"Cell spacing": "Cellmellanrum", +"Row type": "Radtyp", +"Insert table": "Infoga tabell", +"Body": "Kropp", +"Caption": "Rubrik", +"Footer": "Fot", +"Delete row": "Radera rad", +"Paste row before": "Klista in rad f\u00f6re", +"Scope": "Omf\u00e5ng", +"Delete table": "Radera tabell", +"H Align": "H-justering", +"Top": "Toppen", +"Header cell": "Huvudcell", +"Column": "Kolumn", +"Row group": "Radgrupp", +"Cell": "Cell", +"Middle": "Mitten", +"Cell type": "Celltyp", +"Copy row": "Kopiera rad", +"Row properties": "Radegenskaper", +"Table properties": "Tabellegenskaper", +"Bottom": "Botten", +"V Align": "V-justering", +"Header": "Huvud", +"Right": "H\u00f6ger", +"Insert column after": "Infoga kolumn efter", +"Cols": "Kolumner", +"Insert row after": "Infoga rad efter", +"Width": "Bredd", +"Cell properties": "Cellegenskaper", +"Left": "V\u00e4nster", +"Cut row": "Klipp ut rad", +"Delete column": "Radera kolumn", +"Center": "Centrum", +"Merge cells": "Sammanfoga celler", +"Insert template": "Infoga mall", +"Templates": "Mallar", +"Background color": "Bakgrundsf\u00e4rg", +"Custom...": "Anpassad...", +"Custom color": "Anpassad f\u00e4rg", +"No color": "Ingen f\u00e4rg", +"Text color": "Textf\u00e4rg", +"Show blocks": "Visa block", +"Show invisible characters": "Visa onsynliga tecken", +"Words: {0}": "Ord: {0}", +"Insert": "Infoga", +"File": "Fil", +"Edit": "Redigera", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Textredigerare. Tryck ALT-F9 f\u00f6r menyn. Tryck ALT-F10 f\u00f6r verktygsrader. Tryck ALT-0 f\u00f6r hj\u00e4lp.", +"Tools": "Verktyg", +"View": "Visa", +"Table": "Tabell", +"Format": "Format" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/uk.js b/assets/plugins/tinymce4/tinymce/langs/uk.js new file mode 100755 index 0000000000..94c1402e7e --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/uk.js @@ -0,0 +1,219 @@ +tinymce.addI18n('uk',{ +"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438", +"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0443 \u043e\u0431\u043c\u0456\u043d\u0443. \u0411\u0443\u0434\u044c \u043b\u0430\u0441\u043a\u0430, \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 Ctrl+X\/C\/V \u0437\u0430\u043c\u0456\u0441\u0442\u044c \u0441\u043f\u043e\u043b\u0443\u0447\u0435\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448.", +"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Div": "\u0411\u043b\u043e\u043a", +"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438", +"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438", +"Font Family": "\u0428\u0440\u0438\u0444\u0442 \u0437\u043c\u0456\u0441\u0442\u0443", +"Pre": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0454 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f", +"Align right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", +"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430", +"Numbered list": "\u041d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f", +"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438", +"Headers": "Headers", +"Select all": "\u0412\u0438\u0434\u0456\u043b\u0438\u0442\u0438 \u0432\u0441\u0435", +"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Blocks": "\u0411\u043b\u043e\u043a\u0438", +"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438", +"Strikethrough": "\u0417\u0430\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439", +"Bullet list": "\u041d\u0435\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", +"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f", +"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0443", +"Subscript": "\u041d\u0438\u0436\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", +"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Redo": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438", +"Paragraph": "\u041f\u0430\u0440\u0430\u0433\u0440\u0430\u0444", +"Ok": "\u0413\u0430\u0440\u0430\u0437\u0434", +"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439", +"Code": "\u041a\u043e\u0434", +"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432", +"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f", +"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0434\u0456\u0439\u0441\u043d\u044e\u0454\u0442\u044c\u0441\u044f \u0443 \u0432\u0438\u0433\u043b\u044f\u0434\u0456 \u043f\u0440\u043e\u0441\u0442\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443, \u043f\u043e\u043a\u0438 \u043d\u0435 \u0432\u0456\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u0438 \u0434\u0430\u043d\u0443 \u043e\u043f\u0446\u0456\u044e.", +"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439", +"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438", +"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Inline": "\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0456", +"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438", +"Align left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Visual aids": "\u041d\u0430\u043e\u0447\u043d\u0456 \u043f\u0440\u0438\u043b\u0430\u0434\u0434\u044f", +"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438", +"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442\u0438", +"Default": "\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u0438\u0439", +"Lower Alpha": "\u041c\u0430\u043b\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438", +"Circle": "\u041e\u043a\u0440\u0443\u0436\u043d\u043e\u0441\u0442\u0456", +"Disc": "\u041a\u0440\u0443\u0433\u0438", +"Upper Alpha": "\u0412\u0435\u043b\u0438\u043a\u0456 \u043b\u0430\u0442\u0438\u043d\u0441\u044c\u043a\u0456 \u0431\u0443\u043a\u0432\u0438", +"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438", +"Lower Roman": "\u041c\u0430\u043b\u0456 \u0440\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438", +"Name": "\u041d\u0430\u0437\u0432\u0430", +"Anchor": "\u042f\u043a\u0456\u0440", +"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0412\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438?", +"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u043b\u0435\u043d\u043d\u044f \u043e\u0441\u0442\u0430\u043d\u043d\u044c\u043e\u0433\u043e \u043f\u0440\u043e\u0435\u043a\u0442\u0443", +"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438", +"Source code": "\u0412\u0438\u0445\u0456\u0434\u043d\u0438\u0439 \u043a\u043e\u0434", +"B": "B", +"R": "R", +"G": "G", +"Color": "\u043a\u043e\u043b\u0456\u0440", +"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e", +"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e", +"Emoticons": "\u0415\u043c\u043e\u0446\u0456\u0457", +"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438", +"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430", +"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430", +"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f", +"Description": "\u041e\u043f\u0438\u0441", +"Author": "\u0410\u0432\u0442\u043e\u0440", +"Fullscreen": "\u041f\u043e\u0432\u043d\u043e\u0435\u043a\u0440\u0430\u043d\u043d\u0438\u0439 \u0440\u0435\u0436\u0438\u043c", +"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f", +"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b", +"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0437\u043c\u0456\u043d\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0456", +"Advanced": "\u0420\u043e\u0437\u0448\u0438\u0440\u0435\u043d\u0456", +"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e", +"Border": "\u041c\u0435\u0436\u0430", +"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457", +"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u0456\u043d\u0442\u0435\u0440\u0432\u0430\u043b", +"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Style": "\u0421\u0442\u0438\u043b\u044c", +"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440", +"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Zoom in": "\u041d\u0430\u0431\u043b\u0438\u0437\u0438\u0442\u0438", +"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442", +"Back": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f", +"Gamma": "\u0413\u0430\u043c\u043c\u0430", +"Flip horizontally": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0456", +"Resize": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440", +"Sharpen": "\u0427\u0456\u0442\u043a\u0456\u0441\u0442\u044c", +"Zoom out": "\u0412\u0456\u0434\u0434\u0430\u043b\u0438\u0442\u0438", +"Image options": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Apply": "\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438", +"Brightness": "\u042f\u0441\u043a\u0440\u0430\u0432\u0456\u0441\u0442\u044c", +"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u0437\u0430 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u044e \u0441\u0442\u0440\u0456\u043b\u043a\u043e\u044e", +"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u043f\u0440\u043e\u0442\u0438 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u0457 \u0441\u0442\u0440\u0456\u043b\u043a\u0438", +"Edit image": "\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Color levels": "\u0420\u0456\u0432\u043d\u0456 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432", +"Crop": "\u041e\u0431\u0440\u0456\u0437\u0430\u0442\u0438", +"Orientation": "\u041e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u044f", +"Flip vertically": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0456", +"Invert": "\u0406\u043d\u0432\u0435\u0440\u0441\u0456\u044f", +"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441", +"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"Url": "\u0410\u0434\u0440\u0435\u0441\u0430 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Anchors": "\u042f\u043a\u043e\u0440\u0456", +"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"New window": "\u0423 \u043d\u043e\u0432\u043e\u043c\u0443 \u0432\u0456\u043a\u043d\u0456", +"None": "\u041d\u0456", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 http:\/\/ \u043f\u0440\u0435\u0444\u0456\u043a\u0441?", +"Target": "\u0412\u0456\u0434\u043a\u0440\u0438\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 mailto: \u043f\u0440\u0435\u0444\u0456\u043a\u0441?", +"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e", +"Poster": "\u0417\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e", +"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:", +"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e", +"Embed": "\u041a\u043e\u0434 \u0434\u043b\u044f \u0432\u0441\u0442\u0430\u0432\u043a\u0438", +"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u0431\u0456\u043b", +"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438", +"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442", +"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434", +"Print": "\u0414\u0440\u0443\u043a\u0443\u0432\u0430\u0442\u0438", +"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438", +"Could not find the specified string.": "\u0412\u043a\u0430\u0437\u0430\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a \u043d\u0435 \u0437\u043d\u0430\u0439\u0434\u0435\u043d\u043e", +"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438", +"Next": "\u0412\u043d\u0438\u0437", +"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430", +"Find and replace": "\u041f\u043e\u0448\u0443\u043a \u0456 \u0437\u0430\u043c\u0456\u043d\u0430", +"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430", +"Find": "\u0417\u043d\u0430\u0439\u0442\u0438", +"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435", +"Match case": "\u0412\u0440\u0430\u0445\u043e\u0432\u0443\u0432\u0430\u0442\u0438 \u0440\u0435\u0433\u0456\u0441\u0442\u0440", +"Prev": "\u0412\u0433\u043e\u0440\u0443", +"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457", +"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438", +"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435", +"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438", +"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0434\u043e \u0421\u043b\u043e\u0432\u043d\u0438\u043a\u0430", +"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443", +"Rows": "\u0420\u044f\u0434\u043a\u0438", +"Height": "\u0412\u0438\u0441\u043e\u0442\u0430", +"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443", +"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Border color": "\u043a\u043e\u043b\u0456\u0440 \u0440\u0430\u043c\u043a\u0438", +"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432", +"Row": "\u0420\u044f\u0434\u043e\u043a", +"Insert column before": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043b\u0456\u0432\u043e\u0440\u0443\u0447", +"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443", +"Cell padding": "\u041f\u043e\u043b\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a", +"Cell spacing": "\u0412\u0456\u0434\u0441\u0442\u0430\u043d\u044c \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438", +"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430", +"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e", +"Body": "\u0422\u0456\u043b\u043e", +"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b", +"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a", +"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u0437\u0432\u0435\u0440\u0445\u0443", +"Scope": "\u0421\u0444\u0435\u0440\u0430", +"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e", +"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Header cell": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c", +"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432", +"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430", +"Middle": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438", +"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a", +"Row properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u0440\u044f\u0434\u043a\u0430", +"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456", +"Bottom": "\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b", +"Right": "\u041f\u043e \u043f\u0440\u0430\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Insert column after": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0440\u0430\u0432\u043e\u0440\u0443\u0447", +"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456", +"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0440\u043e\u0436\u043d\u0456\u0439 \u0440\u044f\u0434\u043e\u043a \u0437\u043d\u0438\u0437\u0443", +"Width": "\u0428\u0438\u0440\u0438\u043d\u0430", +"Cell properties": "\u041f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438", +"Left": "\u041f\u043e \u043b\u0456\u0432\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a", +"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c", +"Center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438", +"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d", +"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438", +"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443", +"Custom...": "\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439", +"Custom color": "\u043a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u043a\u043e\u043b\u0456\u0440", +"No color": "\u0431\u0435\u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u0443", +"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443", +"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438", +"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0443\u0432\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438", +"Words: {0}": "\u041a\u0456\u043b\u044c\u043a\u0456\u0441\u0442\u044c \u0441\u043b\u0456\u0432: {0}", +"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438", +"File": "\u0424\u0430\u0439\u043b", +"Edit": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u0422\u0435\u043a\u0441\u0442\u043e\u0432\u0435 \u043f\u043e\u043b\u0435. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 \u0449\u043e\u0431 \u0432\u0438\u043a\u043b\u0438\u043a\u0430\u0442\u0438 \u043c\u0435\u043d\u044e, ALT-F10 \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432, ALT-0 \u0434\u043b\u044f \u0432\u0438\u043a\u043b\u0438\u043a\u0443 \u0434\u043e\u043f\u043e\u043c\u043e\u0433\u0438.", +"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438", +"View": "\u0412\u0438\u0433\u043b\u044f\u0434", +"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f", +"Format": "\u0424\u043e\u0440\u043c\u0430\u0442" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/uk_UA.js b/assets/plugins/tinymce4/tinymce/langs/uk_UA.js new file mode 100755 index 0000000000..d04d56c573 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/uk_UA.js @@ -0,0 +1,219 @@ +tinymce.addI18n('uk_UA',{ +"Cut": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438", +"Heading 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Header 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u0412\u0430\u0448 \u0431\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u0456\u0434\u0442\u0440\u0438\u043c\u0443\u0454 \u043f\u0440\u044f\u043c\u0438\u0439 \u0434\u043e\u0441\u0442\u0443\u043f \u0434\u043e \u0431\u0443\u0444\u0435\u0440\u0430 \u043e\u0431\u043c\u0456\u043d\u0443. \u0417\u0430\u043c\u0456\u0441\u0442\u044c \u0446\u044c\u043e\u0433\u043e \u0432\u0438\u043a\u043e\u0440\u0438\u0441\u0442\u043e\u0432\u0443\u0439\u0442\u0435 \u043f\u043e\u0454\u0434\u043d\u0430\u043d\u043d\u044f \u043a\u043b\u0430\u0432\u0456\u0448 Ctrl + X\/C\/V.", +"Heading 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Div": "Div", +"Heading 2": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 2", +"Paste": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438", +"Close": "\u0417\u0430\u043a\u0440\u0438\u0442\u0438", +"Font Family": "\u0428\u0440\u0438\u0444\u0442", +"Pre": "Pre", +"Align right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447", +"New document": "\u041d\u043e\u0432\u0438\u0439 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442", +"Blockquote": "\u0426\u0438\u0442\u0430\u0442\u0430", +"Numbered list": "\u041f\u0440\u043e\u043d\u0443\u043c\u0435\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Heading 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Headings": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438", +"Increase indent": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f", +"Formats": "\u0424\u043e\u0440\u043c\u0430\u0442\u0438", +"Headers": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0438", +"Select all": "\u0412\u0438\u0431\u0435\u0440\u0456\u0442\u044c \u0443\u0441\u0435", +"Header 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Blocks": "\u0411\u043b\u043e\u043a\u0438", +"Undo": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438", +"Strikethrough": "\u041f\u0435\u0440\u0435\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439", +"Bullet list": "\u041c\u0430\u0440\u043a\u0456\u0440\u043e\u0432\u0430\u043d\u0438\u0439 \u0441\u043f\u0438\u0441\u043e\u043a", +"Header 1": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 1", +"Superscript": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0456\u043d\u0434\u0435\u043a\u0441", +"Clear formatting": "\u041e\u0447\u0438\u0441\u0442\u0438\u0442\u0438 \u0444\u043e\u0440\u043c\u0430\u0442\u0443\u0432\u0430\u043d\u043d\u044f", +"Font Sizes": "\u0420\u043e\u0437\u043c\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0430", +"Subscript": "\u0406\u043d\u0434\u0435\u043a\u0441", +"Header 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Redo": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438", +"Paragraph": "\u0410\u0431\u0437\u0430\u0446", +"Ok": "Ok", +"Bold": "\u0416\u0438\u0440\u043d\u0438\u0439", +"Code": "\u041a\u043e\u0434", +"Italic": "\u041a\u0443\u0440\u0441\u0438\u0432", +"Align center": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Header 5": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 5", +"Heading 6": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 6", +"Heading 3": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 3", +"Decrease indent": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438 \u0432\u0456\u0434\u0441\u0442\u0443\u043f", +"Header 4": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u0412\u0441\u0442\u0430\u0432\u043a\u0430 \u0437\u0430\u0440\u0430\u0437 \u0432 \u0440\u0435\u0436\u0438\u043c\u0456 \u0437\u0432\u0438\u0447\u0430\u0439\u043d\u043e\u0433\u043e \u0442\u0435\u043a\u0441\u0442\u0443. \u0417\u043c\u0456\u0441\u0442 \u0431\u0443\u0434\u0435 \u0432\u0441\u0442\u0430\u0432\u043b\u0435\u043d\u0438\u0439 \u044f\u043a \u043f\u0440\u043e\u0441\u0442\u0438\u0439 \u0442\u0435\u043a\u0441\u0442, \u043f\u043e\u043a\u0438 \u0412\u0438 \u043d\u0435 \u0432\u0438\u043c\u043a\u043d\u0435\u0442\u0435 \u0446\u044e \u043e\u043f\u0446\u0456\u044e.", +"Underline": "\u041f\u0456\u0434\u043a\u0440\u0435\u0441\u043b\u0435\u043d\u0438\u0439", +"Cancel": "\u0412\u0456\u0434\u043c\u0456\u043d\u0438\u0442\u0438", +"Justify": "\u0412\u0438\u0440\u0456\u0432\u043d\u044f\u0442\u0438", +"Inline": "\u0412\u0431\u0443\u0434\u043e\u0432\u0430\u043d\u0438\u0439", +"Copy": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438", +"Align left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447", +"Visual aids": "\u0412\u0456\u0437\u0443\u0430\u043b\u044c\u043d\u0456 \u0437\u0430\u0441\u043e\u0431\u0438", +"Lower Greek": "\u041c\u0430\u043b\u0456 \u0433\u0440\u0435\u0446\u044c\u043a\u0456 \u043b\u0456\u0442\u0435\u0440\u0438", +"Square": "\u041a\u0432\u0430\u0434\u0440\u0430\u0442", +"Default": "\u0423\u043c\u043e\u0432\u0447\u0430\u043d\u043d\u044f", +"Lower Alpha": "\u041d\u0438\u0436\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440", +"Circle": "\u041a\u043e\u043b\u043e", +"Disc": "\u0414\u0438\u0441\u043a", +"Upper Alpha": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u0440\u0435\u0433\u0456\u0441\u0442\u0440", +"Upper Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438 \u0443 \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456", +"Lower Roman": "\u0420\u0438\u043c\u0441\u044c\u043a\u0456 \u0446\u0438\u0444\u0440\u0438 \u0443 \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0456", +"Name": "\u0406\u043c'\u044f", +"Anchor": "\u041f\u0440\u0438\u0432'\u044f\u0437\u043a\u0430", +"You have unsaved changes are you sure you want to navigate away?": "\u0423 \u0432\u0430\u0441 \u0454 \u043d\u0435\u0437\u0431\u0435\u0440\u0435\u0436\u0435\u043d\u0456 \u0437\u043c\u0456\u043d\u0438. \u0412\u0438 \u0432\u043f\u0435\u0432\u043d\u0435\u043d\u0456, \u0449\u043e \u0445\u043e\u0447\u0435\u0442\u0435 \u043f\u0456\u0442\u0438 ?", +"Restore last draft": "\u0412\u0456\u0434\u043d\u043e\u0432\u0438\u0442\u0438 \u043e\u0441\u0442\u0430\u043d\u043d\u0456\u0439 \u043f\u0440\u043e\u0435\u043a\u0442", +"Special character": "\u0421\u043f\u0435\u0446\u0456\u0430\u043b\u044c\u043d\u0438\u0439 \u0441\u0438\u043c\u0432\u043e\u043b", +"Source code": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e", +"B": "B", +"R": "R", +"G": "G", +"Color": "\u041a\u043e\u043b\u0456\u0440", +"Right to left": "\u0421\u043f\u0440\u0430\u0432\u0430 \u043d\u0430\u043b\u0456\u0432\u043e", +"Left to right": "\u0417\u043b\u0456\u0432\u0430 \u043d\u0430\u043f\u0440\u0430\u0432\u043e", +"Emoticons": "\u0421\u043c\u0430\u0439\u043b\u0438", +"Robots": "\u0420\u043e\u0431\u043e\u0442\u0438", +"Document properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0443", +"Title": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Keywords": "\u041a\u043b\u044e\u0447\u043e\u0432\u0456 \u0441\u043b\u043e\u0432\u0430", +"Encoding": "\u041a\u043e\u0434\u0443\u0432\u0430\u043d\u043d\u044f", +"Description": "\u041e\u043f\u0438\u0441", +"Author": "\u0410\u0432\u0442\u043e\u0440", +"Fullscreen": "\u041d\u0430 \u0432\u0435\u0441\u044c \u0435\u043a\u0440\u0430\u043d", +"Horizontal line": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0430 \u043b\u0456\u043d\u0456\u044f", +"Horizontal space": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a", +"Insert\/edit image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"General": "\u0417\u0430\u0433\u0430\u043b\u044c\u043d\u0435", +"Advanced": "\u0414\u043e\u0434\u0430\u0442\u043a\u043e\u0432\u043e", +"Source": "\u0414\u0436\u0435\u0440\u0435\u043b\u043e", +"Border": "\u041c\u0435\u0436\u0430", +"Constrain proportions": "\u0417\u0431\u0435\u0440\u0456\u0433\u0430\u0442\u0438 \u043f\u0440\u043e\u043f\u043e\u0440\u0446\u0456\u0457", +"Vertical space": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a", +"Image description": "\u041e\u043f\u0438\u0441 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Style": "\u0421\u0442\u0438\u043b\u044c", +"Dimensions": "\u0420\u043e\u0437\u043c\u0456\u0440", +"Insert image": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Zoom in": "\u0417\u0431\u0456\u043b\u044c\u0448\u0438\u0442\u0438", +"Contrast": "\u041a\u043e\u043d\u0442\u0440\u0430\u0441\u0442", +"Back": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438\u0441\u044f", +"Gamma": "\u0413\u0430\u043c\u043c\u0430", +"Flip horizontally": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0433\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u0456", +"Resize": "\u0417\u043c\u0456\u043d\u0438\u0442\u0438 \u0440\u043e\u0437\u043c\u0456\u0440", +"Sharpen": "\u0427\u0456\u0442\u043a\u0456\u0441\u0442\u044c", +"Zoom out": "\u0417\u043c\u0435\u043d\u0448\u0438\u0442\u0438", +"Image options": "\u041d\u0430\u043b\u0430\u0448\u0442\u0443\u0432\u0430\u043d\u043d\u044f \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Apply": "\u0417\u0430\u0441\u0442\u043e\u0441\u0443\u0432\u0430\u0442\u0438", +"Brightness": "\u042f\u0441\u043a\u0440\u0430\u0432\u0456\u0441\u0442\u044c", +"Rotate clockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u0437\u0430 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u044e \u0441\u0442\u0440\u0456\u043b\u043a\u043e\u044e", +"Rotate counterclockwise": "\u041f\u043e\u0432\u0435\u0440\u043d\u0443\u0442\u0438 \u043f\u0440\u043e\u0442\u0438 \u0433\u043e\u0434\u0438\u043d\u043d\u0438\u043a\u043e\u0432\u043e\u0457 \u0441\u0442\u0440\u0456\u043b\u043a\u0438", +"Edit image": "\u0420\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Color levels": "\u0420\u0456\u0432\u043d\u0456 \u043a\u043e\u043b\u044c\u043e\u0440\u0456\u0432", +"Crop": "\u041e\u0431\u0440\u0456\u0437\u0430\u0442\u0438", +"Orientation": "\u041e\u0440\u0456\u0454\u043d\u0442\u0430\u0446\u0456\u044f", +"Flip vertically": "\u0412\u0456\u0434\u043e\u0431\u0440\u0430\u0437\u0438\u0442\u0438 \u043f\u043e \u0432\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u0456", +"Invert": "\u0406\u043d\u0432\u0435\u0440\u0441\u0456\u044f", +"Insert date\/time": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0434\u0430\u0442\u0443\/\u0447\u0430\u0441", +"Remove link": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"Url": "URL", +"Text to display": "\u0422\u0435\u043a\u0441\u0442 \u0434\u043b\u044f \u0432\u0456\u0434\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u043d\u044f", +"Anchors": "\u042f\u043a\u043e\u0440\u044f", +"Insert link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"New window": "\u041d\u043e\u0432\u0435 \u0432\u0456\u043a\u043d\u043e", +"None": "\u041d\u0456", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0437\u043e\u0432\u043d\u0456\u0448\u043d\u0454 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 http:\/\/ \u043f\u0440\u0435\u0444\u0456\u043a\u0441?", +"Target": "\u041c\u0435\u0442\u0430", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u0421\u0445\u043e\u0436\u0435, \u0449\u043e \u0432\u0438 \u0432\u0432\u0435\u043b\u0438 \u0430\u0434\u0440\u0435\u0441\u0443 \u0435\u043b\u0435\u043a\u0442\u0440\u043e\u043d\u043d\u043e\u0457 \u043f\u043e\u0448\u0442\u0438. \u0412\u0438 \u0431\u0430\u0436\u0430\u0454\u0442\u0435 \u0434\u043e\u0434\u0430\u0442\u0438 \u043f\u0440\u0435\u0444\u0456\u043a\u0441 mailto:?", +"Insert\/edit link": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u043f\u043e\u0441\u0438\u043b\u0430\u043d\u043d\u044f", +"Insert\/edit video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438\/\u0440\u0435\u0434\u0430\u0433\u0443\u0432\u0430\u0442\u0438 \u0432\u0456\u0434\u0435\u043e", +"Poster": "\u041f\u043b\u0430\u043a\u0430\u0442", +"Alternative source": "\u0410\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u043d\u0435 \u0434\u0436\u0435\u0440\u0435\u043b\u043e", +"Paste your embed code below:": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0432\u0430\u0448 \u043a\u043e\u0434 \u043d\u0438\u0436\u0447\u0435:", +"Insert video": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0432\u0456\u0434\u0435\u043e", +"Embed": "\u0412\u043f\u0440\u043e\u0432\u0430\u0434\u0438\u0442\u0438", +"Nonbreaking space": "\u041d\u0435\u0440\u043e\u0437\u0440\u0438\u0432\u043d\u0438\u0439 \u043f\u0440\u043e\u043f\u0443\u0441\u043a", +"Page break": "\u0420\u043e\u0437\u0440\u0438\u0432 \u0441\u0442\u043e\u0440\u0456\u043d\u043a\u0438", +"Paste as text": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u044f\u043a \u0442\u0435\u043a\u0441\u0442", +"Preview": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439 \u043f\u0435\u0440\u0435\u0433\u043b\u044f\u0434", +"Print": "\u0414\u0440\u0443\u043a", +"Save": "\u0417\u0431\u0435\u0440\u0435\u0433\u0442\u0438", +"Could not find the specified string.": "\u041d\u0435 \u0432\u0434\u0430\u043b\u043e\u0441\u044f \u0437\u043d\u0430\u0439\u0442\u0438 \u0437\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0439 \u0440\u044f\u0434\u043e\u043a.", +"Replace": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438", +"Next": "\u041d\u0430\u0441\u0442\u0443\u043f\u043d\u0438\u0439", +"Whole words": "\u0426\u0456\u043b\u0456 \u0441\u043b\u043e\u0432\u0430", +"Find and replace": "\u0417\u043d\u0430\u0439\u0442\u0438 \u0456 \u0437\u0430\u043c\u0456\u043d\u0438\u0442\u0438", +"Replace with": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u043d\u0430", +"Find": "\u0417\u043d\u0430\u0439\u0442\u0438", +"Replace all": "\u0417\u0430\u043c\u0456\u043d\u0438\u0442\u0438 \u0432\u0441\u0435", +"Match case": "\u0417 \u0443\u0440\u0430\u0445\u0443\u0432\u0430\u043d\u043d\u044f\u043c \u0440\u0435\u0433\u0456\u0441\u0442\u0440\u0443", +"Prev": "\u041f\u043e\u043f\u0435\u0440\u0435\u0434\u043d\u0456\u0439", +"Spellcheck": "\u041f\u0435\u0440\u0435\u0432\u0456\u0440\u043a\u0430 \u043e\u0440\u0444\u043e\u0433\u0440\u0430\u0444\u0456\u0457", +"Finish": "\u0417\u0430\u0432\u0435\u0440\u0448\u0438\u0442\u0438", +"Ignore all": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438 \u0432\u0441\u0435", +"Ignore": "\u0406\u0433\u043d\u043e\u0440\u0443\u0432\u0430\u0442\u0438", +"Add to Dictionary": "\u0414\u043e\u0434\u0430\u0442\u0438 \u0432 \u0441\u043b\u043e\u0432\u043d\u0438\u043a", +"Insert row before": "\u0412\u0441\u0442\u0430\u0432\u0442\u0435 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434", +"Rows": "\u0420\u044f\u0434\u043a\u0438", +"Height": "\u0412\u0438\u0441\u043e\u0442\u0430", +"Paste row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f", +"Alignment": "\u0412\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Border color": "\u041a\u043e\u043b\u0456\u0440 \u043c\u0435\u0436\u0456", +"Column group": "\u0413\u0440\u0443\u043f\u0430 \u0441\u0442\u043e\u0432\u043f\u0446\u0456\u0432", +"Row": "\u0420\u044f\u0434\u043e\u043a", +"Insert column before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0435\u0440\u0435\u0434", +"Split cell": "\u0420\u043e\u0437\u0431\u0438\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0443", +"Cell padding": "\u0417\u0430\u043f\u043e\u0432\u043d\u0435\u043d\u043d\u044f \u043a\u043e\u043c\u0456\u0440\u043e\u043a", +"Cell spacing": "\u0406\u043d\u0442\u0435\u0440\u0432\u0430\u043b \u043c\u0456\u0436 \u043a\u043e\u043c\u0456\u0440\u043a\u0430\u043c\u0438", +"Row type": "\u0422\u0438\u043f \u0440\u044f\u0434\u043a\u0430", +"Insert table": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e", +"Body": "\u0422\u0456\u043b\u043e", +"Caption": "\u0417\u0430\u0433\u043e\u043b\u043e\u0432\u043e\u043a", +"Footer": "\u041d\u0438\u0436\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b", +"Delete row": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a", +"Paste row before": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0435\u0440\u0435\u0434", +"Scope": "\u0423 \u043c\u0435\u0436\u0430\u0445", +"Delete table": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0442\u0430\u0431\u043b\u0438\u0446\u044e", +"H Align": "\u0413\u043e\u0440\u0438\u0437\u043e\u043d\u0442\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Top": "\u041f\u043e \u0432\u0435\u0440\u0445\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"Header cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430 \u0437\u0430\u0433\u043e\u043b\u043e\u0432\u043a\u0443", +"Column": "\u0421\u0442\u043e\u0432\u043f\u0435\u0446\u044c", +"Row group": "\u0413\u0440\u0443\u043f\u0430 \u0440\u044f\u0434\u043a\u0456\u0432", +"Cell": "\u041a\u043e\u043c\u0456\u0440\u043a\u0430", +"Middle": "\u041f\u043e \u0446\u0435\u043d\u0442\u0440\u0443", +"Cell type": "\u0422\u0438\u043f \u043a\u043e\u043c\u0456\u0440\u043a\u0438", +"Copy row": "\u041a\u043e\u043f\u0456\u044e\u0432\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a", +"Row properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0440\u044f\u0434\u043a\u0430", +"Table properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u0442\u0430\u0431\u043b\u0438\u0446\u0456", +"Bottom": "\u041f\u043e \u043d\u0438\u0436\u043d\u044c\u043e\u043c\u0443 \u043a\u0440\u0430\u044e", +"V Align": "\u0412\u0435\u0440\u0442\u0438\u043a\u0430\u043b\u044c\u043d\u0435 \u0432\u0438\u0440\u0456\u0432\u043d\u044e\u0432\u0430\u043d\u043d\u044f", +"Header": "\u0412\u0435\u0440\u0445\u043d\u0456\u0439 \u043a\u043e\u043b\u043e\u043d\u0442\u0438\u0442\u0443\u043b", +"Right": "\u041f\u0440\u0430\u0432\u043e\u0440\u0443\u0447", +"Insert column after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c \u043f\u0456\u0441\u043b\u044f", +"Cols": "\u0421\u0442\u043e\u0432\u043f\u0446\u0456", +"Insert row after": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0440\u044f\u0434\u043e\u043a \u043f\u0456\u0441\u043b\u044f", +"Width": "\u0428\u0438\u0440\u0438\u043d\u0430", +"Cell properties": "\u0412\u043b\u0430\u0441\u0442\u0438\u0432\u043e\u0441\u0442\u0456 \u043a\u043e\u043c\u0456\u0440\u043a\u0438", +"Left": "\u041b\u0456\u0432\u043e\u0440\u0443\u0447", +"Cut row": "\u0412\u0438\u0440\u0456\u0437\u0430\u0442\u0438 \u0440\u044f\u0434\u043e\u043a", +"Delete column": "\u0412\u0438\u0434\u0430\u043b\u0438\u0442\u0438 \u0441\u0442\u043e\u0432\u043f\u0435\u0446\u044c", +"Center": "\u0426\u0435\u043d\u0442\u0440", +"Merge cells": "\u041e\u0431'\u0454\u0434\u043d\u0430\u0442\u0438 \u043a\u043e\u043c\u0456\u0440\u043a\u0438", +"Insert template": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438 \u0448\u0430\u0431\u043b\u043e\u043d", +"Templates": "\u0428\u0430\u0431\u043b\u043e\u043d\u0438", +"Background color": "\u041a\u043e\u043b\u0456\u0440 \u0444\u043e\u043d\u0443", +"Custom...": "\u0406\u043d\u0448\u0438\u0439...", +"Custom color": "\u041a\u043e\u0440\u0438\u0441\u0442\u0443\u0432\u0430\u0446\u044c\u043a\u0438\u0439 \u043a\u043e\u043b\u0456\u0440", +"No color": "\u0411\u0435\u0437 \u043a\u043e\u043b\u044c\u043e\u0440\u0443", +"Text color": "\u041a\u043e\u043b\u0456\u0440 \u0442\u0435\u043a\u0441\u0442\u0443", +"Show blocks": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u0431\u043b\u043e\u043a\u0438", +"Show invisible characters": "\u041f\u043e\u043a\u0430\u0437\u0430\u0442\u0438 \u043d\u0435\u0432\u0438\u0434\u0438\u043c\u0456 \u0441\u0438\u043c\u0432\u043e\u043b\u0438", +"Words: {0}": "\u0421\u043b\u043e\u0432\u0430: {0}", +"Insert": "\u0412\u0441\u0442\u0430\u0432\u0438\u0442\u0438", +"File": "\u0424\u0430\u0439\u043b", +"Edit": "\u041f\u0440\u0430\u0432\u043a\u0430", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u041e\u0431\u043b\u0430\u0441\u0442\u044c Rich \u0442\u0435\u043a\u0441\u0442\u0443. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F9 - \u043c\u0435\u043d\u044e. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-F10 - \u043f\u0430\u043d\u0435\u043b\u044c \u0456\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0456\u0432. \u041d\u0430\u0442\u0438\u0441\u043d\u0456\u0442\u044c ALT-0 - \u0434\u043e\u0432\u0456\u0434\u043a\u0430", +"Tools": "\u0406\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u0438", +"View": "\u0412\u0438\u0434", +"Table": "\u0422\u0430\u0431\u043b\u0438\u0446\u044f", +"Format": "\u0424\u043e\u0440\u043c\u0430\u0442" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/zh_CN.js b/assets/plugins/tinymce4/tinymce/langs/zh_CN.js new file mode 100755 index 0000000000..712222a550 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/zh_CN.js @@ -0,0 +1,197 @@ +tinymce.addI18n('zh_CN',{ +"Cut": "\u526a\u5207", +"Heading 5": "\u6807\u98985", +"Header 2": "\u6807\u98982", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u5bf9\u526a\u8d34\u677f\u7684\u8bbf\u95ee\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u952e\u8fdb\u884c\u590d\u5236\u7c98\u8d34\u3002", +"Heading 4": "\u6807\u98984", +"Div": "Div\u533a\u5757", +"Heading 2": "\u6807\u98982", +"Paste": "\u7c98\u8d34", +"Close": "\u5173\u95ed", +"Font Family": "\u5b57\u4f53", +"Pre": "\u9884\u683c\u5f0f\u6587\u672c", +"Align right": "\u53f3\u5bf9\u9f50", +"New document": "\u65b0\u6587\u6863", +"Blockquote": "\u5f15\u7528", +"Numbered list": "\u7f16\u53f7\u5217\u8868", +"Heading 1": "\u6807\u98981", +"Headings": "\u6807\u9898", +"Increase indent": "\u589e\u52a0\u7f29\u8fdb", +"Formats": "\u683c\u5f0f", +"Headers": "\u6807\u9898", +"Select all": "\u5168\u9009", +"Header 3": "\u6807\u98983", +"Blocks": "\u533a\u5757", +"Undo": "\u64a4\u6d88", +"Strikethrough": "\u5220\u9664\u7ebf", +"Bullet list": "\u9879\u76ee\u7b26\u53f7", +"Header 1": "\u6807\u98981", +"Superscript": "\u4e0a\u6807", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Font Sizes": "\u5b57\u53f7", +"Subscript": "\u4e0b\u6807", +"Header 6": "\u6807\u98986", +"Redo": "\u91cd\u590d", +"Paragraph": "\u6bb5\u843d", +"Ok": "\u786e\u5b9a", +"Bold": "\u7c97\u4f53", +"Code": "\u4ee3\u7801", +"Italic": "\u659c\u4f53", +"Align center": "\u5c45\u4e2d", +"Header 5": "\u6807\u98985", +"Heading 6": "\u6807\u98986", +"Heading 3": "\u6807\u98983", +"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb", +"Header 4": "\u6807\u98984", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002", +"Underline": "\u4e0b\u5212\u7ebf", +"Cancel": "\u53d6\u6d88", +"Justify": "\u4e24\u7aef\u5bf9\u9f50", +"Inline": "\u6587\u672c", +"Copy": "\u590d\u5236", +"Align left": "\u5de6\u5bf9\u9f50", +"Visual aids": "\u7f51\u683c\u7ebf", +"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd", +"Square": "\u65b9\u5757", +"Default": "\u9ed8\u8ba4", +"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd", +"Circle": "\u7a7a\u5fc3\u5706", +"Disc": "\u5b9e\u5fc3\u5706", +"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd", +"Name": "\u540d\u79f0", +"Anchor": "\u951a\u70b9", +"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f", +"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f", +"Special character": "\u7279\u6b8a\u7b26\u53f7", +"Source code": "\u6e90\u4ee3\u7801", +"Color": "\u989c\u8272", +"Right to left": "\u4ece\u53f3\u5230\u5de6", +"Left to right": "\u4ece\u5de6\u5230\u53f3", +"Emoticons": "\u8868\u60c5", +"Robots": "\u673a\u5668\u4eba", +"Document properties": "\u6587\u6863\u5c5e\u6027", +"Title": "\u6807\u9898", +"Keywords": "\u5173\u952e\u8bcd", +"Encoding": "\u7f16\u7801", +"Description": "\u63cf\u8ff0", +"Author": "\u4f5c\u8005", +"Fullscreen": "\u5168\u5c4f", +"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf", +"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd", +"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247", +"General": "\u666e\u901a", +"Advanced": "\u9ad8\u7ea7", +"Source": "\u5730\u5740", +"Border": "\u8fb9\u6846", +"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4", +"Vertical space": "\u5782\u76f4\u8fb9\u8ddd", +"Image description": "\u56fe\u7247\u63cf\u8ff0", +"Style": "\u6837\u5f0f", +"Dimensions": "\u5927\u5c0f", +"Insert image": "\u63d2\u5165\u56fe\u7247", +"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4", +"Remove link": "\u5220\u9664\u94fe\u63a5", +"Url": "\u5730\u5740", +"Text to display": "\u663e\u793a\u6587\u5b57", +"Anchors": "\u951a\u70b9", +"Insert link": "\u63d2\u5165\u94fe\u63a5", +"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00", +"None": "\u65e0", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f", +"Target": "\u6253\u5f00\u65b9\u5f0f", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u8c8c\u4f3c\u662f\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f", +"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5", +"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891", +"Poster": "\u5c01\u9762", +"Alternative source": "\u955c\u50cf", +"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:", +"Insert video": "\u63d2\u5165\u89c6\u9891", +"Embed": "\u5185\u5d4c", +"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c", +"Page break": "\u5206\u9875\u7b26", +"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c", +"Preview": "\u9884\u89c8", +"Print": "\u6253\u5370", +"Save": "\u4fdd\u5b58", +"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.", +"Replace": "\u66ff\u6362", +"Next": "\u4e0b\u4e00\u4e2a", +"Whole words": "\u5168\u5b57\u5339\u914d", +"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362", +"Replace with": "\u66ff\u6362\u4e3a", +"Find": "\u67e5\u627e", +"Replace all": "\u5168\u90e8\u66ff\u6362", +"Match case": "\u533a\u5206\u5927\u5c0f\u5199", +"Prev": "\u4e0a\u4e00\u4e2a", +"Spellcheck": "\u62fc\u5199\u68c0\u67e5", +"Finish": "\u5b8c\u6210", +"Ignore all": "\u5168\u90e8\u5ffd\u7565", +"Ignore": "\u5ffd\u7565", +"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178", +"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165", +"Rows": "\u884c", +"Height": "\u9ad8", +"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9", +"Alignment": "\u5bf9\u9f50\u65b9\u5f0f", +"Border color": "\u8fb9\u6846\u989c\u8272", +"Column group": "\u5217\u7ec4", +"Row": "\u884c", +"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165", +"Split cell": "\u62c6\u5206\u5355\u5143\u683c", +"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd", +"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd", +"Row type": "\u884c\u7c7b\u578b", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Body": "\u8868\u4f53", +"Caption": "\u6807\u9898", +"Footer": "\u8868\u5c3e", +"Delete row": "\u5220\u9664\u884c", +"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9", +"Scope": "\u8303\u56f4", +"Delete table": "\u5220\u9664\u8868\u683c", +"H Align": "\u6c34\u5e73\u5bf9\u9f50", +"Top": "\u9876\u90e8\u5bf9\u9f50", +"Header cell": "\u8868\u5934\u5355\u5143\u683c", +"Column": "\u5217", +"Row group": "\u884c\u7ec4", +"Cell": "\u5355\u5143\u683c", +"Middle": "\u5782\u76f4\u5c45\u4e2d", +"Cell type": "\u5355\u5143\u683c\u7c7b\u578b", +"Copy row": "\u590d\u5236\u884c", +"Row properties": "\u884c\u5c5e\u6027", +"Table properties": "\u8868\u683c\u5c5e\u6027", +"Bottom": "\u5e95\u90e8\u5bf9\u9f50", +"V Align": "\u5782\u76f4\u5bf9\u9f50", +"Header": "\u8868\u5934", +"Right": "\u53f3\u5bf9\u9f50", +"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165", +"Cols": "\u5217", +"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165", +"Width": "\u5bbd", +"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027", +"Left": "\u5de6\u5bf9\u9f50", +"Cut row": "\u526a\u5207\u884c", +"Delete column": "\u5220\u9664\u5217", +"Center": "\u5c45\u4e2d", +"Merge cells": "\u5408\u5e76\u5355\u5143\u683c", +"Insert template": "\u63d2\u5165\u6a21\u677f", +"Templates": "\u6a21\u677f", +"Background color": "\u80cc\u666f\u8272", +"Custom...": "\u81ea\u5b9a\u4e49...", +"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272", +"No color": "\u65e0", +"Text color": "\u6587\u5b57\u989c\u8272", +"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846", +"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26", +"Words: {0}": "\u5b57\u6570\uff1a{0}", +"Insert": "\u63d2\u5165", +"File": "\u6587\u4ef6", +"Edit": "\u7f16\u8f91", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9", +"Tools": "\u5de5\u5177", +"View": "\u89c6\u56fe", +"Table": "\u8868\u683c", +"Format": "\u683c\u5f0f" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/langs/zh_TW.js b/assets/plugins/tinymce4/tinymce/langs/zh_TW.js new file mode 100755 index 0000000000..9f26409f7f --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/langs/zh_TW.js @@ -0,0 +1,219 @@ +tinymce.addI18n('zh_TW',{ +"Cut": "\u526a\u4e0b", +"Heading 5": "\u6a19\u984c 5", +"Header 2": "\u6a19\u984c 2", +"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u60a8\u7684\u700f\u89bd\u5668\u4e0d\u652f\u63f4\u5b58\u53d6\u526a\u8cbc\u7c3f\uff0c\u53ef\u4ee5\u4f7f\u7528\u5feb\u901f\u9375 Ctrl + X\/C\/V \u4ee3\u66ff\u526a\u4e0b\u3001\u8907\u88fd\u8207\u8cbc\u4e0a\u3002", +"Heading 4": "\u6a19\u984c 4", +"Div": "Div", +"Heading 2": "\u6a19\u984c 2", +"Paste": "\u8cbc\u4e0a", +"Close": "\u95dc\u9589", +"Font Family": "\u5b57\u9ad4", +"Pre": "Pre", +"Align right": "\u7f6e\u53f3\u5c0d\u9f4a", +"New document": "\u65b0\u6587\u4ef6", +"Blockquote": "\u5f15\u7528", +"Numbered list": "\u6578\u5b57\u6e05\u55ae", +"Heading 1": "\u6a19\u984c 1", +"Headings": "\u6a19\u984c", +"Increase indent": "\u589e\u52a0\u7e2e\u6392", +"Formats": "\u683c\u5f0f", +"Headers": "\u6a19\u984c", +"Select all": "\u5168\u9078", +"Header 3": "\u6a19\u984c 3", +"Blocks": "\u5340\u584a", +"Undo": "\u5fa9\u539f", +"Strikethrough": "\u522a\u9664\u7dda", +"Bullet list": "\u9805\u76ee\u6e05\u55ae", +"Header 1": "\u6a19\u984c 1", +"Superscript": "\u4e0a\u6a19", +"Clear formatting": "\u6e05\u9664\u683c\u5f0f", +"Font Sizes": "\u5b57\u578b\u5927\u5c0f", +"Subscript": "\u4e0b\u6a19", +"Header 6": "\u6a19\u984c 6", +"Redo": "\u53d6\u6d88\u5fa9\u539f", +"Paragraph": "\u6bb5\u843d", +"Ok": "\u78ba\u5b9a", +"Bold": "\u7c97\u9ad4", +"Code": "\u7a0b\u5f0f\u78bc", +"Italic": "\u659c\u9ad4", +"Align center": "\u7f6e\u4e2d\u5c0d\u9f4a", +"Header 5": "\u6a19\u984c 5", +"Heading 6": "\u6a19\u984c 6", +"Heading 3": "\u6a19\u984c 3", +"Decrease indent": "\u6e1b\u5c11\u7e2e\u6392", +"Header 4": "\u6a19\u984c 4", +"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u76ee\u524d\u5c07\u4ee5\u7d14\u6587\u5b57\u7684\u6a21\u5f0f\u8cbc\u4e0a\uff0c\u60a8\u53ef\u4ee5\u518d\u9ede\u9078\u4e00\u6b21\u53d6\u6d88\u3002", +"Underline": "\u5e95\u7dda", +"Cancel": "\u53d6\u6d88", +"Justify": "\u5de6\u53f3\u5c0d\u9f4a", +"Inline": "Inline", +"Copy": "\u8907\u88fd", +"Align left": "\u7f6e\u5de6\u5c0d\u9f4a", +"Visual aids": "\u5c0f\u5e6b\u624b", +"Lower Greek": "\u5e0c\u81d8\u5b57\u6bcd", +"Square": "\u6b63\u65b9\u5f62", +"Default": "\u9810\u8a2d", +"Lower Alpha": "\u5c0f\u5beb\u82f1\u6587\u5b57\u6bcd", +"Circle": "\u7a7a\u5fc3\u5713", +"Disc": "\u5be6\u5fc3\u5713", +"Upper Alpha": "\u5927\u5beb\u82f1\u6587\u5b57\u6bcd", +"Upper Roman": "\u5927\u5beb\u7f85\u99ac\u6578\u5b57", +"Lower Roman": "\u5c0f\u5beb\u7f85\u99ac\u6578\u5b57", +"Name": "\u540d\u7a31", +"Anchor": "\u52a0\u5165\u9328\u9ede", +"You have unsaved changes are you sure you want to navigate away?": "\u7de8\u8f2f\u5c1a\u672a\u88ab\u5132\u5b58\uff0c\u4f60\u78ba\u5b9a\u8981\u96e2\u958b\uff1f", +"Restore last draft": "\u8f09\u5165\u4e0a\u4e00\u6b21\u7de8\u8f2f\u7684\u8349\u7a3f", +"Special character": "\u7279\u6b8a\u5b57\u5143", +"Source code": "\u539f\u59cb\u78bc", +"B": "\u85cd", +"R": "\u7d05", +"G": "\u7da0", +"Color": "\u984f\u8272", +"Right to left": "\u5f9e\u53f3\u5230\u5de6", +"Left to right": "\u5f9e\u5de6\u5230\u53f3", +"Emoticons": "\u8868\u60c5", +"Robots": "\u6a5f\u5668\u4eba", +"Document properties": "\u6587\u4ef6\u7684\u5c6c\u6027", +"Title": "\u6a19\u984c", +"Keywords": "\u95dc\u9375\u5b57", +"Encoding": "\u7de8\u78bc", +"Description": "\u63cf\u8ff0", +"Author": "\u4f5c\u8005", +"Fullscreen": "\u5168\u87a2\u5e55", +"Horizontal line": "\u6c34\u5e73\u7dda", +"Horizontal space": "\u5bec\u5ea6", +"Insert\/edit image": "\u63d2\u5165\/\u7de8\u8f2f \u5716\u7247", +"General": "\u4e00\u822c", +"Advanced": "\u9032\u968e", +"Source": "\u5716\u7247\u7db2\u5740", +"Border": "\u908a\u6846", +"Constrain proportions": "\u7b49\u6bd4\u4f8b\u7e2e\u653e", +"Vertical space": "\u9ad8\u5ea6", +"Image description": "\u5716\u7247\u63cf\u8ff0", +"Style": "\u6a23\u5f0f", +"Dimensions": "\u5c3a\u5bf8", +"Insert image": "\u63d2\u5165\u5716\u7247", +"Zoom in": "\u653e\u5927", +"Contrast": "\u5c0d\u6bd4", +"Back": "\u5f8c\u9000", +"Gamma": "\u4f3d\u99ac\u503c", +"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f49", +"Resize": "\u8abf\u6574\u5927\u5c0f", +"Sharpen": "\u92b3\u5316", +"Zoom out": "\u7e2e\u5c0f", +"Image options": "\u5716\u7247\u9078\u9805", +"Apply": "\u61c9\u7528", +"Brightness": "\u4eae\u5ea6", +"Rotate clockwise": "\u9806\u6642\u91dd\u65cb\u8f49", +"Rotate counterclockwise": "\u9006\u6642\u91dd\u65cb\u8f49", +"Edit image": "\u7de8\u8f2f\u5716\u7247", +"Color levels": "\u984f\u8272\u5c64\u6b21", +"Crop": "\u88c1\u526a", +"Orientation": "\u65b9\u5411", +"Flip vertically": "\u5782\u76f4\u7ffb\u8f49", +"Invert": "\u53cd\u8f49", +"Insert date\/time": "\u63d2\u5165 \u65e5\u671f\/\u6642\u9593", +"Remove link": "\u79fb\u9664\u9023\u7d50", +"Url": "\u7db2\u5740", +"Text to display": "\u986f\u793a\u6587\u5b57", +"Anchors": "\u52a0\u5165\u9328\u9ede", +"Insert link": "\u63d2\u5165\u9023\u7d50", +"New window": "\u53e6\u958b\u8996\u7a97", +"None": "\u7121", +"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u5c6c\u65bc\u5916\u90e8\u93c8\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7db4\u55ce\uff1f", +"Target": "\u958b\u555f\u65b9\u5f0f", +"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5beb\u7684URL\u70ba\u96fb\u5b50\u90f5\u4ef6\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7db4\u55ce\uff1f", +"Insert\/edit link": "\u63d2\u5165\/\u7de8\u8f2f\u9023\u7d50", +"Insert\/edit video": "\u63d2\u4ef6\/\u7de8\u8f2f \u5f71\u97f3", +"Poster": "\u9810\u89bd\u5716\u7247", +"Alternative source": "\u66ff\u4ee3\u5f71\u97f3", +"Paste your embed code below:": "\u8acb\u5c07\u60a8\u7684\u5d4c\u5165\u5f0f\u7a0b\u5f0f\u78bc\u8cbc\u5728\u4e0b\u9762:", +"Insert video": "\u63d2\u5165\u5f71\u97f3", +"Embed": "\u5d4c\u5165\u78bc", +"Nonbreaking space": "\u4e0d\u5206\u884c\u7684\u7a7a\u683c", +"Page break": "\u5206\u9801", +"Paste as text": "\u4ee5\u7d14\u6587\u5b57\u8cbc\u4e0a", +"Preview": "\u9810\u89bd", +"Print": "\u5217\u5370", +"Save": "\u5132\u5b58", +"Could not find the specified string.": "\u7121\u6cd5\u67e5\u8a62\u5230\u6b64\u7279\u5b9a\u5b57\u4e32", +"Replace": "\u66ff\u63db", +"Next": "\u4e0b\u4e00\u500b", +"Whole words": "\u6574\u500b\u55ae\u5b57", +"Find and replace": "\u5c0b\u627e\u53ca\u53d6\u4ee3", +"Replace with": "\u66f4\u63db", +"Find": "\u641c\u5c0b", +"Replace all": "\u66ff\u63db\u5168\u90e8", +"Match case": "\u76f8\u5339\u914d\u6848\u4ef6", +"Prev": "\u4e0a\u4e00\u500b", +"Spellcheck": "\u62fc\u5b57\u6aa2\u67e5", +"Finish": "\u5b8c\u6210", +"Ignore all": "\u5ffd\u7565\u6240\u6709", +"Ignore": "\u5ffd\u7565", +"Add to Dictionary": "\u52a0\u5165\u5b57\u5178\u4e2d", +"Insert row before": "\u63d2\u5165\u5217\u5728...\u4e4b\u524d", +"Rows": "\u5217", +"Height": "\u9ad8\u5ea6", +"Paste row after": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u5f8c", +"Alignment": "\u5c0d\u9f4a", +"Border color": "\u908a\u6846\u984f\u8272", +"Column group": "\u6b04\u4f4d\u7fa4\u7d44", +"Row": "\u5217", +"Insert column before": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u524d", +"Split cell": "\u5206\u5272\u5132\u5b58\u683c", +"Cell padding": "\u5132\u5b58\u683c\u7684\u908a\u8ddd", +"Cell spacing": "\u5132\u5b58\u683c\u5f97\u9593\u8ddd", +"Row type": "\u884c\u7684\u985e\u578b", +"Insert table": "\u63d2\u5165\u8868\u683c", +"Body": "\u4e3b\u9ad4", +"Caption": "\u8868\u683c\u6a19\u984c", +"Footer": "\u9801\u5c3e", +"Delete row": "\u522a\u9664\u5217", +"Paste row before": "\u8cbc\u4e0a\u5217\u5728...\u4e4b\u524d", +"Scope": "\u7bc4\u570d", +"Delete table": "\u522a\u9664\u8868\u683c", +"H Align": "\u6c34\u5e73\u4f4d\u7f6e", +"Top": "\u7f6e\u9802", +"Header cell": "\u6a19\u982d\u5132\u5b58\u683c", +"Column": "\u884c", +"Row group": "\u5217\u7fa4\u7d44", +"Cell": "\u5132\u5b58\u683c", +"Middle": "\u7f6e\u4e2d", +"Cell type": "\u5132\u5b58\u683c\u7684\u985e\u578b", +"Copy row": "\u8907\u88fd\u5217", +"Row properties": "\u5217\u5c6c\u6027", +"Table properties": "\u8868\u683c\u5c6c\u6027", +"Bottom": "\u7f6e\u5e95", +"V Align": "\u5782\u76f4\u4f4d\u7f6e", +"Header": "\u6a19\u982d", +"Right": "\u53f3\u908a", +"Insert column after": "\u63d2\u5165\u6b04\u4f4d\u5728...\u4e4b\u5f8c", +"Cols": "\u6b04\u4f4d\u6bb5", +"Insert row after": "\u63d2\u5165\u5217\u5728...\u4e4b\u5f8c", +"Width": "\u5bec\u5ea6", +"Cell properties": "\u5132\u5b58\u683c\u5c6c\u6027", +"Left": "\u5de6\u908a", +"Cut row": "\u526a\u4e0b\u5217", +"Delete column": "\u522a\u9664\u884c", +"Center": "\u4e2d\u9593", +"Merge cells": "\u5408\u4f75\u5132\u5b58\u683c", +"Insert template": "\u63d2\u5165\u6a23\u7248", +"Templates": "\u6a23\u7248", +"Background color": "\u80cc\u666f\u984f\u8272", +"Custom...": "\u81ea\u8a02", +"Custom color": "\u81ea\u8a02\u984f\u8272", +"No color": "No color", +"Text color": "\u6587\u5b57\u984f\u8272", +"Show blocks": "\u986f\u793a\u5340\u584a\u8cc7\u8a0a", +"Show invisible characters": "\u986f\u793a\u96b1\u85cf\u5b57\u5143", +"Words: {0}": "\u5b57\u6578\uff1a{0}", +"Insert": "\u63d2\u5165", +"File": "\u6a94\u6848", +"Edit": "\u7de8\u8f2f", +"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u8c50\u5bcc\u7684\u6587\u672c\u5340\u57df\u3002\u6309ALT-F9\u524d\u5f80\u4e3b\u9078\u55ae\u3002\u6309ALT-F10\u547c\u53eb\u5de5\u5177\u6b04\u3002\u6309ALT-0\u5c0b\u6c42\u5e6b\u52a9", +"Tools": "\u5de5\u5177", +"View": "\u6aa2\u8996", +"Table": "\u8868\u683c", +"Format": "\u683c\u5f0f" +}); \ No newline at end of file diff --git a/assets/plugins/tinymce/tiny_mce/license.txt b/assets/plugins/tinymce4/tinymce/license.txt old mode 100644 new mode 100755 similarity index 99% rename from assets/plugins/tinymce/tiny_mce/license.txt rename to assets/plugins/tinymce4/tinymce/license.txt index 14ebc6f4b6..1837b0acbe --- a/assets/plugins/tinymce/tiny_mce/license.txt +++ b/assets/plugins/tinymce4/tinymce/license.txt @@ -20,7 +20,7 @@ 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 carefuly about whether +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. diff --git a/assets/plugins/tinymce4/tinymce/logo.png b/assets/plugins/tinymce4/tinymce/logo.png new file mode 100755 index 0000000000..21caeffb8e Binary files /dev/null and b/assets/plugins/tinymce4/tinymce/logo.png differ diff --git a/assets/plugins/tinymce4/tinymce/plugins/advlist/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/advlist/plugin.min.js new file mode 100755 index 0000000000..1e1c66804d --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/advlist/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("advlist",function(a){function b(a,b){var c=[];return tinymce.each(b.split(/[ ,]/),function(a){c.push({text:a.replace(/\-/g," ").replace(/\b\w/g,function(a){return a.toUpperCase()}),data:"default"==a?"":a})}),c}function c(b,c){a.undoManager.transact(function(){var d,e=a.dom,f=a.selection;d=e.getParent(f.getNode(),"ol,ul"),d&&d.nodeName==b&&c!==!1||a.execCommand("UL"==b?"InsertUnorderedList":"InsertOrderedList"),c=c===!1?g[b]:c,g[b]=c,d=e.getParent(f.getNode(),"ol,ul"),d&&(e.setStyle(d,"listStyleType",c?c:null),d.removeAttribute("data-mce-style")),a.focus()})}function d(b){var c=a.dom.getStyle(a.dom.getParent(a.selection.getNode(),"ol,ul"),"listStyleType")||"";b.control.items().each(function(a){a.active(a.settings.data===c)})}var e,f,g={};e=b("OL",a.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman")),f=b("UL",a.getParam("advlist_bullet_styles","default,circle,disc,square")),a.addButton("numlist",{type:"splitbutton",tooltip:"Numbered list",menu:e,onshow:d,onselect:function(a){c("OL",a.control.settings.data)},onclick:function(){c("OL",!1)}}),a.addButton("bullist",{type:"splitbutton",tooltip:"Bullet list",menu:f,onshow:d,onselect:function(a){c("UL",a.control.settings.data)},onclick:function(){c("UL",!1)}})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/anchor/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/anchor/plugin.min.js new file mode 100755 index 0000000000..0dd4774bbb --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/anchor/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("anchor",function(a){function b(){var b=a.selection.getNode(),c="",d="A"==b.tagName&&""===a.dom.getAttrib(b,"href");d&&(c=b.name||b.id||""),a.windowManager.open({title:"Anchor",body:{type:"textbox",name:"name",size:40,label:"Name",value:c},onsubmit:function(c){var e=c.data.name;d?b.id=e:(a.selection.collapse(!0),a.execCommand("mceInsertContent",!1,a.dom.createHTML("a",{id:e})))}})}a.addCommand("mceAnchor",b),a.addButton("anchor",{icon:"anchor",tooltip:"Anchor",onclick:b,stateSelector:"a:not([href])"}),a.addMenuItem("anchor",{icon:"anchor",text:"Anchor",context:"insert",onclick:b})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/autolink/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/autolink/plugin.min.js new file mode 100755 index 0000000000..4972b93663 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/autolink/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("autolink",function(a){function b(a){e(a,-1,"(",!0)}function c(a){e(a,0,"",!0)}function d(a){e(a,-1,"",!1)}function e(a,b,c){function d(a,b){if(0>b&&(b=0),3==a.nodeType){var c=a.data.length;b>c&&(b=c)}return b}function e(a,b){1!=a.nodeType||a.hasChildNodes()?h.setStart(a,d(a,b)):h.setStartBefore(a)}function f(a,b){1!=a.nodeType||a.hasChildNodes()?h.setEnd(a,d(a,b)):h.setEndAfter(a)}var h,i,j,k,l,m,n,o,p,q;if("A"!=a.selection.getNode().tagName){if(h=a.selection.getRng(!0).cloneRange(),h.startOffset<5){if(o=h.endContainer.previousSibling,!o){if(!h.endContainer.firstChild||!h.endContainer.firstChild.nextSibling)return;o=h.endContainer.firstChild.nextSibling}if(p=o.length,e(o,p),f(o,p),h.endOffset<5)return;i=h.endOffset,k=o}else{if(k=h.endContainer,3!=k.nodeType&&k.firstChild){for(;3!=k.nodeType&&k.firstChild;)k=k.firstChild;3==k.nodeType&&(e(k,0),f(k,k.nodeValue.length))}i=1==h.endOffset?2:h.endOffset-1-b}j=i;do e(k,i>=2?i-2:0),f(k,i>=1?i-1:0),i-=1,q=h.toString();while(" "!=q&&""!==q&&160!=q.charCodeAt(0)&&i-2>=0&&q!=c);h.toString()==c||160==h.toString().charCodeAt(0)?(e(k,i),f(k,j),i+=1):0===h.startOffset?(e(k,0),f(k,j)):(e(k,i),f(k,j)),m=h.toString(),"."==m.charAt(m.length-1)&&f(k,j-1),m=h.toString(),n=m.match(g),n&&("www."==n[1]?n[1]="http://www.":/@$/.test(n[1])&&!/^mailto:/.test(n[1])&&(n[1]="mailto:"+n[1]),l=a.selection.getBookmark(),a.selection.setRng(h),a.execCommand("createlink",!1,n[1]+n[2]),a.selection.moveToBookmark(l),a.nodeChanged())}}var f,g=/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i;return a.settings.autolink_pattern&&(g=a.settings.autolink_pattern),a.on("keydown",function(b){return 13==b.keyCode?d(a):void 0}),tinymce.Env.ie?void a.on("focus",function(){if(!f){f=!0;try{a.execCommand("AutoUrlDetect",!1,!0)}catch(b){}}}):(a.on("keypress",function(c){return 41==c.keyCode?b(a):void 0}),void a.on("keyup",function(b){return 32==b.keyCode?c(a):void 0}))}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/autoresize/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/autoresize/plugin.min.js new file mode 100755 index 0000000000..a56d0d5043 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/autoresize/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("autoresize",function(a){function b(){return a.plugins.fullscreen&&a.plugins.fullscreen.isFullscreen()}function c(d){var g,h,i,j,k,l,m,n,o,p,q,r,s=tinymce.DOM;if(h=a.getDoc()){if(i=h.body,j=h.documentElement,k=e.autoresize_min_height,!i||d&&"setcontent"===d.type&&d.initial||b())return void(i&&j&&(i.style.overflowY="auto",j.style.overflowY="auto"));m=a.dom.getStyle(i,"margin-top",!0),n=a.dom.getStyle(i,"margin-bottom",!0),o=a.dom.getStyle(i,"padding-top",!0),p=a.dom.getStyle(i,"padding-bottom",!0),q=a.dom.getStyle(i,"border-top-width",!0),r=a.dom.getStyle(i,"border-bottom-width",!0),l=i.offsetHeight+parseInt(m,10)+parseInt(n,10)+parseInt(o,10)+parseInt(p,10)+parseInt(q,10)+parseInt(r,10),(isNaN(l)||0>=l)&&(l=tinymce.Env.ie?i.scrollHeight:tinymce.Env.webkit&&0===i.clientHeight?0:i.offsetHeight),l>e.autoresize_min_height&&(k=l),e.autoresize_max_height&&l>e.autoresize_max_height?(k=e.autoresize_max_height,i.style.overflowY="auto",j.style.overflowY="auto"):(i.style.overflowY="hidden",j.style.overflowY="hidden",i.scrollTop=0),k!==f&&(g=k-f,s.setStyle(a.iframeElement,"height",k+"px"),f=k,tinymce.isWebKit&&0>g&&c(d))}}function d(b,e,f){tinymce.util.Delay.setEditorTimeout(a,function(){c({}),b--?d(b,e,f):f&&f()},e)}var e=a.settings,f=0;a.settings.inline||(e.autoresize_min_height=parseInt(a.getParam("autoresize_min_height",a.getElement().offsetHeight),10),e.autoresize_max_height=parseInt(a.getParam("autoresize_max_height",0),10),a.on("init",function(){var b,c;b=a.getParam("autoresize_overflow_padding",1),c=a.getParam("autoresize_bottom_margin",50),b!==!1&&a.dom.setStyles(a.getBody(),{paddingLeft:b,paddingRight:b}),c!==!1&&a.dom.setStyles(a.getBody(),{paddingBottom:c})}),a.on("nodechange setcontent keyup FullscreenStateChanged",c),a.getParam("autoresize_on_init",!0)&&a.on("init",function(){d(20,100,function(){d(5,1e3)})}),a.addCommand("mceAutoResize",c))}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/autosave/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/autosave/plugin.min.js new file mode 100755 index 0000000000..11de44d968 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/autosave/plugin.min.js @@ -0,0 +1 @@ +tinymce._beforeUnloadHandler=function(){var a;return tinymce.each(tinymce.editors,function(b){b.plugins.autosave&&b.plugins.autosave.storeDraft(),!a&&b.isDirty()&&b.getParam("autosave_ask_before_unload",!0)&&(a=b.translate("You have unsaved changes are you sure you want to navigate away?"))}),a},tinymce.PluginManager.add("autosave",function(a){function b(a,b){var c={s:1e3,m:6e4};return a=/^(\d+)([ms]?)$/.exec(""+(a||b)),(a[2]?c[a[2]]:1)*parseInt(a,10)}function c(){var a=parseInt(n.getItem(k+"time"),10)||0;return(new Date).getTime()-a>m.autosave_retention?(d(!1),!1):!0}function d(b){n.removeItem(k+"draft"),n.removeItem(k+"time"),b!==!1&&a.fire("RemoveDraft")}function e(){!j()&&a.isDirty()&&(n.setItem(k+"draft",a.getContent({format:"raw",no_events:!0})),n.setItem(k+"time",(new Date).getTime()),a.fire("StoreDraft"))}function f(){c()&&(a.setContent(n.getItem(k+"draft"),{format:"raw"}),a.fire("RestoreDraft"))}function g(){l||(setInterval(function(){a.removed||e()},m.autosave_interval),l=!0)}function h(){var b=this;b.disabled(!c()),a.on("StoreDraft RestoreDraft RemoveDraft",function(){b.disabled(!c())}),g()}function i(){a.undoManager.beforeChange(),f(),d(),a.undoManager.add()}function j(b){var c=a.settings.forced_root_block;return b=tinymce.trim("undefined"==typeof b?a.getBody().innerHTML:b),""===b||new RegExp("^<"+c+"[^>]*>((\xa0| |[ ]|]*>)+?|)|
                      $","i").test(b)}var k,l,m=a.settings,n=tinymce.util.LocalStorage;k=m.autosave_prefix||"tinymce-autosave-{path}{query}-{id}-",k=k.replace(/\{path\}/g,document.location.pathname),k=k.replace(/\{query\}/g,document.location.search),k=k.replace(/\{id\}/g,a.id),m.autosave_interval=b(m.autosave_interval,"30s"),m.autosave_retention=b(m.autosave_retention,"20m"),a.addButton("restoredraft",{title:"Restore last draft",onclick:i,onPostRender:h}),a.addMenuItem("restoredraft",{text:"Restore last draft",onclick:i,onPostRender:h,context:"file"}),a.settings.autosave_restore_when_empty!==!1&&(a.on("init",function(){c()&&j()&&f()}),a.on("saveContent",function(){d()})),window.onbeforeunload=tinymce._beforeUnloadHandler,this.hasDraft=c,this.storeDraft=e,this.restoreDraft=f,this.removeDraft=d,this.isEmpty=j}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/bbcode/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/bbcode/plugin.min.js new file mode 100755 index 0000000000..4548e5e6ce --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/bbcode/plugin.min.js @@ -0,0 +1 @@ +!function(){tinymce.create("tinymce.plugins.BBCodePlugin",{init:function(a){var b=this,c=a.getParam("bbcode_dialect","punbb").toLowerCase();a.on("beforeSetContent",function(a){a.content=b["_"+c+"_bbcode2html"](a.content)}),a.on("postProcess",function(a){a.set&&(a.content=b["_"+c+"_bbcode2html"](a.content)),a.get&&(a.content=b["_"+c+"_html2bbcode"](a.content))})},getInfo:function(){return{longname:"BBCode Plugin",author:"Ephox Corp",authorurl:"http://www.tinymce.com",infourl:"http://www.tinymce.com/wiki.php/Plugin:bbcode"}},_punbb_html2bbcode:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),b(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),b(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),b(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),b(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),b(/(.*?)<\/font>/gi,"$1"),b(//gi,"[img]$1[/img]"),b(/(.*?)<\/span>/gi,"[code]$1[/code]"),b(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),b(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),b(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),b(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),b(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),b(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),b(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),b(/<\/(strong|b)>/gi,"[/b]"),b(/<(strong|b)>/gi,"[b]"),b(/<\/(em|i)>/gi,"[/i]"),b(/<(em|i)>/gi,"[i]"),b(/<\/u>/gi,"[/u]"),b(/(.*?)<\/span>/gi,"[u]$1[/u]"),b(//gi,"[u]"),b(/]*>/gi,"[quote]"),b(/<\/blockquote>/gi,"[/quote]"),b(/
                      /gi,"\n"),b(//gi,"\n"),b(/
                      /gi,"\n"),b(/

                      /gi,""),b(/<\/p>/gi,"\n"),b(/ |\u00a0/gi," "),b(/"/gi,'"'),b(/</gi,"<"),b(/>/gi,">"),b(/&/gi,"&"),a},_punbb_bbcode2html:function(a){function b(b,c){a=a.replace(b,c)}return a=tinymce.trim(a),b(/\n/gi,"
                      "),b(/\[b\]/gi,""),b(/\[\/b\]/gi,""),b(/\[i\]/gi,""),b(/\[\/i\]/gi,""),b(/\[u\]/gi,""),b(/\[\/u\]/gi,""),b(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),b(/\[url\](.*?)\[\/url\]/gi,'$1'),b(/\[img\](.*?)\[\/img\]/gi,''),b(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),b(/\[code\](.*?)\[\/code\]/gi,'$1 '),b(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),a}}),tinymce.PluginManager.add("bbcode",tinymce.plugins.BBCodePlugin)}(); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/charmap/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/charmap/plugin.min.js new file mode 100755 index 0000000000..9fd639ef9c --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/charmap/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("charmap",function(a){function b(){return[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["221","Y - acute"],["376","Y - diaeresis"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]]}function c(a){return tinymce.util.Tools.grep(a,function(a){return i(a)&&2==a.length})}function d(a){return i(a)?[].concat(c(a)):"function"==typeof a?a():[]}function e(b){var c=a.settings;return c.charmap&&(b=d(c.charmap)),c.charmap_append?[].concat(b).concat(d(c.charmap_append)):b}function f(){return e(b())}function g(b){a.fire("insertCustomChar",{chr:b}).chr,a.execCommand("mceInsertContent",!1,b)}function h(){function b(a){for(;a;){if("TD"==a.nodeName)return a;a=a.parentNode}}var c,d,e,h;c='';var i=f(),j=Math.min(i.length,25),k=Math.ceil(i.length/j);for(e=0;k>e;e++){for(c+="",d=0;j>d;d++){var l=e*j+d;if(l
                      '+(m?String.fromCharCode(parseInt(m[0],10)):" ")+"
                      "}else c+="
                      "}c+="";var n={type:"container",html:c,onclick:function(a){var c=a.target;/^(TD|DIV)$/.test(c.nodeName)&&b(c).firstChild&&(g(tinymce.trim(c.innerText||c.textContent)),a.ctrlKey||h.close())},onmouseover:function(a){var c=b(a.target);c&&c.firstChild?(h.find("#preview").text(c.firstChild.firstChild.data),h.find("#previewTitle").text(c.title)):(h.find("#preview").text(" "),h.find("#previewTitle").text(" "))}};h=a.windowManager.open({title:"Special character",spacing:10,padding:10,items:[n,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"label",name:"previewTitle",text:" ",style:"text-align: center",border:1,minWidth:140,minHeight:80}]}],buttons:[{text:"Close",onclick:function(){h.close()}}]})}var i=tinymce.util.Tools.isArray;return a.addCommand("mceShowCharmap",h),a.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),a.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"}),{getCharMap:f,insertChar:g}}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/code/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/code/plugin.min.js new file mode 100755 index 0000000000..d6331f872a --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/code/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("code",function(a){function b(){var b=a.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:a.getParam("code_dialog_width",600),minHeight:a.getParam("code_dialog_height",Math.min(tinymce.DOM.getViewPort().h-200,500)),spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(b){a.focus(),a.undoManager.transact(function(){a.setContent(b.data.code)}),a.selection.setCursorLocation(),a.nodeChanged()}});b.find("#code").value(a.getContent({source_view:!0}))}a.addCommand("mceCodeEditor",b),a.addButton("code",{icon:"code",tooltip:"Source code",onclick:b}),a.addMenuItem("code",{icon:"code",text:"Source code",context:"tools",onclick:b})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/codesample/css/prism.css b/assets/plugins/tinymce4/tinymce/plugins/codesample/css/prism.css new file mode 100755 index 0000000000..28622b5217 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/codesample/css/prism.css @@ -0,0 +1,138 @@ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/assets/plugins/tinymce4/tinymce/plugins/codesample/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/codesample/plugin.min.js new file mode 100755 index 0000000000..574fe6b9c4 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/codesample/plugin.min.js @@ -0,0 +1 @@ +!function(a,b){"use strict";function c(a,b){for(var c,d=[],f=0;fa.length)break a;if(!(q instanceof e)){k.lastIndex=0;var r=k.exec(q);if(r){m&&(n=r[1].length);var s=r.index-1+n,r=r[0].slice(n),t=r.length,u=s+t,v=q.slice(0,s+1),w=q.slice(u+1),x=[p,1];v&&x.push(v);var y=new e(h,l?c.tokenize(r,l):r,o);x.push(y),w&&x.push(w),Array.prototype.splice.apply(f,x)}}}}}return f},hooks:{all:{},add:function(a,b){var d=c.hooks.all;d[a]=d[a]||[],d[a].push(b)},run:function(a,b){var d=c.hooks.all[a];if(d&&d.length)for(var e,f=0;e=d[f++];)e(b)}}},d=c.Token=function(a,b,c){this.type=a,this.content=b,this.alias=c};return d.stringify=function(a,b,e){if("string"==typeof a)return a;if("Array"===c.util.type(a))return a.map(function(c){return d.stringify(c,b,a)}).join("");var f={type:a.type,content:d.stringify(a.content,b,e),tag:"span",classes:["token",a.type],attributes:{},language:b,parent:e};if("comment"==f.type&&(f.attributes.spellcheck="true"),a.alias){var g="Array"===c.util.type(a.alias)?a.alias:[a.alias];Array.prototype.push.apply(f.classes,g)}c.hooks.run("wrap",f);var h="";for(var i in f.attributes)h+=(h?" ":"")+i+'="'+(f.attributes[i]||"")+'"';return"<"+f.tag+' class="'+f.classes.join(" ")+'" '+h+">"+f.content+""},b.document?void 0:b.addEventListener?(b.addEventListener("message",function(a){var d=JSON.parse(a.data),e=d.language,f=d.code,g=d.immediateClose;b.postMessage(c.highlight(f,c.languages[e],e)),g&&b.close()},!1),b.Prism):b.Prism}();return"undefined"!=typeof module&&module.exports&&(module.exports=c),"undefined"!=typeof global&&(global.Prism=c),c.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.hooks.add("wrap",function(a){"entity"===a.type&&(a.attributes.title=a.content.replace(/&/,"&"))}),c.languages.xml=c.languages.markup,c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,c.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},c.languages.css.atrule.inside.rest=c.util.clone(c.languages.css),c.languages.markup&&(c.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/i,inside:{tag:{pattern:/|<\/style>/i,inside:c.languages.markup.tag.inside},rest:c.languages.css},alias:"language-css"}}),c.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:c.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:c.languages.css}},alias:"language-css"}},c.languages.markup.tag)),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),c.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),c.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/i,inside:{tag:{pattern:/|<\/script>/i,inside:c.languages.markup.tag.inside},rest:c.languages.javascript},alias:"language-javascript"}}),c.languages.js=c.languages.javascript,c.languages.c=c.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),c.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete c.languages.c["class-name"],delete c.languages.c["boolean"],c.languages.csharp=c.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),c.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),c.languages.cpp=c.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),c.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),c.languages.java=c.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),c.languages.php=c.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),c.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),c.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),c.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),c.languages.markup&&(c.hooks.add("before-highlight",function(a){"php"===a.language&&(a.tokenStack=[],a.backupCode=a.code,a.code=a.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(b){return a.tokenStack.push(b),"{{{PHP"+a.tokenStack.length+"}}}"}))}),c.hooks.add("before-insert",function(a){"php"===a.language&&(a.code=a.backupCode,delete a.backupCode)}),c.hooks.add("after-highlight",function(a){if("php"===a.language){for(var b,d=0;b=a.tokenStack[d];d++)a.highlightedCode=a.highlightedCode.replace("{{{PHP"+(d+1)+"}}}",c.highlight(b,a.grammar,"php").replace(/\$/g,"$$$$"));a.element.innerHTML=a.highlightedCode}}),c.hooks.add("wrap",function(a){"php"===a.language&&"markup"===a.type&&(a.content=a.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),c.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:c.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),c.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(a){a.languages.ruby=a.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var b={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:a.util.clone(a.languages.ruby)}};a.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:b}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:b}},{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),a.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:b}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:b}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:b}}]}(c),c}),d("tinymce/codesampleplugin/Utils",[],function(){function a(a){return a&&"PRE"==a.nodeName&&-1!==a.className.indexOf("language-")}function b(a){return function(b,c){return a(c)}}return{isCodeSample:a,trimArg:b}}),d("tinymce/codesampleplugin/Dialog",["tinymce/dom/DOMUtils","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Prism"],function(a,b,c){function d(a,b,d){a.undoManager.transact(function(){var f=e(a);d=h.encode(d),f?(a.dom.setAttrib(f,"class","language-"+b),f.innerHTML=d,c.highlightElement(f),a.selection.select(f)):(a.insertContent('

                      '+d+"
                      "),a.selection.select(a.$("#__new").removeAttr("id")[0]))})}function e(a){var c=a.selection.getNode();return b.isCodeSample(c)?c:null}function f(a){var b=e(a);return b?b.textContent:""}function g(a){var b,c=e(a);return c?(b=c.className.match(/language-(\w+)/),b?b[1]:""):""}var h=a.DOM,i=[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}];return{open:function(a){a.windowManager.open({title:"Insert/Edit code sample",minWidth:Math.min(h.getViewPort().w,800),minHeight:Math.min(h.getViewPort().h,650),layout:"fit",body:[{type:"listbox",name:"language",label:"Language",maxWidth:200,value:g(a),values:i},{type:"textbox",name:"code",multiline:!0,spellcheck:!1,ariaLabel:"Code view",flex:1,style:"direction: ltr; text-align: left",classes:"monospace",value:f(a)}],onSubmit:function(b){d(a,b.data.language,b.data.code)}})}}}),d("tinymce/codesampleplugin/Plugin",["tinymce/Env","tinymce/PluginManager","tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Utils"],function(a,b,c,d,e){var f,g=e.trimArg;b.add("codesample",function(b,h){function i(){var a;f||(f=!0,a=b.dom.create("link",{rel:"stylesheet",href:h+"/css/prism.css"}),b.getDoc().getElementsByTagName("head")[0].appendChild(a))}var j=b.$;a.ceFalse&&(b.on("PreProcess",function(a){j("pre[contenteditable=false]",a.node).filter(g(e.isCodeSample)).each(function(a,b){var c=j(b),d=b.textContent;c.attr("class",j.trim(c.attr("class"))),c.removeAttr("contentEditable"),c.empty().append(j("").each(function(){this.textContent=d}))})}),b.on("SetContent",function(){var a=j("pre").filter(g(e.isCodeSample)).filter(function(a,b){return"false"!==b.contentEditable});a.length&&b.undoManager.transact(function(){a.each(function(a,d){j(d).find("br").each(function(a,c){c.parentNode.replaceChild(b.getDoc().createTextNode("\n"),c)}),d.contentEditable=!1,d.innerHTML=b.dom.encode(d.textContent),c.highlightElement(d),d.className=j.trim(d.className)})})}),b.addCommand("codesample",function(){d.open(b)}),b.addButton("codesample",{cmd:"codesample",title:"Insert/Edit code sample"}),b.on("init",i))})}),f(["tinymce/codesampleplugin/Prism","tinymce/codesampleplugin/Utils","tinymce/codesampleplugin/Dialog","tinymce/codesampleplugin/Plugin"])}(this); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/colorpicker/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/colorpicker/plugin.min.js new file mode 100755 index 0000000000..66ea69c2a4 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/colorpicker/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("colorpicker",function(a){function b(b,c){function d(a){var b=new tinymce.util.Color(a),c=b.toRgb();f.fromJSON({r:c.r,g:c.g,b:c.b,hex:b.toHex().substr(1)}),e(b.toHex())}function e(a){f.find("#preview")[0].getEl().style.background=a}var f=a.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:c,onchange:function(){var a=this.rgb();f&&(f.find("#r").value(a.r),f.find("#g").value(a.g),f.find("#b").value(a.b),f.find("#hex").value(this.value().substr(1)),e(this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var a,b,c=f.find("colorpicker")[0];return a=this.name(),b=this.value(),"hex"==a?(b="#"+b,d(b),void c.value(b)):(b={r:f.find("#r").value(),g:f.find("#g").value(),b:f.find("#b").value()},c.value(b),void d(b))}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){b("#"+this.toJSON().hex)}});d(c)}a.settings.color_picker_callback||(a.settings.color_picker_callback=b)}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/contextmenu/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/contextmenu/plugin.min.js new file mode 100755 index 0000000000..c25e98b230 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/contextmenu/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("contextmenu",function(a){var b,c=a.settings.contextmenu_never_use_native;a.on("contextmenu",function(d){var e,f=a.getDoc();if(!d.ctrlKey||c){if(d.preventDefault(),tinymce.Env.mac&&tinymce.Env.webkit&&2==d.button&&f.caretRangeFromPoint&&a.selection.setRng(f.caretRangeFromPoint(d.x,d.y)),e=a.settings.contextmenu||"link image inserttable | cell row column deletetable",b)b.show();else{var g=[];tinymce.each(e.split(/[ ,]/),function(b){var c=a.menuItems[b];"|"==b&&(c={text:b}),c&&(c.shortcut="",g.push(c))});for(var h=0;h'}),a+=""}),a+=""}var d=[["cool","cry","embarassed","foot-in-mouth"],["frown","innocent","kiss","laughing"],["money-mouth","sealed","smile","surprised"],["tongue-out","undecided","wink","yell"]];a.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:c,onclick:function(b){var c=a.dom.getParent(b.target,"a");c&&(a.insertContent(''+c.getAttribute('),this.hide())}},tooltip:"Emoticons"})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/example/dialog.html b/assets/plugins/tinymce4/tinymce/plugins/example/dialog.html new file mode 100755 index 0000000000..565f06f5e0 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/example/dialog.html @@ -0,0 +1,8 @@ + + + +

                      Custom dialog

                      + Input some text: + + + \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/example/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/example/plugin.min.js new file mode 100755 index 0000000000..88687c7d34 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/example/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("example",function(a,b){a.addButton("example",{text:"My button",icon:!1,onclick:function(){a.windowManager.open({title:"Example plugin",body:[{type:"textbox",name:"title",label:"Title"}],onsubmit:function(b){a.insertContent("Title: "+b.data.title)}})}}),a.addMenuItem("example",{text:"Example plugin",context:"tools",onclick:function(){a.windowManager.open({title:"TinyMCE site",url:b+"/dialog.html",width:600,height:400,buttons:[{text:"Insert",onclick:function(){var b=a.windowManager.getWindows()[0];a.insertContent(b.getContentWindow().document.getElementById("content").value),b.close()}},{text:"Close",onclick:"close"}]})}})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/example_dependency/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/example_dependency/plugin.min.js new file mode 100755 index 0000000000..e61bf473ad --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/example_dependency/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("example_dependency",function(){},["example"]); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/fullpage/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/fullpage/plugin.min.js new file mode 100755 index 0000000000..1ea5c36064 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/fullpage/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("fullpage",function(a){function b(){var b=c();a.windowManager.open({title:"Document properties",data:b,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(a){d(tinymce.extend(b,a.data))}})}function c(){function b(a,b){var c=a.attr(b);return c||""}var c,d,f=e(),g={};return g.fontface=a.getParam("fullpage_default_fontface",""),g.fontsize=a.getParam("fullpage_default_fontsize",""),c=f.firstChild,7==c.type&&(g.xml_pi=!0,d=/encoding="([^"]+)"/.exec(c.value),d&&(g.docencoding=d[1])),c=f.getAll("#doctype")[0],c&&(g.doctype=""),c=f.getAll("title")[0],c&&c.firstChild&&(g.title=c.firstChild.value),k(f.getAll("meta"),function(a){var b,c=a.attr("name"),d=a.attr("http-equiv");c?g[c.toLowerCase()]=a.attr("content"):"Content-Type"==d&&(b=/charset\s*=\s*(.*)\s*/gi.exec(a.attr("content")),b&&(g.docencoding=b[1]))}),c=f.getAll("html")[0],c&&(g.langcode=b(c,"lang")||b(c,"xml:lang")),g.stylesheets=[],tinymce.each(f.getAll("link"),function(a){"stylesheet"==a.attr("rel")&&g.stylesheets.push(a.attr("href"))}),c=f.getAll("body")[0],c&&(g.langdir=b(c,"dir"),g.style=b(c,"style"),g.visited_color=b(c,"vlink"),g.link_color=b(c,"link"),g.active_color=b(c,"alink")),g}function d(b){function c(a,b,c){a.attr(b,c?c:void 0)}function d(a){g.firstChild?g.insert(a,g.firstChild):g.append(a)}var f,g,h,j,m,n=a.dom;f=e(),g=f.getAll("head")[0],g||(j=f.getAll("html")[0],g=new l("head",1),j.firstChild?j.insert(g,j.firstChild,!0):j.append(g)),j=f.firstChild,b.xml_pi?(m='version="1.0"',b.docencoding&&(m+=' encoding="'+b.docencoding+'"'),7!=j.type&&(j=new l("xml",7),f.insert(j,f.firstChild,!0)),j.value=m):j&&7==j.type&&j.remove(),j=f.getAll("#doctype")[0],b.doctype?(j||(j=new l("#doctype",10),b.xml_pi?f.insert(j,f.firstChild):d(j)),j.value=b.doctype.substring(9,b.doctype.length-1)):j&&j.remove(),j=null,k(f.getAll("meta"),function(a){"Content-Type"==a.attr("http-equiv")&&(j=a)}),b.docencoding?(j||(j=new l("meta",1),j.attr("http-equiv","Content-Type"),j.shortEnded=!0,d(j)),j.attr("content","text/html; charset="+b.docencoding)):j&&j.remove(),j=f.getAll("title")[0],b.title?(j?j.empty():(j=new l("title",1),d(j)),j.append(new l("#text",3)).value=b.title):j&&j.remove(),k("keywords,description,author,copyright,robots".split(","),function(a){var c,e,g=f.getAll("meta"),h=b[a];for(c=0;c"))}function e(){return new tinymce.html.DomParser({validate:!1,root_name:"#document"}).parse(i)}function f(b){function c(a){return a.replace(/<\/?[A-Z]+/g,function(a){return a.toLowerCase()})}var d,f,h,l,m=b.content,n="",o=a.dom;if(!b.selection&&!("raw"==b.format&&i||b.source_view&&a.getParam("fullpage_hide_in_source_view"))){0!==m.length||b.source_view||(m=tinymce.trim(i)+"\n"+tinymce.trim(m)+"\n"+tinymce.trim(j)),m=m.replace(/<(\/?)BODY/gi,"<$1body"),d=m.indexOf("",d),i=c(m.substring(0,d+1)),f=m.indexOf("\n"),h=e(),k(h.getAll("style"),function(a){a.firstChild&&(n+=a.firstChild.value)}),l=h.getAll("body")[0],l&&o.setAttribs(a.getBody(),{style:l.attr("style")||"",dir:l.attr("dir")||"",vLink:l.attr("vlink")||"",link:l.attr("link")||"",aLink:l.attr("alink")||""}),o.remove("fullpage_styles");var p=a.getDoc().getElementsByTagName("head")[0];n&&(o.add(p,"style",{id:"fullpage_styles"},n),l=o.get("fullpage_styles"),l.styleSheet&&(l.styleSheet.cssText=n));var q={};tinymce.each(p.getElementsByTagName("link"),function(a){"stylesheet"==a.rel&&a.getAttribute("data-mce-fullpage")&&(q[a.href]=a)}),tinymce.each(h.getAll("link"),function(a){var b=a.attr("href");q[b]||"stylesheet"!=a.attr("rel")||o.add(p,"link",{rel:"stylesheet",text:"text/css",href:b,"data-mce-fullpage":"1"}),delete q[b]}),tinymce.each(q,function(a){a.parentNode.removeChild(a)})}}function g(){var b,c="",d="";return a.getParam("fullpage_default_xml_pi")&&(c+='\n'),c+=a.getParam("fullpage_default_doctype",""),c+="\n\n\n",(b=a.getParam("fullpage_default_title"))&&(c+=""+b+"\n"),(b=a.getParam("fullpage_default_encoding"))&&(c+='\n'),(b=a.getParam("fullpage_default_font_family"))&&(d+="font-family: "+b+";"),(b=a.getParam("fullpage_default_font_size"))&&(d+="font-size: "+b+";"),(b=a.getParam("fullpage_default_text_color"))&&(d+="color: "+b+";"),c+="\n\n"}function h(b){b.selection||b.source_view&&a.getParam("fullpage_hide_in_source_view")||(b.content=tinymce.trim(i)+"\n"+tinymce.trim(b.content)+"\n"+tinymce.trim(j))}var i,j,k=tinymce.each,l=tinymce.html.Node;a.addCommand("mceFullPageProperties",b),a.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),a.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"}),a.on("BeforeSetContent",f),a.on("GetContent",h)}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/fullscreen/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/fullscreen/plugin.min.js new file mode 100755 index 0000000000..841d633f24 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/fullscreen/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("fullscreen",function(a){function b(){var a,b,c=window,d=document,e=d.body;return e.offsetWidth&&(a=e.offsetWidth,b=e.offsetHeight),c.innerWidth&&c.innerHeight&&(a=c.innerWidth,b=c.innerHeight),{w:a,h:b}}function c(){var a=tinymce.DOM.getViewPort();return{x:a.x,y:a.y}}function d(a){scrollTo(a.x,a.y)}function e(){function e(){m.setStyle(p,"height",b().h-(o.clientHeight-p.clientHeight))}var n,o,p,q,r=document.body,s=document.documentElement;l=!l,o=a.getContainer(),n=o.style,p=a.getContentAreaContainer().firstChild,q=p.style,l?(k=c(),f=q.width,g=q.height,q.width=q.height="100%",i=n.width,j=n.height,n.width=n.height="",m.addClass(r,"mce-fullscreen"),m.addClass(s,"mce-fullscreen"),m.addClass(o,"mce-fullscreen"),m.bind(window,"resize",e),e(),h=e):(q.width=f,q.height=g,i&&(n.width=i),j&&(n.height=j),m.removeClass(r,"mce-fullscreen"),m.removeClass(s,"mce-fullscreen"),m.removeClass(o,"mce-fullscreen"),m.unbind(window,"resize",h),d(k)),a.fire("FullscreenStateChanged",{state:l})}var f,g,h,i,j,k,l=!1,m=tinymce.DOM;return a.settings.inline?void 0:(a.on("init",function(){a.addShortcut("Meta+Alt+F","",e)}),a.on("remove",function(){h&&m.unbind(window,"resize",h)}),a.addCommand("mceFullScreen",e),a.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Meta+Alt+F",selectable:!0,onClick:function(){e(),a.focus()},onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})},context:"view"}),a.addButton("fullscreen",{tooltip:"Fullscreen",shortcut:"Meta+Alt+F",onClick:e,onPostRender:function(){var b=this;a.on("FullscreenStateChanged",function(a){b.active(a.state)})}}),{isFullscreen:function(){return l}})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/hr/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/hr/plugin.min.js new file mode 100755 index 0000000000..25abb0c1b1 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/hr/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("hr",function(a){a.addCommand("InsertHorizontalRule",function(){a.execCommand("mceInsertContent",!1,"
                      ")}),a.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),a.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/image/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/image/plugin.min.js new file mode 100755 index 0000000000..90de1a4105 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/image/plugin.min.js @@ -0,0 +1 @@ +tinymce.PluginManager.add("image",function(a){function b(a,b){function c(a,c){d.parentNode&&d.parentNode.removeChild(d),b({width:a,height:c})}var d=document.createElement("img");d.onload=function(){c(Math.max(d.width,d.clientWidth),Math.max(d.height,d.clientHeight))},d.onerror=function(){c()};var e=d.style;e.visibility="hidden",e.position="fixed",e.bottom=e.left=0,e.width=e.height="auto",document.body.appendChild(d),d.src=a}function c(a,b,c){function d(a,c){return c=c||[],tinymce.each(a,function(a){var e={text:a.text||a.title};a.menu?e.menu=d(a.menu):(e.value=a.value,b(e)),c.push(e)}),c}return d(a,c||[])}function d(b){return function(){var c=a.settings.image_list;"string"==typeof c?tinymce.util.XHR.send({url:c,success:function(a){b(tinymce.util.JSON.parse(a))}}):"function"==typeof c?c(b):b(c)}}function e(d){function e(){var a,b,c,d;a=l.find("#width")[0],b=l.find("#height")[0],a&&b&&(c=a.value(),d=b.value(),l.find("#constrain")[0].checked()&&o&&p&&c&&d&&(o!=c?(d=Math.round(c/o*d),isNaN(d)||b.value(d)):(c=Math.round(d/p*c),isNaN(c)||a.value(c))),o=c,p=d)}function f(){function b(b){function c(){b.onload=b.onerror=null,a.selection&&(a.selection.select(b),a.nodeChanged())}b.onload=function(){s.width||s.height||!u||t.setAttribs(b,{width:b.clientWidth,height:b.clientHeight}),c()},b.onerror=c}var c,d;j(),e(),s=tinymce.extend(s,l.toJSON()),s.alt||(s.alt=""),s.title||(s.title=""),""===s.width&&(s.width=null),""===s.height&&(s.height=null),s.style||(s.style=null),s={src:s.src,alt:s.alt,title:s.title,width:s.width,height:s.height,style:s.style,caption:s.caption,"class":s["class"]},a.undoManager.transact(function(){function e(b){return a.schema.getTextBlockElements()[b.nodeName]}if(!s.src)return void(m&&(t.remove(m),a.focus(),a.nodeChanged()));if(""===s.title&&(s.title=null),m?t.setAttribs(m,s):(s.id="__mcenew",a.focus(),a.selection.setContent(t.createHTML("img",s)),m=t.get("__mcenew"),t.setAttrib(m,"id",null)),a.editorUpload.uploadImagesAuto(),s.caption===!1&&t.is(m.parentNode,"figure.image")&&(c=m.parentNode,t.insertAfter(m,c),t.remove(c)),s.caption!==!0)b(m);else if(!t.is(m.parentNode,"figure.image")){d=m,m=m.cloneNode(!0),c=t.create("figure",{"class":"image"}),c.appendChild(m),c.appendChild(t.create("figcaption",{contentEditable:!0},"Caption")),c.contentEditable=!1;var f=t.getParent(d,e);f?t.split(f,d,c):t.replace(c,d),a.selection.select(c)}})}function g(a){return a&&(a=a.replace(/px$/,"")),a}function h(c){var d,e,f,g=c.meta||{};q&&q.value(a.convertURL(this.value(),"src")),tinymce.each(g,function(a,b){l.find("#"+b).value(a)}),g.width||g.height||(d=a.convertURL(this.value(),"src"),e=a.settings.image_prepend_url,f=new RegExp("^(?:[a-z]+:)?//","i"),e&&!f.test(d)&&d.substring(0,e.length)!==e&&(d=e+d),this.value(d),b(a.documentBaseURI.toAbsolute(this.value()),function(a){a.width&&a.height&&u&&(o=a.width,p=a.height,l.find("#width").value(o),l.find("#height").value(p))}))}function i(a){if(a.margin){var b=a.margin.split(" ");switch(b.length){case 1:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[0],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[0];break;case 2:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[0],a["margin-left"]=a["margin-left"]||b[1];break;case 3:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[1];break;case 4:a["margin-top"]=a["margin-top"]||b[0],a["margin-right"]=a["margin-right"]||b[1],a["margin-bottom"]=a["margin-bottom"]||b[2],a["margin-left"]=a["margin-left"]||b[3]}delete a.margin}return a}function j(){function b(a){return a.length>0&&/^[0-9]+$/.test(a)&&(a+="px"),a}if(a.settings.image_advtab){var c=l.toJSON(),d=t.parseStyle(c.style);d=i(d),c.vspace&&(d["margin-top"]=d["margin-bottom"]=b(c.vspace)),c.hspace&&(d["margin-left"]=d["margin-right"]=b(c.hspace)),c.border&&(d["border-width"]=b(c.border)),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(d))))}}function k(){if(a.settings.image_advtab){var b=l.toJSON(),c=t.parseStyle(b.style);l.find("#vspace").value(""),l.find("#hspace").value(""),c=i(c),(c["margin-top"]&&c["margin-bottom"]||c["margin-right"]&&c["margin-left"])&&(c["margin-top"]===c["margin-bottom"]?l.find("#vspace").value(g(c["margin-top"])):l.find("#vspace").value(""),c["margin-right"]===c["margin-left"]?l.find("#hspace").value(g(c["margin-right"])):l.find("#hspace").value("")),c["border-width"]&&l.find("#border").value(g(c["border-width"])),l.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(c))))}}var l,m,n,o,p,q,r,s={},t=a.dom,u=a.settings.image_dimensions!==!1;m=a.selection.getNode(),n=t.getParent(m,"figure.image"),n&&(m=t.select("img",n)[0]),m&&("IMG"!=m.nodeName||m.getAttribute("data-mce-object")||m.getAttribute("data-mce-placeholder"))&&(m=null),m&&(o=t.getAttrib(m,"width"),p=t.getAttrib(m,"height"),s={src:t.getAttrib(m,"src"),alt:t.getAttrib(m,"alt"),title:t.getAttrib(m,"title"),"class":t.getAttrib(m,"class"),width:o,height:p,caption:!!n}),d&&(q={type:"listbox",label:"Image list",values:c(d,function(b){b.value=a.convertURL(b.value||b.url,"src")},[{text:"None",value:""}]),value:s.src&&a.convertURL(s.src,"src"),onselect:function(a){var b=l.find("#alt");(!b.value()||a.lastControl&&b.value()==a.lastControl.text())&&b.value(a.control.text()),l.find("#src").value(a.control.value()).fire("change")},onPostRender:function(){q=this}}),a.settings.image_class_list&&(r={name:"class",type:"listbox",label:"Class",values:c(a.settings.image_class_list,function(b){b.value&&(b.textStyle=function(){return a.formatter.getCssText({inline:"img",classes:[b.value]})})})});var v=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:h},q];a.settings.image_description!==!1&&v.push({name:"alt",type:"textbox",label:"Image description"}),a.settings.image_title&&v.push({name:"title",type:"textbox",label:"Image Title"}),u&&v.push({type:"container",label:"Dimensions",layout:"flex",direction:"row",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:3,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}),v.push(r),a.settings.image_caption&&tinymce.Env.ceFalse&&v.push({name:"caption",type:"checkbox",label:"Caption"}),a.settings.image_advtab?(m&&(m.style.marginLeft&&m.style.marginRight&&m.style.marginLeft===m.style.marginRight&&(s.hspace=g(m.style.marginLeft)),m.style.marginTop&&m.style.marginBottom&&m.style.marginTop===m.style.marginBottom&&(s.vspace=g(m.style.marginTop)),m.style.borderWidth&&(s.border=g(m.style.borderWidth)),s.style=a.dom.serializeStyle(a.dom.parseStyle(a.dom.getAttrib(m,"style")))),l=a.windowManager.open({title:"Insert/edit image",data:s,bodyType:"tabpanel",body:[{title:"General",type:"form",items:v},{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:k},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,alignH:["left","right"],defaults:{type:"textbox",maxWidth:50,onchange:j},items:[{label:"Vertical space",name:"vspace"},{label:"Horizontal space",name:"hspace"},{label:"Border",name:"border"}]}]}],onSubmit:f})):l=a.windowManager.open({title:"Insert/edit image",data:s,body:v,onSubmit:f})}a.on("preInit",function(){function b(a){var b=a.attr("class");return b&&/\bimage\b/.test(b)}function c(a){return function(c){function d(b){b.attr("contenteditable",a?"true":null)}for(var e,f=c.length;f--;)e=c[f],b(e)&&(e.attr("contenteditable",a?"false":null),tinymce.each(e.getAll("figcaption"),d))}}a.parser.addNodeFilter("figure",c(!0)),a.serializer.addNodeFilter("figure",c(!1))}),a.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:d(e),stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),a.addMenuItem("image",{icon:"image",text:"Insert/edit image",onclick:d(e),context:"insert",prependToContext:!0}),a.addCommand("mceImage",d(e))}); \ No newline at end of file diff --git a/assets/plugins/tinymce4/tinymce/plugins/imagetools/plugin.min.js b/assets/plugins/tinymce4/tinymce/plugins/imagetools/plugin.min.js new file mode 100755 index 0000000000..6a29b2aae4 --- /dev/null +++ b/assets/plugins/tinymce4/tinymce/plugins/imagetools/plugin.min.js @@ -0,0 +1 @@ +!function(){var a={},b=function(b){for(var c=a[b],e=c.deps,f=c.defn,g=e.length,h=new Array(g),i=0;g>i;++i)h[i]=d(e[i]);var j=f.apply(null,h);if(void 0===j)throw"module ["+b+"] returned undefined";c.instance=j},c=function(b,c,d){if("string"!=typeof b)throw"module id must be a string";if(void 0===c)throw"no dependencies for "+b;if(void 0===d)throw"no definition function for "+b;a[b]={deps:c,defn:d,instance:void 0}},d=function(c){var d=a[c];if(void 0===d)throw"module ["+c+"] was undefined";return void 0===d.instance&&b(c),d.instance},e=function(a,b){for(var c=a.length,e=new Array(c),f=0;c>f;++f)e.push(d(a[f]));b.apply(null,b)},f={};f.bolt={module:{api:{define:c,require:e,demand:d}}};var g=c,h=function(a,b){g(a,[],function(){return b})};h("1",tinymce.PluginManager),h("2",tinymce.Env),h("3",tinymce.util.Promise),h("4",tinymce.util.URI),h("5",tinymce.util.Tools),h("6",tinymce.util.Delay),g("j",[],function(){function a(a,b){return c(document.createElement("canvas"),a,b)}function b(a){return a.getContext("2d")}function c(a,b,c){return a.width=b,a.height=c,a}return{create:a,resize:c,get2dContext:b}}),g("k",[],function(){function a(a){return a.naturalWidth||a.width}function b(a){return a.naturalHeight||a.height}return{getWidth:a,getHeight:b}}),g("l",[],function(){function a(a,b){return function(){a.apply(b,arguments)}}function b(b){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof b)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],h(b,a(d,this),a(e,this))}function c(a){var b=this;return null===this._state?void this._deferreds.push(a):void i(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function d(b){try{if(b===this)throw new TypeError("A promise cannot be resolved with itself.");if(b&&("object"==typeof b||"function"==typeof b)){var c=b.then;if("function"==typeof c)return void h(a(c,b),a(d,this),a(e,this))}this._state=!0,this._value=b,f.call(this)}catch(g){e.call(this,g)}}function e(a){this._state=!1,this._value=a,f.call(this)}function f(){for(var a=0,b=this._deferreds.length;b>a;a++)c.call(this,this._deferreds[a]);this._deferreds=null}function g(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function h(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}if(window.Promise)return window.Promise;var i=b.immediateFn||"function"==typeof setImmediate&&setImmediate||function(a){setTimeout(a,1)},j=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};return b.prototype["catch"]=function(a){return this.then(null,a)},b.prototype.then=function(a,d){var e=this;return new b(function(b,f){c.call(e,new g(a,d,b,f))})},b.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&j(arguments[0])?arguments[0]:arguments);return new b(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},b}),g("m",[],function(){function a(a){var b=document.createElement("a");return b.href=a,b.pathname}function b(b){var c=a(b).split("."),d=c[c.length-1],e={jpg:"image/jpeg",jpeg:"image/jpeg",png:"image/png"};return d&&(d=d.toLowerCase()),e[d]}return{guessMimeType:b}}),g("c",["l","j","m","k"],function(a,b,c,d){function e(b){return new a(function(a){function c(){b.removeEventListener("load",c),a(b)}b.complete?a(b):b.addEventListener("load",c)})}function f(a){return e(a).then(function(a){var c,e;return e=b.create(d.getWidth(a),d.getHeight(a)),c=b.get2dContext(e),c.drawImage(a,0,0),e})}function g(a){return e(a).then(function(a){var b=a.src;return 0===b.indexOf("blob:")?i(b):0===b.indexOf("data:")?j(b):f(a).then(function(a){return j(a.toDataURL(c.guessMimeType(b)))})})}function h(b){return new a(function(a){function c(){d.removeEventListener("load",c),a(d)}var d=new Image;d.addEventListener("load",c),d.src=URL.createObjectURL(b),d.complete&&c()})}function i(b){return new a(function(a){var c=new XMLHttpRequest;c.open("GET",b,!0),c.responseType="blob",c.onload=function(){200==this.status&&a(this.response)},c.send()})}function j(b){return new a(function(a){var c,d,e,f,g,h;if(b=b.split(","),f=/data:([^;]+)/.exec(b[0]),f&&(g=f[1]),c=atob(b[1]),window.WebKitBlobBuilder){for(h=new WebKitBlobBuilder,d=new ArrayBuffer(c.length),e=0;ec?a=c:b>a&&(a=b),a}function b(){return[1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,1]}function c(a,b){var c,d,e,f,g=[],h=new Array(10);for(c=0;5>c;c++){for(d=0;5>d;d++)g[d]=b[d+5*c];for(d=0;5>d;d++){for(f=0,e=0;5>e;e++)f+=a[d+5*e]*g[e];h[d+5*c]=f}}return h}function d(b,c){return c=a(c,0,1),b.map(function(b,d){return d%6===0?b=1-(1-b)*c:b*=c,a(b,0,1)})}function e(b,d){var e;return d=a(d,-1,1),d*=100,0>d?e=127+d/100*127:(e=d%1,e=0===e?l[d]:l[Math.floor(d)]*(1-e)+l[Math.floor(d)+1]*e,e=127*e+127),c(b,[e/127,0,0,0,.5*(127-e),0,e/127,0,0,.5*(127-e),0,0,e/127,0,.5*(127-e),0,0,0,1,0,0,0,0,0,1])}function f(b,d){var e,f,g,h;return d=a(d,-1,1),e=1+(d>0?3*d:d),f=.3086,g=.6094,h=.082,c(b,[f*(1-e)+e,g*(1-e),h*(1-e),0,0,f*(1-e),g*(1-e)+e,h*(1-e),0,0,f*(1-e),g*(1-e),h*(1-e)+e,0,0,0,0,0,1,0,0,0,0,0,1])}function g(b,d){var e,f,g,h,i;return d=a(d,-180,180)/180*Math.PI,e=Math.cos(d),f=Math.sin(d),g=.213,h=.715,i=.072,c(b,[g+e*(1-g)+f*-g,h+e*-h+f*-h,i+e*-i+f*(1-i),0,0,g+e*-g+.143*f,h+e*(1-h)+.14*f,i+e*-i+f*-.283,0,0,g+e*-g+f*-(1-g),h+e*-h+f*h,i+e*(1-i)+f*i,0,0,0,0,0,1,0,0,0,0,0,1])}function h(b,d){return d=a(255*d,-255,255),c(b,[1,0,0,0,d,0,1,0,0,d,0,0,1,0,d,0,0,0,1,0,0,0,0,0,1])}function i(b,d,e,f){return d=a(d,0,2),e=a(e,0,2),f=a(f,0,2),c(b,[d,0,0,0,0,0,e,0,0,0,0,0,f,0,0,0,0,0,1,0,0,0,0,0,1])}function j(b,e){return e=a(e,0,1),c(b,d([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e))}function k(b,e){return e=a(e,0,1),c(b,d([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e))}var l=[0,.01,.02,.04,.05,.06,.07,.08,.1,.11,.12,.14,.15,.16,.17,.18,.2,.21,.22,.24,.25,.27,.28,.3,.32,.34,.36,.38,.4,.42,.44,.46,.48,.5,.53,.56,.59,.62,.65,.68,.71,.74,.77,.8,.83,.86,.89,.92,.95,.98,1,1.06,1.12,1.18,1.24,1.3,1.36,1.42,1.48,1.54,1.6,1.66,1.72,1.78,1.84,1.9,1.96,2,2.12,2.25,2.37,2.5,2.62,2.75,2.87,3,3.2,3.4,3.6,3.8,4,4.3,4.7,4.9,5,5.5,6,6.5,6.8,7,7.3,7.5,7.8,8,8.4,8.7,9,9.4,9.6,9.8,10];return{identity:b,adjust:d,multiply:c,adjustContrast:e,adjustBrightness:h,adjustSaturation:f,adjustHue:g,adjustColors:i,adjustSepia:j,adjustGrayscale:k}}),g("a",["j","k","c","n"],function(a,b,c,d){function e(d,e){return c.blobToImage(d).then(function(d){function f(a,b){var c,d,e,f,g,h=a.data,i=b[0],j=b[1],k=b[2],l=b[3],m=b[4],n=b[5],o=b[6],p=b[7],q=b[8],r=b[9],s=b[10],t=b[11],u=b[12],v=b[13],w=b[14],x=b[15],y=b[16],z=b[17],A=b[18],B=b[19];for(g=0;gc?a=c:b>a&&(a=b),a}var e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u;for(g=Math.round(Math.sqrt(c.length)),h=Math.floor(g/2),e=a.data,f=b.data,t=a.width,u=a.height,j=0;u>j;j++)for(i=0;t>i;i++){for(k=l=m=0,o=0;g>o;o++)for(n=0;g>n;n++)p=d(i+n-h,0,t-1),q=d(j+o-h,0,u-1),r=4*(q*t+p),s=c[o*g+n],k+=e[r]*s,l+=e[r+1]*s,m+=e[r+2]*s;r=4*(j*t+i),f[r]=d(k,0,255),f[r+1]=d(l,0,255),f[r+2]=d(m,0,255)}return b}var g,h,i=a.create(b.getWidth(d),b.getHeight(d)),j=a.get2dContext(i);return j.drawImage(d,0,0),k(d),g=j.getImageData(0,0,i.width,i.height),h=j.getImageData(0,0,i.width,i.height),h=f(g,h,e),j.putImageData(h,0,0),c.canvasToBlob(i)})}function g(d){return function(e,f){return c.blobToImage(e).then(function(e){function g(a,b){var c,d=a.data;for(c=0;ce?360+e:e,90!=e&&270!=e||b.resize(g,g.height,g.width),90!=e&&180!=e||(j=g.width),270!=e&&180!=e||(k=g.height),i.translate(j,k),i.rotate(e*Math.PI/180),i.drawImage(f,0,0),h(f),a.canvasToBlob(g,d.type)})}function e(d,e){return a.blobToImage(d).then(function(d){var f=b.create(c.getWidth(d),c.getHeight(d)),g=b.get2dContext(f);return"v"==e?(g.scale(1,-1),g.drawImage(d,0,-f.height)):(g.scale(-1,1),g.drawImage(d,-f.width,0)),h(d),a.canvasToBlob(f)})}function f(c,d,e,f,g){return a.blobToImage(c).then(function(c){var i=b.create(f,g),j=b.get2dContext(i);return j.drawImage(c,-d,-e),h(c),a.canvasToBlob(i)})}function g(c,d,e){return a.blobToImage(c).then(function(f){var g=b.create(d,e),i=b.get2dContext(g);return i.drawImage(f,0,0,d,e),h(f),a.canvasToBlob(g,c.type)})}var h=a.revokeImageUrl;return{rotate:d,flip:e,crop:f,resize:g}}),g("7",["a","b"],function(a,b){var c=function(b){return a.invert(b)},d=function(b){return a.sharpen(b)},e=function(b){return a.emboss(b)},f=function(b,c){return a.gamma(b,c)},g=function(b,c){return a.exposure(b,c)},h=function(b,c,d,e){return a.colorize(b,c,d,e)},i=function(b,c){return a.brightness(b,c)},j=function(b,c){return a.hue(b,c)},k=function(b,c){return a.saturate(b,c)},l=function(b,c){return a.contrast(b,c)},m=function(b,c){return a.grayscale(b,c)},n=function(b,c){return a.sepia(b,c)},o=function(a,c){return b.flip(a,c)},p=function(a,c,d,e,f){return b.crop(a,c,d,e,f)},q=function(a,c,d){return b.resize(a,c,d)},r=function(a,c){return b.rotate(a,c)};return{invert:c,sharpen:d,emboss:e,brightness:i,hue:j,saturate:k,contrast:l,grayscale:m,sepia:n,colorize:h,gamma:f,exposure:g,flip:o,crop:p,resize:q,rotate:r}}),g("8",["c"],function(a){var b=function(b){return a.blobToImage(b)},c=function(b){return a.imageToBlob(b)},d=function(b){return a.blobToDataUri(b)},e=function(b){return a.blobToBase64(b)};return{blobToImage:b,imageToBlob:c,blobToDataUri:d,blobToBase64:e}}),h("d",tinymce.dom.DOMUtils),h("e",tinymce.ui.Factory),h("f",tinymce.ui.Form),h("g",tinymce.ui.Container),h("o",tinymce.ui.Control),h("p",tinymce.ui.DragHelper),h("q",tinymce.geom.Rect),h("s",tinymce.dom.DomQuery),h("t",tinymce.util.Observable),g("r",["s","p","q","5","t"],function(a,b,c,d,e){var f=0;return function(g,h,i,j){function k(a,b){return{x:b.x+a.x,y:b.y+a.y,w:b.w,h:b.h}}function l(a,b){return{x:b.x-a.x,y:b.y-a.y,w:b.w,h:b.h}}function m(){return l(i,g)}function n(){function e(a){var d;return new b(A,{document:j.ownerDocument,handle:A+"-"+a.name,start:function(){d=g},drag:function(b){var e,f,h,j,k;e=d.x,f=d.y,h=d.w,j=d.h,e+=b.deltaX*a.deltaX,f+=b.deltaY*a.deltaY,h+=b.deltaX*a.deltaW,j+=b.deltaY*a.deltaH,20>h&&(h=20),20>j&&(j=20),k=g=c.clamp({x:e,y:f,w:h,h:j},i,"move"==a.name),k=l(i,k),v.fire("updateRect",{rect:k}),s(k)}})}a('
                      ').appendTo(j),d.each(y,function(b){a("#"+A,j).append(''; - - $rowTpl = '@CODE:[+wf.linktext+][+wf.wrapper+]'; - - $parentRowTpl = '@CODE:
                    • [+wf.linktext+] - - [+wf.wrapper+] - -
                    • '; - - $innerTpl = '@CODE:
                        - [+wf.wrapper+] -
                      '; - - $cssTpl = '@CODE: - '; -?> \ No newline at end of file diff --git a/assets/snippets/wayfinder/configs/default.config.php b/assets/snippets/wayfinder/configs/default.config.php.blank similarity index 100% rename from assets/snippets/wayfinder/configs/default.config.php rename to assets/snippets/wayfinder/configs/default.config.php.blank diff --git a/assets/snippets/wayfinder/configs/mollio.config.php b/assets/snippets/wayfinder/configs/mollio.config.php index 969d8ef2d9..717bc38ab9 100644 --- a/assets/snippets/wayfinder/configs/mollio.config.php +++ b/assets/snippets/wayfinder/configs/mollio.config.php @@ -32,12 +32,12 @@ /* NAV - top horizontal nav */ #nav, #nav ul {padding: 0;margin: 0;list-style: none} - #nav {font-weight:bold;height:2.09em;font: bold 96% arial;margin: 0 105px 0 40px} + #nav {height:2.09em;} #nav li {position:relative;background: #999;float: left;width: 10em;display:block;margin: 0;border-bottom: 3px solid #666;border-right: 3px solid #252525;padding:0} #nav a, #nav a:link, #nav a:visited, #nav a:hover, #nav a:active {text-decoration:none;cursor:pointer;color:#fff;display: block;padding: 4px 10px 2px} #nav a:hover {color:#000} - #nav li ul {border-left: 1px solid #c00;background: #f6f6f6 url("assets/snippets/wayfinder/examples/mollio/images/featurebox_bg.gif") no-repeat 100% 100%;width:15.8em;font-size:90%;margin-top:3px;position: absolute;font-weight:normal;left: -999em} + #nav li ul {border-left: 1px solid #c00;background: #f6f6f6 url("assets/snippets/wayfinder/examples/mollio/images/featurebox_bg.png") no-repeat 100% 100%;width:15.8em;margin-top:3px;position: absolute;left: -999em} #nav li:hover ul, #nav li.sfhover ul {left: 0;z-index:99999} #nav li li {background:none;float:none;border:none;border: 1px solid #999;border-top:1px solid #fff;border-right:none;border-left:none;padding-left:0} @@ -46,16 +46,16 @@ #nav li li a:hover {color:#fff;background:#c00} #nav li.active {background: #c00;border-bottom: 3px solid #c00} - #nav li.active ul {border:none;background: #c00 url("assets/snippets/wayfinder/examples/mollio/images/featurebox2_bg.gif") no-repeat 100% 100%} + #nav li.active ul {border:none;background: #c00 url("assets/snippets/wayfinder/examples/mollio/images/featurebox2_bg.png") no-repeat 100% 100%} #nav li.active a:link, #nav li.active a:visited, #nav li.active a:hover, #nav li.active a:active {} #nav li.active a:hover {color:#000} #nav li.active li {border:none;border-top: 1px solid #c15c5c;border-bottom: 1px solid #870000} #nav li.active li.last {border-bottom: none} #nav li.active li a:link, #nav li.active li a:visited, #nav li.active li a:hover, #nav li.active li a:active {color:#fff} - #nav li.active li a:hover {background: #666 url("assets/snippets/wayfinder/examples/mollio/images/sprites.gif") repeat-x 0 99%;color:#fff} + #nav li.active li a:hover {background: #666 url("assets/snippets/wayfinder/examples/mollio/images/sprites.png") repeat-x 0 99%;color:#fff} - #nav li.active li.active a:link, #nav li.active li.active a:visited, #nav li.active li.active a:hover, #nav li.active li.active a:active {color:#fff;font-weight:bold;background: #666 url("assets/snippets/wayfinder/examples/mollio/images/sprites.gif") repeat-x 0 99%} + #nav li.active li.active a:link, #nav li.active li.active a:visited, #nav li.active li.active a:hover, #nav li.active li.active a:active {color:#fff;background: #666 url("assets/snippets/wayfinder/examples/mollio/images/sprites.png") repeat-x 0 99%} '; ?> \ No newline at end of file diff --git a/assets/snippets/wayfinder/examples/cssplay/basic_dd.css b/assets/snippets/wayfinder/examples/cssplay/basic_dd.css index bc481c8d79..d6f855b575 100755 --- a/assets/snippets/wayfinder/examples/cssplay/basic_dd.css +++ b/assets/snippets/wayfinder/examples/cssplay/basic_dd.css @@ -2,37 +2,35 @@ /* set up the overall width of the menu div, the font and the margins */ .menu { -font-family: arial, sans-serif; -width:750px; -margin:0; -margin:20px 0 60px 0; +width:750px; position:relative; z-index:100; } /* remove the bullets and set the margin and padding to zero for the unordered list */ .menu ul { -padding:0; +padding:0; margin:0; list-style-type: none; } /* float the list so that the items are in a line and their position relative so that the drop down list will appear in the right place underneath each list item */ .menu ul li { -float:left; +padding:0; +margin:0; +float:left; position:relative; } /* style the links to be 104px wide by 30px high with a top and right border 1px solid white. Set the background color and the font size. */ .menu ul li a, .menu ul li a:visited { -display:block; -text-align:center; -text-decoration:none; -width:106px; -height:30px; -color:#000; +display:block; +text-align:center; +text-decoration:none; +width:106px; +height:30px; +color:#000; border:1px solid #fff; border-width:1px 1px 0 0; -background:#c9c9a7; -line-height:30px; -font-size:11px; +background:#c9c9a7; +line-height:30px; } /* make the dropdown ul invisible */ .menu ul li ul { @@ -42,25 +40,25 @@ display: none; /* specific to non IE browsers */ /* set the background and foreground color of the main menu li on hover */ .menu ul li:hover a { -color:#fff; +color:#fff; background:#b3ab79; } /* make the sub menu ul visible and position it beneath the main menu list item */ .menu ul li:hover ul { -display:block; -position:absolute; -top:31px; -left:0; +display:block; +position:absolute; +top:31px; +left:0; width:105px; } /* style the background and foreground color of the submenu links */ .menu ul li:hover ul li a { -display:block; -background:#faeec7; +display:block; +background:#faeec7; color:#000; } /* style the background and forground colors of the links on hover */ .menu ul li:hover ul li a:hover { -background:#dfc184; +background:#dfc184; color:#000; } diff --git a/assets/snippets/wayfinder/examples/cssplay/basic_dd_ie.css b/assets/snippets/wayfinder/examples/cssplay/basic_dd_ie.css deleted file mode 100755 index dbcefdd023..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/basic_dd_ie.css +++ /dev/null @@ -1,35 +0,0 @@ -/* styling specific to Internet Explorer IE5.5 and IE6. Yet to see if IE7 handles li:hover */ - -/* Get rid of any default table style */ -table { -border-collapse:collapse; -margin:0; -padding:0; -} -/* ignore the link used by 'other browsers' */ -.menu ul li a.hide, .menu ul li a:visited.hide { -display:none; -} -/* set the background and foreground color of the main menu link on hover */ -.menu ul li a:hover { -color:#fff; -background:#b3ab79; -} -/* make the sub menu ul visible and position it beneath the main menu list item */ -.menu ul li a:hover ul { -display:block; -position:absolute; -top:32px; -left:0; -width:105px; -} -/* style the background and foreground color of the submenu links */ -.menu ul li a:hover ul li a { -background:#faeec7; -color:#000; -} -/* style the background and forground colors of the links on hover */ -.menu ul li a:hover ul li a:hover { -background:#dfc184; -color:#000; -} diff --git a/assets/snippets/wayfinder/examples/cssplay/chunks.txt b/assets/snippets/wayfinder/examples/cssplay/chunks.txt index fa0f787827..56adca3375 100755 --- a/assets/snippets/wayfinder/examples/cssplay/chunks.txt +++ b/assets/snippets/wayfinder/examples/cssplay/chunks.txt @@ -23,19 +23,7 @@ wfParentRow: ------------
                    • [+wf.linktext+] - - - [+wf.wrapper+] - - -
                    • wfRow: @@ -52,12 +40,9 @@ This chunk is meant for the menus that are in template_revisited.html !! wfParentRow: ------------ -
                    • [+wf.linktext+] +
                    • [+wf.linktext+]
                      - [+wf.wrapper+] -
                      -
                    • \ No newline at end of file diff --git a/assets/snippets/wayfinder/examples/cssplay/dropdown.css b/assets/snippets/wayfinder/examples/cssplay/dropdown.css index aced1dee88..24e609afcd 100755 --- a/assets/snippets/wayfinder/examples/cssplay/dropdown.css +++ b/assets/snippets/wayfinder/examples/cssplay/dropdown.css @@ -1,8 +1,9 @@ /* common styling */ -.menu {font-family: arial, sans-serif; width:750px; position:relative; margin:0; font-size:11px; margin:2px 0 100px 0; z-index:100;} -.menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000;width:104px; height:20px; text-align:center; color:#fff; border:1px solid #fff; background:#710069; line-height:20px; font-size:11px; overflow:hidden;} -.menu ul {padding:0; margin:0;list-style-type: none; } -.menu ul li {float:left; margin-right:1px; position:relative;} +.menu {width:750px; position:relative; margin:0; z-index:100;} +.menu ul li a, .menu ul li a:visited, .menu ul li a:link {display:block; text-decoration:none; color:#000;width:104px; height:20px; text-align:center; color:#fff; background:#710069; line-height:20px; overflow:hidden;} +.menu ul, .menu ul li {padding:0; margin:0;} +.menu ul {list-style-type: none; } +.menu ul li {float:left; position:relative;} .menu ul li ul {display: none;} /* specific to non IE browsers */ diff --git a/assets/snippets/wayfinder/examples/cssplay/dropdown_ie.css b/assets/snippets/wayfinder/examples/cssplay/dropdown_ie.css deleted file mode 100755 index 54c6b12e4c..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/dropdown_ie.css +++ /dev/null @@ -1,11 +0,0 @@ -.menu ul li a.hide, .menu ul li a:visited.hide {display:none;} -.menu ul li a:hover ul li a.hide {display:none;} - -.menu ul li a:hover {color:#fff; background:#36f;} -.menu ul li a:hover ul {display:block; position:absolute; top:21px; left:0; width:105px;} -.menu ul li a:hover ul li a.sub {background:#6a3; color:#fff;} -.menu ul li a:hover ul li a {display:block; background:#ddd; color:#000;} -.menu ul li a:hover ul li a ul {visibility:hidden;} -.menu ul li a:hover ul li a:hover {background:#6fc; color:#000;} -.menu ul li a:hover ul li a:hover ul {visibility:visible; position:absolute; left:105px; top:0; color:#000;} -.menu ul li a:hover ul li a:hover ul.left {left:-105px;} diff --git a/assets/snippets/wayfinder/examples/cssplay/dropline.css b/assets/snippets/wayfinder/examples/cssplay/dropline.css index 5e4db33249..b481d900fc 100755 --- a/assets/snippets/wayfinder/examples/cssplay/dropline.css +++ b/assets/snippets/wayfinder/examples/cssplay/dropline.css @@ -1,13 +1,14 @@ /* common styling */ -.menu {font-family: arial, sans-serif; width:749px; height:30px; position:relative; margin:0; font-size:11px; margin:50px 0; background:#fff; position:relative;} +/*.menu, .menu ul li:hover ul {width:749px;}*/ +.menu {height:30px; position:relative; margin:0; margin:50px 0; background:#fff; position:relative;} .menu ul {padding:0; margin:0; list-style-type: none;} -.menu ul li {float:left; border-left:1px solid #eee; width:106px;} +.menu ul li {padding:0; margin:0; float:left; border-left:1px solid #eee; width:106px;} .menu ul li a, .menu ul li a:visited {display:block; float:left; width:101px; text-decoration:none; padding:0 0 0 5px; height:30px; line-height:30px; color:#000; background:#c9c9a7 url(drop.gif) bottom right no-repeat;} .menu ul li ul {display: none;} /* specific to non IE browsers */ -.menu ul li:hover a {color:#fff; background:#b3ab79;} -.menu ul li:hover ul {display:block; position:absolute; width:749px; top:30px; left:0; background:#b3ab79; color:#fff;} +.menu ul li:hover a {color:#fff; background:#b3ab79;} +.menu ul li:hover ul {display:block; position:absolute; top:30px; left:0; background:#b3ab79; color:#fff;} .menu ul li:hover ul.right_side li {float:right; border:0; border-left:1px solid #eee;} .menu ul li:hover ul.left_side li {float:left; border:0; border-left:1px solid #eee;} .menu ul li:hover ul li a.hide {background:#bd8d5e url(drop2.gif) bottom right no-repeat; color:#fff;} diff --git a/assets/snippets/wayfinder/examples/cssplay/dropline_ie.css b/assets/snippets/wayfinder/examples/cssplay/dropline_ie.css deleted file mode 100755 index 87bbe6c396..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/dropline_ie.css +++ /dev/null @@ -1,18 +0,0 @@ -table {border-collapse:collapse; margin:0; padding:0;} - -.menu ul li a.hide, .menu ul li a:visited.hide {display:none;} -.menu ul li a:hover ul li a.hide {display:none;} -.menu ul li a, .menu ul li a:visited {background:#c9c9a7 url(drop.gif) 20px right no-repeat;} - - -.menu ul li a:hover {color:#fff; background:#b3ab79;} -.menu ul li a:hover ul {display:block; position:absolute; width:749px; top:30px; left:0; background:#b3ab79; color:#fff;} -.menu ul li a:hover ul.right_side li {float:right; border-width:0 1px 0 0 0;} -.menu ul li a:hover ul.left_side li {float:left;} -.menu ul li a:hover ul li a.sub {background:#bd8d5e url(drop2.gif) 20px right no-repeat; color:#fff;} -.menu ul li a:hover ul li a {display:block; background:#b3ab79; color:#fff;} -.menu ul li a:hover ul li a ul {visibility:hidden;} -.menu ul li a:hover ul li a:hover {background:#dfc184; color:#000;} -.menu ul li a:hover ul li a:hover ul {visibility:visible; position:absolute; left:0; top:30px; color:#000; background:#dfc184;} -.menu ul li a:hover ul li a:hover ul li a {background:#dfc184; color:#000;} -.menu ul li a:hover ul li a:hover ul li a:hover {background:#bd8d5e; color:#fff;} diff --git a/assets/snippets/wayfinder/examples/cssplay/flyout.css b/assets/snippets/wayfinder/examples/cssplay/flyout.css index 6bbc7d9ee8..022bcb9c8f 100755 --- a/assets/snippets/wayfinder/examples/cssplay/flyout.css +++ b/assets/snippets/wayfinder/examples/cssplay/flyout.css @@ -1,13 +1,14 @@ /* common styling */ -.menu {font-family: arial, sans-serif; width:106px; height:150px; position:relative; margin:0; font-size:11px; margin:50px 0;} -.menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000; width:104px; height:20px; text-align:center; border:1px solid #fff; border-width:1px 1px 0 0; background:#c9c9a7; line-height:19px; font-size:11px;} +.menu {width:106px; height:150px; position:relative; margin:0; margin:50px 0;} +.menu ul li a, .menu ul li a:visited {padding:5px;display:block; text-decoration:none; color:#000; width:104px; height:20px; text-align:left; border:1px solid #fff; border-width:1px 1px 0 0; background:#c9c9a7; line-height:19px;} +.menu ul li a:visited,.menu ul li a:link {color:#000;} .menu ul {padding:0; margin:0;list-style-type: none; } -.menu ul li {float:left; margin-right:1px; position:relative;} +.menu ul li {margin:0;float:left; margin-right:1px; position:relative;} .menu ul li ul {display: none;} /* specific to non IE browsers */ .menu ul li:hover a {color:#fff; background:#b3ab79;} -.menu ul li:hover ul {display:block; position:absolute; top:0; left:105px; width:105px;} +.menu ul li:hover ul {display:block; position:absolute; top:0; left:115px; width:105px;} .menu ul li:hover ul li a.hide {background:#dfc184; color:#000;} .menu ul li:hover ul li:hover a.hide {width:150px;} .menu ul li:hover ul li ul {display: none;} diff --git a/assets/snippets/wayfinder/examples/cssplay/flyout_ie.css b/assets/snippets/wayfinder/examples/cssplay/flyout_ie.css deleted file mode 100755 index 6e55bcb618..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/flyout_ie.css +++ /dev/null @@ -1,14 +0,0 @@ -table {border-collapse:collapse; border:0; margin:0; padding:0;} - -.menu ul li a.hide, .menu ul li a:visited.hide {display:none;} -.menu ul li a:hover ul li a.hide {display:none;} - -.menu ul li a:hover {color:#fff; background:#b3ab79;} -.menu ul li a:hover ul {display:block; position:absolute; top:0; left:105px; width:105px;} -.menu ul li a:hover ul li a.sub {background:#dfc184; color:#000;} -.menu ul li a:hover ul li a {display:block; background:#b3ab79; color:#fff; width:150px;} -.menu ul li a:hover ul li a ul {visibility:hidden;} -.menu ul li a:hover ul li a:hover {background:#dfc184; color:#000;} -.menu ul li a:hover ul li a:hover ul {visibility:visible; position:absolute; left:151px; top:0; color:#000;} -.menu ul li a:hover ul li a:hover ul li a {display:block; width:200px; background:#dfc184; color:#000;} -.menu ul li a:hover ul li a:hover ul li a:hover {background:#bd8d5e; color:#fff;} diff --git a/assets/snippets/wayfinder/examples/cssplay/flyout_revisited.css b/assets/snippets/wayfinder/examples/cssplay/flyout_revisited.css deleted file mode 100755 index c0ef6b7fbf..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/flyout_revisited.css +++ /dev/null @@ -1,71 +0,0 @@ -.menu { -position:relative; -z-index:1000; -font-size:90%; -} - -/* remove all the bullets, borders and padding from the default list styling */ -.menu ul { -padding:0; -margin:0; -list-style-type:none; -width:150px; -} -/* hack for IE5.5 */ -* html .menu ul {margin-left:-16px; ma\rgin-left:0;} -/* position relative so that you can position the sub levels */ -.menu li { -position:relative; -} - -/* get rid of the table */ -table {position:absolute; top:0; left:0; z-index:100; font-size:1em;} - -/* style the links */ -.menu a, .menu a:visited { -display:block; -text-decoration:none; -height:25px; -line-height:25px; -width:149px; -color:#000; -background:#d4d8bd; -text-indent:5px; -border:1px solid #fff; -border-width:0 1px 1px 0; -} -/* hack for IE5.5 */ -* html .menu a, * html .menu a:visited {width:150px; w\idth:149px;} -/* style the link hover */ -.menu a:hover{ -color:#fff; -background:#949e7c; -} - -/* hide the sub levels and give them a positon absolute so that they take up no room */ -.menu ul ul { -visibility:hidden; -position:absolute; -top:0; -left:150px; -} -/* make the second level visible when hover on first level list OR link */ -.menu ul :hover ul{ -visibility:visible; -} -/* keep the third level hidden when you hover on first level list OR link */ -.menu ul :hover ul ul{ -visibility:hidden; -} -/* keep the fourth level hidden when you hover on second level list OR link */ -.menu ul :hover ul :hover ul ul{ -visibility:hidden; -} -/* make the third level visible when you hover over second level list OR link */ -.menu ul :hover ul :hover ul{ -visibility:visible; -} -/* make the fourth level visible when you hover over third level list OR link */ -.menu ul :hover ul :hover ul :hover ul { -visibility:visible; -} \ No newline at end of file diff --git a/assets/snippets/wayfinder/examples/cssplay/template.html b/assets/snippets/wayfinder/examples/cssplay/template.html index be295a31bb..e121fe40e9 100755 --- a/assets/snippets/wayfinder/examples/cssplay/template.html +++ b/assets/snippets/wayfinder/examples/cssplay/template.html @@ -2,9 +2,6 @@ - diff --git a/assets/snippets/wayfinder/examples/cssplay/template_revisited.html b/assets/snippets/wayfinder/examples/cssplay/template_revisited.html deleted file mode 100755 index 8a55cc9970..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/template_revisited.html +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - - - -

                      Change the css stylesheets to alter the menu type!

                      -Possible values are:
                      - - - - - - \ No newline at end of file diff --git a/assets/snippets/wayfinder/examples/cssplay/ultimate_drop.css b/assets/snippets/wayfinder/examples/cssplay/ultimate_drop.css deleted file mode 100755 index 30776073ac..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/ultimate_drop.css +++ /dev/null @@ -1,111 +0,0 @@ - /* common styling */ -.menu { -font-family: verdana, sans-serif; -width:750px; -position:relative; -font-size:0.85em; -z-index:100; -} -.menu ul { -padding:0; -margin:0; -list-style-type: none; -} -.menu ul li { -float:left; -position:relative; -} -.menu ul li a, .menu ul li a:visited { -display:block; -text-decoration:none; -color:#000; -width:139px; -height:3em; -color:#000; -border:1px solid #fff; -border-width:1px 1px 0 0; -background:#dfc184; -padding-left:10px; -line-height:3em; -} -* html .menu ul li a, .menu ul li a:visited { -width:149px; -w\idth:139px; -} -.menu ul li ul { -display: none; -} -table { -margin:-1px; -border-collapse:collapse; -font-size:1em; -} - -/* specific to non IE browsers */ -.menu ul li:hover a, -.menu ul li a:hover { -color:#fff; -background:#bd8d5e; -} - -.menu ul li:hover ul, -.menu ul li a:hover ul { -display:block; -position:absolute; -top:3em; -margin-top:1px; -left:0; -width:150px; -} -* html .menu ul li a:hover ul { -margin-top:0; -marg\in-top:1px; -} - -.menu ul li:hover ul li ul, -.menu ul li a:hover ul li a ul { -visibility:hidden; -position:absolute; -height:0; -width:0; -} - -.menu ul li:hover ul li a, -.menu ul li a:hover ul li a { -display:block; -background:#faeec7; -color:#000; -height:auto; -line-height:1.2em; -padding:5px 10px; -width:129px -} -* html .menu ul li a:hover ul li a { -width:150px; -w\idth:129px; -} - -.menu ul li:hover ul li a.drop, -.menu ul li a:hover ul li a.drop { -background:#c9c9a7 url(drop.gif) bottom right no-repeat; -} - -.menu ul li:hover ul li a:hover, -.menu ul li a:hover ul li a:hover { -background:#c9c9a7; -color:#000; -} - -.menu ul li:hover ul li:hover ul, -.menu ul li a:hover ul li a:hover ul { -visibility:visible; -position:absolute; -left:150px; -top:0; -width:150px; -} - -.menu ul li:hover ul li:hover ul.left, -.menu ul li a:hover ul li a:hover ul.left { -left:-150px; -} diff --git a/assets/snippets/wayfinder/examples/cssplay/upmenu.css b/assets/snippets/wayfinder/examples/cssplay/upmenu.css deleted file mode 100755 index 19e159fa8a..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/upmenu.css +++ /dev/null @@ -1,22 +0,0 @@ -/* common styling */ -.menu {font-family: verdana, arial, sans-serif; width:735px; position:relative; font-size:11px; margin:50px auto;} -.menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; width:94px; height:25px; text-align:left; color:#000; padding-left:10px; border:1px solid #fff; border-width:0 1px 1px 0; background:#c9c9a7; line-height:25px; font-size:11px;} -.menu ul {padding:0; margin:0;list-style-type: none; } -.menu ul li {float:left; position:relative;} -.menu ul li ul {display: none;} - -/* specific to non IE browsers */ -.menu ul li:hover a {color:#000; background:#e9e9c7;} -.menu ul li:hover ul {display:block; position:absolute; bottom:26px; left:0;} -.menu ul li:hover ul li a.hide {background:#a7c9c9; color:#000;} -.menu ul li:hover ul li {display:block; background:#fff; color:#000;width:199px; clear:both;} -.menu ul li:hover ul li:hover a.hide {background:#dfc184; color:#000;} -.menu ul li:hover ul li ul {display: none;} -.menu ul li:hover ul li a {display:block; background:#c9a7c9; color:#000; width:100%; padding-left:10px;} -.menu ul li:hover ul li a:hover {background:#dfc184; color:#000;} -.menu ul li:hover ul li:hover ul {display:block; position:absolute; left:210px; bottom:0;} -.menu ul li:hover ul li:hover ul li a {background:#dfc184; color:#000;} -.menu ul li:hover ul li:hover ul li a:hover {background:#c9c9a7; color:#000;} - -.menu ul li:hover ul.left {left:-105px;} -.menu ul li:hover ul li:hover ul.left {left:-210px; width:209px;} diff --git a/assets/snippets/wayfinder/examples/cssplay/upmenu_ie.css b/assets/snippets/wayfinder/examples/cssplay/upmenu_ie.css deleted file mode 100755 index 0c0d77f437..0000000000 --- a/assets/snippets/wayfinder/examples/cssplay/upmenu_ie.css +++ /dev/null @@ -1,17 +0,0 @@ -table {border-collapse:collapse; margin:0; padding:0;} -.menu ul li a.hide, .menu ul li a:visited.hide {display:none;} -.menu ul li a:hover ul li a.hide {display:none;} - -.menu ul li a:hover {color:#000; background:#e9e9c7;} -.menu ul li a:hover ul {display:block; position:absolute; bottom:26px; left:0;} -.menu ul li a:hover ul li {display:block; background:#fff; color:#000; width:199px;} -.menu ul li a:hover ul li a.sub {background:#a7c9c9; color:#000;} -.menu ul li a:hover ul li a {display:block; background:#c9a7c9; color:#000; width:100%; padding-left:10px;} -.menu ul li a:hover ul li a ul {visibility:hidden;} -.menu ul li a:hover ul li a:hover {background:#dfc184; color:#000;} -.menu ul li a:hover ul li a:hover ul {visibility:visible; position:absolute; left:210px; bottom:0;} -.menu ul li a:hover ul li a:hover ul li a {background:#dfc184; color:#000;} -.menu ul li a:hover ul li a:hover ul li a:hover {background:#c9c9a7; color:#000;} - -.menu ul li a:hover ul.left {left:-105px;} -.menu ul li a:hover ul li a:hover ul.left {left:-210px;} diff --git a/assets/snippets/wayfinder/examples/mollio/howto.txt b/assets/snippets/wayfinder/examples/mollio/howto.txt index 007a92344f..46e8e68067 100755 --- a/assets/snippets/wayfinder/examples/mollio/howto.txt +++ b/assets/snippets/wayfinder/examples/mollio/howto.txt @@ -89,7 +89,7 @@ http://creativecommons.org/licenses/GPL/2.0/ #nav a, #nav a:link, #nav a:visited, #nav a:hover, #nav a:active {text-decoration:none;cursor:pointer;color:#fff;display: block;padding: 4px 10px 2px} #nav a:hover {color:#000} -#nav li ul {border-left: 1px solid #c00;background: #f6f6f6 url("assets/images/featurebox_bg.gif") no-repeat 100% 100%;width:15.8em;font-size:90%;margin-top:3px;position: absolute;font-weight:normal;left: -999em} +#nav li ul {border-left: 1px solid #c00;background: #f6f6f6 url("assets/images/featurebox_bg.png") no-repeat 100% 100%;width:15.8em;font-size:90%;margin-top:3px;position: absolute;font-weight:normal;left: -999em} #nav li:hover ul, #nav li.sfhover ul {left: 0;z-index:99999} #nav li li {background:none;float:none;border:none;border: 1px solid #999;border-top:1px solid #fff;border-right:none;border-left:none;padding-left:0} @@ -98,16 +98,16 @@ http://creativecommons.org/licenses/GPL/2.0/ #nav li li a:hover {color:#fff;background:#c00} #nav li.active {background: #c00;border-bottom: 3px solid #c00} -#nav li.active ul {border:none;background: #c00 url("assets/images/featurebox2_bg.gif") no-repeat 100% 100%} +#nav li.active ul {border:none;background: #c00 url("assets/images/featurebox2_bg.png") no-repeat 100% 100%} #nav li.active a:link, #nav li.active a:visited, #nav li.active a:hover, #nav li.active a:active {} #nav li.active a:hover {color:#000} #nav li.active li {border:none;border-top: 1px solid #c15c5c;border-bottom: 1px solid #870000} #nav li.active li.last {border-bottom: none} #nav li.active li a:link, #nav li.active li a:visited, #nav li.active li a:hover, #nav li.active li a:active {color:#fff} -#nav li.active li a:hover {background: #666 url("assets/images/sprites.gif") repeat-x 0 99%;color:#fff} +#nav li.active li a:hover {background: #666 url("assets/images/sprites.png") repeat-x 0 99%;color:#fff} -#nav li.active li.active a:link, #nav li.active li.active a:visited, #nav li.active li.active a:hover, #nav li.active li.active a:active {color:#fff;font-weight:bold;background: #666 url("images/sprites.gif") repeat-x 0 99%} +#nav li.active li.active a:link, #nav li.active li.active a:visited, #nav li.active li.active a:hover, #nav li.active li.active a:active {color:#fff;font-weight:bold;background: #666 url("images/sprites.png") repeat-x 0 99%} '; + $output .= ''; + foreach ($this->debugInfo as $group => $item) { + switch ($group) { + case 'template': + $output .= ''; + foreach ($item as $parentId => $info) { + $output .= $modx->parseText(' + + ', $info); + } + break; + case 'wrapper': + $output .= ''; + + foreach ($item as $parentId => $info) { + $output .= $modx->parseText('
                      Template Processing
                      [+header+] - [+message+]
                      [+info+]
                      Document Processing
                      + + + ',$info); + + foreach ($this->debugInfo['row'] as $key => $value) { + $value['message_v'] = $this->debugInfo['rowdata'][$key]['message']; + $value['info_v'] = $this->debugInfo['rowdata'][$key]['info']; + $keyParts = explode(':',$key); + if ($parentId == $keyParts[0]) { + $output .= $modx->parseText(' + ',$value); + } + } + + $output .= '
                      [+header+] - [+message+]
                      [+info+]
                      Documents included in this wrapper:
                      [+header+]
                      +
                      [+message+] [+message_v+]
                      +
                      [+info+] [+info_v+]
                      '; + } + + break; + case 'settings': + $output .= 'Settings'; + foreach ($item as $parentId => $info) { + $output .= $modx->parseText(' + [+header+] - [+message+] + [+info+]',$info); + } + break; + default: + + break; + } + } + $output .= ''; + return $output; + } + + function modxPrep($value) { + global $modx; + $value = (strpos($value,'<') !== FALSE) ? htmlentities($value,ENT_NOQUOTES,$modx->config['modx_charset']) : $value; + $s = array('[', ']', '{', '}'); + $r = array('[', ']', '{', '}'); + $value = str_replace($s, $r, $value); + return $value; + } + + function hsc($string) { + global $modx; + return htmlspecialchars($string, ENT_COMPAT, $modx->config['modx_charset']); + } + + function getParentID($id) { + global $modx; + if($modx->documentObject['parent']==0) return $id; + return $modx->documentObject['parent']; + } } diff --git a/assets/snippets/weblogin/docs/webchangepwd.html b/assets/snippets/weblogin/docs/webchangepwd.html new file mode 100644 index 0000000000..24c2576e19 --- /dev/null +++ b/assets/snippets/weblogin/docs/webchangepwd.html @@ -0,0 +1,10 @@ + + +
                      +

                      WebChangePwd 1.1.2 +

                      Allows Web User to change their password from the front-end of the website

                      +

                       

                      +

                      Parameters

                      &tpl Chunk name or document id to use as a template (Optional)
                                    
                      Note: Templates design:
                              section 1: change pwd template
                              section 2: notification template


                      Examples

                      [[WebChangePwd? &tpl=`ChangePwd`]]

                      +
                      + + \ No newline at end of file diff --git a/assets/snippets/weblogin/docs/weblogin.html b/assets/snippets/weblogin/docs/weblogin.html new file mode 100644 index 0000000000..035c75a54f --- /dev/null +++ b/assets/snippets/weblogin/docs/weblogin.html @@ -0,0 +1,17 @@ + + +
                      +

                      WebLogin 1.1.3

                      +

                      Allows webusers to login to protected pages in the website, supporting multiple user groups

                      +

                       

                      +

                      Parameter

                      &loginhomeid redirects the user to first authorized page in the list (Optional)
                      If no id was specified then the login home page id or the current document id will be used.

                      &logouthomeid document id to load when user logs out (Optional)

                      &pwdreqid document id to load after the user has submited a request for a new password (Optional)

                      &pwdactid document id to load when the after the user has activated their new password (Optional)

                      &logintext Text to be displayed inside login button (for built-in form) (Optional) 

                      &logouttext Text to be displayed inside logout link (for built-in form) (Optional) 

                      &tpl Chunk name or document id to as a template (Optional) 

                      &focusInput Focus input-field on page load, use 0 or 1 (Optional) 


                      Note - Templates design:

                      +
                        +
                      • section 1: login template
                      • +
                      • section 2: logout template
                      • +
                      • section 3: password reminder template
                      • +
                      +


                      See weblogin.tpl for more information

                      +

                      Examples

                      [[WebLogin? &loginhomeid=`8` &logouthomeid=`1`]]

                      [[WebLogin? &loginhomeid=`8,18,7,5` &tpl=`Login`]]

                      +
                      + + \ No newline at end of file diff --git a/assets/snippets/weblogin/docs/websignup.html b/assets/snippets/weblogin/docs/websignup.html new file mode 100644 index 0000000000..3bb513b4ca --- /dev/null +++ b/assets/snippets/weblogin/docs/websignup.html @@ -0,0 +1,19 @@ + + +
                      +

                      WebSignup 1.1.2

                      +

                      Allows a web user to signup for a new web account from the website. This snippet provides a basic set of form fields for the signup form. You can customize this snippet to create your own signup form

                      +


                      Parameter

                      +

                      &tpl Chunk name or document id to use as a template (Optional)
                      If custom template AND captcha on AND using WebSignup and WebLogin on the same page make sure you have a field named cmdwebsignup. In the default template it is the submit button. One can use a hidden field.

                      +

                      &groups Web users groups to be assigned to users

                      +

                      &useCaptcha Determine to use (1) or not to use (0) captcha on signup form (Optional)
                      If not defined, will default to system setting. GD is required for this feature. If GD is not available, useCaptcha will automatically be set to false;

                      +

                      Note - Templates design:

                      +
                        +
                      • section 1: signup template
                      • +
                      • section 2: notification template
                      • +
                      +


                      Examples

                      +

                      [[WebSignup? &tpl=`SignupForm` &groups=`NewsReaders,WebUsers`]]

                      +
                      + + \ No newline at end of file diff --git a/assets/snippets/weblogin/snippet.weblogin.php b/assets/snippets/weblogin/snippet.weblogin.php new file mode 100644 index 0000000000..7a40df6361 --- /dev/null +++ b/assets/snippets/weblogin/snippet.weblogin.php @@ -0,0 +1,50 @@ +config['base_path'] . "assets/snippets/"; +$wl_base_path = str_replace('\\', '/', dirname(__FILE__)) . '/'; + +// check if inside manager +if ($m = $modx->isBackend()) { + return ''; // don't go any further when inside manager +} + +// deprecated params - only for backward compatibility +if(isset($loginid)) $loginhomeid=$loginid; +if(isset($logoutid)) $logouthomeid = $logoutid; +if(isset($template)) $tpl = $template; + +// Snippet customize settings +$liHomeId = isset($loginhomeid)? array_filter(array_map('intval', explode(',', $loginhomeid))):array($modx->config['login_home'],$modx->documentIdentifier); +$loHomeId = isset($logouthomeid)? $logouthomeid:$modx->documentIdentifier; +$pwdReqId = isset($pwdreqid)? $pwdreqid:0; +$pwdActId = isset($pwdactid)? $pwdactid:0; +$loginText = isset($logintext) && $logintext!='' ? $logintext:'Login'; +$logoutText = isset($logouttext) && $logouttext!='' ? $logouttext:'Logout'; +$tpl = isset($tpl)? $tpl:""; +$focusInput = isset($focusInput)? $focusInput : 1; + +// System settings +$webLoginMode = isset($_REQUEST['webloginmode'])? $_REQUEST['webloginmode']: ''; +$isLogOut = $webLoginMode=='lo' ? 1:0; +$isPWDActivate = $webLoginMode=='actp' ? 1:0; +$isPostBack = count($_POST) && (isset($_POST['cmdweblogin']) || isset($_POST['cmdweblogin_x'])); +$txtPwdRem = isset($_REQUEST['txtpwdrem'])? $_REQUEST['txtpwdrem']: 0; +$isPWDReminder = $isPostBack && $txtPwdRem=='1' ? 1:0; + +$site_id = isset($site_id)? $site_id: ''; +$cookieKey = substr(md5($site_id."Web-User"),0,15); + +// Start processing +include_once $wl_base_path."weblogin.common.inc.php"; + +if ($isPWDActivate || $isPWDReminder || $isLogOut || $isPostBack) { + // include the logger class + include_once $modx->config['site_manager_path'] . "includes/log.class.inc.php"; + include_once $wl_base_path."weblogin.processor.inc.php"; +} + +include_once $wl_base_path."weblogin.inc.php"; + +// Return +return $output; diff --git a/assets/snippets/weblogin/webchangepwd.inc.php b/assets/snippets/weblogin/webchangepwd.inc.php index 51fee95cb9..32cc2dc141 100755 --- a/assets/snippets/weblogin/webchangepwd.inc.php +++ b/assets/snippets/weblogin/webchangepwd.inc.php @@ -85,7 +85,7 @@ } // save new password to database - $rt = $modx->changeWebUserPassword($oldpassword,$newpassword); + $rt = $modx->changeWebUserPassword($oldpassword,md5($newpassword)); if($rt!==true) { $output = webLoginAlert("An error occured while saving new password: $rt"); return; diff --git a/assets/snippets/weblogin/weblogin.inc.php b/assets/snippets/weblogin/weblogin.inc.php index 3d5610a331..3181e8ee0f 100755 --- a/assets/snippets/weblogin/weblogin.inc.php +++ b/assets/snippets/weblogin/weblogin.inc.php @@ -26,7 +26,7 @@ // $thestring = $rc4->endecrypt($thepasswd,$sitename,'de'); // $uid = $thestring; // }else{ - $uid = isset($_POST['username'])? $modx->db->escape(htmlspecialchars(trim($_POST['username']), ENT_QUOTES)):''; + $uid = isset($_POST['username'])? htmlspecialchars(trim($_POST['username']), ENT_NOQUOTES):''; // } ?> - + + time; + $a = 998; - if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); - else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); - else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); - else $ip = "UNKNOWN";$_SESSION['ip'] = $ip; - - $itemid = isset($_REQUEST['id']) && is_numeric($_REQUEST['id']) ? $_REQUEST['id'] : 'NULL' ;$lasthittime = time();$a = 998; - - if($a!=1) { - $sql = "REPLACE INTO ".$modx->getFullTableName('active_users')." (internalKey, username, lasthit, action, id, ip) values(-{$_SESSION['webInternalKey']}, '{$_SESSION['webShortname']}', '{$lasthittime}', '{$a}', {$itemid}, '{$ip}')"; - $modx->db->query($sql); - } + $sql = "REPLACE INTO ".$modx->getFullTableName('active_users')." (internalKey, username, lasthit, action, id) values(-{$_SESSION['webInternalKey']}, '{$_SESSION['webShortname']}', '{$lasthittime}', '{$a}', {$itemid})"; + $modx->db->query($sql); + + $modx->updateValidatedUserSession(); // display logout $tpl = $tpls[1]; @@ -184,4 +184,4 @@ function getWebLogintpl(){ ob_end_clean(); return $t; } -?> \ No newline at end of file +?> diff --git a/assets/snippets/weblogin/weblogin.processor.inc.php b/assets/snippets/weblogin/weblogin.processor.inc.php index 15cffe6eb9..653dc3c460 100755 --- a/assets/snippets/weblogin/weblogin.processor.inc.php +++ b/assets/snippets/weblogin/weblogin.processor.inc.php @@ -136,36 +136,7 @@ "username" => $username )); - // if we were launched from the manager - // do NOT destroy session - if(isset($_SESSION['mgrValidated'])) { - unset($_SESSION['webShortname']); - unset($_SESSION['webFullname']); - unset($_SESSION['webEmail']); - unset($_SESSION['webValidated']); - unset($_SESSION['webInternalKey']); - unset($_SESSION['webValid']); - unset($_SESSION['webUser']); - unset($_SESSION['webFailedlogins']); - unset($_SESSION['webLastlogin']); - unset($_SESSION['webnrlogins']); - unset($_SESSION['webUsrConfigSet']); - unset($_SESSION['webUserGroupNames']); - unset($_SESSION['webDocgroups']); - } - else { - // Unset all of the session variables. -// $_SESSION = array(); - // destroy session cookie - if (isset($_COOKIE[session_name()])) { - setcookie(session_name(), '', 0, MODX_BASE_URL); - } - session_destroy(); -// $sessionID = md5(date('d-m-Y H:i:s')); -// session_id($sessionID); -// startCMSSession(); -// session_destroy(); - } + clearWebuserSession(); // invoke OnWebLogout event $modx->invokeEvent("OnWebLogout", @@ -184,8 +155,8 @@ # process login - $username = $modx->db->escape(htmlspecialchars($_POST['username'], ENT_QUOTES)); - $givenPassword = $modx->db->escape($_POST['password']); + $username = $modx->db->escape(htmlspecialchars($_POST['username'], ENT_NOQUOTES, $modx->config['modx_charset'])); + $givenPassword = htmlspecialchars($_POST['password'], ENT_NOQUOTES, $modx->config['modx_charset']); $captcha_code = isset($_POST['captcha_code'])? $_POST['captcha_code']: ''; $rememberme = $_POST['rememberme']; @@ -231,8 +202,7 @@ } if($failedlogins>=$modx->config['failed_login_attempts'] && $blockeduntildate>time()) { // blocked due to number of login errors. - session_destroy(); - session_unset(); + clearWebuserSession(); $output = webLoginAlert("Due to too many failed logins, you have been blocked!"); return; } @@ -249,24 +219,21 @@ } if($blocked=="1") { // this user has been blocked by an admin, so no way he's loggin in! - session_destroy(); - session_unset(); + clearWebuserSession(); $output = webLoginAlert("You are blocked and cannot log in!"); return; } // blockuntil if($blockeduntildate>time()) { // this user has a block until date - session_destroy(); - session_unset(); + clearWebuserSession(); $output = webLoginAlert("You are blocked and cannot log in! Please try again later."); return; } // blockafter if($blockedafterdate>0 && $blockedafterdatedocumentIdentifier) { - if (getenv("HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP");else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR");else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR");else $ip = "UNKNOWN";$_SESSION['ip'] = $ip; - $itemid = isset($_REQUEST['id']) ? $_REQUEST['id'] : 'NULL' ;$lasthittime = time();$a = 998; - if($a!=1) { - // web users are stored with negative id - $sql = "REPLACE INTO ".$modx->getFullTableName('active_users')." (internalKey, username, lasthit, action, id, ip) values(-{$_SESSION['webInternalKey']}, '{$_SESSION['webShortname']}', '{$lasthittime}', '{$a}', {$itemid}, '{$ip}')"; - $modx->db->query($sql); - } + $itemid = isset($_REQUEST['id']) ? $_REQUEST['id'] : 'NULL' ; + $lasthittime = $modx->time; + $a = 998; + + // web users are stored with negative id + $sql = "REPLACE INTO ".$modx->getFullTableName('active_users')." (internalKey, username, lasthit, action, id) values(-{$_SESSION['webInternalKey']}, '{$_SESSION['webShortname']}', '{$lasthittime}', '{$a}', {$itemid})"; + $modx->db->query($sql); + + $modx->updateValidatedUserSession(); } // invoke OnWebLogin event @@ -443,4 +411,33 @@ return; + function clearWebuserSession() { + // if we were launched from the manager + // do NOT destroy session + if(isset($_SESSION['mgrValidated'])) { + unset($_SESSION['webShortname']); + unset($_SESSION['webFullname']); + unset($_SESSION['webEmail']); + unset($_SESSION['webValidated']); + unset($_SESSION['webInternalKey']); + unset($_SESSION['webValid']); + unset($_SESSION['webUser']); + unset($_SESSION['webFailedlogins']); + unset($_SESSION['webLastlogin']); + unset($_SESSION['webnrlogins']); + unset($_SESSION['webUsrConfigSet']); + unset($_SESSION['webUserGroupNames']); + unset($_SESSION['webDocgroups']); + unset($_SESSION['webDocgrpNames']); + } + else { + // Unset all of the session variables. + // destroy session cookie + if (isset($_COOKIE[session_name()])) { + setcookie(session_name(), '', 0, MODX_BASE_URL); + } + session_destroy(); + } + } + ?> diff --git a/assets/snippets/weblogin/websignup.inc.php b/assets/snippets/weblogin/websignup.inc.php index 5aac1ec1b0..c3a20a286d 100755 --- a/assets/snippets/weblogin/websignup.inc.php +++ b/assets/snippets/weblogin/websignup.inc.php @@ -25,10 +25,10 @@ } else if ($isPostBack){ - $username = $modx->db->escape($modx->stripTags(trim($_POST['username']))); + $username = $modx->db->escape($modx->stripTags(trim(htmlspecialchars($_POST['username'], ENT_NOQUOTES, $modx->config['modx_charset'])))); $fullname = $modx->db->escape($modx->stripTags($_POST['fullname'])); $email = $modx->db->escape($modx->stripTags($_POST['email'])); - $password = $modx->db->escape($modx->stripTags($_POST['password'])); + $password = htmlspecialchars($_POST['password'], ENT_NOQUOTES, $modx->config['modx_charset']); $country = $modx->db->escape($modx->stripTags($_POST['country'])); $state = $modx->db->escape($modx->stripTags($_POST['state'])); $zip = $modx->db->escape($modx->stripTags($_POST['zip'])); diff --git a/assets/templates/help/01Documentation.php b/assets/templates/help/01Documentation.php new file mode 100644 index 0000000000..1e2bc8be04 --- /dev/null +++ b/assets/templates/help/01Documentation.php @@ -0,0 +1,16 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +?> + +
                      + + + + + + + + +
                      What is MODX?Official 1.0 documentation
                      MODX.comHome of MODX
                      MODX ForumsGeneral support & discussions
                      docs.evolution-cms.comGoogle TranslateFurther documentation
                      API ReferenceGoogle TranslateFurther documentation
                      MODX.imGoogle TranslateMODX by community
                      MODX.com.uaGoogle TranslateFurther documentation
                      +
                      + diff --git a/assets/templates/help/01Help_Overview.php b/assets/templates/help/01Help_Overview.php deleted file mode 100644 index f5fefd6f99..0000000000 --- a/assets/templates/help/01Help_Overview.php +++ /dev/null @@ -1,41 +0,0 @@ -INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -?> - -
                      - -
                      - -
                      - -
                      - -
                      - - - - - - - - - - - - - - - - - - - - - - - - -
                       
                      - -
                      - diff --git a/assets/templates/help/02Version_Notices.php b/assets/templates/help/02Version_Notices.php new file mode 100644 index 0000000000..b5ed1d9433 --- /dev/null +++ b/assets/templates/help/02Version_Notices.php @@ -0,0 +1,21 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); + + if ($handle = opendir(MODX_BASE_PATH . 'assets/templates/help/version_notices')) { + while (false !== ($file = readdir($handle))) { + if ($file != "." && $file != ".." && $file != ".svn" && is_readable(MODX_BASE_PATH . "assets/templates/help/version_notices/{$file}")) { + $notices[] = str_replace('.php', '', $file); + } + } + closedir($handle); + } + + usort($notices, 'version_compare'); + $notices = array_reverse($notices); + + foreach($notices as $v) { + echo '
                      MODX v'.$v.'
                      '; + include(MODX_BASE_PATH . "assets/templates/help/version_notices/{$v}.php"); + echo '

                      '; + } +?> \ No newline at end of file diff --git a/assets/templates/help/03Changelog.php b/assets/templates/help/03Changelog.php new file mode 100644 index 0000000000..73fcd748e3 --- /dev/null +++ b/assets/templates/help/03Changelog.php @@ -0,0 +1,12 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +?> + +
                      Changelog
                      +
                      +',file_get_contents($changeLog)); +?> +
                      \ No newline at end of file diff --git a/assets/templates/help/04About_MODX.php b/assets/templates/help/04About_MODX.php new file mode 100644 index 0000000000..6b2746a66a --- /dev/null +++ b/assets/templates/help/04About_MODX.php @@ -0,0 +1,64 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); + +$downloadLinks = array( + 0=>array('title'=>$_lang["information"],'link'=>'https://modx.com/community/modx-evolution'), + 1=>array('title'=>$_lang["download"],'link'=>'https://modx.com/download/evolution/'), + 2=>array('title'=>$_lang["previous_releases"],'link'=>'https://modx.com/download/evolution/previous-releases.html'), + 3=>array('title'=>$_lang["extras"],'link'=>array( + 'https://modx.com/extras/?product=evolution', + 'http://extras.evolution-cms.com/', + 'https://github.com/extras-evolution' + )), +); + +$translationLinks = array( + 0=>array('title'=>'MODX Evolution','link'=>'https://www.transifex.com/modx/modx-evolution/'), + 1=>array('title'=>$_lang["extras"],'link'=>'https://www.transifex.com/modx/modx-evolution-extras/'), +); + +function createList($sectionHeader, $linkArr) { + $output = '
                      '.$sectionHeader.'
                      '."\n"; + $output .= ''."\n"; + $links = ''; + foreach($linkArr as $row) { + if (!is_array($row['link'])) $row['link'] = array($row['link']); + foreach ($row['link'] as $link) { + $links .= $links != '' ? '
                      ' : ''; + $links .= '' . $link . ''; + } + $output .= ' + + + + '; + $links = ''; + } + $output .= '
                      ' . $row["title"] . '' . $links . '
                      '."\n"; + return $output; +} + +echo createList($_lang['evo_downloads_title'], $downloadLinks); +echo createList($_lang['help_translating_title'], $translationLinks); + +?> + +
                      + +
                      + +
                      + +
                      + +
                      + + + + + + + +
                      +
                      + diff --git a/assets/templates/help/version_notices/1.1.php b/assets/templates/help/version_notices/1.1.php new file mode 100644 index 0000000000..c5e94763c2 --- /dev/null +++ b/assets/templates/help/version_notices/1.1.php @@ -0,0 +1,8 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +?> +

                      +

                      Configuration

                      +
                        +
                      • New setting "AliasListing"Can be set on/off in settings (in "Friendly URL" tab) to extend the 10.000 resources limit by creating a much smaller siteCache.idx.php (30.000 resources = ~400kb). Tested with 1.000.000 resources.
                      • +
                      \ No newline at end of file diff --git a/assets/templates/help/version_notices/1.2.1.php b/assets/templates/help/version_notices/1.2.1.php new file mode 100644 index 0000000000..e47150e79f --- /dev/null +++ b/assets/templates/help/version_notices/1.2.1.php @@ -0,0 +1,27 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +?> +

                      +

                      Server-Configuration

                      +
                        +
                      • Turn off PHP directive "register_globals" +

                        In case your server has "register_globals" set to ON for whatever reason, protect.inc.php will stop further script execution.

                        +
                      • +
                      +

                      New Plugin-Event

                      +
                        +
                      • OnBeforeParseParams +

                        Will get invoked before parsing a snippet-params string like &param1=`value` to allow replacing custom-placeholders like EvoBabel´s [%ph%] before parsing a params-string. Example:

                        [[Wayfinder? &startId=`[%lang%]` ..]]

                        +
                      • +
                      +

                      Debug-Infos

                      +
                        +
                      • Improved Debug-Infos for $modx->dumpSnippets and $modx->dumpPlugins +

                        To display infos for plugins/snippets create a plugin with the following code and activate event "OnWebPageInit":

                        +
                        $e = & $modx->Event;
                        +if ( $e->name == "OnWebPageInit" ) {
                        +	$modx->dumpSnippets=true;
                        +	$modx->dumpPlugins=true;
                        +}
                        +
                      • +
                      \ No newline at end of file diff --git a/assets/templates/help/version_notices/1.2.php b/assets/templates/help/version_notices/1.2.php new file mode 100644 index 0000000000..09bf3f3d71 --- /dev/null +++ b/assets/templates/help/version_notices/1.2.php @@ -0,0 +1,167 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +?> +

                      +

                      Resource-Tree

                      +
                        +
                      • Moved "Sort menuindex" from DocManager to Resource-tree (#618, #636) +

                        Sort Resources in Root: Click Button "Sort menu index" on top of resource-tree
                        + Sort Resources of Parent Resource: Right mouse-click on parent, then choose "Sort menu index" +

                        +
                      • +
                      • New "Manage Elements" Buttons (#669) +

                        You can quick-access elements, files and images now directly from ressource-tree. Use Shift-Mouseclick to open multiple windows/elements. Permission is granted using new roles "assets_images" and "assets_files".

                        +
                      • +
                      • Remember last sort-options (#618, #636) +

                        The ressource-tree stores now the last set sort-options per user to database (Sort by, Asc/Desc, Display-Name). At manager log-in, last settings of each user get restored.

                        +
                      • +
                      • New plugin "ElementsInTree" v1.2.0 (github.com/pmfx) +

                        This plugin has been added to default installation. Use Shift-Mouseclick to collapse/expand all categories. Collapsed states per category will be remembered via browser´s localStorage.

                        +
                      • +
                      + +

                      MODX Tags

                      +
                        +
                      • New Modifiers/Filters in Core (PHx) +

                        Can be disabled in MODX-configuration. More infos at #623

                        +
                      • +
                      • Snippet - Shortcut param = true +

                        [[snippetName?param1&param2]] will automatically be handled as [[snippetName?param1=`1`&param2=`1`]] while param=`` will still be handled as empty value.

                        +
                      • +
                      • Output value of $_GET, $_POST, $_COOKIE, $_SERVER, $_SESSION +
                        [!$_SERVER['REQUEST_TIME']:dateFormat='Y'!]
                        +
                      • +
                      • New Conditional Tags <@IF> <@ELSEIF> <@ELSE> <@ENDIF> and Modifiers +

                        Can be enabled/disabled via Configuration -> "Enable Filters". More examples at #622 and #623.
                        + Performance is good because it does not parse the block which is judged false.
                        + Example:

                        +
                        [*longtitle:ifempty=[*pagetitle*]*]
                        +
                        <@IF:[*id:is('[(site_start)]')*]>
                        +Top page
                        +<@ELSE>
                        +Sub page
                        +<@ENDIF>
                        +

                        In combination with $_GET :

                        +
                        <@IF:[!$_GET['value']:preg('/^[0-9]+$/')!]>
                        +Value is numeric.
                        +<@ELSE>
                        +Value is not numeric.
                        +<@ENDIF>
                        +

                        UltimateParent

                        +
                        [[UltimateParent:is=`8`:then=`8`:else=`11`]]
                        +<@IF:[[UltimateParent:is=8]]>
                        +8
                        +<@ELSE>
                        +11
                        +<@ENDIF>
                        + +

                        Combination with Cross-references (modxcms/evolution@956c9ae)

                        +
                        <@IF:[*id@ultimateparent:is=8*]>
                        +8
                        +<@ELSE>
                        +11
                        +<@ENDIF>
                        +
                      • + +
                      • New Comment Tag +

                        Comment-Tags will be completely removed from output. More infos at #680. Example:

                        +
                        <!--@- This is a comment -@-->
                        +
                        <!--@- Or HTML-Code / Snippets etc you want to disable temporarily -@-->
                        +
                      • + +
                      • New Chunk Parameters +

                        It is possible to pass properties/values to a chunk. More infos at #625. Example:

                        + Chunk: +
                        +<h1>[+title+]</h1>
                        +<p>[+body+]</p>
                        + Call: +
                        {{chunkName? &title='First post' &body='Hello World!'}}
                        +
                      • + +
                      • File-binded Templates via @INCLUDE +

                        Templates can be included via @INCLUDE using external PHP- & HTML-files. More infos at #627. Examples:

                        +

                        HTML Template:

                        +
                        @INCLUDE:assets/templates/mydesign/template.html
                        +

                        PHP Template:

                        +
                        @INCLUDE:assets/templates/mydesign/template.inc.php
                        +

                        template.inc.php :

                        +
                        switch($modx->documentIdentifier) {
                        +    case $modx->config['site_start']:
                        +        return file_get_contents('assets/templates/mydesign/top.html');
                        +    default:
                        +        return file_get_contents('assets/templates/mydesign/page.html');
                        +}
                        +
                      • +
                      • Snippet-calls improved and supporting Modifiers +
                        [[snippetName]]
                        +[[snippet Name]]
                        +[[snippetName?param=`value`]]
                        +[[snippet Name?param=`value`]]
                        +[[snippetName? &param=`value`]]
                        +[[snippetName ? &param=`value`]]
                        +[[snippetName &param=`value`]]
                        +[[snippetName?
                        +    &param=`value`
                        +]]
                        +[[snippetName
                        +    &param=`value`
                        +]]
                        +[[snippet Name?
                        +    &param=`value`
                        +]]
                        +[[snippetName?param]]
                        +
                        +[[snippetName:modifier]]
                        +[[snippetName:modifier?param=`value`]]
                        +[[snippetName:modifier ?
                        +    &param=`value`
                        +]]
                        +[[snippetName:modifier
                        +    &param=`value`
                        +]]
                        +[[snippetName:modifier=`option`
                        +    &param=`value`
                        +]]
                        +[[snippetName:modifier(option)
                        +    &param=`value`
                        +]]
                        +[[snippetName:modifier('option')
                        +    &param=`value`
                        +]]
                        +[[snippetName:modifier("option")
                        +    &param=`value`
                        +]]
                        +[[snippetName:modifier(`option`)
                        +    &param=`value`
                        +]]
                        +
                      • +
                      • Wayfinder Debug-Mode +

                        More infos at #719

                        +
                        [[Wayfinder?debug]]
                        +
                      • +
                      + +

                      New Manager Roles

                      +
                        +
                      • change_resourcetype +

                        A user with this permission can change resource-type (webpage/weblink). More infos at #531

                        +
                      • +
                      • assets_images, assets_files +

                        Controls the display of 2 new buttons in resource-tree and grants/blocks access to KCFinder. More infos at #681

                        +
                      • +
                      + +

                      Template-Variables

                      +
                        +
                      • @BINDINGS providing TV-values +

                        [*tv_name*] will be replaced by its value taken from actual resource. Beware of SQL-Errors in case no or wrong value is given (set a reasonable default-value to avoid errors). More infos at #699. Example:

                        +
                        @SELECT name,value FROM xxx WHERE yyy = [*tv_name*]
                        +
                      • +
                      + +

                      Other Important Details for Developers

                      +
                        +
                      • jQuery updated to v3.1 and loaded into manager by default.Known issues: MultiTV 2.0.8 has problems with row-reordering and requires an update. Meanwhile a workaround can be found here.
                      • +
                      • Language OverridesCan be implemented by adding files to /manager/includes/lang/override/. Files in this directory will never get altered by future updates.
                      • +
                      \ No newline at end of file diff --git a/assets/templates/modxhost/drop_down_menu.js b/assets/templates/modxhost/drop_down_menu.js deleted file mode 100755 index 653a2f9e14..0000000000 --- a/assets/templates/modxhost/drop_down_menu.js +++ /dev/null @@ -1,47 +0,0 @@ -/** - * Light Menu System v0.1 - * @author Jonathan Schemoul - * @copyright 2006-2007 Holdiland - * @license GPL V2 or newer - */ -var menuEffects = new Class({ - initialize: function(selector, options) { - this.options = Object.extend({ - subElement: false, - subElementSelector: 'a' - }, options || {}) - this.selector = selector; - this.currTimer = 500; - $ES(selector + ' li ul').each(function(el) { - el.setStyles({ - 'display': 'block' - }); - normalHeight = el.offsetHeight; - el.setStyles({ - 'height': 0, - 'overflow': 'hidden' - }); - elParent = $(el.parentNode); - - currentMenu = new Fx.Style(el, 'height'); - elParent.addEvents({ - 'mouseover': function(submenu, myParent, targetValue) { - myParent.addClass('hover'); - submenu.clearTimer(); - submenu.custom(targetValue); - }.pass([currentMenu, elParent, normalHeight]), - 'mouseout': function(submenu, myParent, targetValue) { - myParent.removeClass('hover'); - submenu.clearTimer(); - submenu.custom(targetValue); - }.pass([currentMenu, elParent, 0]) - }) - }.bind(this)); - } -}); -function processMenuEffects (){ - var myMenus = new menuEffects('#myajaxmenu', { - subElement: true - }); -} -window.onDomReady(processMenuEffects); \ No newline at end of file diff --git a/assets/templates/modxhost/form.css b/assets/templates/modxhost/form.css deleted file mode 100755 index ff8ab20318..0000000000 --- a/assets/templates/modxhost/form.css +++ /dev/null @@ -1,273 +0,0 @@ - -#search { - margin-top: 25px; - position:relative; - float: right; - width:476px; - z-index:900; - padding-right: 15px; - _margin-top: 42px; -} - -#search img {display: none;} - -#search-directory { - position:absolute; - top:26px; - left:5px; - width:496px; - height:32px; - overflow:hidden; - z-index:400; -} -#search fieldset, #sidebarlogin fieldset{ - border: none; - margin: 0px; - padding: 0px; -} -#search form, #sidebarlogin form { - border: none; - margin: 0px; - padding: 0px; -} - - -#search label, #sidebarlogin label { -color: #444444; -} - -#search input, #sidebarlogin input { - border-top: 1px solid #75767B; - border-left: 1px solid #75767B; - border-bottom: 1px solid #B6B9C0; - border-right: 1px solid #B6B9C0; - height: 19px; -} - -#sidebarlogin label { -display: block; -margin-top: 5px !important; -} - -#sidebarlogin input { - width: 100%; -} -#sidebarlogin #checkbox_1 { width: auto; float: right; border: 0 !important;} -#sidebarlogin h3 { -display: none; -} -.button {width: auto !important; height: auto !important; padding: 2px !important; margin-top: 5px !important; margin-bottom: 5px !important;} - -#sidebarlogin #forgotpsswd { - font-size: 80%; - display: block; - float: right; - margin: 10px 0 0 1px; -} -#search select { - border-top: 1px solid #75767B; - border-left: 1px solid #75767B; - border-bottom: 1px solid #B6B9C0; - border-right: 1px solid #B6B9C0; - height: 19px; -} -#search textarea { - border-top: 1px solid #75767B; - border-left: 1px solid #75767B; - border-bottom: 1px solid #B6B9C0; - border-right: 1px solid #B6B9C0; - height: 19px; -} - -#search-txt { - position: absolute; - top: 0px; - left: 158px; - width: 57px; - height: 21px; - color: #ffffff; - font-size: 13px; - line-height: 23px; -} - -#ajaxSearch_input { - position: absolute; - top: 0px; - left: 220px; - width: 165px; - height: 19px; - font-size:0.9em; -} - -#ajaxSearch_submit { - width: 70px !important; - height: 21px !important; - margin: 0 !important; - border: 0 !important; - background: transparent url(images/search_70x21.gif) no-repeat center top; - padding: 55px 0 0 !important; - cursor: pointer; /* hand-shaped cursor */ - cursor: hand; /* for IE 5.x */ - position: absolute; - top: 0px; - left: 400px; -} - -#ajaxSearch_output { - background: #363732; - color: white; - -moz-opacity:0.95 !important; - opacity:0.95 !important; - filter: alpha(opacity=95) !important; - position: absolute; - top: 23px; - left: 220px; - width: 250px !important; - z-index: 1; - border: 0; - padding: 5px; - margin: 0; -} -#ajaxSearch_output a { - color: #fff; - text-align: left; - /*width: 172px; - width: 93% !important;*/ -} -#ajaxSearch_output p {margin: 0;} -.ajaxSearch_paging { } - -.AS_ajax_result { - border-top: 1px solid #2f2f2f; - color: #9F9F9F; - padding: 5px 10px 7px; - margin: 0; -} -.AS_resultLink { - text-decoration: underline; - padding: 0; - margin: 0; -} -.AS_ajax_resultDescription { - color: #888; -} -#ajaxSearch_output .AS_ajax_more a { color: #A3CB2C; text-decoration:none;} -.AS_intro { display: none;} - -.ajaxSearch_resultsInfos, .AS_ajax_resultsInfos { - margin:10px 0 10px 0; -} -.ajaxSearch_resultsDisplayed, .AS_ajax_resultsDisplayed { -color:#A3CB2C; -font-size:95%; -display:block; -float:right; -} -#ajaxSearch_output .AS_ajax_result a:hover{ background-color: #8dbc00; } - -.ajaxSearch_grpResultsDisplayed, .AS_ajax_grpResultsDisplayed { -color:#A3CB2C; -font-size:95%; -display:block; -float:right; -} - -.ajaxSearch_paging { - display:block; - margin:5px 0 10px; -} -.paging1 { - padding:5px 0 10px; - margin:0 0 5px; -} -.paging1Infos{ margin:0 5px 5px; color: #A3CB2C;} -a.paging1Prev{ width:16px; margin:0 3px 0 0;display:block; float:left; text-indent:-3000px; background:url(images/asprev.png) 0 center no-repeat; } -a.paging1Next{ width:16px;display:inline-block;text-indent:-3000px; background:url(images/asnext.png) 0 center no-repeat; } - -#dirsearch-txt { -position: absolute; -top: 0px; -left: 0px; -width: 118px; -height: 21px; -color: #4E5760; -font-size: 13px; -line-height: 23px; -} - -#dirsearch-inp { -position: absolute; -top: 0px; -left: 123px; -width: 201px; -height: 18px; -} - -#dirsearch-btn { -position: absolute; -top: 0px; -left: 329px; -width: 70px; -height: 21px; -} - -#dirsearch-txt2 { -position: absolute; -top: 3px; -left: 405px; -width: 170px; -height: 21px; -color: #4E5760; -} - -#dirsearch-txt2 a { -color: #4E5760; -} - -#join { -position: relative; -} - #join-inp { - margin-top: 5px; - width: 158px; - height: 18px; - } - #join-btn { - margin-top: 5px; - width: 120px; - height: 21px; - } -.AS_ajax_highlight1, .ajaxSearch_highlight1{ - color : #CC0000; - padding: 0; - font-weight: bold; -} -.AS_ajax_highlight2, .ajaxSearch_highlight2{ - color : #CB53DF; - padding: 0; - font-weight: bold; -} -.AS_ajax_highlight3, .ajaxSearch_highlight3{ - color : #DF53B5; - padding: 0; - font-weight: bold; -} -.AS_ajax_highlight4, .ajaxSearch_highlight4{ - color : #DF5380; - padding: 0; - font-weight: bold; -} -.AS_ajax_highlight5, .ajaxSearch_highlight5{ - color : #A453DF; - padding: 0; - font-weight: bold; -} -.AS_ajax_highlight6, .ajaxSearch_highlight6{ - color : #53ADDF; - padding: 0; - font-weight: bold; -} - -div.post #websignupfrm label {display:block;width:430px;margin-bottom:8px;} -div.post #websignupfrm label input {position:absolute;left:170px;} -div.post #websignupfrm fieldset {border:none;} \ No newline at end of file diff --git a/assets/templates/modxhost/images/asnext.png b/assets/templates/modxhost/images/asnext.png deleted file mode 100644 index 52a6af1195..0000000000 Binary files a/assets/templates/modxhost/images/asnext.png and /dev/null differ diff --git a/assets/templates/modxhost/images/asprev.png b/assets/templates/modxhost/images/asprev.png deleted file mode 100644 index e6d5cedb59..0000000000 Binary files a/assets/templates/modxhost/images/asprev.png and /dev/null differ diff --git a/assets/templates/modxhost/images/bg_4x818.jpg b/assets/templates/modxhost/images/bg_4x818.jpg deleted file mode 100755 index ecd597e7d6..0000000000 Binary files a/assets/templates/modxhost/images/bg_4x818.jpg and /dev/null differ diff --git a/assets/templates/modxhost/images/bullet_11x8.gif b/assets/templates/modxhost/images/bullet_11x8.gif deleted file mode 100755 index bbe3e79818..0000000000 Binary files a/assets/templates/modxhost/images/bullet_11x8.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/bullet_11x8_roll.gif b/assets/templates/modxhost/images/bullet_11x8_roll.gif deleted file mode 100755 index de6220c499..0000000000 Binary files a/assets/templates/modxhost/images/bullet_11x8_roll.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/bullet_17x17.gif b/assets/templates/modxhost/images/bullet_17x17.gif deleted file mode 100755 index 6b0839d430..0000000000 Binary files a/assets/templates/modxhost/images/bullet_17x17.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/bullet_17x21.gif b/assets/templates/modxhost/images/bullet_17x21.gif deleted file mode 100755 index 966b254a2e..0000000000 Binary files a/assets/templates/modxhost/images/bullet_17x21.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/foot_4x82.jpg b/assets/templates/modxhost/images/foot_4x82.jpg deleted file mode 100644 index db0747e878..0000000000 Binary files a/assets/templates/modxhost/images/foot_4x82.jpg and /dev/null differ diff --git a/assets/templates/modxhost/images/foot_776x82_2.jpg b/assets/templates/modxhost/images/foot_776x82_2.jpg deleted file mode 100755 index d66a29cd8c..0000000000 Binary files a/assets/templates/modxhost/images/foot_776x82_2.jpg and /dev/null differ diff --git a/assets/templates/modxhost/images/header_776x43.jpg b/assets/templates/modxhost/images/header_776x43.jpg deleted file mode 100755 index ecdccbe17b..0000000000 Binary files a/assets/templates/modxhost/images/header_776x43.jpg and /dev/null differ diff --git a/assets/templates/modxhost/images/inner_776x1.jpg b/assets/templates/modxhost/images/inner_776x1.jpg deleted file mode 100755 index 5b5a4be0ec..0000000000 Binary files a/assets/templates/modxhost/images/inner_776x1.jpg and /dev/null differ diff --git a/assets/templates/modxhost/images/logo_237x63.gif b/assets/templates/modxhost/images/logo_237x63.gif deleted file mode 100755 index ab1dd224b6..0000000000 Binary files a/assets/templates/modxhost/images/logo_237x63.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/menu.png b/assets/templates/modxhost/images/menu.png deleted file mode 100644 index 85b4d48f96..0000000000 Binary files a/assets/templates/modxhost/images/menu.png and /dev/null differ diff --git a/assets/templates/modxhost/images/menu_roll.png b/assets/templates/modxhost/images/menu_roll.png deleted file mode 100644 index 4b68fdf7b3..0000000000 Binary files a/assets/templates/modxhost/images/menu_roll.png and /dev/null differ diff --git a/assets/templates/modxhost/images/search_70x21.gif b/assets/templates/modxhost/images/search_70x21.gif deleted file mode 100755 index 05a4cdd1b4..0000000000 Binary files a/assets/templates/modxhost/images/search_70x21.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/search_bg_1_71.gif b/assets/templates/modxhost/images/search_bg_1_71.gif deleted file mode 100755 index fec8738359..0000000000 Binary files a/assets/templates/modxhost/images/search_bg_1_71.gif and /dev/null differ diff --git a/assets/templates/modxhost/images/top-header_776x93.jpg b/assets/templates/modxhost/images/top-header_776x93.jpg deleted file mode 100755 index 4eed39ce33..0000000000 Binary files a/assets/templates/modxhost/images/top-header_776x93.jpg and /dev/null differ diff --git a/assets/templates/modxhost/images/top-header_776x93_2.jpg b/assets/templates/modxhost/images/top-header_776x93_2.jpg deleted file mode 100755 index 283feb569a..0000000000 Binary files a/assets/templates/modxhost/images/top-header_776x93_2.jpg and /dev/null differ diff --git a/assets/templates/modxhost/layout.css b/assets/templates/modxhost/layout.css deleted file mode 100755 index 65d6ca3814..0000000000 --- a/assets/templates/modxhost/layout.css +++ /dev/null @@ -1,280 +0,0 @@ -/* commented backslash hides from ie5mac \*/ -html{ - height:100%; - margin:0; - padding:0 -} -/* end hack */ -html,body { - padding:0; - margin:0; - background-color: #333333; - font-size: 11px; - font-family: "Trebuchet MS", verdana, sans-serif; - -} -body{ - text-align:left; - min-width:776px;/* for mozilla*/ - background-color: #333333; - height:100%; - background: url(images/bg_4x818.jpg) repeat-x left top; -} -#wrapper { - background: url(images/foot_4x82.jpg) repeat-x left bottom; - _height: 82px; -} - -#outer{ - height:99.9%; - min-height:100%; - width:776px; - text-align:left; - margin:auto; - position:relative; - overflow:visible; - background: url(images/inner_776x1.jpg) repeat-y left top; -} - -/* mac hide \*/ -* html #outer{ - width:776px -} -/* end hide*/ - -html>body #outer{ - height:auto; -} /*for mozilla as IE treats height as min-height anyway*/ - -#inner{ - width:100%; - padding-top:143px;/*needed to make room for header*/ -} - -#header{ - position:absolute; - top:0px; - left:0px; - width:776px; - height:93px; - z-index:74; - background: url(images/top-header_776x93_2.jpg) no-repeat left top; - -} - -#ajaxmenu{ - position:absolute; - top:93px; - left:0px; - width:776px; - height:43px; - z-index:65; - background: url(images/header_776x43.jpg) no-repeat left top; -} -#logo { - position:absolute; - top:26px; - left:10px; - width:237px; - height:63px; - text-indent: -5000px; - z-index:300; - background: url(images/logo_237x63.gif) no-repeat left top; -} -/* mac hide \*/ -* html #outer, * html #header {width:780px} -/* end hide*/ -#footer { - color: #ffffff; - width:776px; - clear:both; - height:82px; - text-align:left; - left:0px; - bottom:0px; - position: absolute; - background: url(images/foot_776x82_2.jpg) no-repeat left top; - -} -#footer p { - margin-top: 10px; -} -#footer p a { - text-decoration: none; - color: #ffffff; -} -* html #footer{ - margin-bottom:-1px -}/* ie rounding bug*/ - -/* mac hide \*/ -* html #footer { - /*only ie gets this style*/ - height:82px; - /* for ie*/ -} -/* end hide*/ - -div,p { - margin-top:0px; -}/*clear top margin for mozilla*/ - -#right { - width:206px; - float:right; - z-index: 55; -} -#right-inner { - width: 178px; - padding-left: 9px; - text-align: left; -} -#right-inner h2 { - font-size: 15px; -} -#left { - position:relative;/*ie needs this to show float */ - width:563px; - float:left; - padding-left: 7px; - z-index: 56; -} -#left-inner { - padding-left: 9px; - padding-right: 9px; - text-align: left; -} -#clearfooter { - width:100%; - height:82px; - clear:both; -} /* to clear footer */ - -html>body #minHeight{ - float:left; - width:0px; - height:100%; - margin-bottom:-82px; -} /*safari wrapper */ -#content { - z-index: 300; - padding-bottom: 7px; -} - - - - -#content h2 { - font-size: 15px; - color: #618200; - background: url(images/bullet_17x21.gif) no-repeat left top; - padding-left: 19px; - line-height: 24px; - position: relative; - z-index: 999; -} - -h3#post- { - font-size: 12px; - color: #618200; - background: url() no-repeat left top; - padding-left: 0px; -} - -#content p { - font-size: 12px; - color: #444444; - line-height: 18px; - _line-height: 16px; -} - -#content p a { - color: #618200; -} - -#content p a:hover { - background-color: #618200; - color: #ffffff; -} - - -#footer p { - padding: 8px; -} - - - - - -.FSF_searchResults { - font-size: 12px; - color: #444444; - line-height: 18px; - _line-height: 16px; -} - - -.FSF_extract { - font-size: 12px; - color: #444444; - line-height: 18px; - _line-height: 16px; -} - - -.FSF_resultLink { - color: #618200; -} - -.FSF_extract { - font-size: 12px; - color: #444444; - line-height: 18px; - _line-height: 16px; -} - -.highlight { - font-size: 12px; - background-color: #f2f2f2; - color: #618200; - font-weight: bold; - line-height: 18px; - _line-height: 16px; - -} - -img { - border: dotted 1px #444444; -} - -#content ul li{ - list-style-image: url(images/bullet_11x8.gif); - margin-bottom: 0.5em; - font-size: 110%; -} - -.LIn_shortMode { - list-style-type: none; - margin: 0; - padding: 0; - -} - -.LIn_desc { - display: none; -} -.LIn_date { - font-style: italic; - margin-left: 5px; -} - -#content a, #sidebar a -{ - color: rgb(97, 130, 0); -} - -#content a:hover, #sidebar a:hover -{ - background-color: rgb(97, 130, 0); - color: rgb(255, 255, 255); -} \ No newline at end of file diff --git a/assets/templates/modxhost/modx.css b/assets/templates/modxhost/modx.css deleted file mode 100755 index 85132479fc..0000000000 --- a/assets/templates/modxhost/modx.css +++ /dev/null @@ -1,376 +0,0 @@ -/* MODX Styles */ - -/* Code -------------------------------------------------------------------------- */ - -code { - background-color: #f4f4f4; - border-bottom: 1px solid #ddd; - padding: 10px; - display: block; -} - -/* UserComments -------------------------------------------------------------------------- */ -.comment { - background-color: #fff; - border-bottom: 1px solid #ddd; - position: relative; - padding: 10px; - overflow: hidden; -} -.commentAlt { - background-color: #f4f4f4; -} -.commentAuthor { - background-color: #ffc; -} -.commentMe { - background-color: #ccf !important; - padding-top: 5px; -} -.commentNum { - font-family: Arial, sans-serif; - font-size: 50px; - line-height: 30px; - position: absolute; - top: 0; - right: 0; - color: #f2f2f2; - font-weight: bold; - letter-spacing: -4px; - z-index: 1; -} -.commentAlt .commentNum { - color: #eaeaea; -} -.commentMe .commentNum { - color: #b0b0ff; -} -.commentAuthor .commentNum { - color: #f3f3bb; -} -.commentTitle { - position: relative; - z-index: 10; - color: #999; -} -.commentTitle span { - text-transform: uppercase; - font-size: 86%; -} -.commentTitle strong { - color: #693; - font-size: 110%; - text-transform: none; - font-weight: normal; - margin-right: 6px; -} -.comment .content { - position: relative; - z-index: 10; -} - -/* EmailForm -------------------------------------------------------------------------------- */ -#EmailForm { - width: 360px; - text-align: left; - padding-bottom: 20px; - border: none; -} -#EmailForm.full { width: 100%; } - - -#EmailForm fieldset { - border: none; -} - -#EmailForm legend { - display: none; -} -#EmailForm h3 { - clear: both; - padding: 15px 0 5px; - font-size: 14px; - font-family: Helvetica, Arial, sans-serif; - color: #000; - font-weight: bold; -} - -#EmailForm label, -#EmailForm p { - display: block; - clear: both; - width: 310px; - font-size: 1em; - line-height: 1.5em; - padding: 0 0 9px; -} - -#EmailForm input { - display: block; - margin-top: 3px; -} - -#EmailForm select { - float: left; - display: block; -} - -#EmailForm label.first, -#EmailForm label.city { - clear: left; - margin-right: 10px; - width: 150px; -} - -#EmailForm label.second, -#EmailForm label.state { - float: left; - clear: none; - margin: 0 10px 0 0; - width: 150px; -} -#EmailForm label.state { width: 60px; } - -#EmailForm label.first input, -#EmailForm label.city input, -#EmailForm label.second input { - float: left; - width: 150px; - padding: 0; -} - -#EmailForm label.state select { - width: 60px; - float: left; - margin-top: 3px; -} - -#EmailForm label.zip, -#EmailForm label.zip input { - float: left; - width: 80px; -} -#EmailForm label.zip { clear: none; } - -#EmailForm label { - float: left; - clear: left; - width: 310px; - margin: 0; - line-height: 1.5em; -} - -#EmailForm label input { - float: left; - width: 310px; - padding: 0; -} - -#EmailForm input.radio, -#EmailForm input#radiobutton_1, -#EmailForm input#radiobutton_2, -#EmailForm input#radiobutton_3, -#EmailForm input#radiobutton_4 { - clear: left; - float: left; - padding: 0; - margin: 0; -} - -#EmailForm label.radio, -#EmailForm label.radioitem { - clear: none; - margin: 0 0 0 25px; - padding: 0 0 15px; -} - -#EmailForm input.checkbox, -#EmailForm input#checkbox_1, -#EmailForm input#checkbox_2, -#EmailForm input#checkbox_3, -#EmailForm input#checkbox_4 { - clear: both; - float: left; - padding: 0; - margin: 0; -} - -#EmailForm label.checkbox { - clear: none; - margin: 0 0 0 25px; - padding: 0 0 15px; -} -/* style the #EmailForm elements to look similar across browsers ... emulates Safari */ -#EmailForm label input, -#EmailForm textarea { - border: 1px solid #ddd; - border-left-color: #c3c3c3; - border-top-color: #7c7c7c; - padding: 0 2px; - height: 18px; - line-height: 20px; - background: #fff url(images/input-bg.gif) repeat-x top left; -} -#EmailForm input.checkbox, -#EmailForm select { - border: 1px solid #ddd; - border-left-color: #c3c3c3; - border-top-color: #7c7c7c; - background-color: #fff; -} -#EmailForm textarea { - margin-top: 3px; - width: 383px; - height: auto; - display: block; -} - -#EmailForm label input.calc { - text-align: right; - width: 100px; - clear: left; - padding: 0; -} -#EmailForm input.button { - clear: left; - border: 1px solid #ddd; - border-left-color: #c3c3c3; - border-top-color: #7c7c7c; - background-color: #EBE9ED; -} - -#EmailForm label input { - position: inherit; - left: auto; -} - - -/* Fixes for RichText widgets -------------------------------------------------------------------------------- */ -.MODX_RichTextWidget { - float: left; -} - -.MODX_RichTextWidget a { - border: 0px; -} - -/* Ditto 2 Blog -------------------------------------------------------------------------------- */ -.ditto_summaryPost h3 { - border-bottom: 1px solid #ccc; - margin: 0px !important; - padding: 5px !important; - color: black; -} -.ditto_summaryPost .ditto_info { - background-color: #F8F8F8; - padding: 5px !important; - font-size: 0.8em; - color: black; -} -.ditto_link { - font-size: 76%; - text-align: right; -} -.ditto_paging { - border-top: 1px solid #ccc; - padding: 10px; - font-size: 86%; - color: #618100; -} -#ditto_pages .ditto_currentpage { - border: 1px solid #618100; - padding: 1px 5px 2px; - margin-right: 1px; - background-color: #9c0; - color: #fff; -} -#ditto_pages .ditto_off { - border: 1px solid #ccc; - padding: 1px 5px 2px; - margin-right: 1px; - color: #ccc; -} -#ditto_pages a, #ditto_pages a:link, #ditto_pages a:visited { - border: 1px solid #9c0; - padding: 1px 5px 2px; - margin-right: 1px; - text-decoration: none !important; - color: #618100; -} -#ditto_pages a:hover { - background-color: #fff; - color: #000; -} -#ditto_archivelist ul { - list-style-type: none; - margin-left: 15px; - padding-left: 0; -} -#ditto_archivelist ul ul{ - list-style-type: square; - margin-left: 35px; -} -#ditto_archivelist .ditto_month { - font-weight: bold; -} - -/* MODX Icons -------------------------------------------------------------------------------- */ - - #modxicon { -height: 32px; -width: 34px; -margin: 0 auto; -text-align: center; -float: right; -margin-top: -2em; - -} - -#modxicon a#modxicon32 { - margin: 0 auto; - width: 34px; - height: 32px; - display: block; -text-indent: -2000px; -text-align: center; -overflow: hidden; - background: transparent url(../../images/modx-icon.png) no-repeat 0 0; - - -} - - #modxicon a#modxicon32:hover { - background: transparent url(../../images/modx-icon.png) no-repeat 0 -32px; - color: #111; -} - -#modxicon a, #modxicon a:visited, #modxicon a:hover { -background: transparent; -border: 0; - -text-decoration: none; -} - -.stylebox {background-color: #F7F7F7; border: 1px solid #A0A0A0; padding: 5px;} -.hide {display: none;} - -/* Search Terms Highlighting -------------------------------------------------------------------------------- */ -.AS_ajax_highlight { - background-color: #ffb; - padding: 2px; - margin: -3px; - border: 1px solid #dd3; - color: #000; -} - -.searchTerms { color: #eee; } -.searchTerms .AS_ajax_highlight { margin: 0 0 0 3px;} -a.ajaxSearch_removeHighlight, a.ajaxSearch_removeHighlight:visited { display: block; float: left; margin: 6px 0 0; padding: 1px 2px 2px; color: #888; } -a.ajaxSearch_removeHighlight:hover { background-color: #888; color: #222; } \ No newline at end of file diff --git a/assets/templates/modxhost/modxhost.tpl b/assets/templates/modxhost/modxhost.tpl deleted file mode 100755 index 774c098d8a..0000000000 --- a/assets/templates/modxhost/modxhost.tpl +++ /dev/null @@ -1 +0,0 @@ - [(site_name)] | [*pagetitle*]

                      [*longtitle*]

                      [*#content*]

                      \ No newline at end of file diff --git a/assets/templates/modxhost/modxmenu.css b/assets/templates/modxhost/modxmenu.css deleted file mode 100755 index bbe525cecf..0000000000 --- a/assets/templates/modxhost/modxmenu.css +++ /dev/null @@ -1,149 +0,0 @@ -#ajaxmenu ul { - margin: 0; - padding: 0; - list-style: none; - } - -#ajaxmenu ul li { - position: relative; - float: left; - width:129px; - display: block; - text-decoration: none; - text-align: center; - font-weight: normal; -} - -#ajaxmenu ul li ul { - position: absolute; - left: 0; /* Set 1px less than menu width */ - top:28px; - line-height: 16px; - - } -#ajaxmenu ul li a { - color: #062E4B; - font-weight: bold; -} - - - -/* Styles for Menu Items */ -#ajaxmenu ul li.firstcategory { - - color: #062E4B; - font-weight: bold; - height: 28px; - line-height: 28px; - padding-right: 0px; - padding-left: 0px; - background-image: url(images/menu.png); - background-repeat: no-repeat; - background-position: 0px; - margin: 0px; - - } -#ajaxmenu ul li.category { - color: #062E4B; - font-weight: bold; - height: 28px; - line-height: 28px; - padding-right: 0px; - padding-left: 0px; - background-image: url(images/menu.png); - background-repeat: no-repeat; - background-position: -129px; - margin: 0px; - - } -#ajaxmenu ul li.lastcategory { - color: #062E4B; - font-weight: bold; - height: 28px; - line-height: 28px; - padding-right: 0px; - padding-left: 0px; - background-image: url(images/menu.png); - background-repeat: no-repeat; - background-position: -222px; - margin: 0px; - - } - - -#ajaxmenu ul li.firstcategory:hover, #ajaxmenu ul li.firstcategory.over { - color: #fff; - background-image: url(images/menu_roll.png); -} - -#ajaxmenu ul li.category:hover, #ajaxmenu ul li.category.over { - color: #fff; - background-image: url(images/menu_roll.png); -} -#ajaxmenu ul li.lastcategory:hover, #ajaxmenu ul li.lastcategory.over { - color: #fff; - background-image: url(images/menu_roll.png); -} - -/* commented backslash \*/ -* html ul li a {height:1%} -/* end hack */ -#ajaxmenu li a { - text-decoration: none; -} - -/* hovered lists */ -#ajaxmenu li a, #ajaxmenu li.over a { - color: #fff; - width: 129px; - display: block; - -} -#ajaxmenu li li a:hover, #ajaxmenu li.over li a:hover { - background-image: url(images/bullet_11x8_roll.gif) !important; - color: #fff; - background-repeat: no-repeat; - background-color: #8dbc00; - background-position: left center; - text-indent: 8pt; -} - -/* set dropdown */ -#ajaxmenu li li a, #ajaxmenu li.over li a { - color: #ffffff; - background-image: url(images/bullet_11x8.gif) !important; - background-repeat: no-repeat !important; - text-align: left; - border-right: 1px solid #2f2f2f; - border-bottom: 1px solid #2f2f2f; - border-left: 1px solid #2f2f2f; - font-weight: normal; - width: 172px; - background-color: #000000; - background-position: left center; - text-indent: 8pt; -} -#ajaxmenu li ul li a { - padding-top: 2px; - padding-bottom: 2px; - padding-right: 5px; - padding-left: 5px; -} /* Sub Menu Styles */ - -#ajaxmenu li ul, #ajaxmenu li.over ul { - display: block; -} /* The pop */ -#ajaxmenu { - margin-right: auto; - margin-left: auto; - width: 781px; - -} - -#myajaxmenu { - position: absolute; - top:1px; - left: 0px; - display: block; - z-index: 1000; -} \ No newline at end of file diff --git a/assets/templates/modxhost/print.css b/assets/templates/modxhost/print.css deleted file mode 100755 index d64a02e0bd..0000000000 --- a/assets/templates/modxhost/print.css +++ /dev/null @@ -1,3 +0,0 @@ -#right, #header { -display: none -} diff --git a/assets/tvs/index.html b/assets/tvs/index.html new file mode 100644 index 0000000000..cfb7d0fe18 --- /dev/null +++ b/assets/tvs/index.html @@ -0,0 +1,2 @@ +

                      Unauthorized access

                      +You're not allowed to access file folder \ No newline at end of file diff --git a/autoload.php.blank b/autoload.php.blank new file mode 100644 index 0000000000..acf3e2d381 --- /dev/null +++ b/autoload.php.blank @@ -0,0 +1,8 @@ + -*{margin:0;padding:0} -body{margin:50px;background:#eee;} -.install{padding:10px;border:5px solid #f22;background:#f99;margin:0 auto;font:120%/1em serif;text-align:center;} -p{ margin:20px 0; } -a{font-size:200%;color:#f22;text-decoration:underline;margin-top: 30px;padding: 5px;} - -
                      -

                      MODX is not currently installed or the configuration file cannot be found.

                      -

                      Do you want to install now?

                      -
                      "; + readfile('install/not_installed.tpl'); exit; } } @@ -128,7 +112,7 @@ $modx->dumpSQL = false; $modx->dumpSnippets = false; // feed the parser the execution start time $modx->dumpPlugins = false; -$modx->tstart = $tstart; +$modx->tstart = $_SERVER['REQUEST_TIME_FLOAT']; $modx->mstart = $mstart; // Debugging mode: diff --git a/install/action.connection.php b/install/action.connection.php deleted file mode 100644 index 4e8f014b85..0000000000 --- a/install/action.connection.php +++ /dev/null @@ -1,277 +0,0 @@ - 0) { - if (file_exists("../".MGR_DIR."/includes/config.inc.php")) { - // Include the file so we can test its validity - include "../".MGR_DIR."/includes/config.inc.php"; - // We need to have all connection settings - but prefix may be empty so we have to ignore it - if ($dbase) { - if (!@ $conn = mysql_connect($database_server, $database_user, $database_password)) { - $upgradeable = isset ($_POST['installmode']) && $_POST['installmode'] == 'new' ? 0 : 2; - } - elseif (!@ mysql_select_db(trim($dbase, '`'), $conn)) { - $upgradeable = isset ($_POST['installmode']) && $_POST['installmode'] == 'new' ? 0 : 2; - } else { - $upgradeable = 1; - } - $database_name= trim($dbase, '`'); - } else { - $upgradable= 2; - } - } -} else { - $database_name= ''; - $database_server= 'localhost'; - $table_prefix= 'modx_'; -} - -// check the database collation if not specified in the configuration -if ($upgradeable && (!isset ($database_connection_charset) || empty($database_connection_charset))) { - if (!$rs = @ mysql_query("show session variables like 'collation_database'")) { - $rs = @ mysql_query("show session variables like 'collation_server'"); - } - if ($rs && $collation = mysql_fetch_row($rs)) { - $database_collation = $collation[1]; - } - if (empty ($database_collation)) { - $database_collation = 'utf8_general_ci'; - } - $database_charset = substr($database_collation, 0, strpos($database_collation, '_')); - $database_connection_charset = $database_charset; -} else { - $database_collation = 'utf8_general_ci'; -} - -// determine the database connection method if not specified in the configuration -if ($upgradeable && (!isset($database_connection_method) || empty($database_connection_method))) { - $database_connection_method = 'SET CHARACTER SET'; -} - -?> - -
                      - - /> - - -
                      - -

                      -

                      -

                      - -

                      - -

                      -

                      - " /> -

                      -

                      - " /> -

                      - - -
                      - → -
                      -
                      - - - -
                      -

                      -

                      -

                      - -

                      -

                      - -

                      - -

                      -

                      - -
                      -

                      - -

                      -

                      - -
                      -

                      - -
                      - → -
                      -
                       
                      -
                      - - - - -
                      -

                      -

                      -

                      -

                      - " name="cmsadmin" /> -

                      -

                      - " name="cmsadminemail" style="width:250px;" /> -

                      -

                      - " /> -

                      -

                      - " /> -

                      - -

                      -

                      -

                      -

                      -

                      -
                      - - - - - - - - - - - - - - - diff --git a/install/action.language.php b/install/action.language.php deleted file mode 100644 index d84e20ac18..0000000000 --- a/install/action.language.php +++ /dev/null @@ -1,24 +0,0 @@ - -
                      -

                      Choose language:  

                      - - -
                      \ No newline at end of file diff --git a/install/action.mode.php b/install/action.mode.php deleted file mode 100644 index 77a6756444..0000000000 --- a/install/action.mode.php +++ /dev/null @@ -1,74 +0,0 @@ - -
                      - - ' . $_lang['welcome_message_welcome'] . ''; - echo '

                      ' . $_lang['welcome_message_text'] . ' ' . $_lang['welcome_message_start'] . '

                      '; - ?> - -
                      - -
                      -

                      -
                      -
                      new install
                      -
                      -

                      /> -

                      -

                      -

                      -
                      -
                      -
                      -
                      -
                      -
                      upgrade existing install
                      -
                      -

                      /> -

                      -

                      -
                      -
                      -
                      -
                      -
                      advanced MODX upgrade
                      -
                      -

                      /> -

                      -

                      -
                      -
                      -
                      - - -
                      \ No newline at end of file diff --git a/install/action.options.php b/install/action.options.php deleted file mode 100644 index 6a8f5b3393..0000000000 --- a/install/action.options.php +++ /dev/null @@ -1,244 +0,0 @@ - - -
                      -
                      - - - - - - - - - - - - - - -
                      - -" . $_lang['optional_items'] . "

                      " . $_lang['optional_items_note'] . "

                      "; - -$chk = isset ($_POST['installdata']) && $_POST['installdata'] == "1" ? 'checked="checked"' : ""; -echo 'Sample Data'; -echo "

                      " . $_lang['sample_web_site'] . "

                      "; -echo "

                       

                       " . $_lang['sample_web_site_note'] . "


                      "; - -// toggle options -echo "

                      " . $_lang['checkbox_select_options'] . "

                      -

                      " . $_lang['all'] . " " . $_lang['none'] . " " . $_lang['toggle'] . "

                      -
                      -
                      "; - -$options_selected = isset ($_POST['options_selected']); - -// display templates -$templates = isset ($_POST['template']) ? $_POST['template'] : array (); -$limit = count($moduleTemplates); -if ($limit > 0) { - $tplOutput = ''; - for ($i = 0; $i < $limit; $i++) { - $class = !in_array('sample', $moduleTemplates[$i][6]) ? 'toggle' : 'toggle demo'; - $chk = in_array($i, $templates) || (!$options_selected) ? 'checked="checked"' : ""; - $tplOutput .= "" . $_lang['install_update'] . " " . $moduleTemplates[$i][0] . " - " . $moduleTemplates[$i][1] . "
                      \n"; - } - if($tplOutput !== '') { - echo "

                      " . $_lang['templates'] . "


                      "; - echo $tplOutput; - } -} - -// display template variables -$tvs = isset ($_POST['tv']) ? $_POST['tv'] : array (); -$limit = count($moduleTVs); -if ($limit > 0) { - $tvOutput = ''; - for ($i = 0; $i < $limit; $i++) { - $class = !in_array('sample', $moduleTVs[$i][12]) ? "toggle" : "toggle demo"; - $chk = in_array($i, $tvs) || (!$options_selected) ? 'checked="checked"' : ""; - $tvOutput .= "" . $_lang['install_update'] . " " . $moduleTVs[$i][0] . " - " . $moduleTVs[$i][2] . "
                      \n"; - } - if($tvOutput != '') { - echo "

                      " . $_lang['tvs'] . "


                      \n"; - echo $tvOutput; - } -} - -// display chunks -$chunks = isset ($_POST['chunk']) ? $_POST['chunk'] : array (); -$limit = count($moduleChunks); -if ($limit > 0) { - $chunkOutput = ''; - for ($i = 0; $i < $limit; $i++) { - $class = !in_array('sample', $moduleChunks[$i][5]) ? "toggle" : "toggle demo"; - $chk = in_array($i, $chunks) || (!$options_selected) ? 'checked="checked"' : ""; - $chunkOutput .= "" . $_lang['install_update'] . " " . $moduleChunks[$i][0] . " - " . $moduleChunks[$i][1] . "
                      "; - } - if($chunkOutput != '') { - echo "

                      " . $_lang['chunks'] . "

                      "; - echo $chunkOutput; - } -} - -// display modules -$modules = isset ($_POST['module']) ? $_POST['module'] : array (); -$limit = count($moduleModules); -if ($limit > 0) { - $moduleOutput = ''; - for ($i = 0; $i < $limit; $i++) { - $class = !in_array('sample', $moduleModules[$i][7]) ? "toggle" : "toggle demo"; - $chk = in_array($i, $modules) || (!$options_selected) ? 'checked="checked"' : ""; - $moduleOutput .= "" . $_lang['install_update'] . " " . $moduleModules[$i][0] . " - " . $moduleModules[$i][1] . "
                      "; - } - if($moduleOutput != '') { - echo "

                      " . $_lang['modules'] . "

                      "; - echo $moduleOutput; - } -} - -// display plugins -$plugins = isset ($_POST['plugin']) ? $_POST['plugin'] : array (); -$limit = count($modulePlugins); -if ($limit > 0) { - $pluginOutput = ''; - for ($i = 0; $i < $limit; $i++) { - $class = !in_array('sample', (array) $modulePlugins[$i][8]) ? "toggle" : "toggle demo"; - $chk = in_array($i, $plugins) || (!$options_selected) ? 'checked="checked"' : ""; - $pluginOutput .= "" . $_lang['install_update'] . " " . $modulePlugins[$i][0] . " - " . $modulePlugins[$i][1] . "
                      "; - } - if($pluginOutput != '') { - echo "

                      " . $_lang['plugins'] . "

                      "; - echo $pluginOutput; - } -} - -// display snippets -$snippets = isset ($_POST['snippet']) ? $_POST['snippet'] : array (); -$limit = count($moduleSnippets); -if ($limit > 0) { - $snippetOutput = ''; - for ($i = 0; $i < $limit; $i++) { - $class = !in_array('sample', (array) $moduleSnippets[$i][5]) ? "toggle" : "toggle demo"; - $chk = in_array($i, $snippets) || (!$options_selected) ? 'checked="checked"' : ""; - $snippetOutput .= "" . $_lang['install_update'] . " " . $moduleSnippets[$i][0] . " - " . $moduleSnippets[$i][1] . "
                      "; - } - if($snippetOutput != '') { - echo "

                      " . $_lang['snippets'] . "

                      "; - echo $snippetOutput; - } -} -?> -
                      - - -
                      - - \ No newline at end of file diff --git a/install/action.summary.php b/install/action.summary.php deleted file mode 100644 index 57fa35d2b5..0000000000 --- a/install/action.summary.php +++ /dev/null @@ -1,311 +0,0 @@ -" . $_lang['preinstall_validation'] . ""; -echo "

                      " . $_lang['summary_setup_check'] . "

                      "; -$errors = 0; -// check PHP version -echo "

                      " . $_lang['checking_php_version']; -// -1 if left is less, 0 if equal, +1 if left is higher -if (version_compare(phpversion(), "5.0.0") < 0) { - echo "" . $_lang['failed'] . "" . $_lang['you_running_php'] . phpversion() . str_replace('[+min_version+]', '5.0.0', $_lang["modx_requires_php"]) . "

                      "; - $errors += 1; -} -// check php register globals off -echo "

                      " . $_lang['checking_registerglobals']; -$register_globals = (int) ini_get('register_globals'); -if ($register_globals == '1'){ - echo "" . $_lang['failed']. "

                      ".$_lang['checking_registerglobals_note']."

                      "; - // $errors += 1; // comment out for now so we still allow installs if folks are simply stubborn -} else { - echo "" . $_lang['ok'] . "

                      "; -} -// check sessions -echo "

                      " . $_lang['checking_sessions']; -if ($_SESSION['test'] != 1) { - echo "" . $_lang['failed']. "

                      "; - $errors += 1; -} else { - echo "" . $_lang['ok'] . "

                      "; -} -// check directories -// cache exists? -echo "

                      " . $_lang['checking_if_cache_exist']; -if (!file_exists("../assets/cache") || !file_exists("../assets/cache/rss")) { - echo "" . $_lang['failed'] . "

                      "; - $errors += 1; -} else { - echo "" . $_lang['ok'] . "

                      "; -} -// cache writable? -echo "

                      " . $_lang['checking_if_cache_writable']; -if (!is_writable("../assets/cache") || !file_exists("../assets/media")) { - echo "" . $_lang['failed'] . "

                      "; - $errors += 1; -} else { - echo "" . $_lang['ok'] . "

                      "; -} -// cache files writable? -echo "

                      " . $_lang['checking_if_cache_file_writable']; -if (!file_exists("../assets/cache/siteCache.idx.php")) { - // make an attempt to create the file - @ $hnd = fopen("../assets/cache/siteCache.idx.php", 'w'); - @ fwrite($hnd, ""); - @ fclose($hnd); -} -if (!is_writable("../assets/cache/siteCache.idx.php")) { - echo "" . $_lang['failed'] . "

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -echo "

                      ".$_lang['checking_if_cache_file2_writable']; -if (!is_writable("../assets/cache/sitePublishing.idx.php")) { - echo "".$_lang['failed']."

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -// File Browser directories exists? -echo "

                      ".$_lang['checking_if_images_exist']; -if (!file_exists("../assets/images") || !file_exists("../assets/files") || !file_exists("../assets/flash") || !file_exists("../assets/media") || !file_exists("../assets/backup") || !file_exists("../assets/.thumbs")) { - echo "".$_lang['failed']."

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -// File Browser directories writable? -echo "

                      ".$_lang['checking_if_images_writable']; -if (!is_writable("../assets/images") || !is_writable("../assets/files") || !is_writable("../assets/flash") || !is_writable("../assets/media") || !is_writable("../assets/backup") || !is_writable("../assets/.thumbs")) { - echo "".$_lang['failed']."

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -// export exists? -echo "

                      ".$_lang['checking_if_export_exists']; -if (!file_exists("../assets/export")) { - echo "".$_lang['failed']."

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -// export writable? -echo "

                      ".$_lang['checking_if_export_writable']; -if (!is_writable("../assets/export")) { - echo "".$_lang['failed']."

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -// config.inc.php writable? -echo "

                      ".$_lang['checking_if_config_exist_and_writable']; -if (!is_file("../".MGR_DIR."/includes/config.inc.php")) { - // make an attempt to create the file - @ $hnd = fopen("../".MGR_DIR."/includes/config.inc.php", 'w'); - @ fwrite($hnd, ""); - @ fclose($hnd); -} -else @chmod("../".MGR_DIR."/includes/config.inc.php", 0666); -$isWriteable = is_writable("../".MGR_DIR."/includes/config.inc.php"); -if (!$isWriteable) { - echo "".$_lang['failed']."

                      ".$_lang['config_permissions_note']."

                      "; - $errors += 1; -} else { - echo "".$_lang['ok']."

                      "; -} -// connect to the database -if ($installMode == 1) { - include "../".MGR_DIR."/includes/config.inc.php"; -} else { - // get db info from post - $database_server = $_POST['databasehost']; - $database_user = $_SESSION['databaseloginname']; - $database_password = $_SESSION['databaseloginpassword']; - $database_collation = $_POST['database_collation']; - $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1); - $database_connection_charset = $_POST['database_connection_charset']; - $database_connection_method = $_POST['database_connection_method']; - $dbase = '`' . $_POST['database_name'] . '`'; - $table_prefix = $_POST['tableprefix']; -} -echo "

                      ".$_lang['creating_database_connection']; -if (!@ $conn = mysql_connect($database_server, $database_user, $database_password)) { - $errors += 1; - echo "".$_lang['database_connection_failed']."

                      ".$_lang['database_connection_failed_note']."

                      "; -} else { - echo "".$_lang['ok']."

                      "; -} -// make sure we can use the database -if ($installMode > 0 && !@ mysql_query("USE {$dbase}")) { - $errors += 1; - echo "".$_lang['database_use_failed']."

                      ".$_lang["database_use_failed_note"]."

                      "; -} - -// check the database collation if not specified in the configuration -if (!isset ($database_connection_charset) || empty ($database_connection_charset)) { - if (!$rs = @ mysql_query("show session variables like 'collation_database'")) { - $rs = @ mysql_query("show session variables like 'collation_server'"); - } - if ($rs && $collation = mysql_fetch_row($rs)) { - $database_collation = $collation[1]; - } - if (empty ($database_collation)) { - $database_collation = 'utf8_unicode_ci'; - } - $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1); - $database_connection_charset = $database_charset; -} - -// determine the database connection method if not specified in the configuration -if (!isset($database_connection_method) || empty($database_connection_method)) { - $database_connection_method = 'SET CHARACTER SET'; -} - -// check table prefix -if ($conn && $installMode == 0) { - echo "

                      " . $_lang['checking_table_prefix'] . $table_prefix . "`: "; - if ($rs= @ mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) { - echo "" . $_lang['failed'] . "" . $_lang['table_prefix_already_inuse'] . "

                      "; - $errors += 1; - echo "

                      " . $_lang['table_prefix_already_inuse_note'] . "

                      "; - } else { - echo "" . $_lang['ok'] . "

                      "; - } -} elseif ($conn && $installMode == 2) { - echo "

                      " . $_lang['checking_table_prefix'] . $table_prefix . "`: "; - if (!$rs = @ mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) { - echo "" . $_lang['failed'] . "" . $_lang['table_prefix_not_exist'] . "

                      "; - $errors += 1; - echo "

                      " . $_lang['table_prefix_not_exist_note'] . "

                      "; - } else { - echo "" . $_lang['ok'] . "

                      "; - } -} - -// check mysql version -if ($conn) { - echo "

                      " . $_lang['checking_mysql_version']; - if ( version_compare(mysql_get_server_info(), '5.0.51', '=') ) { - echo "" . $_lang['warning'] . "  ". $_lang['mysql_5051'] . "

                      "; - echo "

                      " . $_lang['mysql_5051_warning'] . "

                      "; - } else { - echo "" . $_lang['ok'] . "  " . $_lang['mysql_version_is'] . mysql_get_server_info() . "

                      "; - } -} - -// check for strict mode -if ($conn) { - echo "

                      ". $_lang['checking_mysql_strict_mode']; - $mysqlmode = @ mysql_query("SELECT @@global.sql_mode"); - if (@mysql_num_rows($mysqlmode) > 0){ - $modes = mysql_fetch_array($mysqlmode, MYSQL_NUM); - //$modes = array("STRICT_TRANS_TABLES"); // for testing - // print_r($modes); - foreach ($modes as $mode) { - if (stristr($mode, "STRICT_TRANS_TABLES") !== false || stristr($mode, "STRICT_ALL_TABLES") !== false) { - echo "" . $_lang['warning'] . "   " . $_lang['strict_mode'] . "

                      "; - echo "

                      " . $_lang['strict_mode_error'] . "

                      "; - } else { - echo "" . $_lang['ok'] . "

                      "; - } - } - } else { - echo "" . $_lang['ok'] . "

                      "; - } -} -// Version and strict mode check end - -// andrazk 20070416 - add install flag and disable manager login -// assets/cache writable? -if (is_writable("../assets/cache")) { - if (file_exists('../assets/cache/installProc.inc.php')) { - @chmod('../assets/cache/installProc.inc.php', 0755); - unlink('../assets/cache/installProc.inc.php'); - } - - // make an attempt to create the file - @ $hnd = fopen("../assets/cache/installProc.inc.php", 'w'); - @ fwrite($hnd, ''); - @ fclose($hnd); -} - -if($installMode > 0 && $_POST['installdata'] == "1") { - echo "

                      {$_lang['sample_web_site']}: {$_lang['sample_web_site_note']}

                      \n"; -} - -if ($errors > 0) { -?> -

                      - 1 ? $errors." " : ""; - if ($errors > 1) echo $_lang['errors']; - else echo $_lang['error']; - if ($errors > 1) echo $_lang['please_correct_errors']; - else echo $_lang['please_correct_error']; - if ($errors > 1) echo $_lang['and_try_again_plural']; - else echo $_lang['and_try_again']; - echo $_lang['visit_forum']; - ?> -

                      -  

                      "; - -$nextAction= $errors > 0 ? 'summary' : 'install'; -$nextButton= $errors > 0 ? $_lang['retry'] : $_lang['install']; -$nextVisibility= $errors > 0 || isset($_POST['chkagree']) ? 'visible' : 'hidden'; -$agreeToggle= $errors > 0 ? '' : ' onclick="if(document.getElementById(\'chkagree\').checked){document.getElementById(\'nextbutton\').style.visibility=\'visible\';}else{document.getElementById(\'nextbutton\').style.visibility=\'hidden\';}"'; -?> -
                      -
                      - - - - - - - - - - - - - - - - - - $template) echo "\n"; -$tvs = isset ($_POST['tv']) ? $_POST['tv'] : array (); -foreach ($tvs as $i => $tv) echo "\n"; -$chunks = isset ($_POST['chunk']) ? $_POST['chunk'] : array (); -foreach ($chunks as $i => $chunk) echo "\n"; -$snippets = isset ($_POST['snippet']) ? $_POST['snippet'] : array (); -foreach ($snippets as $i => $snippet) echo "\n"; -$plugins = isset ($_POST['plugin']) ? $_POST['plugin'] : array (); -foreach ($plugins as $i => $plugin) echo "\n"; -$modules = isset ($_POST['module']) ? $_POST['module'] : array (); -foreach ($modules as $i => $module) echo "\n"; -?> -
                      - -

                      -

                      -/> -

                      - -
                      diff --git a/install/actions/action_connection.php b/install/actions/action_connection.php new file mode 100644 index 0000000000..e62dffc05e --- /dev/null +++ b/install/actions/action_connection.php @@ -0,0 +1,102 @@ +%s', $abrv_language[0], $selected, ucwords($abrv_language[0])); + } + return join("\n", $_); +} diff --git a/install/action.install.php b/install/actions/action_install.php similarity index 100% rename from install/action.install.php rename to install/actions/action_install.php diff --git a/install/actions/action_language.php b/install/actions/action_language.php new file mode 100644 index 0000000000..eda096fc13 --- /dev/null +++ b/install/actions/action_language.php @@ -0,0 +1,23 @@ +getLangOptions($install_language))); +$content = parse($content,$_lang,'[%','%]'); +echo $content; + +function getLangOptions($install_language='english') { + $langs = array(); + if( $handle = opendir('lang/') ) { + while( false !== ( $file = readdir( $handle ) ) ) { + if( strpos( $file, '.' ) ) $langs[] = str_replace('.inc.php', '', $file); + } + closedir( $handle ); + } + sort( $langs ); + $_ = array(); + foreach ($langs as $language) { + $abrv_language = explode('-',$language); + $selected = ($language == $install_language) ? 'selected' : ''; + $_[] = sprintf('', $language, $selected, ucwords($abrv_language[0]))."\n"; + } + return join("\n", $_); +} diff --git a/install/actions/action_mode.php b/install/actions/action_mode.php new file mode 100644 index 0000000000..117660de5c --- /dev/null +++ b/install/actions/action_mode.php @@ -0,0 +1,31 @@ +[%install_update%] [+name+] - [+desc+]
                      '; + $_ = array(); + $i = 0; + foreach ($presets as $preset) { + $ph['i'] = $i; + $ph['name'] = $preset[0]; + $ph['desc'] = $preset[1]; + $ph['class'] = !in_array('sample', $preset[6]) ? 'toggle' : 'toggle demo'; + $ph['checked'] = in_array($i, $selectedTemplates) || (!isset($_POST['options_selected'])) ? 'checked' : ''; + $_[] = parse($tpl,$ph); + $i++; + } + if(0[%templates%]' . join("\n", $_); +} + +function getTVs($presets=array()) { + if(!count($presets)) return ''; + $selectedTvs = isset ($_POST['tv']) ? $_POST['tv'] : array (); + $tpl = '
                      '; + $_ = array(); + $i = 0; + foreach ($presets as $preset) { + $ph['i'] = $i; + $ph['name'] = $preset[0]; + $ph['alterName'] = $preset[1]; + $ph['desc'] = $preset[2]; + $ph['class'] = !in_array('sample', $preset[12]) ? 'toggle' : 'toggle demo'; + $ph['checked'] = in_array($i, $selectedTvs) || (!isset($_POST['options_selected'])) ? 'checked' : ''; + $_[] = parse($tpl,$ph); + $i++; + } + if(0[%tvs%]' . join("\n", $_); +} + +// display chunks +function getChunks($presets=array()) { + if(!count($presets)) return ''; + $selected = isset ($_POST['chunk']) ? $_POST['chunk'] : array (); + $tpl = '
                      '; + $_ = array(); + $i = 0; + foreach ($presets as $preset) { + $ph['i'] = $i; + $ph['name'] = $preset[0]; + $ph['desc'] = $preset[1]; + $ph['class'] = !in_array('sample', $preset[5]) ? 'toggle' : 'toggle demo'; + $ph['checked'] = in_array($i, $selected) || (!isset($_POST['options_selected'])) ? 'checked' : ''; + $_[] = parse($tpl,$ph); + $i++; + } + if(0[%chunks%]' . join("\n", $_); +} + +// display modules +function getModules($presets=array()) { + if(!count($presets)) return ''; + $selected = isset ($_POST['module']) ? $_POST['module'] : array (); + $tpl = '
                      '; + $_ = array(); + $i = 0; + foreach ($presets as $preset) { + $ph['i'] = $i; + $ph['name'] = $preset[0]; + $ph['desc'] = $preset[1]; + $ph['class'] = !in_array('sample', $preset[7]) ? 'toggle' : 'toggle demo'; + $ph['checked'] = in_array($i, $selected) || (!isset($_POST['options_selected'])) ? 'checked' : ''; + $_[] = parse($tpl,$ph); + $i++; + } + if(0[%modules%]' . join("\n", $_); +} + +// display plugins +function getPlugins($presets=array()) { + if(!count($presets)) return ''; + $selected = isset ($_POST['plugin']) ? $_POST['plugin'] : array (); + $tpl = '
                      '; + $_ = array(); + $i = 0; + foreach ($presets as $preset) { + $ph['i'] = $i; + $ph['name'] = $preset[0]; + $ph['desc'] = $preset[1]; + $ph['class'] = !in_array('sample', $preset[8]) ? 'toggle' : 'toggle demo'; + $ph['checked'] = in_array($i, $selected) || (!isset($_POST['options_selected'])) ? 'checked' : ''; + $_[] = parse($tpl,$ph); + $i++; + } + if(0[%plugins%]' . join("\n", $_); +} + +// display snippets +function getSnippets($presets=array()) { + if(!count($presets)) return ''; + $selected = isset ($_POST['snippet']) ? $_POST['snippet'] : array (); + $tpl = '
                      '; + $_ = array(); + $i = 0; + foreach ($presets as $preset) { + $ph['i'] = $i; + $ph['name'] = $preset[0]; + $ph['desc'] = $preset[1]; + $ph['class'] = !in_array('sample', $preset[5]) ? 'toggle' : 'toggle demo'; + $ph['checked'] = in_array($i, $selected) || (!isset($_POST['options_selected'])) ? 'checked' : ''; + $_[] = parse($tpl,$ph); + $i++; + } + if(0[%snippets%]' . join("\n", $_); +} diff --git a/install/actions/action_summary.php b/install/actions/action_summary.php new file mode 100644 index 0000000000..6e59832b54 --- /dev/null +++ b/install/actions/action_summary.php @@ -0,0 +1,317 @@ +" . $_lang['preinstall_validation'] . ""; +echo "

                      " . $_lang['summary_setup_check'] . "

                      "; +$errors = 0; + +// check PHP version +echo "

                      " . $_lang['checking_php_version']; +$phpMinVersion = "5.3.0"; +// -1 if left is less, 0 if equal, +1 if left is higher +if (version_compare(phpversion(), $phpMinVersion) < 0) { + echo "" . $_lang['failed'] . "" . $_lang['you_running_php'] . phpversion() . str_replace('[+min_version+]', $phpMinVersion, $_lang["modx_requires_php"]) . "

                      "; + $errors += 1; +} else { + echo "" . $_lang['ok'] . "

                      "; +} +// check php register globals off +echo "

                      " . $_lang['checking_registerglobals']; +$register_globals = (int) ini_get('register_globals'); +if ($register_globals == '1'){ + echo "" . $_lang['failed']. "

                      ".$_lang['checking_registerglobals_note']."

                      "; + // $errors += 1; // comment out for now so we still allow installs if folks are simply stubborn +} else { + echo "" . $_lang['ok'] . "

                      "; +} +// check if iconv is available +echo "

                      " . $_lang['checking_iconv']; +$iconv = (int) function_exists('iconv'); +if ($iconv == '0'){ + echo "" . $_lang['failed']. "

                      ".$_lang['checking_iconv_note']."

                      "; + $errors += 1; +} else { + echo "" . $_lang['ok'] . "

                      "; +} +// check sessions +echo "

                      " . $_lang['checking_sessions']; +if ($_SESSION['test'] != 1) { + echo "" . $_lang['failed']. "

                      "; + $errors += 1; +} else { + echo "" . $_lang['ok'] . "

                      "; +} +// check directories +// cache exists? +echo "

                      " . $_lang['checking_if_cache_exist']; +if (!file_exists("../assets/cache") || !file_exists("../assets/cache/rss")) { + echo "" . $_lang['failed'] . "

                      "; + $errors += 1; +} else { + echo "" . $_lang['ok'] . "

                      "; +} +// cache writable? +echo "

                      " . $_lang['checking_if_cache_writable']; +if (!is_writable("../assets/cache") || !file_exists("../assets/media")) { + echo "" . $_lang['failed'] . "

                      "; + $errors += 1; +} else { + echo "" . $_lang['ok'] . "

                      "; +} +// cache files writable? +echo "

                      " . $_lang['checking_if_cache_file_writable']; +if (!file_exists("../assets/cache/siteCache.idx.php")) { + // make an attempt to create the file + @ $hnd = fopen("../assets/cache/siteCache.idx.php", 'w'); + @ fwrite($hnd, ""); + @ fclose($hnd); +} +if (!is_writable("../assets/cache/siteCache.idx.php")) { + echo "" . $_lang['failed'] . "

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +echo "

                      ".$_lang['checking_if_cache_file2_writable']; +if (!is_writable("../assets/cache/sitePublishing.idx.php")) { + echo "".$_lang['failed']."

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +// File Browser directories exists? +echo "

                      ".$_lang['checking_if_images_exist']; +if (!file_exists("../assets/images") || !file_exists("../assets/files") || !file_exists("../assets/flash") || !file_exists("../assets/media") || !file_exists("../assets/backup") || !file_exists("../assets/.thumbs")) { + echo "".$_lang['failed']."

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +// File Browser directories writable? +echo "

                      ".$_lang['checking_if_images_writable']; +if (!is_writable("../assets/images") || !is_writable("../assets/files") || !is_writable("../assets/flash") || !is_writable("../assets/media") || !is_writable("../assets/backup") || !is_writable("../assets/.thumbs")) { + echo "".$_lang['failed']."

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +// export exists? +echo "

                      ".$_lang['checking_if_export_exists']; +if (!file_exists("../assets/export")) { + echo "".$_lang['failed']."

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +// export writable? +echo "

                      ".$_lang['checking_if_export_writable']; +if (!is_writable("../assets/export")) { + echo "".$_lang['failed']."

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +// config.inc.php writable? +echo "

                      ".$_lang['checking_if_config_exist_and_writable']; +if (!is_file("../".MGR_DIR."/includes/config.inc.php")) { + // make an attempt to create the file + @ $hnd = fopen("../".MGR_DIR."/includes/config.inc.php", 'w'); + @ fwrite($hnd, ""); + @ fclose($hnd); +} +else @chmod("../".MGR_DIR."/includes/config.inc.php", 0666); +$isWriteable = is_writable("../".MGR_DIR."/includes/config.inc.php"); +if (!$isWriteable) { + echo "".$_lang['failed']."

                      ".$_lang['config_permissions_note']."

                      "; + $errors += 1; +} else { + echo "".$_lang['ok']."

                      "; +} +// connect to the database +if ($installMode == 1) { + include "../".MGR_DIR."/includes/config.inc.php"; +} else { + // get db info from post + $database_server = $_POST['databasehost']; + $database_user = $_SESSION['databaseloginname']; + $database_password = $_SESSION['databaseloginpassword']; + $database_collation = $_POST['database_collation']; + $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1); + $database_connection_charset = $_POST['database_connection_charset']; + $database_connection_method = $_POST['database_connection_method']; + $dbase = '`' . $_POST['database_name'] . '`'; + $table_prefix = $_POST['tableprefix']; +} +echo "

                      ".$_lang['creating_database_connection']; +if (!$conn = mysqli_connect($database_server, $database_user, $database_password)) { + $errors += 1; + echo "".$_lang['database_connection_failed']."

                      ".$_lang['database_connection_failed_note']."

                      "; +} else { + echo "".$_lang['ok']."

                      "; +} +// make sure we can use the database +if ($installMode > 0 && !mysqli_query($conn, "USE {$dbase}")) { + $errors += 1; + echo "".$_lang['database_use_failed']."

                      ".$_lang["database_use_failed_note"]."

                      "; +} + +// check the database collation if not specified in the configuration +if (!isset ($database_connection_charset) || empty ($database_connection_charset)) { + if (!$rs = mysqli_query($conn, "show session variables like 'collation_database'")) { + $rs = mysqli_query($conn, "show session variables like 'collation_server'"); + } + if ($rs && $collation = mysqli_fetch_row($rs)) { + $database_collation = $collation[1]; + } + if (empty ($database_collation)) { + $database_collation = 'utf8_unicode_ci'; + } + $database_charset = substr($database_collation, 0, strpos($database_collation, '_') - 1); + $database_connection_charset = $database_charset; +} + +// determine the database connection method if not specified in the configuration +if (!isset($database_connection_method) || empty($database_connection_method)) { + $database_connection_method = 'SET CHARACTER SET'; +} + +// check table prefix +if ($conn && $installMode == 0) { + echo "

                      " . $_lang['checking_table_prefix'] . $table_prefix . "`: "; + if ($rs= mysqli_query($conn, "SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) { + echo "" . $_lang['failed'] . "" . $_lang['table_prefix_already_inuse'] . "

                      "; + $errors += 1; + echo "

                      " . $_lang['table_prefix_already_inuse_note'] . "

                      "; + } else { + echo "" . $_lang['ok'] . "

                      "; + } +} elseif ($conn && $installMode == 2) { + echo "

                      " . $_lang['checking_table_prefix'] . $table_prefix . "`: "; + if (!$rs = mysqli_query($conn, "SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) { + echo "" . $_lang['failed'] . "" . $_lang['table_prefix_not_exist'] . "

                      "; + $errors += 1; + echo "

                      " . $_lang['table_prefix_not_exist_note'] . "

                      "; + } else { + echo "" . $_lang['ok'] . "

                      "; + } +} + +// check mysql version +if ($conn) { + echo "

                      " . $_lang['checking_mysql_version']; + if ( version_compare(mysqli_get_server_info($conn), '5.0.51', '=') ) { + echo "" . $_lang['warning'] . "  ". $_lang['mysql_5051'] . "

                      "; + echo "

                      " . $_lang['mysql_5051_warning'] . "

                      "; + } else { + echo "" . $_lang['ok'] . "  " . $_lang['mysql_version_is'] . mysqli_get_server_info($conn) . "

                      "; + } +} + +// check for strict mode +if ($conn) { + echo "

                      ". $_lang['checking_mysql_strict_mode']; + $mysqlmode = mysqli_query($conn, "SELECT @@global.sql_mode"); + if (mysqli_num_rows($mysqlmode) > 0){ + $modes = mysqli_fetch_array($mysqlmode, MYSQLI_NUM); + //$modes = array("STRICT_TRANS_TABLES"); // for testing + // print_r($modes); + foreach ($modes as $mode) { + if (stristr($mode, "STRICT_TRANS_TABLES") !== false || stristr($mode, "STRICT_ALL_TABLES") !== false) { + echo "" . $_lang['warning'] . "   " . $_lang['strict_mode'] . "

                      "; + echo "

                      " . $_lang['strict_mode_error'] . "

                      "; + } else { + echo "" . $_lang['ok'] . "

                      "; + } + } + } else { + echo "" . $_lang['ok'] . "

                      "; + } +} +// Version and strict mode check end + +// andrazk 20070416 - add install flag and disable manager login +// assets/cache writable? +if (is_writable("../assets/cache")) { + if (file_exists('../assets/cache/installProc.inc.php')) { + @chmod('../assets/cache/installProc.inc.php', 0755); + unlink('../assets/cache/installProc.inc.php'); + } + + // make an attempt to create the file + @ $hnd = fopen("../assets/cache/installProc.inc.php", 'w'); + @ fwrite($hnd, ''); + @ fclose($hnd); +} + +if($installMode > 0 && $_POST['installdata'] == "1") { + echo "

                      {$_lang['sample_web_site']}: {$_lang['sample_web_site_note']}

                      \n"; +} + +if ($errors > 0) { +?> +

                      + 1 ? $errors." " : ""; + if ($errors > 1) echo $_lang['errors']; + else echo $_lang['error']; + if ($errors > 1) echo $_lang['please_correct_errors']; + else echo $_lang['please_correct_error']; + if ($errors > 1) echo $_lang['and_try_again_plural']; + else echo $_lang['and_try_again']; + echo $_lang['visit_forum']; + ?> +

                      +  

                      "; + +$nextAction= $errors > 0 ? 'summary' : 'install'; +$nextButton= $errors > 0 ? $_lang['retry'] : $_lang['install']; +$nextVisibility= $errors > 0 || isset($_POST['chkagree']) ? 'visible' : 'hidden'; +$agreeToggle= $errors > 0 ? '' : ' onclick="if(document.getElementById(\'chkagree\').checked){document.getElementById(\'nextbutton\').style.visibility=\'visible\';}else{document.getElementById(\'nextbutton\').style.visibility=\'hidden\';}"'; +?> +
                      +
                      + + + + + + + + + + + + + + + + + + $template) echo "\n"; +$tvs = isset ($_POST['tv']) ? $_POST['tv'] : array (); +foreach ($tvs as $i => $tv) echo "\n"; +$chunks = isset ($_POST['chunk']) ? $_POST['chunk'] : array (); +foreach ($chunks as $i => $chunk) echo "\n"; +$snippets = isset ($_POST['snippet']) ? $_POST['snippet'] : array (); +foreach ($snippets as $i => $snippet) echo "\n"; +$plugins = isset ($_POST['plugin']) ? $_POST['plugin'] : array (); +foreach ($plugins as $i => $plugin) echo "\n"; +$modules = isset ($_POST['module']) ? $_POST['module'] : array (); +foreach ($modules as $i => $module) echo "\n"; +?> +
                      + +

                      +

                      +/> +

                      + +
                      diff --git a/install/actions/tpl_connection.html b/install/actions/tpl_connection.html new file mode 100644 index 0000000000..61ccf74215 --- /dev/null +++ b/install/actions/tpl_connection.html @@ -0,0 +1,277 @@ +
                      + + + + + +

                      [%connection_screen_database_info%]

                      +

                      [%connection_screen_server_connection_information%]

                      +

                      [%connection_screen_server_connection_note%]

                      + +

                      + +

                      +

                      + +

                      +

                      + +

                      + + + +
                      + + +
                      +
                      +

                      [%connection_screen_database_connection_information%]

                      +

                      [%connection_screen_database_connection_note%]

                      +

                      + +

                      +

                      + +

                      +

                      +

                      + +
                      +

                      +

                      +

                      + +
                      +

                      + + +
                       
                      +
                      +
                      +
                      +
                      +

                      [%connection_screen_defaults%]

                      +

                      [%connection_screen_default_admin_user%]

                      +

                      [%connection_screen_default_admin_note%]

                      +

                      + +

                      +

                      + +

                      +

                      + +

                      +

                      + +

                      + +

                      [%default_language%]

                      +

                      [%default_language_description%]

                      +

                      +

                      +

                      +
                      +
                      + + + + +
                      + + + + diff --git a/install/actions/tpl_language.html b/install/actions/tpl_language.html new file mode 100644 index 0000000000..bc7d99aa9d --- /dev/null +++ b/install/actions/tpl_language.html @@ -0,0 +1,10 @@ +
                      +

                      [%choose_language%]:  

                      + + +
                      diff --git a/install/actions/tpl_mode.html b/install/actions/tpl_mode.html new file mode 100644 index 0000000000..d16fee50ba --- /dev/null +++ b/install/actions/tpl_mode.html @@ -0,0 +1,39 @@ +
                      +

                      [%welcome_message_welcome%]

                      +

                      [%welcome_message_text%] [%welcome_message_start%]

                      +
                      + +
                      +

                      [%installation_mode%]

                      +
                      +
                      new install
                      +
                      +

                      +

                      +

                      [%installation_install_new_copy%] [+moduleName+]

                      +

                      [%installation_install_new_note%]

                      +
                      +
                      +
                      +
                      upgrade existing install
                      +
                      +

                      +

                      +

                      [%installation_upgrade_existing_note%]

                      +
                      +
                      +
                      +
                      +
                      advanced MODX upgrade
                      +
                      +

                      +

                      +

                      [%installation_upgrade_advanced_note%]

                      +
                      +
                      + + +
                      \ No newline at end of file diff --git a/install/actions/tpl_options.html b/install/actions/tpl_options.html new file mode 100644 index 0000000000..50a5aba90e --- /dev/null +++ b/install/actions/tpl_options.html @@ -0,0 +1,84 @@ +
                      +
                      + + + + + + + + + + + + + + +
                      + +

                      [%optional_items%]

                      +

                      [%optional_items_note%]

                      + Sample Data + +

                      [%sample_web_site%]

                      +

                       

                      +

                       [%sample_web_site_note%]

                      +
                      + +

                      [%checkbox_select_options%]

                      +

                      + [%all%] + [%none%] + [%toggle%] +

                      +
                      +
                      +
                      [+templates+]
                      +
                      [+tvs+]
                      +
                      [+chunks+]
                      +
                      [+modules+]
                      +
                      [+plugins+]
                      +
                      [+snippets+]
                      +
                      + + +
                      + \ No newline at end of file diff --git a/install/assets/chunks/AjaxSearch_tplAjaxGrpResult.tpl b/install/assets/chunks/AjaxSearch_tplAjaxGrpResult.tpl new file mode 100644 index 0000000000..ade33f3c01 --- /dev/null +++ b/install/assets/chunks/AjaxSearch_tplAjaxGrpResult.tpl @@ -0,0 +1,19 @@ +/** + * AjaxSearch_tplAjaxGrpResult + * + * Grp Result Tpl for AjaxSearch + * + * @category chunk + * @internal @modx_category Demo Content + * @internal @installset base, sample + */ +[+as.grpResultsDef:is=`1`:then=` +
                      +[+as.headerGrpResult+] +[+as.listResults+] +[+as.footerGrpResult+] +
                      +`:else=` +
                      [+as.grpResultNameShow:is=`1`:then=`[+as.grpResultName+]`+] +[+as.grpResultsDisplayedText+]
                      +`+] \ No newline at end of file diff --git a/install/assets/chunks/AjaxSearch_tplAjaxResult.tpl b/install/assets/chunks/AjaxSearch_tplAjaxResult.tpl new file mode 100644 index 0000000000..bc9485fc42 --- /dev/null +++ b/install/assets/chunks/AjaxSearch_tplAjaxResult.tpl @@ -0,0 +1,21 @@ +/** + * AjaxSearch_tplAjaxResult + * + * Result Tpl for AjaxSearch + * + * @category chunk + * @internal @modx_category Demo Content + * @internal @installset base, sample + */ +
                      + [+as.pagetitle+] +[+as.descriptionShow:is=`1`:then=` + [+as.description+] +`+] +[+as.extractShow:is=`1`:then=` +

                      [+as.extract+]

                      +`+] +[+as.breadcrumbsShow:is=`1`:then=` + [+as.breadcrumbs+] +`+] +
                      \ No newline at end of file diff --git a/install/assets/chunks/AjaxSearch_tplAjaxResults.tpl b/install/assets/chunks/AjaxSearch_tplAjaxResults.tpl new file mode 100644 index 0000000000..4f1663348e --- /dev/null +++ b/install/assets/chunks/AjaxSearch_tplAjaxResults.tpl @@ -0,0 +1,41 @@ +/** + * AjaxSearch_tplAjaxResults + * + * Results Tpl for AjaxSearch + * + * @category chunk + * @internal @modx_category Demo Content + * @internal @installset base, sample + */ + + \ No newline at end of file diff --git a/install/assets/chunks/AjaxSearch_tplInput.tpl b/install/assets/chunks/AjaxSearch_tplInput.tpl new file mode 100644 index 0000000000..215262ced6 --- /dev/null +++ b/install/assets/chunks/AjaxSearch_tplInput.tpl @@ -0,0 +1,28 @@ +/** + * AjaxSearch_tplInput + * + * Input-Form for AjaxSearch + * + * @category chunk + * @internal @modx_category Demo Content + * @internal @installset base, sample + */ +[+as.showInputForm:is=`1`:then=` +
                      + [+as.showAsId:is=`1`:then=``+] + +
                      + + [+as.liveSearch:is=`0`:then=` + + + + `:else=` +
                      + `+] +
                      +
                      +`+] +[+as.showIntro:is=`1`:then=` +

                      [+as.introMessage+]

                      +`+] \ No newline at end of file diff --git a/install/assets/chunks/Comments_tplComments.tpl b/install/assets/chunks/Comments_tplComments.tpl new file mode 100644 index 0000000000..823335b681 --- /dev/null +++ b/install/assets/chunks/Comments_tplComments.tpl @@ -0,0 +1,53 @@ +/** + * Comments_tplComments + * + * Comments (Jot) Form-Template + * + * @category chunk + * @internal @modx_category Demo Content + * @internal @installset base, sample + */ + +
                      +
                      [+comment.title:limit:esc+] + [+phx:userinfo=`lastlogin`:ifempty=`9999999999`:lt=`[+comment.createdon+]`:then=` + + `:else=` + + `:strip+] + +
                      +
                      +
                      +
                      + [+comment.createdby:isnt=`0`:then=``+][+comment.createdby:userinfo=`username`:ifempty=`[+comment.custom.name:ifempty=`[+jot.guestname+]`:esc+]`+] + [+comment.createdby:isnt=`0`:then=``+] +
                      Posts: [+comment.userpostcount+] +
                      +
                      +
                      + [+jot.moderation.enabled:is=`1`:then=` + + [+comment.published:is=`0`:then=` + + `+] + [+comment.published:is=`1`:then=` + + `+] + `:strip+] + [+jot.user.canedit:is=`1`:and:if=`[+comment.createdby+]`:is=`[+jot.user.id+]`:or:if=`[+jot.moderation.enabled+]`:is=`1`:then=` + + `:strip+] +
                      + Reply #[+comment.postnumber+] on : [+comment.createdon:date=`%a %B %d, %Y, %H:%M:%S`+] +
                      +
                      [+comment.content:wordwrap:esc:nl2br+]
                      +
                      + [+comment.editedon:isnt=`0`:then=` + Last Edit: [+comment.editedon:date=`%B %d, %Y, %H:%M:%S`+] by [+comment.editedby:userinfo=`username`:ifempty=` * `+] +  `+] [+jot.moderation.enabled:is=`1`:then=`[+comment.secip+]`+] +
                      +
                      +
                      +
                      +
                      \ No newline at end of file diff --git a/install/assets/chunks/Comments_tplForm.tpl b/install/assets/chunks/Comments_tplForm.tpl new file mode 100644 index 0000000000..a1c591bb76 --- /dev/null +++ b/install/assets/chunks/Comments_tplForm.tpl @@ -0,0 +1,99 @@ +/** + * Comments_tplForm + * + * Comments (Jot) Form-Template + * + * @category chunk + * @internal @modx_category Demo Content + * @internal @installset base, sample + */ + +

                      [+form.edit:is=`1`:then=`Edit comment`:else=`Write a comment`+]

                      +
                      +
                        +
                      • Required fields are marked with *.
                      • +
                      +
                      +[+form.error:isnt=`0`:then=` +
                      +[+form.error:select=` +&-3=You are trying to re-submit the same post. You have probably clicked the submit button more than once. +&-2=Your comment has been rejected. +&-1=Your comment has been saved, it will first be reviewed before it is published. +&1=You are trying to re-submit the same post. You have probably clicked the submit button more than once. +&2=The security code you entered was incorrect. +&3=You can only post once each [+jot.postdelay+] seconds. +&4=Your comment has been rejected. +&5=[+form.errormsg:ifempty=`You didn't enter all the required fields`+] +`+] +
                      +`:strip+] +[+form.confirm:isnt=`0`:then=` +
                      +[+form.confirm:select=` +&1=Your comment has been published. +&2=Your comment has been saved, it will first be reviewed before it is published. +&3=Comment saved. +`+] +
                      +`:strip+] +
                      +
                      + + + + + [+form.moderation:is=`1`:then=` +
                      + Created on: [+form.field.createdon:date=`%a %B %d, %Y at %H:%M`+]
                      + Created by: [+form.field.createdby:userinfo=`username`:ifempty=`[+jot.guestname+]`+]
                      + IP address: [+form.field.secip+]
                      + Published: [+form.field.published:select=`0=No&1=Yes`+]
                      + [+form.field.publishedon:gt=`0`:then=` + Published on: [+form.field.publishedon:date=`%a %B %d, %Y at %H:%M`+]
                      + Published by: [+form.field.publishedby:userinfo=`username`:ifempty=` - `+]
                      + `+] + [+form.field.editedon:gt=`0`:then=` + Edited on: [+form.field.editedon:date=`%a %B %d, %Y at %H:%M`+]
                      + Edited by: [+form.field.editedby:userinfo=`username`:ifempty=` -`+]
                      + `+] +
                      + `:strip+] + + [+form.guest:is=`1`:then=` +
                      + + +
                      +
                      + + +
                      + `:strip+] +
                      + + +
                      +
                      + + +
                      + +[+jot.captcha:is=`1`:then=` +
                      + + If you have trouble reading the code, click on the code itself to generate a new random code. + +
                      +
                      + + +
                      +`:strip+] + + + [+form.edit:is=`1`:then=` + + `+] +
                      +
                      \ No newline at end of file diff --git a/install/assets/chunks/WebLogin_tplForm.tpl b/install/assets/chunks/WebLogin_tplForm.tpl new file mode 100644 index 0000000000..a904180bfa --- /dev/null +++ b/install/assets/chunks/WebLogin_tplForm.tpl @@ -0,0 +1,49 @@ +/** + * WebLogin_tplForm + * + * WebLogin Tpl + * + * @category chunk + * @version 1.1 + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) + * @internal @modx_category Demo Content + * @internal @overwrite true + * @internal @installset base, sample + */ + + +
                      + +
                      + + +
                      +
                      + + +
                      +
                      + +
                      + + Forget Your Password? +
                      +
                      + +

                      You're already logged in

                      +Do you wish to [+logouttext+]? +
                      + +
                      + +

                      It happens to everyone...

                      +
                      + + +
                      + + + +
                      diff --git a/install/assets/chunks/weblogin.sidebar.tpl b/install/assets/chunks/weblogin.sidebar.tpl deleted file mode 100755 index c5378366c6..0000000000 --- a/install/assets/chunks/weblogin.sidebar.tpl +++ /dev/null @@ -1,40 +0,0 @@ -/** - * WebLoginSideBar - * - * WebLogin Tpl - * - * @category chunk - * @version 1.1 - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) - * @internal @modx_category Login - * @internal @installset base, sample - */ - - -
                      - -
                      -

                      Your Login Details

                      - - - - - Forget Your Password? -
                      -
                      -
                      - -

                      You're already logged in

                      -Do you wish to [+logouttext+]? -
                      - -
                      -
                      -

                      It happens to everyone...

                      - - - - -
                      -
                      - diff --git a/install/assets/modules/docmanager.tpl b/install/assets/modules/docmanager.tpl index 7f860b8f5d..adb516a118 100644 --- a/install/assets/modules/docmanager.tpl +++ b/install/assets/modules/docmanager.tpl @@ -13,6 +13,7 @@ * @internal @dependencies requires files located at /assets/modules/docmanager/ * @internal @modx_category Manager and Admin * @internal @installset base, sample + * @lastupdate 09/04/2016 */ include_once(MODX_BASE_PATH.'assets/modules/docmanager/classes/docmanager.class.php'); diff --git a/install/assets/modules/store.tpl b/install/assets/modules/store.tpl new file mode 100644 index 0000000000..46138d9476 --- /dev/null +++ b/install/assets/modules/store.tpl @@ -0,0 +1,19 @@ +// , update Mihanik71 - * @internal @events OnDocFormRender,OnChunkFormRender,OnModFormRender,OnPluginFormRender,OnSnipFormRender,OnTempFormRender + * @internal @events OnDocFormRender,OnChunkFormRender,OnModFormRender,OnPluginFormRender,OnSnipFormRender,OnTempFormRender,OnRichTextEditorInit * @internal @modx_category Manager and Admin - * @internal @properties &theme=Theme;list;default,ambiance,blackboard,cobalt,eclipse,elegant,erlang-dark,lesser-dark,midnight,monokai,neat,night,rubyblue,solarized,twilight,vibrant-ink,xq-dark,xq-light; &indentUnit=Indent unit;int;4 &tabSize=The width of a tab character;int;4 &lineWrapping=lineWrapping;list;true,false;true &matchBrackets=matchBrackets;list;true,false;true &activeLine=activeLine;list;true,false;false &emmet=emmet;list;true,false;true &search=search;list;true,false;true + * @internal @properties &theme=Theme;list;default,ambiance,blackboard,cobalt,eclipse,elegant,erlang-dark,lesser-dark,midnight,monokai,neat,night,rubyblue,solarized,twilight,vibrant-ink,xq-dark,xq-light;default &indentUnit=Indent unit;int;4 &tabSize=The width of a tab character;int;4 &lineWrapping=lineWrapping;list;true,false;true &matchBrackets=matchBrackets;list;true,false;true &activeLine=activeLine;list;true,false;false &emmet=emmet;list;true,false;true &search=search;list;true,false;false &indentWithTabs=indentWithTabs;list;true,false;true &undoDepth=undoDepth;int;200 &historyEventDelay=historyEventDelay;int;1250 * @internal @installset base + * @reportissues https://github.com/modxcms/evolution + * @documentation Official docs https://codemirror.net/doc/manual.html + * @author hansek from http://www.modxcms.cz + * @author update Mihanik71 + * @author update Deesen + * @lastupdate 11/04/2016 */ $_CM_BASE = 'assets/plugins/codemirror/'; $_CM_URL = $modx->config['site_url'] . $_CM_BASE; -require(MODX_BASE_PATH. $_CM_BASE .'codemirror.plugin.php'); - +require(MODX_BASE_PATH. $_CM_BASE .'codemirror.plugin.php'); \ No newline at end of file diff --git a/install/assets/plugins/ElementsInTree.tpl b/install/assets/plugins/ElementsInTree.tpl new file mode 100644 index 0000000000..81dfcd123f --- /dev/null +++ b/install/assets/plugins/ElementsInTree.tpl @@ -0,0 +1,25 @@ +//config['base_path'].'assets/plugins/managermanager/mm.inc.php'); \ No newline at end of file diff --git a/install/assets/plugins/qm.tpl b/install/assets/plugins/qm.tpl index 7c07d65e6a..7013c71e10 100644 --- a/install/assets/plugins/qm.tpl +++ b/install/assets/plugins/qm.tpl @@ -6,42 +6,42 @@ * * @category plugin * @version 1.5.6 - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL v3) * @internal @properties &jqpath=Path to jQuery;text;assets/js/jquery.min.js &loadmanagerjq=Load jQuery in manager;list;true,false;false &loadfrontendjq=Load jQuery in front-end;list;true,false;true &noconflictjq=jQuery noConflict mode in front-end;list;true,false;true &loadtb=Load modal box in front-end;list;true,false;true &tbwidth=Modal box window width;text;80% &tbheight=Modal box window height;text;90% &hidefields=Hide document fields from front-end editors;text;parent &hidetabs=Hide document tabs from front-end editors;text; &hidesections=Hide document sections from front-end editors;text; &addbutton=Show add document here button;list;true,false;true &tpltype=New document template type;list;parent,id,selected;parent &tplid=New document template id;int;3 &custombutton=Custom buttons;textarea; &managerbutton=Show go to manager button;list;true,false;true &logout=Logout to;list;manager,front-end;manager &disabled=Plugin disabled on documents;text; &autohide=Autohide toolbar;list;true,false;true &editbuttons=Inline edit buttons;list;true,false;false &editbclass=Edit button CSS class;text;qm-edit &newbuttons=Inline new resource buttons;list;true,false;false &newbclass=New resource button CSS class;text;qm-new &tvbuttons=Inline template variable buttons;list;true,false;false &tvbclass=Template variable button CSS class;text;qm-tv * @internal @events OnParseDocument,OnWebPagePrerender,OnDocFormPrerender,OnDocFormSave,OnManagerLogout * @internal @modx_category Manager and Admin * @internal @legacy_names QM+,QuickEdit * @internal @installset base, sample * @internal @disabled 1 + * @reportissues https://github.com/modxcms/evolution + * @documentation Official docs [+site_url+]assets/plugins/qm/readme.html + * @link http://www.maagit.fi/modx/quickmanager-plus + * @author Mikko Lammi + * @author Since 2011: yama, dmi3yy, segr + * @lastupdate 31/03/2014 */ - // In manager -if (isset($_SESSION['mgrValidated'])) { +if (!$modx->checkSession()) return; - $show = TRUE; +$show = TRUE; - if ($disabled != '') { - $arr = array_filter(array_map('intval', explode(',', $disabled))); - if (in_array($modx->documentIdentifier, $arr)) { - $show = FALSE; - } +if ($disabled != '') { + $arr = array_filter(array_map('intval', explode(',', $disabled))); + if (in_array($modx->documentIdentifier, $arr)) { + $show = FALSE; } +} - if ($show) { - // Replace [*#tv*] with QM+ edit TV button placeholders - if ($tvbuttons == 'true') { - $e = $modx->Event; - if ($e->name == 'OnParseDocument') { - $output = &$modx->documentOutput; - $output = preg_replace('~\[\*#(.*?)\*\]~', '[*$1*]', $output); - $modx->documentOutput = $output; - } +if ($show) { + // Replace [*#tv*] with QM+ edit TV button placeholders + if ($tvbuttons == 'true') { + if ($modx->event->name == 'OnParseDocument') { + $output = &$modx->documentOutput; + $output = preg_replace('~\[\*#(.*?)\*\]~', '[*$1*]', $output); + $modx->documentOutput = $output; } - // In manager - if (isset($_SESSION['mgrValidated'])) { - include_once($modx->config['base_path'].'assets/plugins/qm/qm.inc.php'); - $qm = new Qm($modx, $jqpath, $loadmanagerjq, $loadfrontendjq, $noconflictjq, $loadtb, $tbwidth, $tbheight, $hidefields, $hidetabs, $hidesections, $addbutton, $tpltype, $tplid, $custombutton, $managerbutton, $logout, $autohide, $editbuttons, $editbclass, $newbuttons, $newbclass, $tvbuttons, $tvbclass); - } - } -} \ No newline at end of file + } + include_once($modx->config['base_path'].'assets/plugins/qm/qm.inc.php'); + $qm = new Qm($modx, $jqpath, $loadmanagerjq, $loadfrontendjq, $noconflictjq, $loadtb, $tbwidth, $tbheight, $hidefields, $hidetabs, $hidesections, $addbutton, $tpltype, $tplid, $custombutton, $managerbutton, $logout, $autohide, $editbuttons, $editbclass, $newbuttons, $newbclass, $tvbuttons, $tvbclass); +} diff --git a/install/assets/plugins/tinymce.tpl b/install/assets/plugins/tinymce.tpl deleted file mode 100644 index 5e33f14445..0000000000 --- a/install/assets/plugins/tinymce.tpl +++ /dev/null @@ -1,23 +0,0 @@ -//(Be careful or leave empty!);textarea; &entityEncoding=Entity Encoding;list;named,numeric,raw;named &entities=Entities;text; &pathOptions=Path Options;list;Site config,Absolute path,Root relative,URL,No convert;Site config &resizing=Advanced Resizing;list;true,false;false &disabledButtons=Disabled Buttons;text; &webTheme=Web Theme;test;webuser &webPlugins=Web Plugins;text; &webButtons1=Web Buttons 1;text;bold italic underline strikethrough removeformat alignleft aligncenter alignright &webButtons2=Web Buttons 2;text;link unlink image undo redo &webButtons3=Web Buttons 3;text; &webButtons4=Web Buttons 4;text; &webAlign=Web Toolbar Alignment;list;ltr,rtl;ltr &width=Width;text;100% &height=Height;text;400px &introtextRte=Introtext RTE
                      add richtext-features to "introtext";list;enabled,disabled;disabled &inlineMode=Inline-Mode;list;enabled,disabled;disabled &inlineTheme=Inline-Mode
                      Theme;text;inline &browser_spellcheck=Browser Spellcheck
                      At least one dictionary must be installed inside your browser;list;enabled,disabled;disabled + * @internal @events OnLoadWebDocument,OnParseDocument,OnWebPagePrerender,OnLoadWebPageCache,OnRichTextEditorRegister,OnRichTextEditorInit,OnInterfaceSettingsRender + * @internal @modx_category Manager and Admin + * @internal @installset base + * @logo /assets/plugins/tinymce4/tinymce/logo.png + * @reportissues https://github.com/extras-evolution/tinymce4-for-modx-evo + * @documentation Plugin docs https://github.com/extras-evolution/tinymce4-for-modx-evo + * @documentation Official TinyMCE4-docs https://www.tinymce.com/docs/ + * @author Deesen + * @lastupdate 2016-10-06 + */ + +require MODX_BASE_PATH.'assets/plugins/tinymce4/plugin.tinymce.php'; \ No newline at end of file diff --git a/install/assets/plugins/transalias.tpl b/install/assets/plugins/transalias.tpl index be4710ec1a..8ce950833e 100644 --- a/install/assets/plugins/transalias.tpl +++ b/install/assets/plugins/transalias.tpl @@ -5,7 +5,7 @@ * Human readible URL translation supporting multiple languages and overrides * * @category plugin - * @version 1.0.2 + * @version 1.0.4 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) * @package modx * @subpackage modx.plugins.transalias diff --git a/install/assets/snippets/DocLister.tpl b/install/assets/snippets/DocLister.tpl new file mode 100755 index 0000000000..2560f2d5fc --- /dev/null +++ b/install/assets/snippets/DocLister.tpl @@ -0,0 +1,15 @@ +//config['base_path'] . 'assets/snippets/jot/'; include_once($jotPath.'jot.class.inc.php'); $Jot = new CJot; -$Jot->VersionCheck("1.1.4"); +$Jot->VersionCheck("1.1.5"); $Jot->Set("path",$jotPath); $Jot->Set("action", $action); $Jot->Set("postdelay", $postdelay); diff --git a/install/assets/snippets/listindexer.tpl b/install/assets/snippets/listindexer.tpl deleted file mode 100644 index 9994794fa8..0000000000 --- a/install/assets/snippets/listindexer.tpl +++ /dev/null @@ -1,15 +0,0 @@ -//config['base_path'].$reflect_base : $modx->config['base_path']."assets/snippets/reflect/"; -/* - Param: ditto_base - - Purpose: - Location of Ditto files - - Options: - Any valid folder location containing the Ditto source code with a trailing slash - - Default: - [(base_path)]assets/snippets/ditto/ -*/ - -$config = (isset($config)) ? $config : "default"; -/* - Param: config - - Purpose: - Load a custom configuration - - Options: - "default" - default blank config file - CONFIG_NAME - Other configs installed in the configs folder or in any folder within the MODX base path via @FILE - - Default: - "default" - - Related: - - -*/ - -require($reflect_base."configs/default.config.php"); -require($reflect_base."default.templates.php"); -if ($config != "default") { - require((substr($config, 0, 5) != "@FILE") ? $reflect_base."configs/$config.config.php" : $modx->config['base_path'].trim(substr($config, 5))); -} - -// --------------------------------------------------- -// Parameters -// --------------------------------------------------- - -$id = isset($id) ? $id."_" : false; -/* - Param: id - - Purpose: - Unique ID for this Ditto instance for connection with other scripts (like Reflect) and unique URL parameters - - Options: - Any valid folder location containing the Ditto source code with a trailing slash - - Default: - "" - blank -*/ -$getDocuments = isset($getDocuments) ? $getDocuments : 0; -/* - Param: getDocuments - - Purpose: - Force Reflect to get documents - - Options: - 0 - off - 1 - on - - Default: - 0 - off -*/ -$showItems = isset($showItems) ? $showItems : 1; -/* - Param: showItems - - Purpose: - Show individual items in the archive - - Options: - 0 - off - 1 - on - - Default: - 1 - on -*/ -$groupByYears = isset($groupByYears)? $groupByYears : 1; -/* - Param: groupByYears - - Purpose: - Group the archive by years - - Options: - 0 - off - 1 - on - - Default: - 1 - on -*/ -$targetID = isset($targetID) ? $targetID : $modx->documentObject['id']; -/* - Param: targetID - - Purpose: - ID for archive links to point to - - Options: - Any MODX document with a Ditto call setup with extenders=`dateFilter` - - Default: - Current MODX Document -*/ -$dateSource = isset($dateSource) ? $dateSource : "createdon"; -/* - Param: dateSource - - Purpose: - Date source to display for archive items - - Options: - # - Any UNIX timestamp from MODX fields or TVs such as createdon, pub_date, or editedon - - Default: - "createdon" - - Related: - - -*/ -$dateFormat = isset($dateFormat) ? $dateFormat : "%d-%b-%y %H:%M"; -/* - Param: dateFormat - - Purpose: - Format the [+date+] placeholder in human readable form - - Options: - Any PHP valid strftime option - - Default: - "%d-%b-%y %H:%M" - - Related: - - -*/ -$yearSortDir = isset($yearSortDir) ? $yearSortDir : "DESC"; -/* - Param: yearSortDir - - Purpose: - Direction to sort documents - - Options: - ASC - ascending - DESC - descending - - Default: - "DESC" - - Related: - - -*/ -$monthSortDir = isset($monthSortDir) ? $monthSortDir : "ASC"; -/* - Param: monthSortDir - - Purpose: - Direction to sort the months - - Options: - ASC - ascending - DESC - descending - - Default: - "ASC" - - Related: - - -*/ -$start = isset($start)? intval($start) : 0; -/* - Param: start - - Purpose: - Number of documents to skip in the results - - Options: - Any number - - Default: - 0 -*/ -$phx = (isset($phx))? $phx : 1; -/* - Param: phx - - Purpose: - Use PHx formatting - - Options: - 0 - off - 1 - on - - Default: - 1 - on -*/ - -// --------------------------------------------------- -// Initialize Ditto -// --------------------------------------------------- -$placeholder = ($id != false && $getDocuments == 0) ? true : false; -if ($placeholder === false) { - $rID = "reflect_".rand(1,1000); - $itemTemplate = isset($tplItem) ? $tplItem: "@CODE:".$defaultTemplates['item']; - $dParams = array( - "id" => "$rID", - "save" => "3", - "summarize" => "all", - "tpl" => $itemTemplate, - ); - - $source = $dittoSnippetName; - $params = $dittoSnippetParameters; - // TODO: Remove after 3.0 - - if (isset($params)) { - $givenParams = explode("|",$params); - foreach ($givenParams as $parameter) { - $p = explode(":",$parameter); - $dParams[$p[0]] = $p[1]; - } - } - /* - Param: params - - Purpose: - Pass parameters to the Ditto instance used to retreive the documents - - Options: - Any valid ditto parameters in the format name:value - with multiple parameters separated by a pipe (|) - - Note: - This parameter is only needed for config, start, and phx as you can - now simply use the parameter as if Reflect was Ditto - - Default: - [NULL] - */ - - $reflectParameters = array('reflect_base','config','id','getDocuments','showItems','groupByYears','targetID','yearSortDir','monthSortDir','start','phx','tplContainer','tplYear','tplMonth','tplMonthInner','tplItem','save'); - $params =& $modx->event->params; - if(is_array($params)) { - foreach ($params as $param=>$value) { - if (!in_array($param,$reflectParameters) && substr($param,-3) != 'tpl') { - $dParams[$param] = $value; - } - } - } - - $source = isset($source) ? $source : "Ditto"; - /* - Param: source - - Purpose: - Name of the Ditto snippet to use - - Options: - Any valid snippet name - - Default: - "Ditto" - */ - $snippetOutput = $modx->runSnippet($source,$dParams); - $ditto = $modx->getPlaceholder($rID."_ditto_object"); - $resource = $modx->getPlaceholder($rID."_ditto_resource"); -} else { - $ditto = $modx->getPlaceholder($id."ditto_object"); - $resource = $modx->getPlaceholder($id."ditto_resource"); -} -if (!is_object($ditto) || !isset($ditto) || !isset($resource)) { - return !empty($snippetOutput) ? $snippetOutput : "The Ditto object is invalid. Please check it."; -} - -// --------------------------------------------------- -// Templates -// --------------------------------------------------- - -$templates['tpl'] = isset($tplContainer) ? $ditto->template->fetch($tplContainer): $defaultTemplates['tpl']; /* - Param: tplContainer - - Purpose: - Container template for the archive - - Options: - - Any valid chunk name - - Code via @CODE: - - File via @FILE: - - Default: - See default.tempates.php + * Note: + * If Reflect is not retrieving its own documents, make sure that the + * Ditto call feeding it has all of the fields in it that you plan on + * calling in your Reflect template. Furthermore, Reflect will ONLY + * show what is currently in the Ditto result set. + * Thus, if pagination is on it will ONLY show that page's items. */ -$templates['year'] = isset($tplYear) ? $ditto->template->fetch($tplYear): $defaultTemplates['year']; -/* - Param: tplYear - - Purpose: - Template for the year item - - Options: - - Any valid chunk name - - Code via @CODE: - - File via @FILE: - - Default: - See default.tempates.php -*/ -$templates['year_inner'] = isset($tplYearInner) ? $ditto->template->fetch($tplYearInner): $defaultTemplates['year_inner']; -/* - Param: tplYearInner - - Purpose: - Template for the year item (the ul to hold the year template) - - Options: - - Any valid chunk name - - Code via @CODE: - - File via @FILE: - - Default: - See default.tempates.php -*/ -$templates['month'] = isset($tplMonth) ? $ditto->template->fetch($tplMonth): $defaultTemplates['month']; -/* - Param: tplMonth - - Purpose: - Template for the month item - - Options: - - Any valid chunk name - - Code via @CODE: - - File via @FILE: - - Default: - See default.tempates.php -*/ -$templates['month_inner'] = isset($tplMonthInner) ? $ditto->template->fetch($tplMonthInner): $defaultTemplates['month_inner']; -/* - Param: tplMonthInner - - Purpose: - Template for the month item (the ul to hold the month template) - - Options: - - Any valid chunk name - - Code via @CODE: - - File via @FILE: - - Default: - See default.tempates.php -*/ -$templates['item'] = isset($tplItem) ? $ditto->template->fetch($tplItem): $defaultTemplates['item']; -/* - Param: tplItem - - Purpose: - Template for the individual item - - Options: - - Any valid chunk name - - Code via @CODE: - - File via @FILE: - - Default: - See default.tempates.php -*/ - -$ditto->addField("date","display","custom"); - // force add the date field if receiving data from a Ditto instance - -// --------------------------------------------------- -// Reflect -// --------------------------------------------------- - -if (function_exists("reflect") === FALSE) { -function reflect($templatesDocumentID, $showItems, $groupByYears, $resource, $templatesDateSource, $dateFormat, $ditto, $templates,$id,$start,$yearSortDir,$monthSortDir) { - global $modx; - $cal = array(); - $output = ''; - $ph = array('year'=>'','month'=>'','item'=>'','out'=>''); - $build = array(); - $stop = count($resource); - - // loop and fetch all the results - for ($i = $start; $i < $stop; $i++) { - $date = getdate($resource[$i][$templatesDateSource]); - $year = $date["year"]; - $month = $date["mon"]; - $cal[$year][$month][] = $resource[$i]; - } - if ($yearSortDir == "DESC") { - krsort($cal); - } else { - ksort($cal); - } - foreach ($cal as $year=>$months) { - if ($monthSortDir == "ASC") { - ksort($months); - } else { - krsort($months); - } - $build[$year] = $months; - } - - foreach ($build as $year=>$months) { - $r_year = ''; - $r_month = ''; - $r_month_2 = ''; - $year_count = 0; - $items = array(); - - foreach ($months as $mon=>$month) { - $month_text = strftime("%B", mktime(10, 10, 10, $mon, 10, $year)); - $month_url = $ditto->buildURL("month=".$mon."&year=".$year."&day=false&start=0",$templatesDocumentID,$id); - $month_count = count($month); - $year_count += $month_count; - $r_month = $ditto->template->replace(array("year"=>$year,"month"=>$month_text,"url"=>$month_url,"count"=>$month_count),$templates['month']); - if ($showItems) { - foreach ($month as $item) { - $items[$year][$mon]['items'][] = $ditto->render($item, $templates['item'], false, $templatesDateSource, $dateFormat, array(),$phx); - } - $r_month_2 = $ditto->template->replace(array('wrapper' => implode('',$items[$year][$mon]['items'])),$templates['month_inner']); - $items[$year][$mon] = $ditto->template->replace(array('wrapper' => $r_month_2),$r_month); - } else { - $items[$year][$mon] = $r_month; - } - } - if ($groupByYears) { - $year_url = $ditto->buildURL("year=".$year."&month=false&day=false&start=0",$templatesDocumentID,$id); - $r_year = $ditto->template->replace(array("year"=>$year,"url"=>$year_url,"count"=>$year_count),$templates['year']); - $var = $ditto->template->replace(array('wrapper'=>implode('',$items[$year])),$templates['year_inner']); - $output .= $ditto->template->replace(array('wrapper'=>$var),$r_year); - } else { - $output .= implode('',$items[$year]); - } - } - - $output = $ditto->template->replace(array('wrapper'=>$output),$templates['tpl']); - $modx->setPlaceholder($id.'reset',$ditto->buildURL('year=false&month=false&day=false',$templatesDocumentID,$id)); - -return $output; - -} -} -return reflect($targetID, $showItems, $groupByYears, $resource, $dateSource, $dateFormat, $ditto, $templates,$id,$start,$yearSortDir,$monthSortDir); \ No newline at end of file +return require MODX_BASE_PATH.'assets/snippets/reflect/snippet.reflect.php'; diff --git a/install/assets/snippets/wayfinder.tpl b/install/assets/snippets/wayfinder.tpl index 6cef2dfa1f..bf4fa64b1d 100644 --- a/install/assets/snippets/wayfinder.tpl +++ b/install/assets/snippets/wayfinder.tpl @@ -1,11 +1,11 @@ //isBackend())? "../":""); $snipPath .= "assets/snippets/"; diff --git a/install/assets/snippets/weblogin.tpl b/install/assets/snippets/weblogin.tpl index f349e0bc0f..c901735930 100755 --- a/install/assets/snippets/weblogin.tpl +++ b/install/assets/snippets/weblogin.tpl @@ -5,99 +5,18 @@ * Allows webusers to login to protected pages in the website, supporting multiple user groups * * @category snippet - * @version 1.1.1 + * @version 1.2 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) * @internal @properties &loginhomeid=Login Home Id;string; &logouthomeid=Logout Home Id;string; &logintext=Login Button Text;string; &logouttext=Logout Button Text;string; &tpl=Template;string; * @internal @modx_category Login * @internal @installset base, sample + * @documentation [+site_url+]assets/snippets/weblogin/docs/weblogin.html + * @documentation http://www.opensourcecms.com/news/details.php?newsid=660 + * @reportissues https://github.com/modxcms/evolution + * @author Created By Raymond Irving April, 2005 + * @author Ryan Thrash http://thrash.me + * @author Jason Coward http://opengeek.com + * @author Shaun McCormick, garryn, Dmi3yy + * @lastupdate 19/04/2016 */ - -# Created By Raymond Irving 2004 -#:::::::::::::::::::::::::::::::::::::::: -# Params: -# -# &loginhomeid - (Optional) -# redirects the user to first authorized page in the list. -# If no id was specified then the login home page id or -# the current document id will be used -# -# &logouthomeid - (Optional) -# document id to load when user logs out -# -# &pwdreqid - (Optional) -# document id to load after the user has submited -# a request for a new password -# -# &pwdactid - (Optional) -# document id to load when the after the user has activated -# their new password -# -# &logintext - (Optional) -# Text to be displayed inside login button (for built-in form) -# -# &logouttext - (Optional) -# Text to be displayed inside logout link (for built-in form) -# -# &tpl - (Optional) -# Chunk name or document id to as a template -# -# Note: Templats design: -# section 1: login template -# section 2: logout template -# section 3: password reminder template -# -# See weblogin.tpl for more information -# -# Examples: -# -# [[WebLogin? &loginhomeid=`8` &logouthomeid=`1`]] -# -# [[WebLogin? &loginhomeid=`8,18,7,5` &tpl=`Login`]] - -# Set Snippet Paths -$snipPath = $modx->config['base_path'] . "assets/snippets/"; - -# check if inside manager -if ($m = $modx->isBackend()) { - return ''; # don't go any further when inside manager -} - -# deprecated params - only for backward compatibility -if(isset($loginid)) $loginhomeid=$loginid; -if(isset($logoutid)) $logouthomeid = $logoutid; -if(isset($template)) $tpl = $template; - -# Snippet customize settings -$liHomeId = isset($loginhomeid)? array_filter(array_map('intval', explode(',', $loginhomeid))):array($modx->config['login_home'],$modx->documentIdentifier); -$loHomeId = isset($logouthomeid)? $logouthomeid:$modx->documentIdentifier; -$pwdReqId = isset($pwdreqid)? $pwdreqid:0; -$pwdActId = isset($pwdactid)? $pwdactid:0; -$loginText = isset($logintext)? $logintext:'Login'; -$logoutText = isset($logouttext)? $logouttext:'Logout'; -$tpl = isset($tpl)? $tpl:""; - -# System settings -$webLoginMode = isset($_REQUEST['webloginmode'])? $_REQUEST['webloginmode']: ''; -$isLogOut = $webLoginMode=='lo' ? 1:0; -$isPWDActivate = $webLoginMode=='actp' ? 1:0; -$isPostBack = count($_POST) && (isset($_POST['cmdweblogin']) || isset($_POST['cmdweblogin_x'])); -$txtPwdRem = isset($_REQUEST['txtpwdrem'])? $_REQUEST['txtpwdrem']: 0; -$isPWDReminder = $isPostBack && $txtPwdRem=='1' ? 1:0; - -$site_id = isset($site_id)? $site_id: ''; -$cookieKey = substr(md5($site_id."Web-User"),0,15); - -# Start processing -include_once $snipPath."weblogin/weblogin.common.inc.php"; -include_once ($modx->config['site_manager_path'] . "includes/crypt.class.inc.php"); - -if ($isPWDActivate || $isPWDReminder || $isLogOut || $isPostBack) { - # include the logger class - include_once $modx->config['site_manager_path'] . "includes/log.class.inc.php"; - include_once $snipPath."weblogin/weblogin.processor.inc.php"; -} - -include_once $snipPath."weblogin/weblogin.inc.php"; - -# Return -return $output; +return require MODX_BASE_PATH.'assets/snippets/weblogin/snippet.weblogin.php'; diff --git a/install/assets/snippets/websignup.tpl b/install/assets/snippets/websignup.tpl index c14baa93ba..5fa7f04bc3 100755 --- a/install/assets/snippets/websignup.tpl +++ b/install/assets/snippets/websignup.tpl @@ -5,42 +5,21 @@ * Basic Web User account creation/signup system * * @category snippet - * @version 1.1.1 + * @version 1.1.2 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) * @internal @properties &tpl=Template;string; * @internal @modx_category Login * @internal @installset base, sample + * @documentation [+site_url+]assets/snippets/weblogin/docs/websignup.html + * @documentation http://www.opensourcecms.com/news/details.php?newsid=660 + * @reportissues https://github.com/modxcms/evolution + * @author Created By Raymond Irving April, 2005 + * @author Ryan Thrash http://thrash.me + * @author Jason Coward http://opengeek.com + * @author Shaun McCormick, garryn, Dmi3yy + * @lastupdate 09/02/2016 */ - -# Created By Raymond Irving April, 2005 -#:::::::::::::::::::::::::::::::::::::::: -# Usage: -# Allows a web user to signup for a new web account from the website -# This snippet provides a basic set of form fields for the signup form -# You can customize this snippet to create your own signup form -# -# Params: -# -# &tpl - (Optional) Chunk name or document id to use as a template -# If custom template AND captcha on AND using WebSignup and -# WebLogin on the same page make sure you have a field named -# cmdwebsignup. In the default template it is the submit button -# One can use a hidden field. -# &groups - Web users groups to be assigned to users -# &useCaptcha - (Optional) Determine to use (1) or not to use (0) captcha -# on signup form - if not defined, will default to system -# setting. GD is required for this feature. If GD is not -# available, useCaptcha will automatically be set to false; -# -# Note: Templats design: -# section 1: signup template -# section 2: notification template -# -# Examples: -# -# [[WebSignup? &tpl=`SignupForm` &groups=`NewsReaders,WebUsers`]] - # Set Snippet Paths $snipPath = $modx->config['base_path'] . "assets/snippets/"; diff --git a/install/assets/templates/MODX_startup_Bootstrap.tpl b/install/assets/templates/MODX_startup_Bootstrap.tpl new file mode 100644 index 0000000000..4406442e77 --- /dev/null +++ b/install/assets/templates/MODX_startup_Bootstrap.tpl @@ -0,0 +1,277 @@ +/** + * MODX startup - Bootstrap + * + * Sample template in Bootstrap + * + * @category template + * @version 1.0 + * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) + * @internal @lock_template 0 + * @internal @modx_category Demo Content + * @internal @installset sample + * @internal @save_sql_id_as BOOTSTRAP_SQL_ID + */ + + + + + + + + [*pagetitle*] / [(site_name)] + <@IF:[*description:isntEmpty*]><@ENDIF> + + + + + + + + + + + +
                      +
                      +
                      +
                      + + + +
                      + + +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      + +
                      +
                      +
                      + [[Breadcrumbs]] +
                      +
                      +
                      + +
                      + +
                      +

                      [*#longtitle*]

                      + [*#content*] +
                      + + +
                      +
                      + +
                      + +
                      +
                      +
                      +
                      + MODX Starter-Template ©2006-[[$_SERVER['REQUEST_TIME']:dateFormat=`Y` ]] +
                      +
                      + Built with Bootstrap framework. +
                      +
                      +
                      +
                      + +
                      + Memory: [^m^], MySQL: [^qt^], [^q^] request(s), PHP: [^p^], total: [^t^], document retrieved from [^s^]. +
                      + + + + + + + + \ No newline at end of file diff --git a/install/assets/templates/modx_host.tpl b/install/assets/templates/modx_host.tpl deleted file mode 100644 index a5cf740c35..0000000000 --- a/install/assets/templates/modx_host.tpl +++ /dev/null @@ -1,94 +0,0 @@ -/** - * MODxHost - * - * Legacy MODX Host template including dropdown menu - * - * @category template - * @version 1.0 - * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) - * @internal @lock_template 0 - * @internal @modx_category Demo Content - * @internal @installset sample - */ - - - - - [(site_name)] | [*pagetitle*] - - - - - - - - - - - - -
                      -
                      -
                      -
                      - - -
                      -
                      - [[Breadcrumbs?]] -
                      -
                      -

                      [*longtitle*]

                      - [*#content*]
                      - -
                      - -
                      - -
                      - -
                      - -
                      - - -
                      - - -
                      - -
                      - - - \ No newline at end of file diff --git a/install/assets/tvs/blogContent.tpl b/install/assets/tvs/blogContent.tpl index 77af201088..b616fba66a 100644 --- a/install/assets/tvs/blogContent.tpl +++ b/install/assets/tvs/blogContent.tpl @@ -12,7 +12,7 @@ * @internal @output_widget RichText * @internal @output_widget_params &w=383px&h=450px&edt=TinyMCE * @internal @lock_tv 0 - * @internal @template_assignments MODxHost + * @internal @template_assignments MODX startup - Bootstrap * @internal @modx_category Demo Content * @internal @installset sample */ \ No newline at end of file diff --git a/install/assets/tvs/documentTags.tpl b/install/assets/tvs/documentTags.tpl index fdc3bccb43..23471314a5 100644 --- a/install/assets/tvs/documentTags.tpl +++ b/install/assets/tvs/documentTags.tpl @@ -12,7 +12,7 @@ * @internal @output_widget * @internal @output_widget_params * @internal @lock_tv 0 - * @internal @template_assignments MODxHost + * @internal @template_assignments MODX startup - Bootstrap * @internal @modx_category Demo Content * @internal @installset sample */ \ No newline at end of file diff --git a/install/assets/tvs/loginName.tpl b/install/assets/tvs/loginName.tpl index cf34497e62..00cf7e6b00 100644 --- a/install/assets/tvs/loginName.tpl +++ b/install/assets/tvs/loginName.tpl @@ -12,7 +12,7 @@ * @internal @output_widget * @internal @output_widget_params * @internal @lock_tv 0 - * @internal @template_assignments MODxHost + * @internal @template_assignments MODX startup - Bootstrap * @internal @modx_category Demo Content * @internal @installset sample */ \ No newline at end of file diff --git a/install/changelog.txt b/install/changelog.txt deleted file mode 100755 index ceb809b720..0000000000 --- a/install/changelog.txt +++ /dev/null @@ -1,1110 +0,0 @@ -This file shows the changes in recent releases of MODX. The most current release is usually the -development release, and is only shown to give an idea of what's currently in the pipeline. - -MODX Evolution 1.0.14 (Jun 05, 2014) -=================================== --------------------------------------------- -Bugfixes: --------------------------------------------- -* [GitHub:#f233bf0] Error in resource lib -* [GitHub:#8958b7c] Empty template error -* [GitHub:#99d6824] Web user view ico -* [GitHub:#c5cfa3e] weblogin.processor.inc.php missing fields -* [GitHub:#9f404dd] If (not_empty) -* [GitHub:#40a7d49] Export not cacheable resources -* [GitHub:#6fcde64] Cool explode() bug -* [GitHub:#a02dcce] WebLogin -* [GitHub:#8d7f933] weblogin.processor.inc.php -* [GitHub:#5738f4c] htmlspecialchars_decode should be executed for the reports if sent as html -* [GitHub:#fa0b0ad] weblogin.processor.inc.php -* [GitHub:#8829799] Warning issue: (superfluous) default object created from value -* [GitHub:#9adc29a] Unset parameters in $modx->messageQuit call -* [GitHub:#40229ea] phpthumb, bkmanager -* [GitHub:#f755592] logEvent -* [GitHub:#b7b9ed1] Typo in PHx class for ditto -* [GitHub:#8f5f0bc] Typo in document.class.inc.php -* [GitHub:#448ddb7] Typo in delete_role.processor.php -* [GitHub:#fd4ce0e] Path for example in document.class.inc.php -* [GitHub:#e88c78d] Typo in document.parser.class.inc.php -* [GitHub:#852093b] Possible fix for valid cache file file_exist check but not found file -* [GitHub:#e6ca725] Missing error message in evalSnippet/evalPlugin error -* [GitHub:#488c893] Wrong language string used when renaming existing snippet with duplicate name -* [GitHub:#9a7b2bb] Plugin save logic is updated so that it allows duplicate names for disabled plugins. Duplicate names among activated plugins are still prevented. -* [GitHub:#7ca2938] Access Permissions error -* [GitHub:#fc29642] Send mail at $modx->logEvent() -* [GitHub:#751d22e] Lost installer image file -* [GitHub:#5b87dd6] Wayfinder - Small fix -* [GitHub:#cc65308] Wayfinder - Small fixes -* [GitHub:#41ad3c4] Wayfinder - Fix -* [GitHub:#e3da37d] Wayfinder - Fix undefined variable -* [GitHub:#80486bb] Wayfinder - Fix htmlentities -* [GitHub:#52bae77] Wayfinder - Fix fetch template -* [GitHub:#3cb3d0b] Wayfinder - Fix Read config -* [GitHub:#b239aa8] Wayfinder - Fix -* [GitHub:#f9d09ff] Fix -* [GitHub:#7e668ac] Fix - $modx_textdir -* [GitHub:#0bb19bf] Wayfinder - Fix empty value of alias -* [GitHub:#243ec89] Charset and Collation Charset not showing -* [GitHub:#c4f18f6] 'Array is currently editing these settings' -* [GitHub:#3608861] tinyMCE style for use in custom manager theme -* [GitHub:#78bc5f3] $modx->getSettings -* [GitHub:#dd5d8f3] Fix - Don't parse EVAL binding at the TV form -* [GitHub:#b3ab833] Update value+1 in login.processor -* [GitHub:#c15a609] fix resourse.php -* [GitHub:#3d9186f] Ditto - &noResults parameter doesn't work -* [GitHub:#eea2a6b] Wayfinder sets "last" class to all items -* [GitHub:#39a2e5c] $modx->sendmail() cc and bcc -* [GitHub:#1bcc38e] $modx->sendmail() $param['from'] -* [GitHub:#cb69e7d] TinyMCE - toolbar style -* [GitHub:#8d55236] Requirements not checked php version -* [GitHub:#b30c2e2] Tools>Export - language entry - --------------------------------------------- -Refactor: --------------------------------------------- -* [GitHub:#006b40c] Refactor resource lib -* [GitHub:#0448020] eForm: Remove not needed function parameter -* [GitHub:#93ba7f9] Removing superfluous variables -* [GitHub:#c9fd858] Removing unused keys -* [GitHub:#9d8f797] Code issues: Removed unused code, fixed missing semicolons, corrected DocBlock declaration -* [GitHub:#7c79471] Code issues: Removed semicolon -* [GitHub:#49c0ed6] Delete unused code -* [GitHub:#c6d5136] Change escape logic in logEvent - substr non-escaped source - send mail with non-escaped source -* [GitHub:#5ce9296] Use db->escape() instead addslashes() -* [GitHub:#781a578]
                        only if count roles > 0 -* [GitHub:#428b523] Disable direct call of filesource/plugin.filesource.php -* [GitHub:#7fdf3c2] Fixes in QM+ - get "Individual user language setting" from session (mgrUsrConfigSet) - use MODX_MANAGER_PATH instead MGR_DIR for include() - delete unused modx->getDocument() call -* [GitHub:#2ff654f] Use MODX_MANAGER_PATH for include -* [GitHub:#6c4f6b4] Add more debug info about query -* [GitHub:#3fac66b] Use clearCache('full') -* [GitHub:#4aca668] Show snippet params in debug info only if it's present -* [GitHub:#e74aee6] Stop the unnecessary call recursive functions -* [GitHub:#e5fb3aa] Use new 'all' param -* [GitHub:#98acdd6] MariaDB. POSIX collating elements are not supported -* [GitHub:#7300f38] Update TinyMCE default width to 100% -* [GitHub:#21f3463] Sort cached parameters -* [GitHub:#3bfdfd7] Send user processor mails as text. -* [GitHub:#ccbe3b9] Use modx_charset for non japanese languages als mail charset -* [GitHub:#651e846] Send system mails as text More detailed error mail -* [GitHub:#65b9087] New design of installer like Revo -* [GitHub:#89e5c14] Wayfinder - Use __construct() -* [GitHub:#74fea39] Keep original publish state, publishedon, publishedby on save -* [GitHub:#0da61aa] Updated Japanese Language - thanks to Mika Kobayashi -* [GitHub:#3e7cd8c] $virtualDir= $this->config['virtual_dir']; -* [GitHub:#07960d2] Use published='all' for one query -* [GitHub:#9b0c95d] Info about character_set_database and collation_database -* [GitHub:#a23ec37] Now we can specify document ID if needed -* [GitHub:#7dafcf8] DB request only made if $hereId != $modx->documentObject['id'] -* [GitHub:#64d730f] sample-robots.txt added Disallow: /assets/packages/ -* [GitHub:#ed0d697] Delete unnecessary bold tags - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [GitHub:#cd61342] Updated polish language -* [GitHub:#cb6e8be] Updated Finnish Language - thanks to Kari Söderholm -* [GitHub:#c938674] New feature - @@EVAL at the TV form -* [GitHub:#79e1f0f] Added polish eForm language - thanks to Piotr Matysiak -* [GitHub:#f9eeb72] Updated Finnish language -* [GitHub:#9c14e64] Update - TinyMCE 3.5.11 -* [GitHub:#3a920f1] MODX DBAPI->disconnect() is incomplete - --------------------------------------------- -Security: --------------------------------------------- -* [GitHub:#b875144] SQL injection vulnerability in manager -* [GitHub:#f466faf] Fix possible SQL injection vulnerability in manager -* [GitHub:#45f47c6] Fix possible XSS vulnerability in manager -* [GitHub:#0919124] Harden index-ajax.php -* [GitHub:#13eac12] Update AjaxSearch to 1.10.1 - Security/Bug fixes - -MODX Evolution 1.0.13 (Feb 23, 2014) -=================================== --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#10073] Define in php < 5.3 -* [#10076] Undefined variable in manager panel -* [#10173] mm_rules hide tv needs to hide split too -* [#10177] Add - Ditto language entry -* [#10192] 500 error with save setting if install in subfolder -* [#10195] Lost tinyMCE theme full -* [#10196] [+prefix+] -> $modx->getFullTableName($tableName); -* [#10198] Codemirror template -* [#10200] Translation on transifex not possible -* [#10203] @Binding does not work the same -* [#10212] Version 1.0.12 doesn't seem to work with Reflect -* [#10225] Increment method Resource ID - Incomplete? -* [#10235] Webuser can't change Email -* [#10236] [phpthumb] source filename bug -* [#10239] mm_rules.inc.php in russian -* [#10240] Improve onchange trigger for file/image input -* [#10266] Error if start_page have get -* [#10273] TinyMCE compatibility with IE11 -* [#10283] modx_sanitize_gpc problem -* [#10284] modx_sanitize_gpc breaks eForm -* [#10293] eForm: when using ccsender, 'to' address is visible -* [#10308] easy2gallery menu not visible -* [#10309] Don't save SMTP password if field was emptied manually -* [#10336] eForm sendAsText and htmlspecialchars -* [#10339] eForm: retain classes for checkboxes (and other form fields that have a name attribute with an array) -* [#10348] Ditto Debug issues -* [#10356] Closing chunk tag confuses the parser -* [#10357] Ditto does not work in @EVAL -* [#10358] FCKEditor && $_SERVER['HTTP_HOST'] with port -* [gitHub] AjaxSearch: Adding charset header in Ajax Mode -* [gitHub] $key could be empty if the placeholder tag is not closed or if it is directly closed -* [gitHub] Fix for not set $_SESSION key -* [gitHub] Ditto: Fix outerTpl -* [gitHub] Fix - Save button in file manager -* [gitHub] Fix missing calendar icon -* [gitHub] Bugfix for closing opt group tag -* [gitHub] Restored textareamini -* [gitHub] Don't save SMTP password if field was emptied manually -* [gitHub] Codemirror: matchBrekers fix and turn on by default -* [gitHub] Full request url in messageQuit -* [gitHub] Fix SQL error when calling optimize method -* [gitHub] Fix backup format file Y-m-d_H-i-s - now new always top -* [gitHub] Clean filenames with KCFinder - use of TransAlias class and plugin settings -* [gitHub] CodeMirror fails to refresh in QuickManager+ - --------------------------------------------- -Refactor: --------------------------------------------- -* [#10278] Update ManagerManager built-in fields for 1.0.12 -* [#10178] Set permission to config.inc.php when install -* [#10208] Improvement several text strings -* [#10271] Modify save button position in file manager -* [#10300] Allow array parameter in phpthumb snippet -* [#10349] FirstChildRedirect options -* [#3137] save_content.processor.php site_start save condition tune. (not old-date set) -* [#3159] $_lang['install'] button is changed to $_lang['btnnext_value'] button. -* [#3154] Datebase name default value should be empty. -* [gitHub] The item of "Update" is concealed at a new installation. -* [gitHub] Manager Users - List item tuning. Many user env useful. -* [gitHub] View manager logs - grid view tune -* [gitHub] Reformatted indents and changed double quotes to single quotes in merge functions -* [gitHub] Reworked eval snippets/plugin functions and MODX error level detection -* [gitHub] eForm: Retain classes for checkboxes (and other form fields that have a name attribute with an array) -* [gitHub] eForm: validation messages with span (for better styling with css) -* [gitHub] Trigger change event for file/image inputs -* [gitHub] Add css class to displayparams table, removed inline style -* [gitHub] Use same tags and styles as other fields in manager. -* [gitHub] Netbeans doesn't like 'and' as classname -* [gitHub] Updated language files -* [gitHub] Change nicesize -* [gitHub] Change snippetsCode out -* [gitHub] Change input size in access permissions -* [gitHub] Correct preview link -* [gitHub] Restore view_eventlog permission on site_shedule -* [gitHub] Make one point to clearCache and add params -* [gitHub] Rename MODx to MODX -* [gitHub] Language files for core and core snippets are now handled by Transifex -* [gitHub] Changed ConvertDate to direct call $modx->toTimeStamp -* [gitHub] Change "event->alert"+"include mutate_*" to "manager->saveFormValues"+ webAlertAndMsg -* [gitHub] Change webAlert() to webAlertAndQuit() and mode webAlert() to deprecated.functions.inc.php -* [gitHub] Use while in db->makeArray() -* [gitHub] Use db->makeArray(), db->getColumn() instead of loops -* [gitHub] Change db loops style from for to while -* [gitHub] Change nicesize() to $modx->nicesize() -* [gitHub] update $modx->getDocuments -* [gitHub] update $modx->getTemplateVars -* [gitHub] update $modx->getTemplateVarOutput -* [gitHub] update $modx->getDocumentChildren -* [gitHub] update $modx->getDocumentChildrenTVarOutput -* [gitHub] update $modx->getDocumentChildren - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [gitHub] Wayfinder: ability to use all document fields like [+longtitle+] or [+pagetitle+] -* [gitHub] Wayfinder: ability to @INHERIT custom TVs -* [gitHub] WebLogin: @FILE ability for &tpl -* [gitHub] Manager with role = 1 can see all documents in frontend and backend -* [gitHub] Setup module depedencies -* [gitHub] in manager now can go to selected tab from url with &tab=# -* [gitHub] CodeMirror: new shorts for emmet -* [gitHub] the method “$modx->parseText” which parses a text has been added. -* [gitHub] Improve file/image set url for inputs that are not direct children of the form (i.e. in a colorbox) -* [gitHub] Add backtrace info to dumpSql -* [gitHub] Add dumpPlugins & pluginsCode out -* [gitHub] Add hide plugin in sort -* [gitHub] Patch findTemplateVars for compatibility with HPx -* [gitHub] Add ID in QM+ toolbar. -* [gitHub] add ID in title for edit document -* [gitHub] update ManagerManager to 0.6.1. -* [gitHub] update ajaxSearch to 1.10.0. -* [gitHub] update Wayfinder to 2.0.2. -* [gitHub] update Eform to 1.4.5. -* [gitHub] Breadcrumbs 1.0.4 (option to hide pages with certain templates from crumbs list) -* [gitHub] phpthumb 1.2 (not include phpthumb class if have resized images) -* [gitHub] KCFinder - Remove superfluous update check from kcfinder -* [gitHub] Automatic create .htaccess in cache folder if it is a subfolder of assets/cache -* [gitHub] FirstChildRedirect 2.0 - --------------------------------------------- -Security: --------------------------------------------- -* [gitHub] Prevent XSS exploits misusing the site_url system setting - - - -MODX Evolution 1.0.12 (Sep 12, 2013) -=================================== --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#10190] fix lang (spanish, russian, nederlands) - - -MODX Evolution 1.0.11 (Sep 11, 2013) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#9933] insideManager - security fix -* [#10180] ForgotManagerPassword - Improvement reset url - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#9823] IE 10 -> FCK editor is blank -* [#9848] System Configuration screen layout issues with IE10 -* [#9865] Fix ManagerManager field rules -* [#9870] critical--> Login won't let mgr, web users login with special characters in password -* [#9875] Wayfinder: parametrize entity encoding title, linktext, introtext, description -* [#9899] font-family Arial for manager -* [#9910] superfluous " before 'new module' -* [#9920] Quickmanager+ 1.5.5 Frontend-editing -* [#9921] Quickmanager+ 1.5.5 inline template variable buttons not saving (furl on) -* [#9932] load TVs only if template not _blank -* [#9936] /assets/js/ being used? -* [#9938] eForm: email field and ccsender/automessage -* [#9959] SEO Strict URLs 301 redirect -* [#9977] datapicker not work in IE9 -* [#9989] Cannot change email address for an exisiting web user -* [#10008] eForm: allow tag attributes with '-' inside -* [#10010] Fix - Define MGR_DIR -* [#10028] Fix - RewriteRule -* [#10059] error when install sampleData -* [#10060] Template Variable Date Picker CSS Z-Index problem -* [#10065] TinyMCE theme full not working -* [#10066] check in install backup and .thumbs writable? -* [#10068] tinyMCE no add images from KCfinder -* [#10090] TinyMCE: Parameters aren't being passed through properly -* [#10091] ManagerManager Javascript failing as jQuery is not installed -* [#10105] Need encode plugin parameters -* [#10109] Fix Tab pane ID -* [#10115] Fix table structure at the new install -* [#10117] Set "0" default template ID -* [#10119] Fix - Table structure upgrade sql -* [#10123] update managermanager to 0.3.11 -* [#10142] database name with "-" -* [#10153] Can not update block user status when login -* [#10162] Multi line @EVAL statement -* [#10171] Ditto - TV name issue -* [#10176] Ditto rss format - Missing link element -* [#10181] FMP - Can not login when CAPTCHA mode - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#3870] Consistent email API needed -* [#4305] Webuser/Manageruser records don't have "City" -* [#9714] return object or array after RunSnippet -* [#9763] Auto rotation logs -* [#9886] add phpthumb snippet -* [#9887] add * @internal @disabled 1 to install plugins -* [#9888] add CodeMirror plugin -* [#10011] New function - $modx->getIdFromAlias() -* [#10024] new event in core (onTreePrerender, onTreeRender , and more) -* [#10027] Auto generate .htaccess -* [#10036] Add new events into manager menu -* [#10045] eForm - Replace mail function to new mail API -* [#10047] Add SMTP for send mail -* [#10049] add new theme (MODxRE) -* [#10051] add CodeMirror for file-manager -* [#10054] New DBAPI function - $modx->db->optimize() -* [#10124] Intsrement method Resource ID -* [#10125] Add new function - $modx->sendmail() -* [#10137] Add new event OnLoadDocumentObject -* [#10138] Generate cache for each $_GET parameters -* [#10160] email notifies of system error -* [#10186] alias_visible - ignore parent in url(optional) - --------------------------------------------- -Refactor: --------------------------------------------- -* [#3432] Use menutitle instead of Pagetitle in doc_tree -* [#3757] Update phpmailer -* [#3833] Default template in root when Sibling is checked -* [#4440] change MODxCarbon/style.css to make manager look better in chrome -* [#4449] Improve search functionality -* [#5972] Installer should check whether $_SESSION data is being correctly saved -* [#9706] Convert language files encoding -* [#9707] Translate error messages -* [#9720] Deprecated core functions -* [#9727] invokeEvent in save_password.processor.php -* [#9795] Remove hard coded style -* [#9797] Fetch tags without using the regular expression -* [#9816] Add gender option -* [#9845] [SOLVED] Snippet Parameters cannot use Chunks? -* [#9849] Replace to DBAPI functions -* [#9858] Extend 'Important System Files have been modified' message -* [#9860] Delete Etomite database functions -* [#9861] Should be core files line feed code is "lf" -* [#9863] Convert to utf8 all core files -* [#9873] Abstract parser statistics to own method -* [#9884] /manager/ to MODX_MANAGER_PATH -* [#9891] Delete phpSniff -* [#9911] Update AjaxSearch to 1.9.3b -* [#9922] german.inc.php (and other lang files) -* [#9931] getPlaceholder return null if not exist -* [#9934] Display caption for TV on TVs tabs -* [#9939] eForm: multiple event functions separated by comma -* [#9940] refactor exec mergeSettingsContent -* [#9969] appeal to the module only through GET -* [#10025] Cache documents with $_GET (optional) -* [#10026] SEO Strict URLs (optional) -* [#10037] Fix - Default value ($modx->config['use_alias_path']) -* [#10038] added sorting when viewing children documents -* [#10039] permit duplicate aliases in different folders -* [#10044] IE layout issue in manager tree -* [#10046] eForm - Delete set charset -* [#10048] Description of phpthumb snippet english translation -* [#10050] Replace MCPUK to KCFinder -* [#10055] Use placeholder in language files -* [#10058] Update core language files -* [#10062] Change MODx -> MODX -* [#10071] fix snippets and plugins for smaller cache file -* [#10097] htmlspecialchars in >PHP 5.4 no longer defaults to ISO-8859-1 -* [#10100] Add PHP compatible functions -* [#10103] Add label tag on checkbox fields -* [#10104] Add bold style on selected checkbox fields -* [#10106] Add tab pane to template var edit -* [#10107] Set default template at new template var -* [#10108] TinyMCE - Separation toolbar settings from functions.php -* [#10110] Add actionButtons class to elements list -* [#10111] Add primary button class -* [#10112] Add properties tab into elements edit -* [#10113] Set custom widget default value -* [#10114] Ajust role settings screen -* [#10116] Add primary key to tables -* [#10118] Add index key to site_content table -* [#10120] 01-01-1970 01:00:00 when "0" -* [#10126] Rewrite Export Static HTML function -* [#10127] Rewrite Import HTML site function -* [#10131] Update jQuery version -* [#10132] QM - Update jQuery ColorBox plugin -* [#10139] Show templateWarning message when only documentDirty -* [#10144] add OnManagerNodeRender, OnManagerNodePrerender -* [#10148] Message check time interval in manager is very short -* [#10149] Use placeholder filemanager_path and rb_base_dir in settings value -* [#10156] Improvement $modx->getDocuments() parameter value -* [#10161] Remember last tab in access permissions pane - - - -MODX Evolution 1.0.10 (Apr 18, 2013) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#9704] LFI in mutate_settings.ajax.php -* [#9802] Security feature - Check falsification of system files - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#3449] Datepicker bug in Opera -* [#3493] unnecessary slash in MAGPIE_CACHE_DIR -* [#3533] AJAXSEARCH-82 : can't define configuration file name with "@FILE:" prefix -* [#3698] AJAXSEARCH-85 : Wrong URL construction when using an array of values (checkboxes) -* [#3783] Superfluous code in getTemplateVars -* [#3847] Wayfinder does not apply lastClass if there is only one item -* [#4088] web user photo from other site not correct -* [#7033] incorrect unzip in file manager -* [#7541] Upgrade of Existing Site - Error due to single quote in plugin properties -* [#8909] Publication schedule don't use server_offset_time setting -* [#9670] Can't log into upgrade install -* [#9671] TinyMCE - Rewrite Japanese string -* [#9678] eForm documentation -* [#9679] Warning during Installation -* [#9687] Dashboard logo background is not transparent -* [#9688] Can not make new manager user -* [#9694] Undefined property: DocumentParser::$mstart -* [#9695] bug with add images from FCKeditor -* [#9696] ImageEditor fix for php5.4 -* [#9697] seturl_js_tinymce incorrect path -* [#9702] no string in language pack -* [#9703] fake settings_version -* [#9705] Snoopy.class.inc - File encode issue -* [#9708] Improvement event log message -* [#9709] Undefined variable error -* [#9711] TinyMCE - two editor's plugins missing -* [#9729] new tinylogo for qm plugin -* [#9730] PHP error causes Tiny MCE Link List v1.0.3 to fail [Fix included] -* [#9732] Template Var label CSS display:block [Includes FIX] -* [#9733] mutate_web_user.dynamic.php fails to sanitize user entry -* [#9745] cant create and edit web_users -* [#9755] @INHERIT being output in page code -* [#9760] Style issue -* [#9762] MODX Installer foiled by single quotes in TinyMCE Custom Parameters? -* [#9779] Trouble with site after upgrade JSON no longer working -* [#9791] File browser - Undefined index error -* [#9803] Error call datepicker in IE9 on Date Publication -* [#9812] Issue of manager theme setting in user -* [#9813] Error during Advanced Upgrade -* [#9817] File browser file name issue -* [#9822] Constant MGR_DIR already defined in config.inc.php -* [#9823] IE 10 -> FCK editor is blank -* [#9829] hardcoded style - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#3151] @Bindings commands enable/disable -* [#3730] Entity encode Wayfinder placeholders -* [#3746] don't show New Module button when user's role lacks that permission -* [#9582] Add new config "Detection level of the PHP error" -* [#9613] MODX Carbon Login page -* [#9665] add more content type (json) -* [#9673] Improvement some translations -* [#9682] modx::getVersionData() -* [#9683] trusted folder/file in index-ajax.php -* [#9684] Remove entity encoded MODX tags in stripTags -* [#9692] Escape strings in array data -* [#9693] When use mysql_real_escape_string, execute mysql_set_charset beforehand -* [#9764] german translation (german.inc.php) string: udperms_message -* [#9766] Icon size hardcoded in welcome.static.php -* [#9767] Files in assets/templates/manager should get moved into the theme folder -* [#9776] Adding seo strict urls functionality to parser -* [#9778] Added ability to use custom templates to login and manager lockout pages -* [#9785] Add new placeholder to manager theme -* [#9786] Change MODx -> MODX -* [#9787] Add new config for manager layout -* [#9790] Rename - title of mcpuk file browser -* [#9810] Change new logo -* [#9818] TransAlias plugin - Add property values -* [#9819] TransAlias plugin - Add translation table -* [#9831] Change MODx -> MODX in installer and sample contents -* [#9832] Change forum url -* [#9837] Indicate inheritanced template variable - - -MODX Evolution 1.0.9 (Mar 19, 2013) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#3796] MODX security issues -* [#8338] LFI in browser.php -* [#8339] LFI in install -* [#9621] SQL-injection in logEvent -* [#471] Show custom error page if mysql is down -* [#9624] Add .htaccess into assets/cache/ - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#2893] document parser crop value of param when contain ?&= -* [#3495] Mistake in phpSniff.core.php -* [#3582] [ManagerManager] showimagetvs widget TV dirty check issue -* [#3676] Ditto: german language file is corrupt -* [#3689] Ditto relative to absolute url bug (with possible fix) -* [#3724] Magic GPC Quotes issue in PHP 5.3.* -* [#3835] Multiple call wayfinder with config, not load config in second call -* [#4484] bug in wait.static.php -* [#5403] Maximum upload size not honoured -* [#5807] manager.lockout not styled properly -* [#6119] sendMailMessage in save_web_user.processor.php -* [#7204] eForm in eFormParseTemplate $formats and $labels are declared as string but they are used as array -* [#7459] Deprecated function 'split' used in includes/datefunctions.inc.php -* [#9398] eForm & php 5.3 -* [#9547] ManagerManager Tv-transfer options with multiple choice in a new tab -* [#9548] cant modify the customTV(multiTv or other without type input) with ManagerManager -* [#9549] page not index in yandex if use FirstChildRedirect -* [#9550] Breadcrumbs not have crumbSeparator -* [#9563] onManagerMainFrameHeaderHTMLBlock event issue -* [#9580] Bug in processors/delete_content.processor.php on line 40 -* [#9586] Quick Manager and system setting Automatic Template Assignment -* [#9620] Set Manager language in Create/Edit User - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#9570] Detailed log message -* [#9554] add Snippet IF -* [#9566] Improvement to full table name call -* [#9567] Add "limit" option to $modx->db->delete() -* [#9568] @Bindings enable/disable option in System configuration -* [#9569] Password hash algorithm -* [#9582] Add new config "Detection level of the PHP error" -* [#9615] Add new function for documentParser "$modx->nicesize()" -* [#4051] german transliteration for transalias plugin -* [#5971] Check whether manager template exists during manager login -* [#9545] PHP 5.4 compatibility -* [#9556] add memomy view to statistics for the modx parser [^m^] -* [#9557] DocumentParser - remove all unused multiline placeholders -* [#9564] OnWUsrFormRender event adjustment -* [#9583] Refactoring System configuration in manager screen -* [#9616] Update TinyMCE (3.3.9.2 -> 3.5.8) -* [#9617] Refactoring backup manage -* [#9622] Refactor "Manage Files" -* [#9623] Refactor MODxCarbon theme - - - -MODX Evolution 1.0.8 (Jan 08, 2013) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#9391] Prevent hash array exploit in Forgot Manager Login plugin - -MODX Evolution 1.0.7 (Nov 26, 2012) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* Prevent users from unblocking themselves in Forgot Manager Login plugin -* [#9175] Escape $hash in Forgot Manager Login plugin - - -MODX Evolution 1.0.6 (Mar 08, 2012) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#7175] Fix sanitization to strip tags recursively in parser and in eForm - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#3799] Fix table creation on MySQL databases that no longer support TYPE keyword -* [#3699] Fix fatal error using default value on a Template Variable with @INHERIT binding - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#3796] Fix manager_language not being sanitized -* [JA879] improvement to pageCache read logic -* Update minimum PHP version for manager to 4.3.3 - - -MODX Evolution 1.0.5 (Jan 19, 2011) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#MODX-1035] fix XSS vulnerability in installer -* [#2787] fix XSS vuln. in image editor -* [#3352] work around critical PHP bug 53632 -* [#3437] fix vulnerability in AjaxSearch allowing attacker to view arbitrary files (JVN#95385972) -* [#3429] fix SQL injection vulnerability in AjaxSearch allowing attacker to execute arbitrary PHP code (JVN#54092716) - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#MODX-2245] 3 events not firing: OnWebChangePassword, OnManagerSaveUser, OnManagerChangePassword -* [#MODX-1331] Resources in tree unclickable if pagetitle contains line break -* [#100] fix TV with Input Type 'Date' and Widget 'Unixtime' returns wrong value -* [#435] improve installer handling of Sample Site option -* [#359] published date always set due to ManagerManager demo rules -* [#488] Fix bad check for mysql strict mode -* [#595] Fix bad path on Resource Editor rich text fields when TMCE in "root relative" mode -* [#1252] Fix @SELECT multi-select listbox TV losing its value when switching Content field "Editor to use" -* [#321] stop parser from running case-mismatched snippet calls -* [#343] Fix Hiding "Validate Referer" warning messes up the setting itself -* [#432] Fix TV date-layer display problem with multiple datefields in FF 3.6.3 -* [#445] Fix error displaying filenames with non-Latin charsets -* [#577] Fix Spanish UTF8 language file -* [#760] Fix Document tree not loading in children -* [#609] Fix web_groups and member_groups tables can have duplicate entries -* [#364] Fix W3C validation problem with TV image output widget -* [#2957] Allow multibyte strings in QuickManager+ TV buttons -* [#2711] Re-fix path bug in Image Editor -* [#3060] Fix message count on Manager welcome page -* [#1070] Fixed bug in DocManager where it would not create new TV values, only update existing ones -* [#3163] Fix RSS feed encode issue -* [#1871] Fix for file manager when aggressive caching/pre-fetching is used at the ISP level (e.g. satellite internet) - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#MODX-1734] Add context parameter to the getLoginUserName() API function -* [#4] getDocumentObject allows full alias path to be specified -* [#443] TinyMCE updated to 3.3.9.2 -* [#23] Quick Manager+ updated to 1.5.4 -* [#421] ManagerManager updated to 0.3.9 -* [#421] AjaxSearch updated to 1.9.2 -* [#359][#421] Default Chunk for ManagerManager rules now "mm_rules"; Since demo rules are "mm_demo_rules", MM is now disabled on install -* [#308] Return to active tab for Elements, regardless of "Remember tabs" system setting -* [#331] Updated Czech language file -* [#881] Improvements to Template inheritance (moved from plugin into core, added system setting to control behavior) -* [#592] Adjustment of manager fonts -* [#476] Improvement to New user's default role -* [#378] Check for and disallow reserved words in Template Variable names -* [#1360] Better handling of Template Switcher plugin -* [#833] Manager and Web User comments field no longer limited to 255 characters -* [#1132] New system setting to strip characters from files uploaded in Manage Files (using same logic configured for aliases) -* [#190] Resolve hostnames config option deprecated -* [#1065] Let manager themes have their own welcome.html page -* [#216] Optimization of core methods (getParentIds & getChildIds) -* [#819] Improvement in config.inc.php file (new installs only) so proper MODX_SITE_URL constant is set in API Mode -* [#2867] Improvements to installer with respect to handling of Demo Site option and related elements -* [#2867] Laid foundation for "installsets" or preset groups of installer elements -* [#2963] New icons in manager resource tree (to reflect site start, error page, site unavailable and unauthorized system settings) -* [#594] Tweaked Quick Manager window open style -* [#487] Links updated in demo site content -* [#3075] Apply monospace font to manager textarea fields -* [#999] Enhance ordering logic when displaying lists of TVs -* [#2953] Fix QuickManager+ Google Chrome font problem (text-shadow) -* [#3063][#3064][#3065] Replace calls to deprecated db-related parser methods with calls to db class methods -* [#2961] Wayfinder improvement - allow use of [+wf.alias+] -* [#3061] Allow @ and . characters in remembered login name -* [#3062] Corrections to ActionList item names (given that Documents are now Resources and Resources are now Elements) -* [#3115] Automatically regenerate siteCache if it not found -* [#835] @INHERIT improved to work with @FILE, and to allow additional data after the @INHERIT -* [#3092] Remove db user and pw from hidden form fields in installer -* [#194] Improve and fix bugs in markup on Edit Resource screen -* [*3168] remove debugging output from DocManager when updating TVs -* [#546] Improve DocManager usability by adding checkboxes to TVs and removing "ignore list", which was hard to use -* [#3361] Allow custom TemplateVariables and output widgets -* [#3362] Updated distributed jQuery library to 1.4.4 and updated AjaxSearch, QuickManager+ and ManagerManager to use it -* [#2627] New event allows plugin to inject custom markup into manager's header (header.inc.php) -* [#3385] Wayfinder optimization when hideSubMenus is enabled -* [#3386] Breadcrumbs optimizations -* [#3543] Personalize updated to 2.1 - - -MODX Evolution 1.0.4 (Jun 8, 2010) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#MODX-1964] WebLogin does not prevent brute force attack - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#MODX-1957] Danish language file update -* [#MODX-2018] Fix Multiple TinyMCE plugins activated after upgrade -* [#MODX-1865] 1.02 to 1.03 Upgrade Error with mySQL STRICT mode, "Templates: Incorrect integer value" -* [#MODX-1883] WebLoginSideBar chunk "forget" typo -* [#MODX-1880] Superfluous single quote in tree.php -* [#MODX-1878] Wrong path for _tx_.gif image in multiple files -* [#MODX-1896] Can't properly execute logEvent function when user is not logged in (strict sql mode on) -* [#MODX-1900] Fixes and tweaks for search.static.php -* [#MODX-1905] Broken paths to images, non valid xhtml tags, unmatched tags -* [#MODX-1884] Bug in breadcrumbs 1.0.1 -* [#MODX-1833] Incorrect rendering of module parameters for 'list-multi' type -* [#MODX-1920] Problem with Ditto and server time offset -* [#MODX-1925] WebLogin loses GET request elements if you have to login before getting to the page -* [#MODX-1926] Revert Cache Sync tokenization updates due to inconsistencies across PHP environments -* [#MODX-1893] Code registered with "regClientHTMLBlock" not inserted in cached documents -* [#MODX-1906] Put duplicate button on resource edit page -* [#MODX-1814] Irregular character string in QuickManager class -* [#MODX-1003] Removed font: Icon; from sortabletable class to let normal font-size view. [#MODX-1818] -* [#MODX-1874] Minor error in dbapi and debug -* [#MODX-1487] Error when configuring database on initial install process -* [#MODX-1882] webUserGroupNames $_SESSION value not set until second page land in WebLogin -* [#MODX-1510] Add a 'Remove Locks' permission to roles -* [#MODX-1881] ManagerManager errors when PHP version less than 5.2.3 -* [#MODX-1938] DB backup in Manager fails on IE under https -* [#MODX-1954] Add system setting to allow configuration warnings to only be shown to Admins -* [#MODX-1958] tmplvars.format.inc.php missing image property align -* [#MODX-1959] E_DEPRECATED error in ImageEditor -* [#MODX-1960] ImageEditor has incorrect location for the image src -* [#MODX-1962] E_DEPRECATED error in ManagerManager -* [#MODX-1963] DocManager, after tree sorting, can show document tree JS alert -* [#MODX-1947] and [#MODX-1956] Allow $modx->getDocumentObject() to get other documents than the currently requested -* [#MODX-1927] Manager Log fails to display when there are too many log entries -* [#MODX-1990] Update common transliteration table for TransAlias plugin [#ADDON-152], update InheritTemplate plugin to include Sibling option - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#MODX-1458] Make default click behavior for the Tree menu a system option -* [#MODX-1879] Mistake in the Netherlands language file -* [#MODX-1955] Make installer path setting changes required for Web PI installer -* [#MODX-1957] Update language files -* [#MODX-1929] Add styling to phpinfo() screen -* [#MODX-1931] Style update to Mutate Module screen -* [#MODX-1932] Style update to Template Variable and Plugin Priority Sort screens -* [#MODX-1935] Style tweaks to table bgcolor in various places -* [#MODX-1888] Add setting for allowing control over remembering the last tab viewed or not -* [#MODX-1977] When previewing, use friendly URLs (if enabled) -* [#MODX-2009] Clean up handling of 'a' variable in Manager (and related type casting changes) - -MODX Evolution 1.0.3 (Apr 1, 2010) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#MODX-1758] Fix issue described in JVN#46669729, XSS possibility with searchHighlight plugin -* [#MODX-1793] TinyMCE link lists are not secured if manager session does not exist -* [#ADDON-136] Prevent SQL injection on Weblogin - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#MODX-1472] Bad path to MODxCarbon transparent GIF -* [#MODX-1396] Add language string on module configuration screen -* [#MODX-1424] Fix SQL errors when adding user/resource groups with apostrophes in them -* [#MODX-1589] Remove duplicated pagetitle sort option for tree -* [#MODX-1608] Fix background image on TV sort list for templates -* [#MODX-1298] Links exchanged in demo site for Developers and Administration guides -* [#MODX-1079] "Edit resource" title changes on changing the template -* [#MODX-1630] Correct modx version reference in System Information screen -* [#MODX-1537] Weblink internal doc ID selection icon doesn't change -* [#MODX-1408] getVersionData out of sync with version.inc.php -* [#MODX-1431] Correct typo in install footer -* [#MODX-1449] Typo in demo site text -* [#MODX-1580] PHP typo in mutate_content.dynamic.php -* [#MODX-1506] QuickManager+ javascript errors when editing a resource -* [#MODX-1106] Change help icons on TV create/edit screen -* [#MODX-1103] Element Selector, part of the letters hides in search box -* [#MODX-1566] Fix problem with Forgot Password confirmation link in WebLogin -* [#MODX-1659] Stay option for adding another manager web user not working correctly -* [#MODX-1164] Unable to set cssStyle when using getHTMLGrid -* [#MODX-1176] Correct the permissions check when duplicating chunks and plugins -* [#MODX-1753] Fix help page layout in manager -* [#MODX-1279] OnUserFormPrerender & OnUserFormRender events weren't receiving the ID of the user -* [#MODX-1492] Default .htaccess file will prevent some pages being found when using friendly alias -* [#MODX-1587] For Web or Manager Users, date of birth cannot be set before year 2000 on dropdown list -* [#MODX-1747] Date TV input: Date Picker Container gets hidden behind other input fields -* [#MODX-1110] After deleting a template, the assignments "template to tmplvar" are still existing -* [#MODX-1314] Spanish utf-8 translation problem - install language file had been put in place of manager language file -* [#MODX-1505] Get 'Missing image' boxes in manager tree -* [#MODX-1694] Extra backslashes in ForgotManagerPassword.tpl::sendEmail -* [#MODX-1096] Additional fix, only show MODX tables on backup screen -* [#MODX-1271] Remove unused chunk from sample site -* [#MODX-1410] Update MooTools to 1.1.2 -* [#MODX-1429] sysAlert js function not working -* [#MODX-1168] Double tooltips in IE7 -* [#MODX-1175] User with no create new permissions can duplicate a document -* [#MODX-1206] Identifying the site root in the manager control panel -* [#MODX-1141] Mootools Error if logged in with SSL encryption (https) -* [#MODX-1114] Duplicate name on update template -* [#MODX-1225] PHP error after install -* [#MODX-1609] User upload file types unable to be unticked -* [#MODX-1427] Unexpected character in input error after upgrading -* [#MODX-863] Throws an error while running under PHP 5.3.0 -* [#MODX-1775] Remove blank line stripping from cache processor, can cause unwanted changes to chunks -* [#MODX-1460] ManagerManager mm_renameSection for 'tvs' renames the 'content' section instead -* [#MODX-1462] Date Picker is not displaying the current date 'green box' or correct month when re-editing a date -* [#MODX-1799] $modx->addEventListener() doesn't operate because of the syntax error - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#MODX-1107] Make font-size bigger on tree sort option dropdowns -* [#MODX-1432] Updated Danish language file -* [#MODX-1102] Minor layout fixes to import site, export site, and settings screen -* [#MODX-1078] Stop scrollbar showing on welcome screen -* [#MODX-1101] Minor styling fix for access permissions screens -* [#MODX-1333] Add missing credit images to MODxCarbon theme -* [#MODX-1159] Updated Norsk language file -* [#MODX-1629] DataGrid control does not have a THEAD -* [#MODX-1366] Hide "Manage META tags and Keywords" button if show_meta system setting is set to No -* [#MODX-1464] Make welcome.static.php use style.php for large icons -* [#MODX-1610] Installer doesn't install templates -* [#MODX-1098] Add interim solution to the IE8 compatibility issues -* [#MODX-1365] Non-admin managers to edit contentType and content_dispo for resources they create -* [#MODX-1622] Remove support.inc.php as same can be achieved by customizing the manager HTML templates provided -* [#MODX-1452] Show File path defaults in Site Config -* [#MODX-1127] When creating roles, "View help pages" cannot be deselected -* [#MODX-1757] File browser CSS tuning -* [#MODX-1100] Delete unused template files -* [#MODX-1320] Clean up baseline style.php file -* [#MODX-1407] Prevent MODX 404-handling for missing images -* [#MODX-1600] Add unique CSS ids to ease DOM manipulation of content editing Manager pages -* [#MODX-1105] Minor Manager cleanups to remove deprecated elements -* [#MODX-1761] Remove Templates from SQL install files -* [#MODX-1767] Improve Evo installer to remove leading/trailing elements surrounding opening docblock -* [#MODX-1760] ManagerManager updated to version 0.3.8 -* Allow TV definitions to be installed via the MODX installer -* [#MODX-1756] mcpuk internal file browser hard coding strings pattern -* [#MODX-1795] Tuning context menu order -* [#MODX-1800] Finnish language file for Evolution 1.0.3 -* [#MODX-1803] Swedish language files -* [#MODX-1808] Spanish language files -* [#MODX-1804] and [#MODX-1805] Danish language file -* [#MODX-1760] TinyMCE updated to version 3.3.2 -* [#MODX-1760] QM+ updated to version 1.3.4.1 -* [#MODX-1816] Russian language files -* [#MODX-1817] German language files -* [#MODX-1820] Japanese language files -* [#MODX-1195] Paths reset button for filemanager and assets -* [#MODX-1821] Use manager language for default language setting in Ditto - - - -MODX Evolution 1.0.2 (Nov 4, 2009) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#MODX-1391] Fix possible security exploits in WebChangePwd snippet - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#MODX-1406] Error: Cannot redeclare getsvnrev() -* [#MODX-991] Admin password form not appearing during install -* [#ADDON-61] Doc Manager, Template Variables not updated -* [#MODX-1157] Updating TV order on templates creates error -* [#MODX-1039] "No active users found" in Welcome and System Info screens hardcoded -* [#MODX-1321] [#MODX-1329] and [#MODX-1343] When non-admin users modify resource it loses 'type' and 'doc type' -* [#MODX-1339] Wrong date format for datepicker inserted into DB as part of new install -* [#MODX-994] Setting time in datepicker to a single digit gives incorrect formatted date -* from-forums Fix problem where resources couldn't be deleted from the Resource Edit screen -* [#ADDON-49] Forgot Manager Login bug in sql query which prevents user from completing the password reset -* [#ADDON-52] Hardcoded charset in ForgotManagerPassword plugin -* [#MODX-1092] DocManager - Adding Document Permissions does not properly set privateweb flag in modx_site_content -* [#MODX-1386] After install, MODX didn't show configuration page -* [#MODX-1338] Alias field accepts percent character -* [#MODX-1215] Unixtime widget uses wrong pattern for MySQL date string -* [#MODX-1364] Add check for tokenizer extension in cache_sync processor - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#MODX-1322] New french language file for eForm -* [#MODX-1071] Auto select manager language during install -* [#MODX-1097] Tweak htaccess rule template and improve wiki documentation of such -* [#MODX-1104] Remove width and height attributes on weblink icon on Edit Resource screen -* [#MODX-1152] Portuguese-br language file update -* [#MODX-1323] French language file update -* [#MODX-1336] Italian language file updates -* [#MODX-1277] Move jquery.colorbox.min.js to QM plugin directory as it's solely intended for use with QM -* [#MODX-948] Parser: Snippet calls no longer break with blank characters or when broken across multiple lines - - -MODX Evolution 1.0.1 (rev 5946 - October 22, 2009) -=================================== --------------------------------------------- -Security: --------------------------------------------- -* [#MODX-206] Reduce vulnerability to CSRF via referrer check update. Additional protections coming in the future via tokenizing requests in the Manager. -* [#MODX-1216] Remove "execute snippet" from mutate_snippets and mutate_modules -* [#MODX-1227] Add referrer check configuration warning to Manager -* [#MODX-1218] Enable CSRF check by default for sites that set headers properly -* [#MODX-1262] Security enhancement to ForgotManagerPassword plugin -* [#AJAXSEARCH-46] Prevent content injection with JS disabled (AjaxSearch 1.8.4) - --------------------------------------------- -Bugfixes: --------------------------------------------- -* [#MODX-353] Duplicate container cause problems -* [#MODX-586] Cancel button on the move document page does not redirect you to the selected page -* [#MODX-842] Missing Template Variable title in language files -* [#MODX-1000] On editing a template variable the right "Cancel" button is positioned weird -* [#MODX-1001] Navigation issues when pressing the cancel button -* [#MODX-1017] Removed unused code in welcome.static.php -* [#MODX-1024] Additional check for language files in Manager with graceful fallback to English -* [#MODX-1025] No alerts on deleting the keywords -* [#MODX-1065] Quoted_printable function in save_user.processor.php not available in some server configurations -* [#MODX-1075] String not properly translated in French installer translation -* [#MODX-1077] Login panel updates -* [#MODX-1084] Download path issue in File Manager -* [#MODX-1087] JS error when manager don't have rights for trashcan -* [#MODX-1096] System info page shows all tables in DB -* [#MODX-1099] Typo in the name of language variables in File manager -* [#MODX-1129] Editing form layout broken in IE6 -* [#MODX-1131] Remove "Show Preview Window" from Site Configuration page -* [#MODX-1145] Begin deprecation of META Tags management in the Manager -* [#MODX-1160] Missing label on search form for manager logs (Dupes: [#MODX-1041] [#MODX-1083]) -* [#MODX-1184] After creating a manager user the head title show wrong text -* [#MODX-1188] fix TransAlias installer template, plus other improvements to TransAlias by rfoster -* [#MODX-1190] Installer fixes and enhancements -* [#MODX-1095] Fixed Spanish Translation typos and missing labels and convert it to UTF-8 -* [#MODX-1286] Ensure version is saved to DB when saving configuration settings -* [#MODX-1289] Add 'Remove Periods' config param to TransAlias plugin and remove period substitution from the trans tables (and default MODX stripAlias() function) -* [#MODX-1301] Ensure correct Resource Type option is selected when adding Resources and Weblinks -* [#MODX-1309] Stop upgrades overwriting the element category - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* [#MODX-180] Convert weblink to document (and vice versa) (merge from 1.0 dev branch) -* [#MODX-828] Need to be able to tell user access permissions by the Site Tree icon/text -* [#MODX-929] Swap default click behavior for the Tree menu (edit vs view data) -* [#MODX-988] Automate storage of version number in settings table during install/upgrade -* [#MODX-1011] Make config language string punctuation consistent for field labels -* [#MODX-1034] Missed update to version number -* [#MODX-1038] Remove space after closing ?> tags -* [#MODX-1069] Improve layout/simplify Module Manager page -* [#MODX-1137] Change Manager term "alias" to "URL alias" -* [#MODX-1138] New more flexible and manageable Installer that enables making custom installer packages for Evo much simpler -* [#MODX-1149] Update language string Resource_X and Document_X keys to match actual changes -* [#MODX-1211] Add configuration option to QM+ - allows user to choose top or bottom placement of toolbar overlay in browser window -* [#MODX-1244] Add ManagerManager 0.3.5 -* [#MODX-1245] Update QM+ to version 1.3.3 -* [#MODX-1246] Update AjaxSearch to 1.8.4 -* [#MODX-1276] Reduce site cache size by removing PHP comments -* [#MODX-1282] Swedish language files for Evolution 1.0.1 -* [#MODX-1284] Czech language file for Evo 1.0.1 -* [#MODX-1287] New Danish language file for Evo 1.01 -* [#MODX-1288] New Danish language file for Evo 1.01 install -* [#MODX-1295] Demo Content categories need to be set -* [#MDOX-1302] Create demo content defaults for ManagerManager -* [#MDOX-1306] Clean up styling on Manager login page -* [#MDOX-1307] Update styling on QM+ to improve usability - - -MODX Evolution 1.0.0 (rev 5601 - July 30, 2009) -=================================== --------------------------------------------- -Bugfixes & Feature Requests: --------------------------------------------- -* [#MODX-583] Alter email-related Manager settings by reloading from specific translations -* [#MODX-1061] Link list fixed in TinyMCE -* [#MODX-1060] Escape language string for the recycle bin to fix a problem with disappearing trees -* [#MODX-1027] Fix broken images with Image TV Preview plugin when no image selected -* [#MODX-1033] Implement consistent dates throughout the Manager and add a date format setting -* [#MODX-1045] Replace JS Alert tooltips with Mootools hover tooltips -* [#MODX-1049] Cancel action when editing a module goes to wrong location -* [#MODX-1026] Canceling a template change in Manager lost the original template setting -* [#MODX-1028] Manager did not properly handle failed login attempt counts or block users -* [#MODX-999] Fixed width buttons break with some languages (setting pages) -* [#MODX-1023] Date and Image TV changing doesn't work correctly in DocManager. -* [#MODX-1013] Make DocManager use the new DatePicker -* [MODX-1009] Fix grammar/spelling error in english language file. -* [MODX-1008] Fix broken icons in Resource Overview->View Children -* [#MODX-989] Fix issue with DatePicker time field styling -* [#MODX-993] Fix broken URL rewriting when friendly alias paths are enabled -* [#MODX-981] Replaced missing event icons. -* [#MODX-968] Replaced folder icon in tree. (nodes.php) -* [#MODX-974] Fixed missing save icon in files.dynamic.php -* [#MODX-898] Allow passing script names and versions to regClient*, setting stage for more intelligent handling of script inclusion -* [#MODX-863] Isolate deprecated magic_quotes-related code inside PHP version checks for less than 5.3 to avoid deprecated warnings in 5.3/errors in 6.0 -* [#MODX-941] Add % character to transliteration plugin tables -* [#MODX-971] Fix to TransAlias plugin to allow it to work with the Import HTML action. -* [#MODX-591] Escape the database user and password in config.inc.php during install -* [#MODX-952] Modified the warning message with MySQL 4.x -* [#MODX-944] Installer with IE8 does not show final 'Install' button on last page -* [#MODX-904] Add better email format checking when adding/updating users. -* [#MODX-950] Scroll the File Manager to the editing textarea when clicking the edit button. -* [#MODX-905] Fix SQL error in cache_sync processor -* [#MODX-866] Allow manual editing of the datepicker fields -* [#MODX-720] The website name on the Manager login page links back to the front end site -* [#MODX-916] Better handling of text direction and encoding for Manager languages -* [#MODX-882] Specify the default Manager language during installation -* [#MODX-815] Users without edit or create module permissions can get to Modules editing screen -* [#MODX-390] Infinite loop possible during install -* [#MODX-909] Roles menu item showed even if Manager User did not have Roles permissions -* [#MODX-851] Manager User and Webuser email messages were always in English despite the language setting -* [#MODX-830] Friendly URLs can now contain UTF8 characters -* [#MODX-897] Dynamic title for create/edit Resource action page depending on state -* [#MODX-891] Manager language files contains hard-coded CSS spans -* [#MODX-867] Add system events to Manager log Welcome page to make custom dashboard plugins possible -* [#MODX-602] Remove the calltime-pass-by-ref errors on the Export Site HTML screen. -* [#MODX-725] Retain checkbox TV values when changing template, also fix postback rendering of TV values (broken in a recent commit) -* [#MODX-810] Ensure that the web user ID is passed correctly to the OnWUsrFormPrerender and OnWUsrFormRender events. -* [#MODX-733] Apply fix for multi-byte characters being garbled in 'Site' > 'Search'. -* [#MODX-719] Small fix to DocManager to prevent parse error when no doc groups are present and an update to doc groups is attempted. -* [#MODX-741] Fix MCPUK browser navigation to work with folders that have spaces in them. -* [#MODX-813] Fix the image editor's src link for the image tag. -* [#MODX-822], [#MODX-465] Add basic file encoding for the file manager, not a complete solution but consensus that it's better than previous. -* [#MODX-847] Replace QuickEdit with QuickManager+ (includes /assets/js/jQuery 1.3.2.min.js) -* [#MODX-838] Ensure Datepicker correctly closes when select and textboxes lose focus without being changed. -* [#MODX-806] fix duplicated option groups in template picker -* [#MODX-581] Installer doesn't check /assets/media, /assets/flash and /assets/files directories -* [#MODX-687], [#MODX-589] Fix the TV name fields so that new DatePicker works correctly -* [#MODX-832] Implement new DatePicker in the MODX Manager. -* [#MODX-655] Correct a sanity check that was preventing the allow_manager_access setting being saved. -* [#MODX-806] Add option groups to template chooser in Manager -* [#MODX-571] Fix TV date picker when special characters in TV name -* [#MODX-588] Missing else in document parser that orphaned a small piece of code -* [#MODX-608] Missing "$this->" in SystemEvent::stopPropagation() -* [#MODX-592] Site Cache improvement for only storing doctypes that are different from text/html in cache files -* [#MODX-681] Manager include path fix for occasional errors and working better with third-party libraries -* [#MODX-449] Incorrect language setting for RTE used in front end instances at install -* [#MODX-812] Added Hebrew Manager translation -* [#MODX-209] Amended original patch: remove urlencode() call for viewable files (i.e. images) when generating the preview buttons in the file manager. -* [#MODX-85] Removed transliteration code from core and turn into a plugin - - Supports multiple languages - - Template Variable can override transliteration table (file) per-document/section (supports @INHERIT) - - Move stripAlias function into parser - - Add OnStripAlias parser/system event -* [#MODX-445] Fix case where deleted docs with the same alias as another document caused a 404 response. Remove deleted docs from site cache. -* [#MODX-593] Add missing summary/introtext to Weblink manager page -* [#MODX-220] Manager language updates for sorting and formatting consistency across languages -* [#MODX-393] Show Protected Pages issue solved by Thomas Leiritz -* [#MODX-516] and [#MODX-397] - - fix to display of Access Permissions depending on Role permissions - - fix to preserve parent after new document save permissions error -* [#MODX-397] Fix logic: creating documents inside restricted containers - - disallow users from creating restricted docs they can't access - - disallow "Create Document Here" and "Create Weblink Here" under restricted parents -* [#MODX-572] new Elements must be given unique names - - applies only to elements created with "New..." buttons - - templates, tvs, plugins, snippets, chunks, modules - - Removed isNumber function, not needed since PHP < 4 -* [#MODX-620] Add boolean support to Datagrid class -* [#MODX-446] Committing Soushi's cache sync patch (re: optimizations to cache syncing when the site has a large number of documents) -* [#MODX-686] Major updates to Dutch language file -* [#MODX-582] Update and alphabetize default upload-able file types for new installs. (Also removes php files from list) -* [#MODX-457] Updates to Swedish language file -* [#MODX-363] Missing URL types for cleaning in save content processor -* [#MODX-701] Polish updates -* [#MODX-713] Brazillian Portuguese updates -* [#MODX-580] Update Italian language files -* [#MODX-515] Fix non-clickable view unpublished role label -* [#MODX-724] Reference wiki page for fix for multi-server/cloud deployments and unexpected logoffs -* [#MODX-734] Typo in language file it's->its -* [#MODX-410] access permissions will be inherited from parent when user creates new child but and does not have role permission for access permissions -* [#MODX-724] Create .htaccess template to set the session paths out of shared /tmp/ directories which can lead to loosing sessions from aggressive garbage collection. -* [#MODX-394] Update Russian installation file per http://forums.modx.com/thread/1294/fixes-what-can-i-do-to-be-heard -* [#MODX-715] Fix .jp lang file for incorrect hard-coded link -* [#MODX-541] Fix the include statement in getUserData() method -* [#MODX-650] bad reference to csshover.htc (now csshover2.htc) - --------------------------------------------- -Additional Improvements & Updates: --------------------------------------------- -* Fix get_func_args() error (evident on PHP 5.3) in Ditto/Reflect -* Many updates to Manager and Installer language translations - - Updating language to be in line with Revo. (Resources -> Elements, resource browser -> File Browser, Documents -> Resources) - - Simplify language and remove overly-wordy phrases - - New language strings where appropriate and needed - - Replaced hard coded language strings in Import and Export action pages with new language strings - - Better handling of Manager language encoding and text direction - - Now handles RSS, Word, Excel, XML, HTML, CSS, JS, PDF and plain documents with custom icons in the Site Tree - - Able to reload and choose language for key site settings like Signup emails, password reset emails, etc. -* Remove legacy code no longer needed - - Removed QuickEdit module (instructions only) - - Removed News Publisher snippet (did not support TVs) - - Prototype and Scriptaculous JS and SLLists.class.php from core distribution, no longer used - - Update demo content to remove Prototype/Scriptaculous dependencies -* Convert manager to use Mootools exclusively - - Manager Login page - - Convert the 'Sort TV by template' and 'Plugin Execution Ordering', also fix the button CSS styling on those pages - - DocManager module (also to assist with future updates) - MODULE MUST BE UPDATED when upgrading from previous MODX versions -* Upgrade Add-on: eForm 1.4.4.6 -* Upgrade Add-on: AjaxSearch 1.8.3 -* Updated Add-on: TinyMCE 3.2.4.1 -* Fix the Template Variable "Lock variable for editing" checkbox -* Removed erroneous parameter in isFrontend() method call -* Exclude /assets and /manager by default from MODX rewrite and to comment out example.com -> www.example.com rule by default -* Fix bug when login page language file was missing translation strings. Now falls back to main English file. -* Added additional database diagnostic info to system info page (auto-generated paths) -* Updated the MODX installer - - New skin - - Streamline process by removing two steps - - Make Connection/Collation/Default Admin User only show when prior steps are completed first - - Now set the default Manager language during new installs instead of relying on installation language -* New MODX Carbon default theme for MODX Evolution 1.0 release - - Removed deprecated themes for Evo 1.0 release - - Added a CSS class (setting of $modx->config['manager_direction']) to Manager pages to automatically address RTL Manager language users - - Remove Bottom Button Bar plugin due to new static button bar similar to Revo -* Make upgrades between versions simpler - - Moving Manager login/welcome/blocked templates into /assets/templates/manager - - Moving Manager Help pages into /assets/templates/help -* Manager RSS feed improvements - - Updated RSS feeds to more manageable number of entries for welcome page. - - Updated snoopy class to latest version 1.2.4 (used by magpierss). - -For earlier changelog entries, please see the /install/changelog.txt file included with the MODX 0.9.6.3 distribution \ No newline at end of file diff --git a/install/config.inc.tpl b/install/config.inc.tpl new file mode 100644 index 0000000000..6471955c27 --- /dev/null +++ b/install/config.inc.tpl @@ -0,0 +1,129 @@ + 1) + array_pop($a); + $url= implode($separator, $a); + reset($a); + $a= explode(MGR_DIR, str_replace('\\', '/', dirname(__FILE__))); + if (count($a) > 1) + array_pop($a); + $pth= implode(MGR_DIR, $a); + unset ($a); + $base_url= $url . (substr($url, -1) != '/' ? '/' : ''); + $base_path= $pth . (substr($pth, -1) != '/' && substr($pth, -1) != '\\' ? '/' : ''); +} + +// check for valid hostnames +$site_hostname = str_replace(':' . $_SERVER['SERVER_PORT'], '', $_SERVER['HTTP_HOST']); +if (!defined('MODX_SITE_HOSTNAMES')) { + $site_hostnames_path = $base_path . 'assets/cache/siteHostnames.php'; + if (is_file($site_hostnames_path)) { + include_once($site_hostnames_path); + } else { + define('MODX_SITE_HOSTNAMES', ''); + } +} +$site_hostnames = explode(',', MODX_SITE_HOSTNAMES); +if (!empty($site_hostnames[0]) && !in_array($site_hostname, $site_hostnames)) { + $site_hostname = $site_hostnames[0]; +} + +// assign site_url +$site_url= ((isset ($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port) ? 'https://' : 'http://'; +$site_url .= $site_hostname; +if ($_SERVER['SERVER_PORT'] != 80) + $site_url= str_replace(':' . $_SERVER['SERVER_PORT'], '', $site_url); // remove port from HTTP_HOST   +$site_url .= ($_SERVER['SERVER_PORT'] == 80 || (isset ($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port) ? '' : ':' . $_SERVER['SERVER_PORT']; +$site_url .= $base_url; + +if (!defined('MODX_BASE_PATH')) define('MODX_BASE_PATH', $base_path); +if (!defined('MODX_BASE_URL')) define('MODX_BASE_URL', $base_url); +if (!defined('MODX_SITE_URL')) define('MODX_SITE_URL', $site_url); +if (!defined('MODX_MANAGER_PATH')) define('MODX_MANAGER_PATH', $base_path.MGR_DIR.'/'); +if (!defined('MODX_MANAGER_URL')) define('MODX_MANAGER_URL', $site_url.MGR_DIR.'/'); + +// start cms session +if(!function_exists('startCMSSession')) { + + global $site_sessionname; + $_ = crc32(__FILE__); + $_ = sprintf('%u', $_); + $_ = base_convert($_,10,36); + $site_sessionname = 'evo' . $_; + + function removeInvalidCmsSessionFromStorage(&$storage, $session_name) { + if (isset($storage[$session_name]) && $storage[$session_name] === '') + { + unset($storage[$session_name]); + } + } + function removeInvalidCmsSessionIds($session_name) { + // session ids is invalid iff it is empty string + // storage priorioty can see in PHP source ext/session/session.c + removeInvalidCmsSessionFromStorage($_COOKIE, $session_name); + removeInvalidCmsSessionFromStorage($_GET, $session_name); + removeInvalidCmsSessionFromStorage($_POST, $session_name); + } + function startCMSSession(){ + + global $site_sessionname, $https_port; + + session_name($site_sessionname); + removeInvalidCmsSessionIds($site_sessionname); + session_start(); + $cookieExpiration= 0; + $secure = ((isset ($_SERVER['HTTPS']) && strtolower($_SERVER['HTTPS']) == 'on') || $_SERVER['SERVER_PORT'] == $https_port); + + if (isset($_SESSION['mgrValidated'])) $context = 'mgr'; + elseif(isset($_SESSION['webValidated'])) $context = 'web'; + else { + setcookie($site_sessionname, session_id(), $cookieExpiration, MODX_BASE_URL, null, $secure, true); + return; + } + + $key = "modx.{$context}.session.cookie.lifetime"; + if (isset($_SESSION[$key]) && is_numeric($_SESSION[$key])) { + $cookieLifetime= intval($_SESSION[$key]); + if($cookieLifetime) $cookieExpiration = $_SERVER['REQUEST_TIME']+$cookieLifetime; + } + if (!isset($_SESSION['modx.session.created.time'])) { + $_SESSION['modx.session.created.time'] = $_SERVER['REQUEST_TIME']; + } + setcookie($site_sessionname, session_id(), $cookieExpiration, MODX_BASE_URL, null, $secure, true); + } +} diff --git a/install/connection.collation.php b/install/connection.collation.php index 42597e80de..4d80000ddd 100644 --- a/install/connection.collation.php +++ b/install/connection.collation.php @@ -3,23 +3,64 @@ $host = $_POST['host']; $uid = $_POST['uid']; $pwd = $_POST['pwd']; -$database_collation = htmlentities($_POST['database_collation']); -$output = ''; +$self = 'install/connection.collation.php'; +$base_path = str_replace($self,'',str_replace('\\','/', __FILE__)); +if (is_file("{$base_path}assets/cache/siteManager.php")) { + include_once("{$base_path}assets/cache/siteManager.php"); +} +if(!defined('MGR_DIR') && is_dir("{$base_path}manager")) { + define('MGR_DIR','manager'); +} +require_once('lang.php'); -if ($conn = @ mysql_connect($host, $uid, $pwd)) { +if ($conn = mysqli_connect($host, $uid, $pwd)) { // get collation - $getCol = mysql_query("SHOW COLLATION"); - if (@mysql_num_rows($getCol) > 0) { + $rs = mysqli_query($conn, "SHOW COLLATION"); + if (mysqli_num_rows($rs) > 0) { $output = ''; + $output .= ''; } } echo $output; -?> \ No newline at end of file + +function sortItem($array=array(),$order='utf8mb4,utf8') { + $rs = array('recommend'=>''); + $order = explode(',', $order); + foreach($order as $v) { + foreach($array as $name=>$sel) { + if(strpos($name,$v)!==false) { + $rs[$name] = $array[$name]; + unset($array[$name]); + } + } + } + $rs['unrecommend']=''; + return $rs + $array; +} diff --git a/install/connection.databasetest.php b/install/connection.databasetest.php index 9fd94993df..e5403a700e 100644 --- a/install/connection.databasetest.php +++ b/install/connection.databasetest.php @@ -16,7 +16,7 @@ require_once("lang.php"); $output = $_lang["status_checking_database"]; -if (!$conn = @ mysql_connect($host, $uid, $pwd)) { +if (!$conn = mysqli_connect($host, $uid, $pwd)) { $output .= ''.$_lang['status_failed'].''; } else { @@ -28,28 +28,28 @@ $_POST['database_connection_method'] = stripslashes($_POST['database_connection_method']); } } - $database_name = mysql_real_escape_string($_POST['database_name']); + $database_name = mysqli_real_escape_string($conn, $_POST['database_name']); $database_name = str_replace("`", "", $database_name); - $tableprefix = mysql_real_escape_string($_POST['tableprefix']); - $database_collation = mysql_real_escape_string($_POST['database_collation']); - $database_connection_method = mysql_real_escape_string($_POST['database_connection_method']); + $tableprefix = mysqli_real_escape_string($conn, $_POST['tableprefix']); + $database_collation = mysqli_real_escape_string($conn, $_POST['database_collation']); + $database_connection_method = mysqli_real_escape_string($conn, $_POST['database_connection_method']); - if (!@ mysql_select_db($database_name, $conn)) { + if (!@ mysqli_select_db($conn, $database_name)) { // create database $database_charset = substr($database_collation, 0, strpos($database_collation, '_')); $query = "CREATE DATABASE `".$database_name."` CHARACTER SET ".$database_charset." COLLATE ".$database_collation.";"; - if (!@ mysql_query($query)){ + if (! mysqli_query($conn, $query)){ $output .= ''.$_lang['status_failed_could_not_create_database'].''; } else { $output .= ''.$_lang['status_passed_database_created'].''; } } - elseif (($installMode == 0) && (@ mysql_query("SELECT COUNT(*) FROM {$database_name}.`{$tableprefix}site_content`"))) { + elseif (($installMode == 0) && (mysqli_query($conn, "SELECT COUNT(*) FROM {$database_name}.`{$tableprefix}site_content`"))) { $output .= ''.$_lang['status_failed_table_prefix_already_in_use'].''; } - elseif (($database_connection_method != 'SET NAMES') && ($rs = @ mysql_query("show variables like 'collation_database'")) && ($row = @ mysql_fetch_row($rs)) && ($row[1] != $database_collation)) { + elseif (($database_connection_method != 'SET NAMES') && ($rs = mysqli_query($conn, "show variables like 'collation_database'")) && ($row = mysqli_fetch_row($rs)) && ($row[1] != $database_collation)) { $output .= ''.sprintf($_lang['status_failed_database_collation_does_not_match'], $row[1]).''; } else { diff --git a/install/connection.js b/install/connection.js deleted file mode 100644 index 854185a05c..0000000000 --- a/install/connection.js +++ /dev/null @@ -1,122 +0,0 @@ -window.addEvent('domready', function(){ - - // get collation from the database server - $('servertest').addEvent('click', function(e) { - e = new Event(e).stop(); - - var url = "connection.collation.php"; - - host = $('databasehost').value; - uid = $('databaseloginname').value; - pwd = $('databaseloginpassword').value; - database_collation = $('database_collation').value; - database_connection_method = $('database_connection_method').value; - - var pars = Object.toQueryString({ - q: url, - host: host, - uid: uid, - pwd: pwd, - database_collation: database_collation, - database_connection_method: database_connection_method, - language: language - }); - - new Ajax(url, { postBody: pars, update: $('collation'), onComplete: testServer } ).request(); - }); - - // database test - $('databasetest').addEvent('click', function(e) { - e = new Event(e).stop(); - - var url = "connection.databasetest.php"; - - host = $('databasehost').value; - uid = $('databaseloginname').value; - pwd = $('databaseloginpassword').value; - database_name = $('database_name').value; - tableprefix = $('tableprefix').value; - database_collation = $('database_collation').value; - database_connection_method = $('database_connection_method').value; - - var pars = Object.toQueryString({ - q: url, - host: host, - uid: uid, - pwd: pwd, - database_name: database_name, - tableprefix: tableprefix, - database_collation: database_collation, - database_connection_method: database_connection_method, - language: language, - installMode: installMode - }); - - new Ajax(url, { postBody: pars, update: $('databasestatus'), onComplete: setDefaults } ).request(); - }); - - - Slider1 = new Fx.Slide('setCollation', {duration:477});//transition:Fx.Sine.easeOut, - Slider1.hide(); - $('setCollation').style.backgroundColor = '#ffff00'; - $('setCollation').style.display = 'block'; - if(document.getElementById('AUH')) { - Slider2 = new Fx.Slide('AUH', {duration:477});//transition:Fx.Sine.easeOut, - Slider2.hide(); - $('AUH').style.display = 'block'; - $('AUH').style.backgroundColor = '#ffff00'; - } - -}); - - - -function testServer(){ -// get the server test status as soon as collation received - var url = "connection.servertest.php"; - - host = $('databasehost').value; - uid = $('databaseloginname').value; - pwd = $('databaseloginpassword').value; - - var pars = Object.toQueryString({ - q: url, - host: host, - uid: uid, - pwd: pwd, - language: language - }); - - new Ajax(url, { postBody: pars, update: $('serverstatus'), onComplete: setColor } ).request(); -} - -function setDefaults(){ - if($('database_pass') !== null && document.getElementById('AUH')) { - window.Slider2.slideIn(); - var Slider2FX = new Fx.Styles('AUHMask', {duration: 997,transition: Fx.Transitions.linear}); - Slider2FX.start({'opacity':[0,1]}); - window.setTimeout("$('AUH').style.backgroundColor = '#ffffff';", 1000); - Slider2Scroll = new Fx.Scroll(window); - Slider2Scroll.toElement('managerlanguage_select'); - } -} - -function setColor(){ - var col = $('database_collation'); - - ss = document.getElementById('serverstatus'); - ssv = ss.innerHTML; - if ($('server_pass') !== null) { - col.setStyle('background-color', '#9CCD00'); -// col.setStyle('color', '#0000CD'); - col.setStyle('font-weight','bold'); - - window.Slider1.slideIn(); //toggle the slider up and down. - var Slider1FX = new Fx.Styles('collationMask', {duration: 997,transition: Fx.Transitions.linear}); - Slider1FX.start({'opacity':[0,1]}); - window.setTimeout("$('setCollation').style.backgroundColor = '#ffffff';", 1000); - Slider1Scroll = new Fx.Scroll(window); - Slider1Scroll.toElement('databasestatus'); - $('database_name').focus(); - } -} \ No newline at end of file diff --git a/install/connection.servertest.php b/install/connection.servertest.php index fcddec48ad..91024c9f95 100644 --- a/install/connection.servertest.php +++ b/install/connection.servertest.php @@ -15,20 +15,20 @@ require_once("lang.php"); $output = $_lang["status_connecting"]; -if (!$conn = @ mysql_connect($host, $uid, $pwd)) { +if (!$conn = @mysqli_connect($host, $uid, $pwd)) { $output .= ' '.$_lang['status_failed'].''; } else { $output .= ' '.$_lang['status_passed_server'].''; // Mysql version check - if ( version_compare(mysql_get_server_info(), '5.0.51', '=') ) { + if ( version_compare(mysqli_get_server_info($conn), '5.0.51', '=') ) { $output .= '
                        '.$_lang['mysql_5051'].''; } // Mode check - $mysqlmode = @ mysql_query("SELECT @@session.sql_mode"); - if (@mysql_num_rows($mysqlmode) > 0){ - $modes = mysql_fetch_array($mysqlmode, MYSQL_NUM); + $mysqlmode = mysqli_query($conn, "SELECT @@session.sql_mode"); + if (@mysqli_num_rows($mysqlmode) > 0){ + $modes = mysqli_fetch_array($mysqlmode, MYSQLI_NUM); $strictMode = false; foreach ($modes as $mode) { if (stristr($mode, "STRICT_TRANS_TABLES") !== false || stristr($mode, "STRICT_ALL_TABLES") !== false) $strictMode = true; diff --git a/install/functions.php b/install/functions.php index 3ff04377af..47fb063253 100644 --- a/install/functions.php +++ b/install/functions.php @@ -56,6 +56,7 @@ function ph() $ph['release_date'] = ($modx_textdir ? '‏':'') . $modx_release_date; $ph['footer1'] = $_lang['modx_footer1']; $ph['footer2'] = $_lang['modx_footer2']; + $ph['current_year'] = date('Y'); return $ph; } @@ -73,7 +74,7 @@ function get_installmode() if(!isset($dbase) || empty($dbase)) $installmode = 0; else { - $conn = @ mysql_connect($database_server, $database_user, $database_password); + $conn = mysqli_connect($database_server, $database_user, $database_password); if($conn) { $_SESSION['database_server'] = $database_server; @@ -81,7 +82,7 @@ function get_installmode() $_SESSION['database_password'] = $database_password; $dbase = trim($dbase, '`'); - $rs = @ mysql_select_db($dbase, $conn); + $rs = mysqli_select_db($conn, $dbase); } else $rs = false; @@ -93,10 +94,10 @@ function get_installmode() $_SESSION['database_connection_method'] = 'SET CHARACTER SET'; $tbl_system_settings = "`{$dbase}`.`{$table_prefix}system_settings`"; - $rs = mysql_query("SELECT setting_value FROM {$tbl_system_settings} WHERE setting_name='settings_version'"); + $rs = mysqli_query($conn, "SELECT setting_value FROM {$tbl_system_settings} WHERE setting_name='settings_version'"); if($rs) { - $row = mysql_fetch_assoc($rs); + $row = mysqli_fetch_assoc($rs); $settings_version = $row['setting_value']; } else $settings_version = ''; diff --git a/install/img/logo.png b/install/img/logo.png index cf49dc92ce..24930c5194 100644 Binary files a/install/img/logo.png and b/install/img/logo.png differ diff --git a/install/index.php b/install/index.php index e21e6b5004..c207ca22a9 100755 --- a/install/index.php +++ b/install/index.php @@ -36,6 +36,7 @@ $moduleRelease = $modx_release_date; $moduleSQLBaseFile = "setup.sql"; $moduleSQLDataFile = "setup.data.sql"; +$moduleSQLResetFile = "setup.data.reset.sql"; $moduleChunks = array (); // chunks - array : name, description, type - 0:file or 1:content, file or content $moduleTemplates = array (); // templates - array : name, description, type - 0:file or 1:content, file or content @@ -51,19 +52,13 @@ // get post back status $isPostBack = (count($_POST)); -$action= isset ($_GET['action']) ? trim(strip_tags($_GET['action'])) : 'language'; - -// make sure they agree to the license -#if (!in_array($action, array ('language', 'welcome', 'connection', 'options', 'license', 'mode', 'summary'))) { -# if (!isset ($_POST['chkagree'])) $action= 'license'; -#} - $ph = ph(); $ph = array_merge($ph,$_lang); $ph['install_language'] = $install_language; ob_start(); -if (!@include_once("action.{$action}.php")) { +$action= isset ($_GET['action']) ? trim(strip_tags($_GET['action'])) : 'language'; +if (!@include_once("actions/action_{$action}.php")) { die ("Invalid install action attempted. [action={$action}]"); } $ph['content'] = ob_get_contents(); diff --git a/install/instprocessor.php b/install/instprocessor.php index 4965c6721c..a54bd6474a 100755 --- a/install/instprocessor.php +++ b/install/instprocessor.php @@ -9,6 +9,7 @@ global $moduleVersion; global $moduleSQLBaseFile; global $moduleSQLDataFile; +global $moduleSQLResetFile; global $moduleChunks; global $moduleTemplates; @@ -47,6 +48,7 @@ $adminemail = $_POST['cmsadminemail']; $adminpass = $_POST['cmspassword']; $managerlanguage = $_POST['managerlanguage']; +$custom_placeholders = array(); //} // set session name variable @@ -70,7 +72,7 @@ // connect to the database echo "

                        ". $_lang['setup_database_create_connection']; -if (!@ $conn = mysql_connect($database_server, $database_user, $database_password)) { +if (!$conn = mysqli_connect($database_server, $database_user, $database_password)) { echo "".$_lang["setup_database_create_connection_failed"]."

                        ".$_lang['setup_database_create_connection_failed_note']."

                        "; return; } else { @@ -79,26 +81,26 @@ // select database echo "

                        ".$_lang['setup_database_selection']. str_replace("`", "", $dbase) . "`: "; -if (!@ mysql_select_db(str_replace("`", "", $dbase), $conn)) { +if (!mysqli_select_db($conn, str_replace("`", "", $dbase))) { echo "".$_lang['setup_database_selection_failed']."".$_lang['setup_database_selection_failed_note']."

                        "; $create = true; } else { - if (function_exists('mysql_set_charset')) mysql_set_charset($database_charset); - @ mysql_query("{$database_connection_method} {$database_connection_charset}"); + if (function_exists('mysqli_set_charset')) mysqli_set_charset($conn, $database_charset); + mysqli_query($conn, "{$database_connection_method} {$database_connection_charset}"); echo "".$_lang['ok']."

                        "; } // try to create the database if ($create) { echo "

                        ".$_lang['setup_database_creation']. str_replace("`", "", $dbase) . "`: "; - // if(!@mysql_create_db(str_replace("`","",$dbase), $conn)) { - if (! mysql_query("CREATE DATABASE $dbase DEFAULT CHARACTER SET $database_charset COLLATE $database_collation")) { + // if(!@mysqli_create_db(str_replace("`","",$dbase), $conn)) { + if (! mysqli_query($conn, "CREATE DATABASE $dbase DEFAULT CHARACTER SET $database_charset COLLATE $database_collation")) { echo "".$_lang['setup_database_creation_failed']."".$_lang['setup_database_creation_failed_note']."

                        "; $errors += 1; ?>
                        -        database charset = 
                        -        database collation = 
                        +        database charset = 
                        +        database collation = 
                                 

                        " . $_lang['checking_table_prefix'] . $table_prefix . "`: "; - if (@ $rs = mysql_query("SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) { + if (@ $rs = mysqli_query($conn, "SELECT COUNT(*) FROM $dbase.`" . $table_prefix . "site_content`")) { echo "" . $_lang['failed'] . "" . $_lang['table_prefix_already_inuse'] . "

                        "; $errors += 1; echo "

                        " . $_lang['table_prefix_already_inuse_note'] . "

                        "; @@ -148,8 +150,8 @@ function parseProperties($propertyString) { // check status of Inherit Parent Template plugin $auto_template_logic = 'parent'; if ($installMode != 0) { - $rs = mysql_query("SELECT properties, disabled FROM $dbase.`" . $table_prefix . "site_plugins` WHERE name='Inherit Parent Template'"); - $row = mysql_fetch_row($rs); + $rs = mysqli_query($conn, "SELECT properties, disabled FROM $dbase.`" . $table_prefix . "site_plugins` WHERE name='Inherit Parent Template'"); + $row = mysqli_fetch_row($rs); if(!$row) { // not installed $auto_template_logic = 'system'; @@ -214,110 +216,21 @@ function parseProperties($propertyString) { // write the config.inc.php file if new installation echo "

                        " . $_lang['writing_config_file']; -$configString = ' 1) - array_pop($a); - $url= implode($separator, $a); - reset($a); - $a= explode(MGR_DIR, str_replace("\\\\", "/", dirname(__FILE__))); - if (count($a) > 1) - array_pop($a); - $pth= implode(MGR_DIR, $a); - unset ($a); - $base_url= $url . (substr($url, -1) != "/" ? "/" : ""); - $base_path= $pth . (substr($pth, -1) != "/" && substr($pth, -1) != "\\\\" ? "/" : ""); -} -// check for valid hostnames -$site_hostname = str_replace(\':\' . $_SERVER[\'SERVER_PORT\'], \'\', $_SERVER[\'HTTP_HOST\']); -if (!defined(\'MODX_SITE_HOSTNAMES\')) { - $site_hostnames_path = $base_path . \'assets/cache/siteHostnames.php\'; - if (is_file($site_hostnames_path)) { - include_once($site_hostnames_path); - } else { - define(\'MODX_SITE_HOSTNAMES\', \'\'); - } -} -$site_hostnames = explode(\',\', MODX_SITE_HOSTNAMES); -if (!empty($site_hostnames[0]) && !in_array($site_hostname, $site_hostnames)) { - $site_hostname = $site_hostnames[0]; -} +$confph = array(); +$confph['database_server'] = $database_server; +$confph['user_name'] = mysqli_real_escape_string($conn, $database_user); +$confph['password'] = mysqli_real_escape_string($conn, $database_password); +$confph['connection_charset'] = $database_connection_charset; +$confph['connection_method'] = $database_connection_method; +$confph['dbase'] = str_replace('`', '', $dbase); +$confph['table_prefix'] = $table_prefix; +$confph['lastInstallTime'] = time(); +$confph['site_sessionname'] = $site_sessionname; + +$configString = file_get_contents('config.inc.tpl'); +$configString = parse($configString, $confph); -// assign site_url -$site_url= ((isset ($_SERVER[\'HTTPS\']) && strtolower($_SERVER[\'HTTPS\']) == \'on\') || $_SERVER[\'SERVER_PORT\'] == $https_port) ? \'https://\' : \'http://\'; -$site_url .= $site_hostname; -if ($_SERVER[\'SERVER_PORT\'] != 80) - $site_url= str_replace(\':\' . $_SERVER[\'SERVER_PORT\'], \'\', $site_url); // remove port from HTTP_HOST   -$site_url .= ($_SERVER[\'SERVER_PORT\'] == 80 || (isset ($_SERVER[\'HTTPS\']) && strtolower($_SERVER[\'HTTPS\']) == \'on\') || $_SERVER[\'SERVER_PORT\'] == $https_port) ? \'\' : \':\' . $_SERVER[\'SERVER_PORT\']; -$site_url .= $base_url; - -if (!defined(\'MODX_BASE_PATH\')) define(\'MODX_BASE_PATH\', $base_path); -if (!defined(\'MODX_BASE_URL\')) define(\'MODX_BASE_URL\', $base_url); -if (!defined(\'MODX_SITE_URL\')) define(\'MODX_SITE_URL\', $site_url); -if (!defined(\'MODX_MANAGER_PATH\')) define(\'MODX_MANAGER_PATH\', $base_path.MGR_DIR.\'/\'); -if (!defined(\'MODX_MANAGER_URL\')) define(\'MODX_MANAGER_URL\', $site_url.MGR_DIR.\'/\'); - -// start cms session -if(!function_exists(\'startCMSSession\')) { - function startCMSSession(){ - global $site_sessionname; - session_name($site_sessionname); - session_start(); - $cookieExpiration= 0; - if (isset ($_SESSION[\'mgrValidated\']) || isset ($_SESSION[\'webValidated\'])) { - $contextKey= isset ($_SESSION[\'mgrValidated\']) ? \'mgr\' : \'web\'; - if (isset ($_SESSION[\'modx.\' . $contextKey . \'.session.cookie.lifetime\']) && is_numeric($_SESSION[\'modx.\' . $contextKey . \'.session.cookie.lifetime\'])) { - $cookieLifetime= intval($_SESSION[\'modx.\' . $contextKey . \'.session.cookie.lifetime\']); - } - if ($cookieLifetime) { - $cookieExpiration= time() + $cookieLifetime; - } - if (!isset($_SESSION[\'modx.session.created.time\'])) { - $_SESSION[\'modx.session.created.time\'] = time(); - } - } - setcookie(session_name(), session_id(), $cookieExpiration, MODX_BASE_URL); - } -}'; -$configString .= "\n?>"; $filename = '../'.MGR_DIR.'/includes/config.inc.php'; $configFileFailed = false; if (@ !$handle = fopen($filename, 'w')) { @@ -351,20 +264,40 @@ function startCMSSession(){ // generate new site_id and set manager theme to MODxRE if ($installMode == 0) { $siteid = uniqid(''); - mysql_query("REPLACE INTO $dbase.`" . $table_prefix . "system_settings` (setting_name,setting_value) VALUES('site_id','$siteid'),('manager_theme','MODxRE')", $sqlParser->conn); + mysqli_query($sqlParser->conn, "REPLACE INTO $dbase.`" . $table_prefix . "system_settings` (setting_name,setting_value) VALUES('site_id','$siteid'),('manager_theme','MODxRE2')"); } else { // update site_id if missing - $ds = mysql_query("SELECT setting_name,setting_value FROM $dbase.`" . $table_prefix . "system_settings` WHERE setting_name='site_id'", $sqlParser->conn); + $ds = mysqli_query($sqlParser->conn, "SELECT setting_name,setting_value FROM $dbase.`" . $table_prefix . "system_settings` WHERE setting_name='site_id'"); if ($ds) { - $r = mysql_fetch_assoc($ds); + $r = mysqli_fetch_assoc($ds); $siteid = $r['setting_value']; if ($siteid == '' || $siteid = 'MzGeQ2faT4Dw06+U49x3') { $siteid = uniqid(''); - mysql_query("REPLACE INTO $dbase.`" . $table_prefix . "system_settings` (setting_name,setting_value) VALUES('site_id','$siteid')", $sqlParser->conn); + mysqli_query($sqlParser->conn, "REPLACE INTO $dbase.`" . $table_prefix . "system_settings` (setting_name,setting_value) VALUES('site_id','$siteid')"); } } } +// Reset database for installation of demo-site +if ($installData && $moduleSQLDataFile && $moduleSQLResetFile) { + echo "

                        " . $_lang['resetting_database']; + $sqlParser->process($moduleSQLResetFile); + // display database results + if ($sqlParser->installFailed == true) { + $errors += 1; + echo "" . $_lang['database_alerts'] . "

                        "; + echo "

                        " . $_lang['setup_couldnt_install'] . "

                        "; + echo "

                        " . $_lang['installation_error_occured'] . "

                        "; + for ($i = 0; $i < count($sqlParser->mysqlErrors); $i++) { + echo "" . $sqlParser->mysqlErrors[$i]["error"] . "" . $_lang['during_execution_of_sql'] . "" . strip_tags($sqlParser->mysqlErrors[$i]["sql"]) . ".


                        "; + } + echo "

                        "; + echo "

                        " . $_lang['some_tables_not_updated'] . "

                        "; + return; + } else { + echo "".$_lang['ok']."

                        "; + } +} // Install Templates if (isset ($_POST['template']) || $installData) { @@ -373,11 +306,12 @@ function startCMSSession(){ foreach ($moduleTemplates as $k=>$moduleTemplate) { $installSample = in_array('sample', $moduleTemplate[6]) && $installData == 1; if($installSample || in_array($k, $selTemplates)) { - $name = mysql_real_escape_string($moduleTemplate[0]); - $desc = mysql_real_escape_string($moduleTemplate[1]); - $category = mysql_real_escape_string($moduleTemplate[4]); - $locked = mysql_real_escape_string($moduleTemplate[5]); + $name = mysqli_real_escape_string($conn, $moduleTemplate[0]); + $desc = mysqli_real_escape_string($conn, $moduleTemplate[1]); + $category = mysqli_real_escape_string($conn, $moduleTemplate[4]); + $locked = mysqli_real_escape_string($conn, $moduleTemplate[5]); $filecontent = $moduleTemplate[3]; + $save_sql_id_as = $moduleTemplate[7]; // Nessecary for demo-site if (!file_exists($filecontent)) { echo "

                          $name: " . $_lang['unable_install_template'] . " '$filecontent' " . $_lang['not_found'] . ".

                        "; } else { @@ -386,24 +320,33 @@ function startCMSSession(){ // Strip the first comment up top $template = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', file_get_contents($filecontent), 1); - $template = mysql_real_escape_string($template); + $template = mysqli_real_escape_string($conn, $template); // See if the template already exists - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_templates` WHERE templatename='$name'", $sqlParser->conn); + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_templates` WHERE templatename='$name'"); - if (mysql_num_rows($rs)) { - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_templates` SET content='$template', description='$desc', category=$category_id, locked='$locked' WHERE templatename='$name';", $sqlParser->conn)) { + if (mysqli_num_rows($rs)) { + if (!mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_templates` SET content='$template', description='$desc', category=$category_id, locked='$locked' WHERE templatename='$name' LIMIT 1;")) { $errors += 1; - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } + if(!is_null($save_sql_id_as)) { + $sql_id = @mysqli_insert_id($sqlParser->conn); + if(!$sql_id) { + $idQuery = mysqli_fetch_assoc(mysqli_query($sqlParser->conn, "SELECT id FROM $dbase.`" . $table_prefix . "site_templates` WHERE templatename='$name' LIMIT 1;")); + $sql_id = $idQuery['id']; + } + $custom_placeholders[$save_sql_id_as] = $sql_id; + } echo "

                          $name: " . $_lang['upgraded'] . "

                        "; } else { - if (!@ mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_templates` (templatename,description,content,category,locked) VALUES('$name','$desc','$template',$category_id,'$locked');", $sqlParser->conn)) { + if (!@ mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_templates` (templatename,description,content,category,locked) VALUES('$name','$desc','$template',$category_id,'$locked');")) { $errors += 1; - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } + if(!is_null($save_sql_id_as)) $custom_placeholders[$save_sql_id_as] = @mysqli_insert_id($sqlParser->conn); echo "

                          $name: " . $_lang['installed'] . "

                        "; } } @@ -418,29 +361,29 @@ function startCMSSession(){ foreach ($moduleTVs as $k=>$moduleTV) { $installSample = in_array('sample', $moduleTV[12]) && $installData == 1; if($installSample || in_array($k, $selTVs)) { - $name = mysql_real_escape_string($moduleTV[0]); - $caption = mysql_real_escape_string($moduleTV[1]); - $desc = mysql_real_escape_string($moduleTV[2]); - $input_type = mysql_real_escape_string($moduleTV[3]); - $input_options = mysql_real_escape_string($moduleTV[4]); - $input_default = mysql_real_escape_string($moduleTV[5]); - $output_widget = mysql_real_escape_string($moduleTV[6]); - $output_widget_params = mysql_real_escape_string($moduleTV[7]); + $name = mysqli_real_escape_string($conn, $moduleTV[0]); + $caption = mysqli_real_escape_string($conn, $moduleTV[1]); + $desc = mysqli_real_escape_string($conn, $moduleTV[2]); + $input_type = mysqli_real_escape_string($conn, $moduleTV[3]); + $input_options = mysqli_real_escape_string($conn, $moduleTV[4]); + $input_default = mysqli_real_escape_string($conn, $moduleTV[5]); + $output_widget = mysqli_real_escape_string($conn, $moduleTV[6]); + $output_widget_params = mysqli_real_escape_string($conn, $moduleTV[7]); $filecontent = $moduleTV[8]; $assignments = $moduleTV[9]; - $category = mysql_real_escape_string($moduleTV[10]); - $locked = mysql_real_escape_string($moduleTV[11]); + $category = mysqli_real_escape_string($conn, $moduleTV[10]); + $locked = mysqli_real_escape_string($conn, $moduleTV[11]); // Create the category if it does not already exist $category = getCreateDbCategory($category, $sqlParser); - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_tmplvars` WHERE name='$name'", $sqlParser->conn); - if (mysql_num_rows($rs)) { + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_tmplvars` WHERE name='$name'"); + if (mysqli_num_rows($rs)) { $insert = true; - while($row = mysql_fetch_assoc($rs)) { - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_tmplvars` SET type='$input_type', caption='$caption', description='$desc', category=$category, locked=$locked, elements='$input_options', display='$output_widget', display_params='$output_widget_params', default_text='$input_default' WHERE id={$row['id']};", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + while($row = mysqli_fetch_assoc($rs)) { + if (!mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_tmplvars` SET type='$input_type', caption='$caption', description='$desc', category=$category, locked=$locked, elements='$input_options', display='$output_widget', display_params='$output_widget_params', default_text='$input_default' WHERE id={$row['id']};")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } $insert = false; @@ -449,8 +392,8 @@ function startCMSSession(){ } else { //$q = "INSERT INTO $dbase.`" . $table_prefix . "site_tmplvars` (type,name,caption,description,category,locked,elements,display,display_params,default_text) VALUES('$input_type','$name','$caption','$desc',(SELECT (CASE COUNT(*) WHEN 0 THEN 0 ELSE `id` END) `id` FROM $dbase.`" . $table_prefix . "categories` WHERE `category` = '$category'),$locked,'$input_options','$output_widget','$output_widget_params','$input_default');"; $q = "INSERT INTO $dbase.`" . $table_prefix . "site_tmplvars` (type,name,caption,description,category,locked,elements,display,display_params,default_text) VALUES('$input_type','$name','$caption','$desc',$category,$locked,'$input_options','$output_widget','$output_widget_params','$input_default');"; - if (!@ mysql_query($q, $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + if (!mysqli_query($sqlParser->conn, $q)) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['installed'] . "

                        "; @@ -462,19 +405,19 @@ function startCMSSession(){ if (count($assignments) > 0) { // remove existing tv -> template assignments - $ds=mysql_query("SELECT id FROM $dbase.`".$table_prefix."site_tmplvars` WHERE name='$name' AND description='$desc';",$sqlParser->conn); - $row = mysql_fetch_assoc($ds); + $ds=mysqli_query($sqlParser->conn, "SELECT id FROM $dbase.`".$table_prefix."site_tmplvars` WHERE name='$name' AND description='$desc';"); + $row = mysqli_fetch_assoc($ds); $id = $row["id"]; - mysql_query('DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_tmplvar_templates` WHERE tmplvarid = \'' . $id . '\''); + mysqli_query($sqlParser->conn, 'DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_tmplvar_templates` WHERE tmplvarid = \'' . $id . '\''); // add tv -> template assignments foreach ($assignments as $assignment) { - $template = mysql_real_escape_string($assignment); - $ts = mysql_query("SELECT id FROM $dbase.`".$table_prefix."site_templates` WHERE templatename='$template';",$sqlParser->conn); + $template = mysqli_real_escape_string($conn, $assignment); + $ts = mysqli_query($sqlParser->conn, "SELECT id FROM $dbase.`".$table_prefix."site_templates` WHERE templatename='$template';"); if ($ds && $ts) { - $tRow = mysql_fetch_assoc($ts); + $tRow = mysqli_fetch_assoc($ts); $templateId = $tRow['id']; - mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_tmplvar_templates` (tmplvarid, templateid) VALUES($id, $templateId)"); + mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_tmplvar_templates` (tmplvarid, templateid) VALUES($id, $templateId)"); } } } @@ -488,12 +431,13 @@ function startCMSSession(){ $selChunks = $_POST['chunk']; foreach ($moduleChunks as $k=>$moduleChunk) { $installSample = in_array('sample', $moduleChunk[5]) && $installData == 1; + $count_new_name = 0; if($installSample || in_array($k, $selChunks)) { - $name = mysql_real_escape_string($moduleChunk[0]); - $desc = mysql_real_escape_string($moduleChunk[1]); - $category = mysql_real_escape_string($moduleChunk[3]); - $overwrite = mysql_real_escape_string($moduleChunk[4]); + $name = mysqli_real_escape_string($conn, $moduleChunk[0]); + $desc = mysqli_real_escape_string($conn, $moduleChunk[1]); + $category = mysqli_real_escape_string($conn, $moduleChunk[3]); + $overwrite = mysqli_real_escape_string($conn, $moduleChunk[4]); $filecontent = $moduleChunk[2]; if (!file_exists($filecontent)) @@ -504,19 +448,19 @@ function startCMSSession(){ $category_id = getCreateDbCategory($category, $sqlParser); $chunk = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', file_get_contents($filecontent), 1); - $chunk = mysql_real_escape_string($chunk); - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_htmlsnippets` WHERE name='$name'", $sqlParser->conn); - $count_original_name = mysql_num_rows($rs); + $chunk = mysqli_real_escape_string($conn, $chunk); + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_htmlsnippets` WHERE name='$name'"); + $count_original_name = mysqli_num_rows($rs); if($overwrite == 'false') { $newname = $name . '-' . str_replace('.', '_', $modx_version); - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_htmlsnippets` WHERE name='$newname'", $sqlParser->conn); - $count_new_name = mysql_num_rows($rs); + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_htmlsnippets` WHERE name='$newname'"); + $count_new_name = mysqli_num_rows($rs); } $update = $count_original_name > 0 && $overwrite == 'true'; if ($update) { - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_htmlsnippets` SET snippet='$chunk', description='$desc', category=$category_id WHERE name='$name';", $sqlParser->conn)) { + if (!mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_htmlsnippets` SET snippet='$chunk', description='$desc', category=$category_id WHERE name='$name';")) { $errors += 1; - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['upgraded'] . "

                        "; @@ -524,9 +468,9 @@ function startCMSSession(){ if($count_original_name > 0 && $overwrite == 'false') { $name = $newname; } - if (!@ mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_htmlsnippets` (name,description,snippet,category) VALUES('$name','$desc','$chunk',$category_id);", $sqlParser->conn)) { + if (!mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_htmlsnippets` (name,description,snippet,category) VALUES('$name','$desc','$chunk',$category_id);")) { $errors += 1; - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['installed'] . "

                        "; @@ -543,13 +487,13 @@ function startCMSSession(){ foreach ($moduleModules as $k=>$moduleModule) { $installSample = in_array('sample', $moduleModule[7]) && $installData == 1; if($installSample || in_array($k, $selModules)) { - $name = mysql_real_escape_string($moduleModule[0]); - $desc = mysql_real_escape_string($moduleModule[1]); + $name = mysqli_real_escape_string($conn, $moduleModule[0]); + $desc = mysqli_real_escape_string($conn, $moduleModule[1]); $filecontent = $moduleModule[2]; - $properties = mysql_real_escape_string($moduleModule[3]); - $guid = mysql_real_escape_string($moduleModule[4]); - $shared = mysql_real_escape_string($moduleModule[5]); - $category = mysql_real_escape_string($moduleModule[6]); + $properties = mysqli_real_escape_string($conn, $moduleModule[3]); + $guid = mysqli_real_escape_string($conn, $moduleModule[4]); + $shared = mysqli_real_escape_string($conn, $moduleModule[5]); + $category = mysqli_real_escape_string($conn, $moduleModule[6]); if (!file_exists($filecontent)) echo "

                          $name: " . $_lang['unable_install_module'] . " '$filecontent' " . $_lang['not_found'] . ".

                        "; else { @@ -558,21 +502,20 @@ function startCMSSession(){ $category = getCreateDbCategory($category, $sqlParser); $module = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent), 2)); - // remove installer docblock - $module = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $module, 1); - $module = mysql_real_escape_string($module); - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_modules` WHERE name='$name'", $sqlParser->conn); - if (mysql_num_rows($rs)) { - $row = mysql_fetch_assoc($rs); - $props = propUpdate($properties,mysql_real_escape_string($row['properties'])); - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_modules` SET modulecode='$module', description='$desc', properties='$props', enable_sharedparams='$shared' WHERE name='$name';", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + // $module = removeDocblock($module, 'module'); // Modules have no fileBinding, keep docblock for info-tab + $module = mysqli_real_escape_string($conn, $module); + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_modules` WHERE name='$name'"); + if (mysqli_num_rows($rs)) { + $row = mysqli_fetch_assoc($rs); + $props = propUpdate($properties,mysqli_real_escape_string($conn, $row['properties'])); + if (!mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_modules` SET modulecode='$module', description='$desc', properties='$props', enable_sharedparams='$shared' WHERE name='$name';")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['upgraded'] . "

                        "; } else { - if (!@ mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_modules` (name,description,modulecode,properties,guid,enable_sharedparams,category) VALUES('$name','$desc','$module','$properties','$guid','$shared', $category);", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + if (!mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_modules` (name,description,modulecode,properties,guid,enable_sharedparams,category) VALUES('$name','$desc','$module','$properties','$guid','$shared', $category);")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['installed'] . "

                        "; @@ -589,18 +532,18 @@ function startCMSSession(){ foreach ($modulePlugins as $k=>$modulePlugin) { $installSample = in_array('sample', $modulePlugin[8]) && $installData == 1; if($installSample || in_array($k, $selPlugs)) { - $name = mysql_real_escape_string($modulePlugin[0]); - $desc = mysql_real_escape_string($modulePlugin[1]); + $name = mysqli_real_escape_string($conn, $modulePlugin[0]); + $desc = mysqli_real_escape_string($conn, $modulePlugin[1]); $filecontent = $modulePlugin[2]; - $properties = mysql_real_escape_string($modulePlugin[3]); + $properties = mysqli_real_escape_string($conn, $modulePlugin[3]); $events = explode(",", $modulePlugin[4]); - $guid = mysql_real_escape_string($modulePlugin[5]); - $category = mysql_real_escape_string($modulePlugin[6]); + $guid = mysqli_real_escape_string($conn, $modulePlugin[5]); + $category = mysqli_real_escape_string($conn, $modulePlugin[6]); $leg_names = ''; $disabled = $modulePlugin[9]; if(array_key_exists(7, $modulePlugin)) { // parse comma-separated legacy names and prepare them for sql IN clause - $leg_names = "'" . implode("','", preg_split('/\s*,\s*/', mysql_real_escape_string($modulePlugin[7]))) . "'"; + $leg_names = "'" . implode("','", preg_split('/\s*,\s*/', mysqli_real_escape_string($conn, $modulePlugin[7]))) . "'"; } if (!file_exists($filecontent)) echo "

                          $name: " . $_lang['unable_install_plugin'] . " '$filecontent' " . $_lang['not_found'] . ".

                        "; @@ -609,58 +552,57 @@ function startCMSSession(){ // disable legacy versions based on legacy_names provided if(!empty($leg_names)) { $update_query = "UPDATE $dbase.`" . $table_prefix . "site_plugins` SET disabled='1' WHERE name IN ($leg_names);"; - $rs = mysql_query($update_query, $sqlParser->conn); + $rs = mysqli_query($sqlParser->conn, $update_query); } // Create the category if it does not already exist $category = getCreateDbCategory($category, $sqlParser); $plugin = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent), 2)); - // remove installer docblock - $plugin = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $plugin, 1); - $plugin = mysql_real_escape_string($plugin); - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_plugins` WHERE name='$name'", $sqlParser->conn); - if (mysql_num_rows($rs)) { + $plugin = removeDocblock($plugin, 'plugin'); + $plugin = mysqli_real_escape_string($conn, $plugin); + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_plugins` WHERE name='$name'"); + if (mysqli_num_rows($rs)) { $insert = true; - while($row = mysql_fetch_assoc($rs)) { - $props = propUpdate($properties,mysql_real_escape_string($row['properties'])); + while($row = mysqli_fetch_assoc($rs)) { + $props = propUpdate($properties,mysqli_real_escape_string($conn, $row['properties'])); if($row['description'] == $desc){ - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_plugins` SET plugincode='$plugin', description='$desc', properties='$props' WHERE id={$row['id']};", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + if (! mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_plugins` SET plugincode='$plugin', description='$desc', properties='$props' WHERE id={$row['id']};")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } $insert = false; } else { - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_plugins` SET disabled='1' WHERE id={$row['id']};", $sqlParser->conn)) { - echo "

                        ".mysql_error()."

                        "; + if (!mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_plugins` SET disabled='1' WHERE id={$row['id']};")) { + echo "

                        ".mysqli_error($sqlParser->conn)."

                        "; return; } } } if($insert === true) { - if(!@mysql_query("INSERT INTO $dbase.`".$table_prefix."site_plugins` (name,description,plugincode,properties,moduleguid,disabled,category) VALUES('$name','$desc','$plugin','$properties','$guid','0',$category);",$sqlParser->conn)) { - echo "

                        ".mysql_error()."

                        "; + if(!mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`".$table_prefix."site_plugins` (name,description,plugincode,properties,moduleguid,disabled,category) VALUES('$name','$desc','$plugin','$properties','$guid','0',$category);")) { + echo "

                        ".mysqli_error($sqlParser->conn)."

                        "; return; } } echo "

                          $name: " . $_lang['upgraded'] . "

                        "; } else { - if (!@ mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_plugins` (name,description,plugincode,properties,moduleguid,category,disabled) VALUES('$name','$desc','$plugin','$properties','$guid',$category,$disabled);", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + if (!mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_plugins` (name,description,plugincode,properties,moduleguid,category,disabled) VALUES('$name','$desc','$plugin','$properties','$guid',$category,$disabled);")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['installed'] . "

                        "; } // add system events if (count($events) > 0) { - $ds=mysql_query("SELECT id FROM $dbase.`".$table_prefix."site_plugins` WHERE name='$name' AND description='$desc';",$sqlParser->conn); + $ds=mysqli_query($sqlParser->conn, "SELECT id FROM $dbase.`".$table_prefix."site_plugins` WHERE name='$name' AND description='$desc';"); if ($ds) { - $row = mysql_fetch_assoc($ds); + $row = mysqli_fetch_assoc($ds); $id = $row["id"]; // remove existing events - mysql_query('DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_plugin_events` WHERE pluginid = \'' . $id . '\''); + mysqli_query($sqlParser->conn, 'DELETE FROM ' . $dbase . '.`' . $table_prefix . 'site_plugin_events` WHERE pluginid = \'' . $id . '\''); // add new events - mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_plugin_events` (pluginid, evtid) SELECT '$id' as 'pluginid',se.id as 'evtid' FROM $dbase.`" . $table_prefix . "system_eventnames` se WHERE name IN ('" . implode("','", $events) . "')"); + mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_plugin_events` (pluginid, evtid) SELECT '$id' as 'pluginid',se.id as 'evtid' FROM $dbase.`" . $table_prefix . "system_eventnames` se WHERE name IN ('" . implode("','", $events) . "')"); } } } @@ -675,11 +617,11 @@ function startCMSSession(){ foreach ($moduleSnippets as $k=>$moduleSnippet) { $installSample = in_array('sample', $moduleSnippet[5]) && $installData == 1; if($installSample || in_array($k, $selSnips)) { - $name = mysql_real_escape_string($moduleSnippet[0]); - $desc = mysql_real_escape_string($moduleSnippet[1]); + $name = mysqli_real_escape_string($conn, $moduleSnippet[0]); + $desc = mysqli_real_escape_string($conn, $moduleSnippet[1]); $filecontent = $moduleSnippet[2]; - $properties = mysql_real_escape_string($moduleSnippet[3]); - $category = mysql_real_escape_string($moduleSnippet[4]); + $properties = mysqli_real_escape_string($conn, $moduleSnippet[3]); + $category = mysqli_real_escape_string($conn, $moduleSnippet[4]); if (!file_exists($filecontent)) echo "

                          $name: " . $_lang['unable_install_snippet'] . " '$filecontent' " . $_lang['not_found'] . ".

                        "; else { @@ -688,21 +630,20 @@ function startCMSSession(){ $category = getCreateDbCategory($category, $sqlParser); $snippet = end(preg_split("/(\/\/)?\s*\<\?php/", file_get_contents($filecontent))); - // remove installer docblock - $snippet = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $snippet, 1); - $snippet = mysql_real_escape_string($snippet); - $rs = mysql_query("SELECT * FROM $dbase.`" . $table_prefix . "site_snippets` WHERE name='$name'", $sqlParser->conn); - if (mysql_num_rows($rs)) { - $row = mysql_fetch_assoc($rs); - $props = propUpdate($properties,mysql_real_escape_string($row['properties'])); - if (!@ mysql_query("UPDATE $dbase.`" . $table_prefix . "site_snippets` SET snippet='$snippet', description='$desc', properties='$props' WHERE name='$name';", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + $snippet = removeDocblock($snippet, 'snippet'); + $snippet = mysqli_real_escape_string($conn, $snippet); + $rs = mysqli_query($sqlParser->conn, "SELECT * FROM $dbase.`" . $table_prefix . "site_snippets` WHERE name='$name'"); + if (mysqli_num_rows($rs)) { + $row = mysqli_fetch_assoc($rs); + $props = propUpdate($properties,mysqli_real_escape_string($conn, $row['properties'])); + if (!mysqli_query($sqlParser->conn, "UPDATE $dbase.`" . $table_prefix . "site_snippets` SET snippet='$snippet', description='$desc', properties='$props' WHERE name='$name';")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['upgraded'] . "

                        "; } else { - if (!@ mysql_query("INSERT INTO $dbase.`" . $table_prefix . "site_snippets` (name,description,snippet,properties,category) VALUES('$name','$desc','$snippet','$properties',$category);", $sqlParser->conn)) { - echo "

                        " . mysql_error() . "

                        "; + if (!mysqli_query($sqlParser->conn, "INSERT INTO $dbase.`" . $table_prefix . "site_snippets` (name,description,snippet,properties,category) VALUES('$name','$desc','$snippet','$properties',$category);")) { + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } echo "

                          $name: " . $_lang['installed'] . "

                        "; @@ -712,7 +653,7 @@ function startCMSSession(){ } } -// install data +// Install demo-site if ($installData && $moduleSQLDataFile) { echo "

                        " . $_lang['installing_demo_site']; $sqlParser->process($moduleSQLDataFile); @@ -729,52 +670,59 @@ function startCMSSession(){ echo "

                        " . $_lang['some_tables_not_updated'] . "

                        "; return; } else { + $sql = sprintf("SELECT id FROM `%ssite_templates` WHERE templatename='MODX startup - Bootstrap'", $sqlParser->prefix); + $rs = mysqli_query($sqlParser->conn, $sql); + if(mysqli_num_rows($rs)) { + $row = mysqli_fetch_assoc($rs); + $sql = sprintf('UPDATE `%ssite_content` SET template=%s WHERE template=4', $sqlParser->prefix, $row['id']); + mysqli_query($sqlParser->conn, $sql); + } echo "".$_lang['ok']."

                        "; } } // Install Dependencies foreach ($moduleDependencies as $dependency) { - $ds = @mysql_query('SELECT id, guid FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_modules` WHERE name="' . $dependency['module'] . '"', $sqlParser->conn); + $ds = mysqli_query($sqlParser->conn, 'SELECT id, guid FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_modules` WHERE name="' . $dependency['module'] . '"'); if (!$ds) { - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } else { - $row = @mysql_fetch_assoc($ds); + $row = mysqli_fetch_assoc($ds); $moduleId = $row["id"]; $moduleGuid = $row["guid"]; } // get extra id - $ds = @mysql_query('SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE ' . $dependency['column'] . '="' . $dependency['name'] . '"', $sqlParser->conn); + $ds = mysqli_query($sqlParser->conn, 'SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE ' . $dependency['column'] . '="' . $dependency['name'] . '"'); if (!$ds) { - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } else { - $row = @mysql_fetch_assoc($ds); + $row = mysqli_fetch_assoc($ds); $extraId = $row["id"]; } // setup extra as module dependency - $ds = @mysql_query('SELECT module FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type'] . ' LIMIT 1', $sqlParser->conn); + $ds = mysqli_query($sqlParser->conn, 'SELECT module FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type'] . ' LIMIT 1'); if (!$ds) { - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } else { - if (@mysql_num_rows($ds) === 0) { - @mysql_query('INSERT INTO ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` (module, resource, type) VALUES(' . $moduleId . ',' . $extraId . ',' . $dependency['type'] . ')', $sqlParser->conn); + if (mysqli_num_rows($ds) === 0) { + mysqli_query($sqlParser->conn, 'INSERT INTO ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` (module, resource, type) VALUES(' . $moduleId . ',' . $extraId . ',' . $dependency['type'] . ')'); echo '

                          ' . $dependency['module'] . ' Module: ' . $_lang['depedency_create'] . '

                        '; } else { - @mysql_query('UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` SET module = ' . $moduleId . ', resource = ' . $extraId . ', type = ' . $dependency['type'] . ' WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type'], $sqlParser->conn); + mysqli_query($sqlParser->conn, 'UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_module_depobj` SET module = ' . $moduleId . ', resource = ' . $extraId . ', type = ' . $dependency['type'] . ' WHERE module=' . $moduleId . ' AND resource=' . $extraId . ' AND type=' . $dependency['type']); echo '

                          ' . $dependency['module'] . ' Module: ' . $_lang['depedency_update'] . '

                        '; } if ($dependency['type'] == 30 || $dependency['type'] == 40) { // set extra guid for plugins and snippets - $ds = @mysql_query('SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE id=' . $extraId . ' LIMIT 1', $sqlParser->conn); + $ds = mysqli_query($sqlParser->conn, 'SELECT id FROM ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` WHERE id=' . $extraId . ' LIMIT 1'); if (!$ds) { - echo "

                        " . mysql_error() . "

                        "; + echo "

                        " . mysqli_error($sqlParser->conn) . "

                        "; return; } else { - if (@mysql_num_rows($ds) != 0) { - @mysql_query('UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` SET moduleguid = ' . $moduleGuid . ' WHERE id=' . $extraId, $sqlParser->conn); + if (mysqli_num_rows($ds) != 0) { + mysqli_query($sqlParser->conn, 'UPDATE ' . $dbase . '`' . $sqlParser->prefix . 'site_' . $dependency['table'] . '` SET moduleguid = ' . $moduleGuid . ' WHERE id=' . $extraId); echo '

                          ' . $dependency['name'] . ': ' . $_lang['guid_set'] . '

                        '; } } @@ -790,7 +738,7 @@ function startCMSSession(){ define('MODX_API_MODE', true); define('MODX_BASE_PATH', $base_path); if (!defined('MODX_MANAGER_PATH')) define('MODX_MANAGER_PATH', $base_path.MGR_DIR.'/'); -$database_type = 'mysql'; +$database_type = 'mysqli'; // initiate a new document parser include_once('../'.MGR_DIR.'/includes/document.parser.class.inc.php'); $modx = new DocumentParser; @@ -807,7 +755,7 @@ function startCMSSession(){ $chmodSuccess = @chmod('../assets/cache/sitePublishing.idx.php', 0600); // remove any locks on the manager functions so initial manager login is not blocked -mysql_query("TRUNCATE TABLE `".$table_prefix."active_users`"); +mysqli_query($conn, "TRUNCATE TABLE `".$table_prefix."active_users`"); // close db connection $sqlParser->close(); @@ -833,6 +781,7 @@ function propUpdate($new,$old){ $returnArr = array(); $newArr = explode("&",$new); $oldArr = explode("&",$old); + $return = ''; foreach ($newArr as $k => $v) { if(!empty($v)){ @@ -864,17 +813,46 @@ function getCreateDbCategory($category, $sqlParser) { $table_prefix = $sqlParser->prefix; $category_id = 0; if(!empty($category)) { - $category = mysql_real_escape_string($category); - $rs = mysql_query("SELECT id FROM $dbase.`".$table_prefix."categories` WHERE category = '".$category."'"); - if(mysql_num_rows($rs) && ($row = mysql_fetch_assoc($rs))) { + $category = mysqli_real_escape_string($sqlParser->conn, $category); + $rs = mysqli_query($sqlParser->conn, "SELECT id FROM $dbase.`".$table_prefix."categories` WHERE category = '".$category."'"); + if(mysqli_num_rows($rs) && ($row = mysqli_fetch_assoc($rs))) { $category_id = $row['id']; } else { $q = "INSERT INTO $dbase.`".$table_prefix."categories` (`category`) VALUES ('{$category}');"; - $rs = mysql_query($q, $sqlParser->conn); + $rs = mysqli_query($sqlParser->conn, $q); if($rs) { - $category_id = mysql_insert_id($sqlParser->conn); + $category_id = mysqli_insert_id($sqlParser->conn); } } } return $category_id; } + +// Remove installer Docblock only from components using plugin FileSource / fileBinding +function removeDocblock($code, $type) { + + $cleaned = preg_replace("/^.*?\/\*\*.*?\*\/\s+/s", '', $code, 1); + + // Procedure taken from plugin.filesource.php + switch($type) { + case 'snippet': + $elm_name = 'snippets'; + $include = 'return require'; + $count = 47; + break; + + case 'plugin': + $elm_name = 'plugins'; + $include = 'require'; + $count = 39; + break; + + default: + return $cleaned; + }; + if(substr(trim($cleaned),0,$count) == $include.' MODX_BASE_PATH.\'assets/'.$elm_name.'/') + return $cleaned; + + // fileBinding not found - return code incl docblock + return $code; +} diff --git a/install/lang.php b/install/lang.php index d6844626f6..e09f20ed34 100644 --- a/install/lang.php +++ b/install/lang.php @@ -13,18 +13,44 @@ $_lang = array (); #default fallback language file - english -require_once("lang/english.inc.php"); - $install_language = "english"; +$_langFiles= array ( + "en" => "english", + "bg" => "bulgarian", + "cs" => "czech", + "da" => "danish", + "fi" => "finnish-utf8", + "fr" => "francais-utf8", + "de" => "german", + "he" => "hebrew", + "it" => "italian", + "ja" => "japanese-utf8", + "nl" => "nederlands-utf8", + "no" => "norwegian", + "fa" => "persian", + "pl" => "polish-utf8", + "pt" => "portuguese-br-utf8", +// "pt" => "portuguese", + "ru" => "russian-UTF8", + "es" => "spanish-utf8", + "sv" => "svenska" +); +$_langISO6391 = substr($_SERVER["HTTP_ACCEPT_LANGUAGE"],0,2); +if (!empty($_langFiles[$_langISO6391])) $install_language = $_langFiles[$_langISO6391]; + + if (isset($_POST['language']) && !stristr($_POST['language'],"..")) { $install_language = $_POST['language']; } else { if (isset($_GET['language']) && !stristr($_GET['language'],"..")) $install_language = $_GET['language']; } +# load language file +require_once("lang/english.inc.php"); // As fallback +require_once("lang/".$install_language.".inc.php"); -$manager_language = "english"; +$manager_language = $install_language; if (isset($_POST['managerlanguage']) && !stristr($_POST['managerlanguage'],"..")) { $manager_language = $_POST['managerlanguage']; @@ -33,10 +59,6 @@ $manager_language = $_GET['managerlanguage']; } -# load language file -if($install_language!="english" && file_exists("lang/".$install_language.".inc.php")) { - include_once "lang/".$install_language.".inc.php"; -} foreach($_lang as $k=>$v) { if(strpos($v,'[+MGR_DIR+]')!==false) diff --git a/install/lang/bulgarian.inc.php b/install/lang/bulgarian.inc.php index 8a4470bb3a..c408e297bf 100644 --- a/install/lang/bulgarian.inc.php +++ b/install/lang/bulgarian.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author MODX Team - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Bulgarian @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Тази конфигурация прави сайта ви много по-уязвим към Cross Site Scripting (XSS) атаки. Трябва да говорите с вашия доставчик за забраняване на тази настройка, което става обикновено по един от трите начина: модифициране на основния php.ini файл, добавяне на правила в .htaccess файла в основната директория (root) на вашата MODX инсталация, или добавяне на собствен php.ini във всяка директория на вашата инсталация, за да препокрие основния файл. Въпреки, това ще можете да инсталирате MODX, но се считайте за предупредени.'; $_lang["checking_sessions"] = 'Проверка дали сесиите са правилно конфигурирани: '; $_lang["checking_table_prefix"] = 'Проверка на префикса на таблицата `'; +$_lang["choose_language"] = 'Изберете език'; $_lang["chunks"] = 'Чънкове'; $_lang["config_permissions_note"] = 'За нови Linux/Unix инсталации, моля, създайте празен файл с име config.inc.php в директорията [+MGR_DIR+]/includes/ и задайте права на файла 0666.'; $_lang["connection_screen_collation"] = 'Колация:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'bg'; $_lang["loading"] = 'Зареждане...'; $_lang["modules"] = 'Модули'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Management Framework (CMF) проект. Всички права запазени. MODX е лицензиран под GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Management Framework (CMF) проект. Всички права запазени. MODX е лицензиран под GNU GPL.'; $_lang["modx_footer2"] = 'MODX е свободен софтуер. Бъдете креативни и свикнете да работите с MODX. Имайте предвид, че ако решите да правите промени и да предоставяте копие от вашия модифициран MODX, изходния код трябва да е свободен!'; $_lang["modx_install"] = 'MODX » Инсталиране'; $_lang["modx_requires_php"] = ', и MODX върви на PHP [+min_version+] или по-висока'; diff --git a/install/lang/czech.inc.php b/install/lang/czech.inc.php index 5d2246324d..5a3205945e 100644 --- a/install/lang/czech.inc.php +++ b/install/lang/czech.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author modxcms.cz - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Czech @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Díky tomtuto nastavení je Váš portál mnohem více náchylný k hackerským útokům typu Cross Site Scripting (XSS). Měli by jste pohovořit se svým poskytovatelem hostingu a zjistit co je možné udělat k deaktivaci tohoto nastavení.'; $_lang["checking_sessions"] = 'Kontrola zda jsou správně nakonfigurovány session: '; $_lang["checking_table_prefix"] = 'Kontrola prefixů tabulek `'; +$_lang["choose_language"] = 'Zvolte jazyk'; $_lang["chunks"] = 'Chunky'; $_lang["config_permissions_note"] = 'V nových instalacích Linux/Unix vytvořte prázdná soubor s názvem config.inc.php v adresáři /[+MGR_DIR+]/includes/ s atributy 0666.'; $_lang["connection_screen_collation"] = 'Porovnání:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'cs'; $_lang["loading"] = 'Načítám...'; $_lang["modules"] = 'Moduly'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Management Framework (CMF) projekt. Všechna práva vyhrazena. MODX je licencován pod GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Management Framework (CMF) projekt. Všechna práva vyhrazena. MODX je licencován pod GNU GPL.'; $_lang["modx_footer2"] = 'MODX je free software. Doporučujeme Vám být kreativní a používat MODX jak jen uznáte za vhodné. Pouze se ujistěte, že pokud uděláte nějaké změny a budete chtít upravený MODX distribuovat dál, musí být zdrojové kódy volně přístupné!!'; $_lang["modx_install"] = 'MODX » Instalace'; $_lang["modx_requires_php"] = ', a MODX vyžaduje PHP [+min_version+] nebo novější'; diff --git a/install/lang/danish.inc.php b/install/lang/danish.inc.php index 6fc7d5de86..8e97e30f91 100644 --- a/install/lang/danish.inc.php +++ b/install/lang/danish.inc.php @@ -4,7 +4,7 @@ * * @author Henrik Nielsen * @author Mads Vestmar - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Danish @@ -51,6 +51,7 @@ $_lang["checking_registerglobals_note"] = 'Denne konfiguration medfører at dit website kan blive mere udsat for Cross Site Scripting (XSS) angreb end normalt. Du bør bede dit hosting firma om at ændre denne indstilling. Normalt kan det gøres på een af følgende måder: Ændrer den globale php.ini fil, tilføje regler til en .htaccess fil i websitets rod, eller oprette specielle php.ini filer i alle mapperne i denne installation - og dem er der mange af! Du kan stadigvæk installere MODX, men nu er du blevet advaret!'; $_lang["checking_sessions"] = 'Kontrollerer om sessions er korrekt konfigureret: '; $_lang["checking_table_prefix"] = 'Kontrollerer database tabellernes præfiks `'; +$_lang["choose_language"] = 'Vælg sprog'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Ved nyinstallation under Linux eller Unix, skal du oprette en tom fil, med navnet config.inc.php i /[+MGR_DIR+]/includes/ mappen, med filrettighederne indstillet til 0666.'; $_lang["connection_screen_collation"] = 'Collation:'; @@ -114,7 +115,7 @@ $_lang["language_code"] = 'da'; $_lang["loading"] = 'Indlæser...'; $_lang["modules"] = 'Moduler'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Mangement Framework (CMF) projektet. Alle rettigheder forbeholdes. MODX er licenseret af GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Mangement Framework (CMF) projektet. Alle rettigheder forbeholdes. MODX er licenseret af GNU GPL.'; $_lang["modx_footer2"] = 'MODX er gratis software. Vi opfordrer dig til at være kreativ og at du bruger MODX som det passer dig. Men vær opmærksom på at hvis du ændrer i MODX og vælger at offenliggøre ændringerne skal kildekoden være tilgængelige og gratis for alle!'; $_lang["modx_install"] = 'MODX » Installation'; $_lang["modx_requires_php"] = ', og MODX kræver PHP [+min_version+] eller nyere'; diff --git a/install/lang/english.inc.php b/install/lang/english.inc.php index aba62d80e8..0b06660517 100644 --- a/install/lang/english.inc.php +++ b/install/lang/english.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author davaeron - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language English @@ -35,6 +35,8 @@ $_lang["cant_write_config_file_note"] = 'Once that\'s been done, you can log into MODX Admin by pointing your browser at YourSiteName.com/[+MGR_DIR+]/.'; $_lang["checkbox_select_options"] = 'Checkbox select options:'; $_lang["checking_if_cache_exist"] = 'Checking if /assets/cache and /assets/cache/rss directories exist: '; +$_lang["checking_iconv"] = 'Checking if extension iconv is available: '; +$_lang["checking_iconv_note"] = 'It is important to install/enable extension iconv. Please speak to your host if you don´t know how to enable it.'; $_lang["checking_if_cache_file_writable"] = 'Checking if /assets/cache/siteCache.idx.php file is writable: '; $_lang["checking_if_cache_file2_writable"] = 'Checking if /assets/cache/sitePublishing.idx.php file is writable: '; $_lang["checking_if_cache_writable"] = 'Checking if /assets/cache and /assets/cache/rss directories are writable: '; @@ -50,6 +52,7 @@ $_lang["checking_registerglobals_note"] = 'This configuration makes your site much more susceptible to Cross Site Scripting (XSS) attacks. You should speak to your host about disabling this setting, usually by one of three ways: modifying the global php.ini file, adding rules to a .htaccess file in the root of your MODX install, or adding custom php.ini override files in every directory on your install (and there\'s a lot of them). You will still be able to install MODX, but consider yourself warned.'; $_lang["checking_sessions"] = 'Checking if sessions are properly configured: '; $_lang["checking_table_prefix"] = 'Checking table prefix `'; +$_lang["choose_language"] = 'Choose language'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'For new Linux/Unix installs, please create a blank file named config.inc.php in the /[+MGR_DIR+]/includes/ directory with file permissions set to 0666.'; $_lang["connection_screen_collation"] = 'Collation:'; @@ -113,7 +116,7 @@ $_lang["language_code"] = 'en'; $_lang["loading"] = 'Loading...'; $_lang["modules"] = 'Modules'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; $_lang["modx_footer2"] = 'MODX is free software. We encourage you to be creative and make use of MODX in any way you see fit. Just make sure that if you do make changes and decide to redistribute your modified MODX, that you keep the source code free!'; $_lang["modx_install"] = 'MODX » Install'; $_lang["modx_requires_php"] = ', and MODX requires PHP [+min_version+] or later'; @@ -131,11 +134,14 @@ $_lang["please_correct_errors"] = '. Please correct the errors'; $_lang["plugins"] = 'Plugins'; $_lang["preinstall_validation"] = 'Pre-install validation'; +$_lang["recommend_collation"] = 'utf8_general_ci'; +$_lang["recommend_collations_order"] = 'utf8mb4_unicode_ci,utf8mb4_general_ci,utf8_unicode_ci,utf8_general_ci,utf8mb4_bin,utf8_bin,utf8mb4_unicode_520_ci,utf8_unicode_520_ci,utf8_general_mysql500_ci'; $_lang["recommend_setting_change_title"] = 'Recommended Setting Change'; $_lang["recommend_setting_change_validate_referer_confirmation"] = 'Setting change: Validate HTTP_REFERER headers?'; $_lang["recommend_setting_change_validate_referer_description"] = 'Your site is not configured to validate the HTTP_REFERER of incoming requests to the Manager. We strongly recommend enabling this setting to reduce the risk of a CSRF (Cross Site Request Forgery) attack.'; $_lang["remove_install_folder_auto"] = 'Remove the install folder and files from my website
                         (This operation requires delete permission to the granted to the install folder).'; $_lang["remove_install_folder_manual"] = 'Please remember to remove the "install" folder before you log into the Content Manager.'; +$_lang["resetting_database"] = 'Resetting database for demo-site: '; $_lang["retry"] = 'Retry'; $_lang["running_database_updates"] = 'Running database updates: '; $_lang["sample_web_site"] = 'Sample Web Site'; diff --git a/install/lang/finnish-utf8.inc.php b/install/lang/finnish-utf8.inc.php index df4d8effd2..f7e1c142bb 100644 --- a/install/lang/finnish-utf8.inc.php +++ b/install/lang/finnish-utf8.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author Anssi Rajakallio, Kari Söderholm - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Finnish @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Tämä asetus tekee sivustostasi alttiimman XSS hyökkäyksille (Cross Site Scripting). Sinun tulisi kehottaa palveluntarjoajaasi kytkemään tämä asetus pois käytöstä. Useimmiten tämän asetuksen voi kytkeä pois muokkaamalla palvelimen php.ini tiedostoa. Jos se ei ole mahdollista, voit koittaa kytkeä sen pois .htaccess tiedostossa, joka sijaitsee MODX asennuksen juuri kansiossa. Jos tämäkään ei ole mahdollista, voit viimeisenä vaihtoehtona koittaa asettaa jokaiseen MODX asennuksen sisällä olevaan kansioon muokatun php.ini tiedoston, joka yliajaa asetukset palvelimen jaetusta php.ini tiedostosta, mutta kansioita MODX asennuksessa on tosin huomattava määrä. Voit kuitenkin asentaa MODX järjestelmän tästä asetuksesta huolimatta, mutta sinua on varoitettu.'; $_lang["checking_sessions"] = 'Tarkistetaan onko palvelinistunnot asetettu toimimaan oikein: '; $_lang["checking_table_prefix"] = 'Tarkistetaan tietokannan taulujen etuliite `'; +$_lang["choose_language"] = 'Valitse kieli'; $_lang["chunks"] = 'HTML-palaset'; $_lang["config_permissions_note"] = 'Jos olet asentamassa järjestelmää Linux / Unix palvelimeen, luo kansioon [+MGR_DIR+]/includes/ tyhjä tiedosto nimeltä config.inc.php ja aseta tiedostoon 0666 oikeudet.'; $_lang["connection_screen_collation"] = 'Merkistö:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'fi'; $_lang["loading"] = 'Ladataan...'; $_lang["modules"] = 'Moduulit'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Mangement Framework (CMF). Kaikki oikeudet pidätetään. MODX on lisensoitu GNU GPL lisenssillä.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Mangement Framework (CMF). Kaikki oikeudet pidätetään. MODX on lisensoitu GNU GPL lisenssillä.'; $_lang["modx_footer2"] = 'MODX on ilmainen ohjelmisto. Kehoitamme sinua olemaan luova ja käyttämään MODX järjestelmää siten, miten sinä sen parhaaksi näet. Jos teet muutoksia järjestelmään ja päätät jakaa muokattua MODX järjestelmää eteenpäin, muista pitää muokattu lähdekoodi vapaasti saatavilla!'; $_lang["modx_install"] = 'MODX » Asennus'; $_lang["modx_requires_php"] = ', ja MODX vaatii PHP:stä version [+min_version+] tai uudemman'; diff --git a/install/lang/francais-utf8.inc.php b/install/lang/francais-utf8.inc.php index 16ac798faf..43bd2d9892 100644 --- a/install/lang/francais-utf8.inc.php +++ b/install/lang/francais-utf8.inc.php @@ -5,7 +5,7 @@ * @author Grégory Pakosz (guardian) * @author Coroico * @author Jean-Christophe Brebion (Fairytree) - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language French @@ -52,6 +52,7 @@ $_lang["checking_registerglobals_note"] = 'Cette configuration rend votre site vulnérable aux attaques XCSS (Cross Site Scripting). Consultez votre hébergeur sur la marche à suivre pour désactiver ce réglage, en général par l\'une de ces trois solutions: modifier le fichier php.ini global, ajouter des règles dans le fichier .htaccess à la racine de votre installation MODX, ou ajouter un fichier php.ini personnalisé pour neutraliser l\'ensemble des fichiers dans chacun des répertoires de votre installation (et il y en a beaucoup). Vous pouvez continuez l\installation de MODX, mais considérez vous comme averti.'; $_lang["checking_sessions"] = 'Vérifications des paramètres de sessions: '; $_lang["checking_table_prefix"] = 'Vérification du préfixe de table `'; +$_lang["choose_language"] = 'Choisissez la langue'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Lors des installations Linux/Unix, veuillez créer un nouveau fichier nommé config.inc.php dans le répertoire [+MGR_DIR+]/includes/ avec les droits d\'accès 0666.'; $_lang["connection_screen_collation"] = 'Collation:'; @@ -115,7 +116,7 @@ $_lang["language_code"] = 'fr'; $_lang["loading"] = 'Chargement...'; $_lang["modules"] = 'Modules'; -$_lang["modx_footer1"] = '© 2005-2014 le projet de Framework de Gestion de Contenu MODX. Tous droits réservés. MODX est publié sous la licence GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] le projet de Framework de Gestion de Contenu MODX. Tous droits réservés. MODX est publié sous la licence GNU GPL.'; $_lang["modx_footer2"] = 'MODX est un logiciel libre. Nous vous encourageons à être créatifs et à utiliser MODX comme bon il vous semble. Votre seule obligation est de redistribuer sous licence libre votre version modifiée de MODX.'; $_lang["modx_install"] = 'MODX » Installation'; $_lang["modx_requires_php"] = ', alors que MODX requiert PHP [+min_version+] ou supérieure'; diff --git a/install/lang/german.inc.php b/install/lang/german.inc.php index 489b7fcab6..ef01a6c007 100644 --- a/install/lang/german.inc.php +++ b/install/lang/german.inc.php @@ -4,7 +4,7 @@ * * @author Marc Hinse * @author Bogdan Günther - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language German @@ -51,6 +51,7 @@ $_lang["checking_registerglobals_note"] = 'Diese Konfiguration macht Ihre Website angreifbarer für Cross Site Scripting (XSS) Attacken. Sie sollten mit Ihrem Provider sprechen, ob diese Einstellung geändert werden kann. Es gibt normalerweise drei Möglichkeiten: Ändern der globalen php.ini, Hinzufügen von Regeln zu der .htaccess-Datei im Root-Verzeichnis der MODX-Installation oder durch Hinzufügen einer angepassten php.ini in jedem Verzeichnis Ihrer MODX-Installation. Sie können MODX trotzdem installieren, aber Sie müssen sich den möglichen Sicherheitsrisiken bewusst sein.'; $_lang["checking_sessions"] = 'Überprüfe ob die Sessions sauber definiert sind: '; $_lang["checking_table_prefix"] = 'Überprüfe Tabellen-Präfix `'; +$_lang["choose_language"] = 'Sprache auswählen'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Für neue Linux/Unix Installationen bitte eine leere Datei config.inc.php im Ordner /[+MGR_DIR+]/includes/ anlegen und die Dateirechte auf 0666 setzen.'; $_lang["connection_screen_collation"] = 'Kollation:'; @@ -114,7 +115,7 @@ $_lang["language_code"] = 'de'; $_lang["loading"] = 'Laden …'; $_lang["modules"] = 'Module'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Mangement Framework (CMF) Projekt. Alle Rechte vorbehalten. MODX ist unter der GNU GPL lizenziert.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Management Framework (CMF) Projekt. Alle Rechte vorbehalten. MODX ist lizensiert gemäß GNU GPL.'; $_lang["modx_footer2"] = 'MODX ist freie Software. Wir ermutigen Sie, kreativ zu sein und MODX so zu nutzen wie es Ihnen am besten passt. Stellen Sie nur sicher, dass Sie bei Veränderungen des Quellcodes und der Weiterverbreitung der modifizierten MODX-Version den Quelltext frei zugänglich belassen!'; $_lang["modx_install"] = 'MODX » Installation'; $_lang["modx_requires_php"] = ', und MODx benötigt PHP [+min_version+] oder höher'; @@ -132,11 +133,14 @@ $_lang["please_correct_errors"] = '. Bitte beheben Sie die Fehler'; $_lang["plugins"] = 'Plugins'; $_lang["preinstall_validation"] = 'Prüfung vor der Installation'; +$_lang["recommend_collation"] = 'utf8_general_ci'; +$_lang["recommend_collations_order"] = 'utf8mb4_unicode_ci,utf8mb4_general_ci,utf8_unicode_ci,utf8_general_ci,utf8mb4_bin,utf8_bin,utf8mb4_unicode_520_ci,utf8_unicode_520_ci,utf8_general_mysql500_ci'; $_lang["recommend_setting_change_title"] = 'Empfohlene Änderung der Konfiguration'; $_lang["recommend_setting_change_validate_referer_confirmation"] = 'Einstellung aktivieren: HTTP_REFERER-Header überprüfen?'; $_lang["recommend_setting_change_validate_referer_description"] = 'Ihre Seite überprüft momentan nicht die HTTP_REFERER von eingehenden Requests. Wir empfehlen dringend, diese Einstellung vorzunehmen, um das Risiko von CSFR-Attacken (Cross Site Request Forgery) zu reduzieren.'; $_lang["remove_install_folder_auto"] = 'Installationsordner löschen
                        (Dies erfordert die entsprechenden Zugriffsrechte um den Ordner löschen zu können).'; $_lang["remove_install_folder_manual"] = 'Bitte denken Sie daran den Ordner install zu löschen bevor Sie sich im MODX-Manager anmelden.'; +$_lang["resetting_database"] = 'Datenbank wurde für die Demoseite zurückgesetzt:'; $_lang["retry"] = 'Erneut versuchen'; $_lang["running_database_updates"] = 'Führe Datenbank-Updates durch: '; $_lang["sample_web_site"] = 'Beispiel-Website'; diff --git a/install/lang/hebrew.inc.php b/install/lang/hebrew.inc.php old mode 100755 new mode 100644 index a45823f506..e5a1fa3aa6 --- a/install/lang/hebrew.inc.php +++ b/install/lang/hebrew.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author MODX Team - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Hebrew @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'This configuration makes your site much more susceptible to Cross Site Scripting (XSS) attacks. You should speak to your host about disabling this setting, usually by one of three ways: modifying the global php.ini file, adding rules to a .htaccess file in the root of your MODX install, or adding custom php.ini override files in every directory on your install (and there\'s a lot of them). You will still be able to install MODX, but consider yourself warned.'; $_lang["checking_sessions"] = 'Checking if sessions are properly configured: '; $_lang["checking_table_prefix"] = 'Checking table prefix `'; +$_lang["choose_language"] = 'בחר שפה'; $_lang["chunks"] = 'מיני תבניות'; $_lang["config_permissions_note"] = 'For new Linux/Unix installs, please create a blank file named config.inc.php in the /[+MGR_DIR+]/includes/ directory with file permissions set to 0666.'; $_lang["connection_screen_collation"] = 'אוסף נתונים:'; @@ -113,10 +114,10 @@ $_lang["language_code"] = 'he'; $_lang["loading"] = 'טוען...'; $_lang["modules"] = 'מודולים'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; $_lang["modx_footer2"] = 'MODX is free software. We encourage you to be creative and make use of MODX in any way you see fit. Just make sure that if you do make changes and decide to redistribute your modified MODX, that you keep the source code free!'; $_lang["modx_install"] = 'MODX » Install'; -$_lang["modx_requires_php"] = ', and MODX requires PHP 5.0.0 or later'; +$_lang["modx_requires_php"] = ', and MODX requires PHP [+min_version+] or later'; $_lang["mysql_5051"] = ' MySQL server version is 5.0.51!'; $_lang["mysql_5051_warning"] = 'There are known issues with MySQL 5.0.51. It is recommended that you upgrade before continuing.'; $_lang["mysql_version_is"] = ' Your MySQL version is: '; diff --git a/install/lang/italian.inc.php b/install/lang/italian.inc.php index 8e4721e928..72d51a91c9 100644 --- a/install/lang/italian.inc.php +++ b/install/lang/italian.inc.php @@ -2,11 +2,11 @@ /** * MODX Installer language file * - * @author luigif - * @version 1.0.14 + * @author davaeron + * @version 1.0.15 * @date 2014/02/24 * - * @language Italian + * @language English * @package modx * @subpackage installer * @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Con questa configurazione il vostro sito potrebbe essere vittima di attacchi Cross Site Scripting (XSS). Per disabilitare Register_Globals ci sono diverse alternative: modificare il file php.ini globale, modificare il file .htaccess nella root della vostra installazione MODX, oppure aggiungere dei files php.ini in ogni directory della vostra installazione MODX (ma ci sono molte directories). Potete continuare con l\'installazione, ma non dite che non vi abbiamo avvertito.'; $_lang["checking_sessions"] = 'Controllo se le sessioni sono configurate correttamente: '; $_lang["checking_table_prefix"] = 'Controllo il prefisso per le tabelle `'; +$_lang["choose_language"] = 'Scegli la lingua'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Per nuove installazioni su Linux/Unix, vi preghiamo di creare un file vuoto config.inc.php nella directory /[+MGR_DIR+]/includes/ con i permessi di scrittura a 0666.'; $_lang["connection_screen_collation"] = 'Collation:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'en'; $_lang["loading"] = 'Sto caricando...'; $_lang["modules"] = 'Moduli'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Mangement Framework (CMF). Tutti i diritti riservati. MODX è distribuito sotto licenza GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Management Framework (CMF) project. Tutti i diritti riservati. MODX è sotto la licenza GNU GPL.'; $_lang["modx_footer2"] = 'MODX è un software libero. Vi incoraggiamo ad essere creativi e usare MODX come vi pare. Se fate delle modifiche al codice e decidete di ridistribuire il vostro MODX modificato, dovrete distribuire gratuitamente il codice sorgente!'; $_lang["modx_install"] = 'MODX » Installazione'; $_lang["modx_requires_php"] = ', e MODx richiede PHP [+min_version+] o successivo'; @@ -131,11 +132,14 @@ $_lang["please_correct_errors"] = '. Vi preghiamo di correggere gli errori'; $_lang["plugins"] = 'Plugins'; $_lang["preinstall_validation"] = 'Verifica Pre-Installazione'; +$_lang["recommend_collation"] = 'utf8_general_ci'; +$_lang["recommend_collations_order"] = 'utf8mb4_unicode_ci,utf8mb4_general_ci,utf8_unicode_ci,utf8_general_ci,utf8mb4_bin,utf8_bin,utf8mb4_unicode_520_ci,utf8_unicode_520_ci,utf8_general_mysql500_ci'; $_lang["recommend_setting_change_title"] = 'Modifiche consigliate alla Configurazione'; $_lang["recommend_setting_change_validate_referer_confirmation"] = 'Modifica: Validazione degli headers HTTP_REFERER?'; $_lang["recommend_setting_change_validate_referer_description"] = 'Il vostro sito non è stato configurato per validare gli headers HTTP_REFERER degli accessi al Manager. Vi raccomandiamo di abilitare questa impostazione per ridurre il rischio di attacchi CSRF (Cross Site Request Forgery).'; $_lang["remove_install_folder_auto"] = 'Rimuovere la cartella install e i files in essa contenuti
                         (Questa operazione richiede i permessi di scrittura nella cartella di installazione).'; $_lang["remove_install_folder_manual"] = 'Ricordatevi di cancellare la cartella "install" prima di accedere a MODX.'; +$_lang["resetting_database"] = 'Reset del database per il sito-demo:'; $_lang["retry"] = 'Riprova'; $_lang["running_database_updates"] = 'Esecuzione degli aggiornamenti del database: '; $_lang["sample_web_site"] = 'Sito Web di Esempio'; diff --git a/install/lang/japanese-utf8.inc.php b/install/lang/japanese-utf8.inc.php old mode 100755 new mode 100644 index f070f58040..4bf14bc29a --- a/install/lang/japanese-utf8.inc.php +++ b/install/lang/japanese-utf8.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author MEGU, yamamoto, TxO - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Japanese @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Register_Globalsがオンになっていると、サイトはXSS攻撃の対象としてさらされるため非常に危険です。特に必要がなければオフにしてください。.htaccessに「php_flag register_globals off」と記述を加えることでオフに設定できます。'; $_lang["checking_sessions"] = 'セッション情報が正常に構成されるかどうか: '; $_lang["checking_table_prefix"] = 'Tableプリフィックスの設定 `'; +$_lang["choose_language"] = '言語を選択してください'; $_lang["chunks"] = 'チャンク'; $_lang["config_permissions_note"] = 'For new Linux/Unix installs, please create a blank file named config.inc.php in the /[+MGR_DIR+]/includes/ directory with file permissions set to 0666.'; $_lang["connection_screen_collation"] = '照合順序(エンコード指定含む):
                        ※utf8_general_ciを
                        おすすめします'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'ja'; $_lang["loading"] = '処理中...'; $_lang["modules"] = 'モジュール'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; $_lang["modx_footer2"] = 'MODX is free software. We encourage you to be creative and make use of MODX in any way you see fit. Just make sure that if you do make changes and decide to redistribute your modified MODX, that you keep the source code free!'; $_lang["modx_install"] = 'MODX » インストール'; $_lang["modx_requires_php"] = 'MODXの動作にはPHP [+min_version+]以上が必要です。'; @@ -131,6 +132,8 @@ $_lang["please_correct_errors"] = 'があります。'; $_lang["plugins"] = 'プラグイン'; $_lang["preinstall_validation"] = 'インストール前の状態確認'; +$_lang['recommend_collation'] = 'utf8mb4_general_ci'; +$_lang['recommend_collations_order'] = 'utf8mb4_general_ci,utf8_general_ci,utf8mb4_bin,utf8_bin'; $_lang["recommend_setting_change_title"] = 'Recommended Setting Change'; $_lang["recommend_setting_change_validate_referer_confirmation"] = 'Setting change: Validate HTTP_REFERER headers?'; $_lang["recommend_setting_change_validate_referer_description"] = 'Your site is not configured to validate the HTTP_REFERER of incoming requests to the Manager. We strongly recommend enabling this setting to reduce the risk of a CSRF (Cross Site Request Forgery) attack.'; diff --git a/install/lang/nederlands-utf8.inc.php b/install/lang/nederlands-utf8.inc.php index 70c2855f26..b7c63541e8 100644 --- a/install/lang/nederlands-utf8.inc.php +++ b/install/lang/nederlands-utf8.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author davaeron - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language English @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Deze configuratie maakt uw site veel gevoeliger voor Site Scripting (XSS) Cross aanvallen. U moet uw host informeren over het uitschakelen van deze instelling, meestal door een van de drie manieren: het wijzigen van de globale php.ini bestand, het toevoegen van regels om een .htaccess bestand in de root van je MODX installatie, of het toevoegen van aangepaste php.ini bestanden. Elke map op uw installatie (en er zijn er veel van hen). U zult nog steeds in staat zijn om MODX installeren, maar beschouw jezelf gewaarschuwd.'; $_lang["checking_sessions"] = 'Controleren of sessies correct zijn geconfigureerd:'; $_lang["checking_table_prefix"] = 'Controleren tabel voorvoegsel `'; +$_lang["choose_language"] = 'Selecteer een taal'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Voor nieuwe Linux / Unix installaties, maak een leeg bestand met de naam config.inc.php in de /[+ MGR_DIR +]/includes/ map met permissie ingesteld op 0666.'; $_lang["connection_screen_collation"] = 'Collatie:'; @@ -113,10 +114,10 @@ $_lang["language_code"] = 'en'; $_lang["loading"] = 'Laden...'; $_lang["modules"] = 'Modules'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Management Framework (CMF) project. Alle rechten voorbehouden. MODX is gelicenseerd onder de GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Management Framework (CMF) project. Alle rechten voorbehouden. MODX is gelicenseerd onder GNU GPL.'; $_lang["modx_footer2"] = 'MODX is gratis software. Wij raden u aan om creatief te zijn en gebruik te maken van MODX op je eigen manier. Maar zorg ervoor dat als je wijzigingen uitvoert, dat je de broncode vrij houdt!'; $_lang["modx_install"] = 'MODX » Installeren'; -$_lang["modx_requires_php"] = ', en MODX heeft PHP [+min_version+] of nieuwer nodig'; +$_lang["modx_requires_php"] = ', en MODX heeft minimaal PHP [+min_version+] versie nodig'; $_lang["mysql_5051"] = 'MySQL server versie is 5.0.51!'; $_lang["mysql_5051_warning"] = 'Er zijn bekende problemen met MySQL 5.0.51. Het wordt aanbevolen dat u een upgrade uitvoert voordat u verder gaat.'; $_lang["mysql_version_is"] = 'Uw MySQL versie is:'; @@ -131,11 +132,14 @@ $_lang["please_correct_errors"] = '. Corrigeer de fouten'; $_lang["plugins"] = 'Plug-ins'; $_lang["preinstall_validation"] = 'Valideren van de installatie'; +$_lang["recommend_collation"] = 'utf8_general_ci'; +$_lang["recommend_collations_order"] = 'utf8mb4_unicode_ci,utf8mb4_general_ci,utf8_unicode_ci,utf8_general_ci,utf8mb4_bin,utf8_bin,utf8mb4_unicode_520_ci,utf8_unicode_520_ci,utf8_general_mysql500_ci'; $_lang["recommend_setting_change_title"] = 'Aanbevolen instelling wijziging'; $_lang["recommend_setting_change_validate_referer_confirmation"] = 'Instelling veranderen: Validatie HTTP_REFERER headers?'; $_lang["recommend_setting_change_validate_referer_description"] = 'Uw website is niet geconfigureerd om de HTTP_REFERER te valideren voor inkomende Manager aanvragen. We raden aan deze instelling aan te zetten om CSRF (Cross Site Request Forgery) aanvallen te minimaliseren.'; $_lang["remove_install_folder_auto"] = 'Verwijder de installatie map van mijn website
                        (Vereist toestemming).'; $_lang["remove_install_folder_manual"] = 'Vergeet niet om de "installatie" map verwijderen voor u inlogt in de Content Manager.'; +$_lang["resetting_database"] = 'Reset/herstel de database voor de Demo Site'; $_lang["retry"] = 'Probeer opnieuw'; $_lang["running_database_updates"] = 'Database updates uitvoeren:'; $_lang["sample_web_site"] = 'Demo website'; diff --git a/install/lang/norwegian.inc.php b/install/lang/norwegian.inc.php index 0c30443983..24d7b7e826 100644 --- a/install/lang/norwegian.inc.php +++ b/install/lang/norwegian.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author Bjørn Erik Sandbakk (Sylvaticus) - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Norsk @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Denne konfigurasjonen gjør din nettside betydelig mer sårbar for webkodeinjeksjon (Cross Site Scripting - XSS). Du bør kontakte din webhost og be om å få inaktivert denne instillingen. Vanligvis lar det seg gjøre på tre følgende måter: modifisering av den globale php.ini-filen, tillegg av regler i en .htaccess-fil i roten på din MODX-installasjon eller gjennom å legge til en tilpasset php.ini-fil (som tilsidesetter den globale filen) i alla kataloger i din installasjon (og det finns masser av dem). Du kan fremdeles installere MODX, men ta denne advarselen på alvor.'; $_lang["checking_sessions"] = 'Kontrollerer at sesjoner er korrekt konfigurert: '; $_lang["checking_table_prefix"] = 'Kontrollerer tabellprefixet `'; +$_lang["choose_language"] = 'Velg språk'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'For nye installasjoner i Linux/Unix-miljø må en tom fil med navnet config.inc.php opprettes i katalogen [+MGR_DIR+]/includes/ med skriverrettighetene satt til 666.'; $_lang["connection_screen_collation"] = 'Kollasjonering:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'no'; $_lang["loading"] = 'Henter...'; $_lang["modules"] = 'Moduler'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Mangement Framework (CMF) project. Med enerett. MODX er lisensiert under GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Mangement Framework (CMF) project. Med enerett. MODX er lisensiert under GNU GPL.'; $_lang["modx_footer2"] = 'MODX er fri programvare. Vi oppmuntrer deg til å være kreativ og bruke MODX på hvilken måte du vil. Vær bare nøye med å beholde kildekoden fri om du gjør endringer og siden velger å omdistribuere din modifiserte versjon av MODX.'; $_lang["modx_install"] = 'MODX » Installasjon'; $_lang["modx_requires_php"] = ', og MODX krever PHP [+min_version+] eller senere.'; diff --git a/install/lang/persian.inc.php b/install/lang/persian.inc.php index 59cf61d4a5..c886bd6795 100644 --- a/install/lang/persian.inc.php +++ b/install/lang/persian.inc.php @@ -4,7 +4,7 @@ * * @author Mohsen Zare (MotSmart), MotSmart@Gmail.com, www.modxcms.ir * @author AliAqua - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Persian @@ -51,6 +51,7 @@ $_lang["checking_registerglobals_note"] = 'این تنظیمات سایت شما رو در مقابل حملات (XSS) نقوذ پذیر کرده. شما بایستی از طریق هاستینگ خود این تنظیمات را غیر فعال کنید, به طور معمول از سه طریق امکان پذیر است: از طریق اعمال تغییر در فایل php.ini, ویرایش قوانین و دستورات در فایل .htaccess روت و پرونده نصب مادایکس و یا اضافه کردن دستور اضافه در فایل جدید خود تحت نام php.ini که داخل همه ی پرونده های نصب شده مادایکس خود قرار می دهیدو. شما همچنان قادر به نصب مادایکس هستید, به هر حال ما به شما تذکرات لازم را دادیم!'; $_lang["checking_sessions"] = 'بازخوانی sessions مطابق تنظیمات درست: '; $_lang["checking_table_prefix"] = 'مرور پیشوند جدول `'; +$_lang["choose_language"] = 'انتخاب زبان'; $_lang["chunks"] = 'چانکها'; $_lang["config_permissions_note"] = 'برای نصب جدید روی لینوکس/یونیکس, لطفا یک فایل خالی به نام config.inc.php در دایرکتوری [+MGR_DIR+]/includes/ ایجاد کنید که سطح دسترسی به آن 0666 تنظیم شده باشد.'; $_lang["connection_screen_collation"] = 'تطبیق(Collation):'; @@ -114,7 +115,7 @@ $_lang["language_code"] = 'fa'; $_lang["loading"] = 'در حال بارگذاری ...'; $_lang["modules"] = 'ماژولها'; -$_lang["modx_footer1"] = '© 2005-2014 کلیه ی حقوق برای پروژه ی سیستم مدیریت محتوای مادایکس محفوظ است. مادایکس تحت لیسانس GNU-GPL است.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] کلیه ی حقوق برای پروژه ی سیستم مدیریت محتوای مادایکس محفوظ است. مادایکس تحت لیسانس GNU-GPL است.'; $_lang["modx_footer2"] = 'مادایکس نرم افزاری رایگان است، ما شما را تشویق به خلاقیت می کنیم، شما می توانید به منظور هماهنگی مادایکس با نیازهای خود، هر تغییری را در آن اعمال کنید. چنانچه قصد ارائه نسخه مادایکس ویژه خود به دیگران را دارید حتما آن را رایگان ارائه کنید!'; $_lang["modx_install"] = 'MODX » برنامه نصب'; $_lang["modx_requires_php"] = ', است, و مادایکس به نسخه ی PHP [+min_version+] و یا بالاتر نیاز دار'; diff --git a/install/lang/polish-utf8.inc.php b/install/lang/polish-utf8.inc.php index 372c86d94b..18f71538fa 100644 --- a/install/lang/polish-utf8.inc.php +++ b/install/lang/polish-utf8.inc.php @@ -2,11 +2,9 @@ /** * MODX Installer language file * - * @author Radosław Włodkowski, radoslaw@wlodkowski.net - * @author Natalia Łubniewska - * @author Witek Galecki - * @version 1.0.14 - * @date 2014/02/24 + * @version 1.2.1 + * @date 2017/01/06 + * @author The MODX Project Team * * @language Polish * @package modx @@ -52,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Taka konfiguracja powoduje, że Twoja strona jest znacznie bardziej podatna na ataki typu Cross Site Scripting (XSS). Powinieneś wyłączyć tę opcję na serwerze. Są trzy podstawowe sposoby, aby to zrobić: można zmodyfikować główny plik php.ini, dodać regułę w pliku .htaccess znajdującym się w głównym folderze, w którym zainstalowany został MODX lub dodać własny plik php.ini w każdym z folderów MODXa (a jest ich sporo) z ustawieniami nadpisującymi ustawienia globalne. Jeśli nie zmienisz tych ustawień, będziesz mógł w dalszym ciągu zainstalować MODXa - pamiętaj jednak, że zostałeś ostrzeżony!'; $_lang["checking_sessions"] = 'Sprawdzanie, czy obsługa sesji jest skonfigurowana poprawnie: '; $_lang["checking_table_prefix"] = 'Sprawdzanie prefiksu tabeli `'; +$_lang["choose_language"] = 'Wybierz język'; $_lang["chunks"] = 'Chunki'; $_lang["config_permissions_note"] = 'Dla nowych instalacji na systemach Linux/Unix utwórz pusty plik o nazwie config.inc.php w folderze /[+MGR_DIR+]/includes/ i ustaw dla niego prawa dostępu na 0666.'; $_lang["connection_screen_collation"] = 'System porównań (collation): '; @@ -115,7 +114,7 @@ $_lang["language_code"] = 'pl'; $_lang["loading"] = 'Ładowanie...'; $_lang["modules"] = 'Moduły'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Management Framework (CMF) project. Wszystkie prawa zastrzeżone. MODX jest objęty licencją GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Management Framework (CMF) project. Wszystkie prawa zastrzeżone. MODX działa pod licencją GNU GPL.'; $_lang["modx_footer2"] = 'MODX jest wolnym oprogramowaniem. Zachęcamy Cię, abyś kreatywnie wykorzystywał MODXa w jakikolwiek sposób, który uznasz za przydatny. Prosimy jedynie, abyś pozostawił kod źródłowy otwartym i darmowym w przypadku gdy zdecydujesz się na redystrybucję MODXa w zmodyfikowanej przez siebie wersji!'; $_lang["modx_install"] = 'MODX » Instalacja'; $_lang["modx_requires_php"] = ', MODx wymaga PHP w wersji [+min_version+] lub nowszej'; @@ -133,11 +132,14 @@ $_lang["please_correct_errors"] = '. Proszę popraw błędy'; $_lang["plugins"] = 'Pluginy'; $_lang["preinstall_validation"] = 'Weryfikacja pre-instalacyjna'; +$_lang["recommend_collation"] = 'utf8_general_ci'; +$_lang["recommend_collations_order"] = 'utf8mb4_unicode_ci,utf8mb4_general_ci,utf8_unicode_ci,utf8_general_ci,utf8mb4_bin,utf8_bin,utf8mb4_unicode_520_ci,utf8_unicode_520_ci,utf8_general_mysql500_ci'; $_lang["recommend_setting_change_title"] = 'Rekomendowana zmiana ustawień'; $_lang["recommend_setting_change_validate_referer_confirmation"] = 'Zmiana ustawienia: Weryfikuj nagłówki HTTP_REFERER?'; $_lang["recommend_setting_change_validate_referer_description"] = 'Strona nie została skonfigurowana aby weryfikować nagłówki HTTP_REFERER. Zalecamy włączenie tej opcji aby zmniejszyć ryzyko ataków CSRF (Cross Site Request Forgery).'; $_lang["remove_install_folder_auto"] = 'Usuń folder instalatora z zasobów mojej strony
                         (Ta operacja wymaga uprawnień do usuwania plików dla folderu instalatora).'; $_lang["remove_install_folder_manual"] = 'Pamiętaj aby usunąć folder "install" przed zalogowaniem się do Menedżera MODXa.'; +$_lang["resetting_database"] = 'Resetuj bazę danych do wersji demo:'; $_lang["retry"] = 'Spróbuj ponownie'; $_lang["running_database_updates"] = 'Wykonywanie aktualizacji bazy danych: '; $_lang["sample_web_site"] = 'Przykładowa strona internetowa'; diff --git a/install/lang/portuguese-br-utf8.inc.php b/install/lang/portuguese-br-utf8.inc.php index 175779f35b..3cfe1a7ea0 100644 --- a/install/lang/portuguese-br-utf8.inc.php +++ b/install/lang/portuguese-br-utf8.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author Daniel Miguel de Melo - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Português do Brasil @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Este script faz com que seu site seja muito mais propenso à ataques de Cross Site Scripting (XSS). Você deveria entrar em contato com seu Host para mudar esta configuração, geralmente há três modos de desabilitar: modificando o arquivo global php.ini, adicionando regras para um arquivo .htaccess na raiz da pasta da instalação do MODX, ou adicionando um php.ini sobre cada arquivo em cada pasta de sua instação (e tem um muitos deles). Ou você poderá instalar o MODX, mas considere-se avisado.'; $_lang["checking_sessions"] = 'Checando se as seções estão configuradas apropiadamente: '; $_lang["checking_table_prefix"] = 'Verificando Prefixo de Tabela `'; +$_lang["choose_language"] = 'Escolha o idioma'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Para novas instalações de Linux/Unix, crie um arquivo vazio chamado config.inc.php no diretório manager/includes/ com as permissões de 0666.'; $_lang["connection_screen_collation"] = 'Collation:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'pt'; $_lang["loading"] = 'Carregando...'; $_lang["modules"] = 'Modulos'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Management Framework (CMF) project. All rights reserved. MODX is licensed under the GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] o projeto MODX Content Mangement Framework (CMF). Todos os direitos reservados. MODX é licensiado pela GNU GPL.'; $_lang["modx_footer2"] = 'MODX é um software livre. Nós indicamos o uso do MODX do modo que for mais conveniente para você. Apenas, sempre que redistribuir versões modificadas do MODX incluir uma cópia original do código-fonte gratuitamente!'; $_lang["modx_install"] = 'MODX » Instalação'; $_lang["modx_requires_php"] = ', e o MODX requer PHP [+min_version+] ou mais recente'; diff --git a/install/lang/portuguese.inc.php b/install/lang/portuguese.inc.php index 6d381ed2a1..5f1e0518ff 100644 --- a/install/lang/portuguese.inc.php +++ b/install/lang/portuguese.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author davaeron - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language English @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Este script faz com que seu site seja muito mais propenso à ataques de Cross Site Scripting (XSS). Você deveria entrar em contato com seu Host para mudar esta configuração, geralmente há três modos de desabilitar: modificando o arquivo global php.ini, adicionando regras para um arquivo .htaccess na raiz da pasta da instalação do MODX, ou adicionando um php.ini sobre cada arquivo em cada pasta de sua instação (e tem um muitos deles). Ou você poderá instalar o MODX, mas considere-se avisado.'; $_lang["checking_sessions"] = 'Checando se as seções estão configuradas apropiadamente: '; $_lang["checking_table_prefix"] = 'Verificando Prefixo de Tabela `'; +$_lang["choose_language"] = 'Escolha o idioma'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Para novas instalações de Linux/Unix, crie um arquivo vazio chamado config.inc.php no diretório manager/includes/ com as permissões de 0666.'; $_lang["connection_screen_collation"] = 'Collation:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'pt'; $_lang["loading"] = 'Carregando...'; $_lang["modules"] = 'Modulos'; -$_lang["modx_footer1"] = '© 2005-2014 o projeto MODX Content Mangement Framework (CMF). Todos os direitos reservados. MODX é licensiado pela GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] o projeto MODX Content Mangement Framework (CMF). Todos os direitos reservados. MODX é licensiado pela GNU GPL.'; $_lang["modx_footer2"] = 'MODX é um software livre. Nós indicamos o uso do MODX do modo que for mais conveniente para você. Apenas, sempre que redistribuir versões modificadas do MODX incluir uma cópia original do código-fonte gratuitamente!'; $_lang["modx_install"] = 'MODX » Instalação'; $_lang["modx_requires_php"] = ', e o MODX requer PHP [+min_version+] ou mais recente'; diff --git a/install/lang/russian-UTF8.inc.php b/install/lang/russian-UTF8.inc.php index 8402a6d394..59a1cb2c01 100644 --- a/install/lang/russian-UTF8.inc.php +++ b/install/lang/russian-UTF8.inc.php @@ -5,7 +5,7 @@ * @author Pertsev Dmitriy * @author Safronovich Victor * @author Russian MODX Community - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Russian @@ -53,6 +53,7 @@ $_lang["checking_registerglobals_note"] = 'Конфигурация PHP делает ваш сайт более восприимчивым к XSS-атакам. Вы должны самостоятельно, или связавшись с администрацией хостинга, выключить Register_Globals. Обычно это делается одним из следующих путей: вносятся исправления в php.ini файл, добавляются правила в файл .htaccess, который находится в корне папки MODX, или добавлением своего php.ini в каждую папку внутри папки MODX (их очень много). Вы можете продолжить установку MODX, но обдумайте это предупреждение.'; $_lang["checking_sessions"] = 'Проверка настроек сессий: '; $_lang["checking_table_prefix"] = 'Проверка префикса таблиц `'; +$_lang["choose_language"] = 'Выберите язык'; $_lang["chunks"] = 'Чанки'; $_lang["config_permissions_note"] = 'При новой Linux/Unix установке, создайте пустой файл config.inc.php в папке /[+MGR_DIR+]/includes/ с правами 0666.'; $_lang["connection_screen_collation"] = 'Сопоставление:'; @@ -116,7 +117,7 @@ $_lang["language_code"] = 'ru'; $_lang["loading"] = 'Загружается...'; $_lang["modules"] = 'Модули'; -$_lang["modx_footer1"] = '© 2005-2014 MODX Content Mangement Framework (CMF) project. Все права защищены. MODX лицензирован GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] MODX Content Mangement Framework (CMF) project. Все права защищены. MODX лицензирован GNU GPL.'; $_lang["modx_footer2"] = 'MODX — свободное программное обеспечение. Мы поощряем вас быть творческими и использовать MODX как вы считаете целесообразным. Если вы внесете изменения и решите распространять ваш измененный вариант MODX, то должны сохранять и распространять исходный код бесплатно.'; $_lang["modx_install"] = 'MODX » Установка'; $_lang["modx_requires_php"] = ', а MODX необходим PHP [+min_version+] или более поздний'; diff --git a/install/lang/spanish-utf8.inc.php b/install/lang/spanish-utf8.inc.php index 0288660dcd..e355f4073e 100644 --- a/install/lang/spanish-utf8.inc.php +++ b/install/lang/spanish-utf8.inc.php @@ -3,7 +3,7 @@ * MODX Installer language file * * @author MODX Team - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Spanish @@ -50,6 +50,7 @@ $_lang["checking_registerglobals_note"] = 'Esta configuración hace tu sitio mucho más propenso a ataques de programas (Cross Site Scripting - XSS). Deberías hablar con tu proveedor de hospedaje para deshabilitar esta configuración, normalmente de una de estas tres maneras: modificando el archivo php.ini global, añadiendo reglas al archivo .htaccess en la raíz de tu instalación de MODX o añadiendo archivos personalizados de php.ini en cada directorio de tu instalación (y hay muchos de ellos). Todavía podrás instalar MODX, pero considérate advertido.'; $_lang["checking_sessions"] = 'Checando si las sesiones están apropiadamente configuradas: '; $_lang["checking_table_prefix"] = 'Checando el prefijo de las tablas `'; +$_lang["choose_language"] = 'Elige Lengua'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'Para instalaciones nuevas en servidores Linux/Unix, favpr de crear un archivo nuevo en blanco llamado config.inc.php en el directorio [+MGR_DIR+]/includes/ con los permisos de archivo configurados a 0666.'; $_lang["connection_screen_collation"] = 'Compaginación:'; @@ -113,7 +114,7 @@ $_lang["language_code"] = 'es'; $_lang["loading"] = 'Cargando...'; $_lang["modules"] = 'Módulos'; -$_lang["modx_footer1"] = '© 2005-2014 del proyecto de MODX. Todos los derechos reservados. MODX tiene licencia GPL de GNU.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] del proyecto de MODX Content Management Framework (CMF). Todos los derechos reservados. MODX tiene licencia GPL de GNU.'; $_lang["modx_footer2"] = 'MODX es software gratuito. Te invitamos a ser creativo y usarlo de cualquier manera que se te antoje. Sólo asegura que si haces cambios y decides distribuir una versión modificada de MODX que el código fuente siga siendo gratis.'; $_lang["modx_install"] = 'MODX » Instalar'; $_lang["modx_requires_php"] = ', y MODX requiere de PHP versión [+min_version+] o mayor'; diff --git a/install/lang/svenska.inc.php b/install/lang/svenska.inc.php index 7b992d245e..d1ce4ab88a 100644 --- a/install/lang/svenska.inc.php +++ b/install/lang/svenska.inc.php @@ -4,7 +4,7 @@ * * @author Pontus Ågren (Pont) * @author Thomas Djärv (Beryl) - * @version 1.0.14 + * @version 1.0.15 * @date 2014/02/24 * * @language Svenska @@ -51,6 +51,7 @@ $_lang["checking_registerglobals_note"] = 'Denna konfiguration gör din webbplats betydligt mer sårbar för attacker med webbkodsinjektion (Cross Site Scripting - XSS). Du bör kontakta din webbhost om att inaktivera denna inställning. Vanligen går det till på ett av följande tre sätt: modifiering av den globala php.ini-filen, tillägg av regler i en .htaccess-fil i roten på din MODX-installation eller genom att lägga till en anpassad php.ini-fil (som åsidosätter den globala filen) i alla kataloger i din installation (och det finns massor av dom). Du kan fortfarande installera MODX, men ta den här varningen på allvar.'; $_lang["checking_sessions"] = 'Kontrollerar att sessioner är korrekt konfigurerade: '; $_lang["checking_table_prefix"] = 'Kontrollerar tabellprefixet `'; +$_lang["choose_language"] = 'Välj språk'; $_lang["chunks"] = 'Chunks'; $_lang["config_permissions_note"] = 'För nya installationer i Linux/Unix-miljö måste en tom fil med namnet config.inc.php skapas i katalogen /[+MGR_DIR+]/includes/ med åtkomsträttigheterna satta till 0666.'; $_lang["connection_screen_collation"] = 'Kollationering:'; @@ -114,7 +115,7 @@ $_lang["language_code"] = 'sv'; $_lang["loading"] = 'Laddar...'; $_lang["modules"] = 'Moduler'; -$_lang["modx_footer1"] = '© 2005-2014 the MODX Content Mangement Framework (CMF) project. Med ensamrätt. MODX är licensierad under GNU GPL.'; +$_lang["modx_footer1"] = '© 2005-[+current_year+] the MODX Content Mangement Framework (CMF) project. Med ensamrätt. MODX är licensierad under GNU GPL.'; $_lang["modx_footer2"] = 'MODX är fri programvara. Vi uppmuntrar dig att vara kreativ och använda MODX på vilket sätt du vill. Vara bara noga med att bevara källkoden fri om du gör ändringar och sedan väljer att omdistribuera din modifierade version av MODX.'; $_lang["modx_install"] = 'MODX » Installation'; $_lang["modx_requires_php"] = ', och MODX kräver PHP [+min_version+] eller senare.'; diff --git a/install/not_installed.tpl b/install/not_installed.tpl new file mode 100644 index 0000000000..8359ea8803 --- /dev/null +++ b/install/not_installed.tpl @@ -0,0 +1,21 @@ + + + + +MODX is not installed! + + + + + +
                        +

                        MODX is not currently installed or the configuration file cannot be found.

                        +

                        Do you want to install now?

                        +
                        + \ No newline at end of file diff --git a/install/setup.data.reset.sql b/install/setup.data.reset.sql new file mode 100644 index 0000000000..e2a208386f --- /dev/null +++ b/install/setup.data.reset.sql @@ -0,0 +1,43 @@ +# MODX Database Script for New/Upgrade Installations +# +# Each sql command is separated by double lines + + +# +# Empty tables first +# + + +TRUNCATE TABLE `{PREFIX}site_keywords`; + +TRUNCATE TABLE `{PREFIX}keyword_xref`; + +TRUNCATE TABLE `{PREFIX}documentgroup_names`; + +TRUNCATE TABLE `{PREFIX}site_content`; + +TRUNCATE TABLE `{PREFIX}site_htmlsnippets`; + +TRUNCATE TABLE `{PREFIX}site_keywords`; + +TRUNCATE TABLE `{PREFIX}site_plugins`; + +TRUNCATE TABLE `{PREFIX}site_snippets`; + +TRUNCATE TABLE `{PREFIX}site_tmplvar_contentvalues`; + +TRUNCATE TABLE `{PREFIX}site_tmplvar_access`; + +TRUNCATE TABLE `{PREFIX}site_tmplvar_templates`; + +TRUNCATE TABLE `{PREFIX}site_tmplvars`; + +# TRUNCATE TABLE `{PREFIX}web_groups`; +# TRUNCATE TABLE `{PREFIX}web_user_attributes`; +# TRUNCATE TABLE `{PREFIX}web_users`; +# TRUNCATE TABLE `{PREFIX}webgroup_access`; +# TRUNCATE TABLE `{PREFIX}webgroup_names`; + +# Tables not existing at new installations +# TRUNCATE TABLE `{PREFIX}jot_content`; +# TRUNCATE TABLE `{PREFIX}jot_subscriptions`; \ No newline at end of file diff --git a/install/setup.data.sql b/install/setup.data.sql index b63e2fd239..eaac800fff 100644 --- a/install/setup.data.sql +++ b/install/setup.data.sql @@ -29,48 +29,43 @@ REPLACE INTO `{PREFIX}documentgroup_names` VALUES ('1','Site Admin Pages','0','0 # Dumping data for table `site_content` # +REPLACE INTO `{PREFIX}site_content` VALUES ('1','document','text/html','Home','Welcome to MODX','Introduction to MODX','index','','1','0','0','0','0','Create and do amazing things with MODX','

                        Install successful!

                        \n

                        You have successfully installed and configured MODX. We hope you find this site an adequate starting configuration for many small business, organization or personal websites; just change the template and content, and you\'ll be good to go! This site is preconfigured with a variety of options we hope are helpful, relevant and just plain cool for many marketing or personal sites:

                        \n
                          \n
                        • Simple Blog. When logged into your site, you\'ll be able to create new entries from the front end. This can also be turned into a News publishing or PR publishing system. View example blog
                        • \n
                        • Easy Comments. When logged into your site, your registered site users can comment on your posts. View example
                        • \n
                        • RSS Feeds. Your site visitors can stay up to date using your site feeds. View RSS feed
                        • \n
                        • Automatic User Registration. Those that wish to comment on blogs must first create an account. This comes pre-configured with a \"Captcha\" anti-robot registration feature. View registration form
                        • \n
                        • QuickEdit. When you\'re logged into the manager, you can edit a page directly from the front end! More about CMS features
                        • \n
                        • Integrated Site Search. Allows visitors to search only the pages you wish them to search. Uses Ajax to display results without loading a new page.
                        • \n
                        • Powerful Navigation Builder. Duplicate or build virtually any navigation system with our dynamic menu builder code. The menu above, for example. More about menu features
                        • \n
                        • Ajax ready. You\'re on your way to Web 2.0 and AJAX goodness. More about Ajax features
                        • \n
                        • Custom \"page not found (404)\" page. Help visitors who go astray to find what they\'re looking for. View 404 page
                        • \n
                        • Contact Us form. A highly configurable contact form you should customize to point to the right email address. Comes pre-configured to prevent mail-form-injection so your site does not become a source for spam. View form
                        • \n
                        • Newest documents list. Shows your visitor the most recently added pages (configurable).
                        • \n
                        • Customizable Content Manager. Preview uploaded images, hide or rename fields and lots more. See ManagerManager\'s documentation for details and instructions. Quick start: ManagerManager by default will look for \"rules\" in a Chunk named \"mm_rules\". Simply copy or rename the Chunk named \"mm_demo_rules\" to \"mm_rules\" and try it out!
                        • \n
                        • phpThumb. Examples to use phpThumb to crop images.
                        • \n
                        \n

                        Full documentation can be found on the official documentation site.

                        \n

                        To log into the MODX Control Panel and start customizing this site, point your browser to /manager/.

                        ','1','{BOOTSTRAP_SQL_ID}','0','1','1','1','1144904400','1','1378084284','0','0','0','0','0','Home','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('2','document','text/html','Blog','My Blog','','blog','','1','0','0','0','1','','[[Ditto? &parents=`2` &display=`2` &removeChunk=`Comments` &tpl=`ditto_blog` &paginate=`1` &extenders=`summary,dateFilter` &paginateAlwaysShowLinks=`1` &tagData=`documentTags`]]\n\n

                        Showing [+start+] - [+stop+] of [+total+] Articles

                        \n\n
                        [+previous+] [+pages+] [+next+]
                        \n\n
                         
                        \n\n[[Reflect? &config=`wordpress` &dittoSnippetParameters=`parents:2` &id=`wp` &getDocuments=`1`]]','1','{BOOTSTRAP_SQL_ID}','1','0','0','1','1144904400','1','1159818696','0','0','0','0','0','Blog','0','0','0','0','0','0','0','1'); -# Dumping data for table `modx_site_content` -# - -REPLACE INTO `{PREFIX}site_content` VALUES ('1','document','text/html','Home','Welcome to MODX','Introduction to MODX','index','','1','0','0','0','0','Create and do amazing things with MODX','

                        Install Successful!

                        \n

                        You have successfully installed and configured MODX. We hope you find this site an adequate starting configuration for many small business, organization or personal websites; just change the template and content, and you\'ll be good to go! This site is preconfigured with a variety of options we hope are helpful, relevant and just plain cool for many marketing or personal sites:

                        \n
                          \n
                        • Simple Blog. When logged into your site, you\'ll be able to create new entries from the front end. This can also be turned into a News publishing or PR publishing system. View example blog
                        • \n
                        • Easy Comments. When logged into your site, your registered site users can comment on your posts. View example
                        • \n
                        • RSS Feeds. Your site visitors can stay up to date using your site feeds. View RSS feed
                        • \n
                        • Automatic User Registration. Those that wish to comment on blogs must first create an account. This comes pre-configured with a \"Captcha\" anti-robot registration feature. View registration form
                        • \n
                        • QuickEdit. When you\'re logged into the manager, you can edit a page directly from the front end! More about CMS features
                        • \n
                        • Integrated Site Search. Allows visitors to search only the pages you wish them to search. Uses Ajax to display results without loading a new page.
                        • \n
                        • Powerful Navigation Builder. Duplicate or build virtually any navigation system with our dynamic menu builder code. The menu above, for example. More about menu features
                        • \n
                        • Mootools enabled. You\'re on your way to Web 2.0 and AJAX goodness. More about Ajax features
                        • \n
                        • Custom \"page not found (404)\" page. Help visitors who go astray to find what they\'re looking for. View 404 page
                        • \n
                        • Contact Us form. A highly configurable contact form you should customize to point to the right email address. Comes pre-configured to prevent mail-form-injection so your site does not become a source for spam. View form
                        • \n
                        • Newest documents list. Shows your visitor the most recently added pages (configurable).
                        • \n
                        • Customizable Content Manager. Preview uploaded images, hide or rename fields and lots more. See ManagerManager\'s documentation for details and instructions. Quick start: ManagerManager by default will look for \"rules\" in a Chunk named \"mm_rules\". Simply copy or rename the Chunk named \"mm_demo_rules\" to \"mm_rules\" and try it out!
                        • \n
                        \n

                        To log into the MODX Control Panel and start customizing this site, point your browser to [(site_manager_url)].

                        ','1','4','0','1','1','1','1144904400','1','1378084284','0','0','0','0','0','Home','0','0','0','0','0','0','0','1'); - -REPLACE INTO `{PREFIX}site_content` VALUES ('2','document','text/html','Blog','My Blog','','blog','','1','0','0','0','1','','[[Ditto? &parents=`2` &display=`2` &removeChunk=`Comments` &tpl=`ditto_blog` &paginate=`1` &extenders=`summary,dateFilter` &paginateAlwaysShowLinks=`1` &tagData=`documentTags`]]\n\n

                        Showing [+start+] - [+stop+] of [+total+] Articles

                        \n\n
                        [+previous+] [+pages+] [+next+]
                        \n\n
                         
                        \n\n[[Reflect? &config=`wordpress` &dittoSnippetParameters=`parents:2` &id=`wp` &getDocuments=`1`]]','1','4','1','0','0','1','1144904400','1','1159818696','0','0','0','0','0','Blog','0','0','0','0','0','0','0','1'); - -REPLACE INTO `{PREFIX}site_content` VALUES ('4','document','text/html','[*loginName*]','Login to Enable to Comments','','login','','1','0','0','0','0','','

                        In order to comment on blog entries, you must be a registered user of [(site_name)]. If you haven\'t already registered, you can request an account.

                        \n
                        [!WebLogin? &tpl=`WebLoginSideBar` &loginhomeid=`2`!]
                        ','1','4','9','0','0','1','1144904400','1','1144904400','0','0','0','0','0','[*loginName*]','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('4','document','text/html','[*loginName*]','Login to Enable to Comments','','login','','1','0','0','0','0','','

                        In order to comment on blog entries, you must be a registered user of [(site_name)]. If you haven\'t already registered, you can request an account.

                        \n
                        [!WebLogin? &tpl=`WebLogin_tplForm` &loginhomeid=`2`!]
                        ','1','{BOOTSTRAP_SQL_ID}','9','0','0','1','1144904400','1','1144904400','0','0','0','0','0','[*loginName*]','0','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('5','document','text/html','Request an Account','Sign Up for Full Site Privileges','','request-an-account','','1','0','0','0','0','','[[WebSignup? &tpl=`FormSignup` &groups=`Registered Users`]]','1','4','7','0','0','1','1144904400','1','1158320704','0','0','0','0','0','','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('5','document','text/html','Request an Account','Sign Up for Full Site Privileges','','request-an-account','','1','0','0','0','0','','[[WebSignup? &tpl=`FormSignup` &groups=`Registered Users`]]','1','{BOOTSTRAP_SQL_ID}','7','0','0','1','1144904400','1','1158320704','0','0','0','0','0','','0','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('6','document','text/html','Contact Us','Contact [(site_name)]','','contact-us','','1','0','0','0','0','','[!eForm? &formid=`ContactForm` &subject=`[+subject+]` &to=`[(emailsender)]` &ccsender=`1` &tpl=`ContactForm` &report=`ContactFormReport` &invalidClass=`invalidValue` &requiredClass=`requiredValue` &cssStyle=`ContactStyles` &gotoid=`46` !]\n','0','4','5','1','0','1','1144904400','1','1159303922','0','0','0','0','0','Contact us','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('6','document','text/html','Contact Us','Contact [(site_name)]','','contact-us','','1','0','0','0','0','','\n\n[!eForm? \n &formid=`ContactForm`\n &vericode=`1`\n &subject=`[+subject+]`\n &to=`[(emailsender)]` \n &ccsender=`1`\n &tpl=`ContactForm`\n &report=`ContactFormReport`\n &invalidClass=`invalidValue`\n &requiredClass=`requiredValue`\n &gotoid=`46`\n!]\n','0','{BOOTSTRAP_SQL_ID}','5','1','0','1','1144904400','1','1159303922','0','0','0','0','0','Contact us','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('7','document','text/html','404 - Document Not Found','Uh oh ... it\'s a 404! (Page Not Found)','','doc-not-found','','1','0','0','0','0','','

                        Looks like you tried to go somewhere that does not exist... perhaps you need to login or you\'d like one of the following pages instead:

                        \n\n[[Wayfinder? &startId=`0` &showDescription=`1`]]\n\n

                        Want to find it the old fashioned way? Use the site search at the top of this site to find what you seek.

                        \n\n','1','4','12','0','1','1','1144904400','1','1159301173','0','0','0','0','0','','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('7','document','text/html','404 - Document Not Found','Uh oh ... it\'s a 404! (Page Not Found)','','doc-not-found','','1','0','0','0','0','','

                        Looks like you tried to go somewhere that does not exist... perhaps you need to login or you\'d like one of the following pages instead:

                        \n\n[[Wayfinder? &startId=`0` &showDescription=`1`]]\n\n

                        Want to find it the old fashioned way? Use the site search at the top of this site to find what you seek.

                        \n\n','1','{BOOTSTRAP_SQL_ID}','12','0','1','1','1144904400','1','1159301173','0','0','0','0','0','','0','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('8','document','text/html','Search Results','Your Search Results','','search-results','','1','0','0','0','0','','[!AjaxSearch? &showInputForm=`0` &ajaxSearch=`0`!]','0','4','10','0','0','1','1144904400','1','1158613055','0','0','0','0','0','','1','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('8','document','text/html','Search Results','Your Search Results','','search-results','','1','0','0','0','0','','[!AjaxSearch? &showInputForm=`0` &ajaxSearch=`0`!]','0','{BOOTSTRAP_SQL_ID}','10','0','0','1','1144904400','1','1158613055','0','0','0','0','0','','1','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('9','document','text/html','Mini-Blog HOWTO','How to Start Posting with MODX Mini-Blogs','','article-1126081344','','1','0','0','2','0','','

                        Setting up a mini-blog is relatively simple. Here\'s what you need to do to get started with making new posts:

                        \n
                          \n
                        1. Login to the MODX Control Panel.
                        2. \n
                        3. Press the plus-sign next to the Blog(2) container resource to see the blog entries posted there.
                        4. \n
                        5. To make a new Blog entry, simply right-click the Blog container document and choose the \"Create Resource here\" menu option. To edit an existing blog article, right click the entry and choose the \"Edit Resource\" menu option.
                        6. \n\n
                        7. Write or edit the content and press save, making sure the document is published.
                        8. \n
                        9. Everything else is automatic; you\'re done!
                        10. \n
                        \n{{Comments}}','1','4','0','1','1','-1','1144904400','1','1378084370','0','0','0','0','0','','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('9','document','text/html','Mini-Blog HOWTO','How to Start Posting with MODX Mini-Blogs','','article-1126081344','','1','0','0','2','0','','

                        Setting up a mini-blog is relatively simple. Here\'s what you need to do to get started with making new posts:

                        \n
                          \n
                        1. Login to the MODX Control Panel.
                        2. \n
                        3. Press the plus-sign next to the Blog(2) container resource to see the blog entries posted there.
                        4. \n
                        5. To make a new Blog entry, simply right-click the Blog container document and choose the \"Create Resource here\" menu option. To edit an existing blog article, right click the entry and choose the \"Edit Resource\" menu option.
                        6. \n\n
                        7. Write or edit the content and press save, making sure the document is published.
                        8. \n
                        9. Everything else is automatic; you\'re done!
                        10. \n
                        \n{{Comments}}','1','{BOOTSTRAP_SQL_ID}','0','1','1','-1','1144904400','1','1378084370','0','0','0','0','0','','0','0','0','0','0','0','1','1'); REPLACE INTO `{PREFIX}site_content` VALUES ('11','document','text/xml','RSS Feed','[(site_name)] RSS Feed','','feed.rss','','1','0','0','0','0','','[[Ditto? &parents=`2` &format=`rss` &display=`20` &total=`20` &removeChunk=`Comments`]]','0','0','11','0','0','1','1144904400','1','1160062859','0','0','0','0','0','','0','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('14','document','text/html','Content Management','Ways to manage content','','cms','','1','0','0','15','0','','

                        Manage your content in the backend

                        \n

                        The Manager is a skinnable feature-packed tool for admin users. You can add extra users and limit what functions they can access. MODX\'s Manager makes creating content and managing templates and reusable elements easy. Modules can be added to work with other datasets or make management tasks easier.

                        \n

                        Manage your content in the frontend

                        \n

                        The QuickEdit bar lets manager users edit content whilst browsing the site. Most content fields and template variables can be edited quickly and easily.

                        \n

                        Enable web users to add content

                        \n

                        Custom data entry is easy to code using the MODX API - so you can design forms and collect whatever information you need.

                        ','0','4','3','1','1','1','1144904400','1','1378086298','0','0','0','1378086298','1','Manage Content','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('14','document','text/html','Content Management','Ways to manage content','','cms','','1','0','0','15','0','','

                        Manage your content in the backend

                        \n

                        The Manager is a skinnable feature-packed tool for admin users. You can add extra users and limit what functions they can access. MODX\'s Manager makes creating content and managing templates and reusable elements easy. Modules can be added to work with other datasets or make management tasks easier.

                        \n

                        Manage your content in the frontend

                        \n

                        The QuickEdit bar lets manager users edit content whilst browsing the site. Most content fields and template variables can be edited quickly and easily.

                        \n

                        Enable web users to add content

                        \n

                        Custom data entry is easy to code using the MODX API - so you can design forms and collect whatever information you need.

                        ','1','{BOOTSTRAP_SQL_ID}','3','1','1','1','1144904400','1','1378086298','0','0','0','1378086298','1','Manage Content','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('15','document','text/html','MODX Features','MODX Features','','features','','1','0','0','0','1','','[[Wayfinder?startId=`[*id*]` &outerClass=`topnav`]]','1','4','2','1','1','1','1144904400','1','1158452722','0','0','0','1144777367','1','Features','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('15','document','text/html','MODX Features','MODX Features','','features','','1','0','0','0','1','','[[Wayfinder?startId=`[*id*]` &outerClass=`topnav`]]','1','{BOOTSTRAP_SQL_ID}','2','1','1','1','1144904400','1','1158452722','0','0','0','1144777367','1','Features','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('16','document','text/html','Ajax','Ajax and Web 2.0 ready','','ajax','','1','1159264800','0','15','0','','Ajax ready out-of-the-box\n

                        MODX empowers users to build engaging sites today, with its pre-integrated Mootools javascript library.

                        \n\n

                        Check out the Ajax-powered search in this example site. The libraries are also used with QuickEdit, our front-end editing tool.

                        \n\n

                        Smart integration means the scripts are only included in the document head when needed - no unnecessary bloat on simple pages!

                        \n\nWeb 2.0 today\n

                        MODX makes child\'s play of building content managed sites with validating, accessible CSS layouts - so web standards compliance is easy. (You can create a site with excessively nested tables too, if you really want to).

                        \n','1','4','1','1','1','1','1144904400','1','1159307504','0','0','0','0','0','Ajax','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('16','document','text/html','Ajax','Ajax and Web 2.0 ready','','ajax','','1','1159264800','0','15','0','','Ajax ready out-of-the-box\n

                        MODX empowers users to build engaging sites today, with its pre-integrated Mootools javascript library.

                        \n\n

                        Check out the Ajax-powered search in this example site. The libraries are also used with QuickEdit, our front-end editing tool.

                        \n\n

                        Smart integration means the scripts are only included in the document head when needed - no unnecessary bloat on simple pages!

                        \n\nWeb 2.0 today\n

                        MODX makes child\'s play of building content managed sites with validating, accessible CSS layouts - so web standards compliance is easy. (You can create a site with excessively nested tables too, if you really want to).

                        \n','1','{BOOTSTRAP_SQL_ID}','1','1','1','1','1144904400','1','1159307504','0','0','0','0','0','Ajax','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('18','document','text/html','Just a pretend, older post','This post should in fact be archived','','article-1128398162','','1','0','0','2','0','','

                        Not so exciting, after all, eh?

                        \n','1','4','2','1','1','-1','1144904400','1','1159306886','0','0','0','0','0','','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('18','document','text/html','Just a pretend, older post','This post should in fact be archived','','article-1128398162','','1','0','0','2','0','','

                        Not so exciting, after all, eh?

                        \n','1','{BOOTSTRAP_SQL_ID}','2','1','1','-1','1144904400','1','1159306886','0','0','0','0','0','','0','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('22','document','text/html','Menus and Lists','Flexible Menus and Lists','','menus','','1','1159178400','0','15','0','','

                        Your documents - listed how you want them

                        \n

                        MODX\'s document data structure has been designed to allow many different routines to redisplay the information in ways that suit your needs, such as a dynamic menu in your template.

                        \n

                        Since the last release of MODX, the community has produced many great snippets - reusable functions that you can call in your content or template. Two of the most widely useful are Ditto and Wayfinder.

                        \n

                        Wayfinder - the menu builder

                        \n

                        Allows you to template every part of the menu. On this site, Wayfinder is being used to generate the drop-down menus, but many types of menus and sitemaps are possible.

                        \n

                        Ditto - the document lister

                        \n

                        Uses include listing the most recent blog posts, producing a site map, listing related documents (using a TV filter) and generating an RSS feed. You could even write a menu with it. On this site, Ditto is being used for the blog posts list on the Blog page, and the list on the right of some templates.

                        \n

                        Unlimited Customization

                        \n

                        If you can\'t quite get your desired effect using templating and the many options of Ditto and Wayfinder, you can write your own routine, or look for other snippets in the MODX repository. MODX\'s fields for Menu Title, summaries, menu position etc can be used via the API to produce anything you can imagine.

                        ','1','4','2','1','1','1','1144904400','1','1160148522','0','0','0','0','0','Menus and Lists','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('22','document','text/html','Menus and Lists','Flexible Menus and Lists','','menus','','1','1159178400','0','15','0','','

                        Your documents - listed how you want them

                        \n

                        MODX\'s document data structure has been designed to allow many different routines to redisplay the information in ways that suit your needs, such as a dynamic menu in your template.

                        \n

                        Since the last release of MODX, the community has produced many great snippets - reusable functions that you can call in your content or template. Two of the most widely useful are Ditto and Wayfinder.

                        \n

                        Wayfinder - the menu builder

                        \n

                        Allows you to template every part of the menu. On this site, Wayfinder is being used to generate the drop-down menus, but many types of menus and sitemaps are possible.

                        \n

                        Ditto - the document lister

                        \n

                        Uses include listing the most recent blog posts, producing a site map, listing related documents (using a TV filter) and generating an RSS feed. You could even write a menu with it. On this site, Ditto is being used for the blog posts list on the Blog page, and the list on the right of some templates.

                        \n

                        Unlimited Customization

                        \n

                        If you can\'t quite get your desired effect using templating and the many options of Ditto and Wayfinder, you can write your own routine, or look for other snippets in the MODX repository. MODX\'s fields for Menu Title, summaries, menu position etc can be used via the API to produce anything you can imagine.

                        ','1','{BOOTSTRAP_SQL_ID}','2','1','1','1','1144904400','1','1160148522','0','0','0','0','0','Menus and Lists','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('24','document','text/html','Extendable by design','Extendable by design','','extendable','','1','1159092732','0','15','0','','

                        The MODX community has created many add-ons which can be found in the Repository, from image galleries and e-commerce to smaller utilities.

                        \n\n

                        Template Variables with Bindings

                        \n

                        TVs - Template Variables - are powerful extra fields that you can use with your documents. As an example of an advanced template element that returns a different thing dependent on code or data, we created an @BINDING for the name of the Login menu item. This changes the menu name from Login to Logout based on your logged in state. The @BINDING as follows was placed in the default value as:\n@EVAL if ($modx->getLoginUserID()) return \'Logout\'; else return \'Login\';

                        \n\n

                        Using Scriptaculous

                        \n

                        We used some simple effects to highlight various things on the front/home page to demonstrate how easy it is to create a useful way to draw attention to things. To see them in action on the home page, click the Integrated Site Search, Related Links or Newest Documents headers.

                        \n\n

                        Custom Forms

                        \n

                        To demonstrate how to link to custom forms, we customized the calls to the Webuser Registration system and the Login system.

                        \n\n

                        And more

                        \n

                        Rich Text Editor for blog entries. To make it easier to format blog posts with simple text formatting, we modified the blog to use a custom RTE-enabled Template Variable (TV).

                        \n\n

                        Smart-Summary logic. When splitting the full blog/news posts you simply insert a \"<!-- splitter -->\" where you want the break to occur. In addition, if that leaves any important tags open, it will try to match them and close them so it doesn\'t mess up your site layout with unclosed OL, UL or DIV tags.

                        ','1','4','4','1','1','2','1144904400','1','1159309971','0','0','0','0','0','Extendability','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('24','document','text/html','Extendable by design','Extendable by design','','extendable','','1','1159092732','0','15','0','','

                        The MODX community has created many add-ons which can be found in the Repository, from image galleries and e-commerce to smaller utilities.

                        \n

                        Template Variables with Bindings

                        \n

                        TVs - Template Variables - are powerful extra fields that you can use with your documents. As an example of an advanced template element that returns a different thing dependent on code or data, we created an @BINDING for the name of the Login menu item. This changes the menu name from Login to Logout based on your logged in state. The @BINDING as follows was placed in the default value as: @EVAL if ($modx->getLoginUserID()) return \'Logout\'; else return \'Login\';

                        \n

                        Using jQuery-effects

                        \n

                        We used some simple effects to highlight various things on the front/home page to demonstrate how easy it is to create a useful way to draw attention to things. To see them in action on the home page, click the Integrated Site Search, Related Links or Newest Documents headers.

                        \n

                        Custom Forms

                        \n

                        To demonstrate how to link to custom forms, we customized the calls to the Webuser Registration system and the Login system.

                        \n

                        And more

                        \n

                        Rich Text Editor for blog entries. To make it easier to format blog posts with simple text formatting, we modified the blog to use a custom RTE-enabled Template Variable (TV).

                        \n

                        Smart-Summary logic. When splitting the full blog/news posts you simply insert a \"<!-- splitter -->\" where you want the break to occur. In addition, if that leaves any important tags open, it will try to match them and close them so it doesn\'t mess up your site layout with unclosed OL, UL or DIV tags.

                        ','1','{BOOTSTRAP_SQL_ID}','4','1','1','2','1144904400','1','1159309971','0','0','0','0','0','Extendability','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('32','document','text/html','Design','Site Design','','design','','1','0','0','0','0','','

                        Credits

                        \n

                        The default site\'s themes are based off of validating XHTML/CSS designs by Andreas Viklund, ziworks | Web Solutions and MODxHost.

                        ','1','4','4','1','1','2','1144904400','1','1160112322','0','0','0','1144912754','1','Design','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('32','document','text/html','Design','Site Design','','design','','1','0','0','0','0','','

                        Credits

                        \n

                        The MODX Starter-theme is based on Bootstrap 3.3.6 and made by graffx.nl and fuseit.de.

                        ','1','{BOOTSTRAP_SQL_ID}','4','1','1','2','1144904400','1','1160112322','0','0','0','1144912754','1','Design','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('33','document','text/html','Getting Help','Getting Help with MODX','','geting-help','','1','0','0','0','0','','

                        The team behind MODX strives to constantly add to and refine the documentation to help you get up to speed with MODX:

                        \n
                          \n
                        • For basic instructions on integrating custom templates into MODX, please see the Designer\'s Guide.
                        • \n
                        • For an introduction to working in MODX from the content editors perspectve, see the Content Editor\'s Guide.
                        • \n
                        • For a detailed overview of the backend "manager" and setting up Users and Groups, please peruse the Administration Guide.
                        • \n
                        • For developers, architecture and API documentation can be found in the Developer\'s Guide.
                        • \n
                        • And if someone has installed this site for you, but you\'re curious as to the steps they went through, please see the Getting Started Guide.
                        • \n
                        \n\n

                        And don\'t forget, you can always learn and ask questions at the MODX forums. \n','1','4','3','1','1','2','1144904400','2','1144904400','0','0','0','0','0','Getting Help','0','0','0','0','0','0','0','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('33','document','text/html','Getting Help','Getting Help with MODX','','getting-help','','1','0','0','0','0','','

                        The team behind MODX strives to constantly add to and refine the documentation to help you get up to speed with MODX:

                        \n
                          \n
                        • For basic instructions on integrating custom templates into MODX, please see the Designer\'s Guide.
                        • \n
                        • For an introduction to working in MODX from the content editors perspectve, see the Content Editor\'s Guide.
                        • \n
                        • For a detailed overview of the backend "manager" and setting up Users and Groups, please peruse the Administration Guide.
                        • \n
                        • For developers, architecture and API documentation can be found in the Developer\'s Guide.
                        • \n
                        • And if someone has installed this site for you, but you\'re curious as to the steps they went through, please see the Getting Started Guide.
                        • \n
                        \n\n

                        And don\'t forget, you can always learn and ask questions at the MODX forums. \n','1','{BOOTSTRAP_SQL_ID}','3','1','1','2','1144904400','2','1144904400','0','0','0','0','0','Getting Help','0','0','0','0','0','0','0','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('37','document','text/html','[*loginName*]','The page you\'re trying to reach requires a login','','blog-login','','1','0','0','0','0','','

                        In order to add a blog entry, you must be logged in as a Site Admin webuser. Also, commenting on posts requires a login. Contact the site owner for permissions to create new post, or create a web user account to automatically receive commenting privileges. If you already have an account, please login below.

                        \n\n[!WebLogin? &tpl=`WebLoginSideBar` &loginhomeid=`3`!]','1','4','8','0','0','1','1144904400','1','1158599931','0','0','0','0','0','','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('37','document','text/html','[*loginName*]','The page you\'re trying to reach requires a login','','blog-login','','1','0','0','0','0','','

                        In order to add a blog entry, you must be logged in as a Site Admin webuser. Also, commenting on posts requires a login. Contact the site owner for permissions to create new post, or create a web user account to automatically receive commenting privileges. If you already have an account, please login below.

                        \n\n[!WebLogin? &tpl=`WebLogin_tplForm` &loginhomeid=`3`!]','1','{BOOTSTRAP_SQL_ID}','8','0','0','1','1144904400','1','1158599931','0','0','0','0','0','','0','0','0','0','0','0','1','1'); -REPLACE INTO `{PREFIX}site_content` VALUES ('46','document','text/html','Thank You','','','thank-you','','1','0','0','0','0','','

                        Thank You!

                        \n

                        We do appreciate your feedback. Your comments have been submitted to our office and hopefully someone will bother to actually read it. You should also receive a copy of the message in your inbox.

                        \n

                        Please be assured that we will do our best not to ignore you, but if today is a Monday please try again in a few days.

                        \n','1','4','6','1','1','1','1159302141','1','1159302892','0','0','0','1159302182','1','','0','0','0','0','0','0','1','1'); +REPLACE INTO `{PREFIX}site_content` VALUES ('46','document','text/html','Thank You','','','thank-you','','1','0','0','0','0','','

                        Thank You!

                        \n

                        We do appreciate your feedback. Your comments have been submitted to our office and hopefully someone will bother to actually read it. You should also receive a copy of the message in your inbox.

                        \n

                        Please be assured that we will do our best not to ignore you, but if today is a Monday please try again in a few days.

                        \n','1','{BOOTSTRAP_SQL_ID}','6','1','1','1','1159302141','1','1159302892','0','0','0','1159302182','1','','0','0','0','0','0','0','1','1'); # @@ -78,46 +73,28 @@ REPLACE INTO `{PREFIX}site_content` VALUES ('46','document','text/html','Thank Y # -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (4, 'FormSignup', 'For the weblogin signup', 0, 2, 0, ' \r\n\r\n
                        \r\n
                        \r\n

                        User Details

                        \r\n

                        Items marked by * are required

                        \r\n \r\n \r\n \r\n
                        \r\n \r\n
                        \r\n

                        Password

                        \r\n \r\n \r\n
                        \r\n \r\n
                        \r\n

                        Optional Account Profile Info

                        \r\n \r\n \r\n
                        \r\n \r\n
                        \r\n

                        Bot-Patrol

                        \r\n

                        Enter the word/number combination shown in the image below.

                        \r\n

                        \"If

                        \r\n \r\n
                        \r\n \r\n
                        \r\n \r\n
                        \r\n
                        \r\n\r\n\r\n
                        \r\n\r\n

                        Signup completed successfully!
                        \r\nYour account was created. A copy of your signup information was sent to your email address.

                        \r\n', 0); - - -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (6, 'nl_sidebar', 'Default Template TPL for Ditto', 0, 1, 0, '[+title+]
                        \r\n[+longtitle+]

                        ', 0); - - -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (8, 'ditto_blog', 'Blog Template', 0, 1, 0, '
                        \r\n\

                        [+title+]

                        \r\n
                        Tags: [+tagLinks+]
                        \r\n [+summary+]\r\n \r\n
                        ', 0); - - -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (9, 'footer', 'Site Template Footer', 0, 1, 0, '[(site_name)] is powered by MODX CMS |\r\n Design by Andreas Viklund\r\n\r\n\r\n\r\n\r\n', 0); - - -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (10, 'meta', 'Site Template Meta', 0, 1, 0, '

                        Valid XHTML

                        Valid css

                        MODx

                        ', 0); - - -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (11, 'mh.InnerRowTpl', 'Inner row template for MODXHost top menu', 0, 1, 0, '[+wf.linktext+][+wf.wrapper+]', 0); - - -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (12, 'mh.InnerTpl', 'Inner nesting template for MODXHost top menu', 0, 1, 0, '
                          \r\n [+wf.wrapper+]\r\n
                        ', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'FormSignup', 'For the weblogin signup', 0, 'none', 2, 0, ' \n\n
                        \n\n

                        User Details

                        \n
                        \n \n Items marked by * are required
                        \n
                        \n \n \n
                        \n
                        \n \n \n
                        \n
                        \n \n \n
                        \n\n
                        \n

                        Password

                        \n \n \n
                        \n
                        \n \n \n
                        \n \n
                        \n

                        Optional Account Profile Info

                        \n \n \n
                        \n \n
                        \n

                        Bot-Patrol

                        \n

                        Enter the word/number combination shown in the image below.

                        \n

                        If you have trouble reading the code, click on the code itself to generate a new random code.

                        \n \n
                        \n \n
                        \n \n
                        \n\n
                        \n\n\n
                        \n\n

                        Signup completed successfully!
                        \nYour account was created. A copy of your signup information was sent to your email address.

                        \n', 0); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (13, 'mh.OuterTpl', 'Outer nesting template for MODXHost top menu', 0, 1, 0, '
                          \r\n [+wf.wrapper+]\r\n
                        ', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'nl_sidebar', 'Default Template TPL for Ditto', 0, 'none', 1, 0, '[+title+]
                        \n[+longtitle+]

                        ', 0); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (14, 'mh.RowTpl', 'Row template for MODXHost top menu', 0, 1, 0, '
                      • [+wf.linktext+][+wf.wrapper+]
                      • ', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'ditto_blog', 'Blog Template', 0, 'none', 1, 0, '
                        \n \n \n \n \n

                        [+title+]

                        \n \n \n [+summary+]\n \n
                        ','0'); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (15, 'Comments', 'Comments (Jot) showing beneath a blog entry.', 0, 1, 0, '
                        \r\n[!Jot? &customfields=`name,email` &subscribe=`1` &pagination=`4` &badwords=`dotNet` &canmoderate=`Site Admins` !]\r\n
                        ', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'Comments', 'Comments (Jot) showing beneath a blog entry.', 0, 'none', 1, 0, '
                        \r\n[!Jot? &customfields=`name,email` &subscribe=`1` &pagination=`4` &badwords=`dotNet` &canmoderate=`Site Admins` &tplForm=`Comments_tplForm` &tplComments=`Comments_tplComments`!]\r\n
                        ', 0); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (16, 'ContactForm', '', 0, 1, 0, '

                        [+validationmessage+]

                        \r\n\r\n
                        \r\n\r\n
                        \r\n

                        Contact Form

                        \r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n
                        \r\n\r\n
                        \r\n', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'ContactForm', 'eForm-template for showing contact-form', 0, 'none', 1, 0, '
                        \n \n \n \n \n \n
                        \n \n \n
                        \n
                        \n \n \n
                        \n \n
                        \n \n \n
                        \n \n
                        \n \n \n
                        \n \n \n
                        \n
                        \n
                        \n verification code\n
                        \n
                        \n \n
                        \n
                        \n
                        \n \n
                        \n \n
                        \n\n
                        \n\n\n', 0); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (17, 'ContactFormReport', '', 0, 1, 0, '

                        This is a response sent by [+name+] using the feedback form on the website. The details of the message follow below:

                        \r\n\r\n\r\n

                        Name: [+name+]

                        \r\n

                        Email: [+email+]

                        \r\n

                        Regarding: [+subject+]

                        \r\n

                        comments:
                        [+message+]

                        \r\n\r\n

                        You can use this link to reply: [+email+]

                        \r\n', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'ContactFormReport', 'eForm-template for sending form-data by mail', 0, 'none', 1, 0, '

                        This is a response sent by [+name+] using the feedback form on the website. The details of the message follow below:

                        \r\n\r\n\r\n

                        Name: [+name+]

                        \r\n

                        Email: [+email+]

                        \r\n

                        Regarding: [+subject+]

                        \r\n

                        comments:
                        [+message+]

                        \r\n\r\n

                        You can use this link to reply: [+email+]

                        \r\n', 0); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (18, 'reflect_month_tpl', 'For the yearly archive. Use with Ditto.', 0, 1, 0, '[+month+] [+year+]', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'reflect_month_tpl', 'For the yearly archive. Use with Ditto.', 0, 'none', 1, 0, '[+month+] [+year+]', 0); -REPLACE INTO `{PREFIX}site_htmlsnippets` VALUES (19, 'ContactStyles', 'Styles for form validation', 0, 1, 0, '', 0); +INSERT INTO `{PREFIX}site_htmlsnippets` VALUES (NULL, 'ContactStyles', 'Styles for form validation', 0, 'none', 1, 0, '', 0); @@ -139,7 +116,7 @@ REPLACE INTO `{PREFIX}site_keywords` VALUES ('4','login'); # -# Dumping data for table `MODX2352_site_tmplvar_contentvalues` +# Dumping data for table `site_tmplvar_contentvalues` # diff --git a/install/setup.info.php b/install/setup.info.php index e5ed6e9934..ab0af8c875 100755 --- a/install/setup.info.php +++ b/install/setup.info.php @@ -1,24 +1,19 @@ =0); + if(function_exists("mysqli_get_server_info")) { + $mysqlVerOk = (version_compare(mysqli_get_server_info($sqlParser->conn),"4.0.2")>=0); } // secure web documents - privateweb - mysql_query("UPDATE `".$sqlParser->prefix."site_content` SET privateweb = 0 WHERE privateweb = 1",$sqlParser->conn); + mysqli_query($sqlParser->conn,"UPDATE `".$sqlParser->prefix."site_content` SET privateweb = 0 WHERE privateweb = 1"); $sql = "SELECT DISTINCT sc.id FROM `".$sqlParser->prefix."site_content` sc LEFT JOIN `".$sqlParser->prefix."document_groups` dg ON dg.document = sc.id LEFT JOIN `".$sqlParser->prefix."webgroup_access` wga ON wga.documentgroup = dg.document_group WHERE wga.id>0"; - $ds = mysql_query($sql,$sqlParser->conn); + $ds = mysqli_query($sqlParser->conn,$sql); if(!$ds) { - echo "An error occurred while executing a query: ".mysql_error(); + echo "An error occurred while executing a query: ".mysqli_error($sqlParser->conn); } else { - while($r = mysql_fetch_assoc($ds)) $ids[]=$r["id"]; + while($r = mysqli_fetch_assoc($ds)) $ids[]=$r["id"]; if(count($ids)>0) { - mysql_query("UPDATE `".$sqlParser->prefix."site_content` SET privateweb = 1 WHERE id IN (".implode(", ",$ids).")"); + mysqli_query($sqlParser->conn,"UPDATE `".$sqlParser->prefix."site_content` SET privateweb = 1 WHERE id IN (".implode(", ",$ids).")"); unset($ids); } } // secure manager documents privatemgr - mysql_query("UPDATE `".$sqlParser->prefix."site_content` SET privatemgr = 0 WHERE privatemgr = 1"); + mysqli_query($sqlParser->conn,"UPDATE `".$sqlParser->prefix."site_content` SET privatemgr = 0 WHERE privatemgr = 1"); $sql = "SELECT DISTINCT sc.id FROM `".$sqlParser->prefix."site_content` sc LEFT JOIN `".$sqlParser->prefix."document_groups` dg ON dg.document = sc.id LEFT JOIN `".$sqlParser->prefix."membergroup_access` mga ON mga.documentgroup = dg.document_group WHERE mga.id>0"; - $ds = mysql_query($sql); + $ds = mysqli_query($sqlParser->conn,$sql); if(!$ds) { - echo "An error occurred while executing a query: ".mysql_error(); + echo "An error occurred while executing a query: ".mysqli_error($sqlParser->conn); } else { - while($r = mysql_fetch_assoc($ds)) $ids[]=$r["id"]; + while($r = mysqli_fetch_assoc($ds)) $ids[]=$r["id"]; if(count($ids)>0) { - mysql_query("UPDATE `".$sqlParser->prefix."site_content` SET privatemgr = 1 WHERE id IN (".implode(", ",$ids).")"); + mysqli_query($sqlParser->conn,"UPDATE `".$sqlParser->prefix."site_content` SET privatemgr = 1 WHERE id IN (".implode(", ",$ids).")"); unset($ids); } } diff --git a/install/setup.sql b/install/setup.sql index b3d95e8e73..175c27dbaa 100755 --- a/install/setup.sql +++ b/install/setup.sql @@ -4,15 +4,40 @@ # Each sql command is separated by double lines \n\n -CREATE TABLE IF NOT EXISTS `{PREFIX}active_users` ( +DROP TABLE IF EXISTS `{PREFIX}active_users`; + +CREATE TABLE `{PREFIX}active_users` ( + `sid` varchar(32) NOT NULL default '', `internalKey` int(9) NOT NULL default '0', `username` varchar(50) NOT NULL default '', `lasthit` int(20) NOT NULL default '0', - `id` int(10) default NULL, `action` varchar(10) NOT NULL default '', + `id` int(10) default NULL, + PRIMARY KEY (`sid`) +) ENGINE=MyISAM COMMENT='Contains data about last user action.'; + +DROP TABLE IF EXISTS `{PREFIX}active_user_locks`; + +CREATE TABLE `{PREFIX}active_user_locks` ( + `id` int(10) NOT NULL AUTO_INCREMENT, + `sid` varchar(32) NOT NULL default '', + `internalKey` int(9) NOT NULL default '0', + `elementType` int(1) NOT NULL default '0', + `elementId` int(10) NOT NULL default '0', + `lasthit` int(20) NOT NULL default '0', + PRIMARY KEY(`id`), + UNIQUE INDEX ix_element_id (`elementType`,`elementId`,`sid`) +) ENGINE=MyISAM COMMENT='Contains data about locked elements.'; + +DROP TABLE IF EXISTS `{PREFIX}active_user_sessions`; + +CREATE TABLE `{PREFIX}active_user_sessions` ( + `sid` varchar(32) NOT NULL default '', + `internalKey` int(9) NOT NULL default '0', + `lasthit` int(20) NOT NULL default '0', `ip` varchar(50) NOT NULL default '', - PRIMARY KEY (`internalKey`) -) ENGINE=MyISAM COMMENT='Contains data about active users.'; + PRIMARY KEY(`sid`) +) ENGINE=MyISAM COMMENT='Contains data about valid user sessions.'; CREATE TABLE IF NOT EXISTS `{PREFIX}categories` ( `id` integer NOT NULL AUTO_INCREMENT, @@ -31,7 +56,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}document_groups` ( CREATE TABLE IF NOT EXISTS `{PREFIX}documentgroup_names` ( `id` int(10) NOT NULL auto_increment, - `name` varchar(255) NOT NULL default '', + `name` varchar(245) NOT NULL default '', `private_memgroup` tinyint DEFAULT 0 COMMENT 'determine whether the document group is private to manager users', `private_webgroup` tinyint DEFAULT 0 COMMENT 'determines whether the document is private to web users', PRIMARY KEY (`id`), @@ -97,7 +122,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}membergroup_access` ( CREATE TABLE IF NOT EXISTS `{PREFIX}membergroup_names` ( `id` int(10) NOT NULL auto_increment, - `name` varchar(255) NOT NULL default '', + `name` varchar(245) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM COMMENT='Contains data used for access permissions.'; @@ -109,7 +134,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}site_content` ( `pagetitle` varchar(255) NOT NULL default '', `longtitle` varchar(255) NOT NULL default '', `description` varchar(255) NOT NULL default '', - `alias` varchar(255) default '', + `alias` varchar(245) default '', `link_attributes` varchar(255) NOT NULL default '' COMMENT 'Link attriubtes', `published` int(1) NOT NULL default '0', `pub_date` int(20) NOT NULL default '0', @@ -160,11 +185,12 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}site_content_metatags` ( CREATE TABLE IF NOT EXISTS `{PREFIX}site_htmlsnippets` ( `id` int(10) NOT NULL auto_increment, - `name` varchar(50) NOT NULL default '', + `name` varchar(100) NOT NULL default '', `description` varchar(255) NOT NULL default 'Chunk', `editor_type` integer NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor', + `editor_name` VARCHAR(50) NOT NULL DEFAULT 'none', `category` integer NOT NULL DEFAULT '0' COMMENT 'category id', - `cache_type` tinyint(1) NOT NULL default '0' COMMENT 'Cache option', + `cache_type` tinyint(1) NOT NULL default '0' COMMENT 'Cache option', `snippet` mediumtext, `locked` tinyint(4) NOT NULL default '0', PRIMARY KEY (`id`) @@ -263,7 +289,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}site_snippets` ( CREATE TABLE IF NOT EXISTS `{PREFIX}site_templates` ( `id` int(10) NOT NULL auto_increment, - `templatename` varchar(50) NOT NULL default '', + `templatename` varchar(100) NOT NULL default '', `description` varchar(255) NOT NULL default 'Template', `editor_type` integer NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor', `category` integer NOT NULL DEFAULT '0' COMMENT 'category id', @@ -271,6 +297,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}site_templates` ( `template_type` integer NOT NULL DEFAULT '0' COMMENT '0-page,1-content', `content` mediumtext, `locked` tinyint(4) NOT NULL default '0', + `selectable` tinyint(4) NOT NULL default '1', PRIMARY KEY (`id`) ) ENGINE=MyISAM COMMENT='Contains the site templates.'; @@ -296,39 +323,39 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}site_tmplvar_access` ( ) ENGINE=MyISAM COMMENT='Contains data used for template variable access permissions.'; CREATE TABLE IF NOT EXISTS `{PREFIX}site_tmplvar_contentvalues` ( - `id` int(11) NOT NULL auto_increment, - `tmplvarid` int(10) NOT NULL default '0' COMMENT 'Template Variable id', - `contentid` int(10) NOT NULL default '0' COMMENT 'Site Content Id', - `value` text, - PRIMARY KEY (id), - KEY idx_tmplvarid (tmplvarid), - KEY idx_id (contentid), - FULLTEXT KEY `value_ft_idx` (`value`) + `id` int(11) NOT NULL auto_increment, + `tmplvarid` int(10) NOT NULL default '0' COMMENT 'Template Variable id', + `contentid` int(10) NOT NULL default '0' COMMENT 'Site Content Id', + `value` mediumtext, + PRIMARY KEY (id), + KEY idx_tmplvarid (tmplvarid), + KEY idx_id (contentid), + FULLTEXT KEY `value_ft_idx` (`value`) ) ENGINE=MyISAM COMMENT='Site Template Variables Content Values Link Table'; CREATE TABLE IF NOT EXISTS `{PREFIX}site_tmplvar_templates` ( - `tmplvarid` int(10) NOT NULL default '0' COMMENT 'Template Variable id', - `templateid` int(11) NOT NULL default '0', - `rank` int(11) NOT NULL default '0', - PRIMARY KEY (`tmplvarid`, `templateid`) + `tmplvarid` int(10) NOT NULL default '0' COMMENT 'Template Variable id', + `templateid` int(11) NOT NULL default '0', + `rank` int(11) NOT NULL default '0', + PRIMARY KEY (`tmplvarid`, `templateid`) ) ENGINE=MyISAM COMMENT='Site Template Variables Templates Link Table'; CREATE TABLE IF NOT EXISTS `{PREFIX}site_tmplvars` ( - `id` INT(11) NOT NULL auto_increment, - `type` varchar(20) NOT NULL default '', - `name` varchar(50) NOT NULL default '', - `caption` varchar(80) NOT NULL default '', - `description` varchar(255) NOT NULL default '', - `editor_type` integer NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor', - `category` integer NOT NULL DEFAULT '0' COMMENT 'category id', - `locked` tinyint(4) NOT NULL default '0', - `elements` text, - `rank` int(11) NOT NULL default '0', - `display` varchar(20) NOT NULL default '' COMMENT 'Display Control', - `display_params` text COMMENT 'Display Control Properties', - `default_text` text, - PRIMARY KEY (id), - KEY `indx_rank`(`rank`) + `id` INT(11) NOT NULL auto_increment, + `type` varchar(50) NOT NULL default '', + `name` varchar(100) NOT NULL default '', + `caption` varchar(80) NOT NULL default '', + `description` varchar(255) NOT NULL default '', + `editor_type` integer NOT NULL DEFAULT '0' COMMENT '0-plain text,1-rich text,2-code editor', + `category` integer NOT NULL DEFAULT '0' COMMENT 'category id', + `locked` tinyint(4) NOT NULL default '0', + `elements` text, + `rank` int(11) NOT NULL default '0', + `display` varchar(20) NOT NULL default '' COMMENT 'Display Control', + `display_params` text COMMENT 'Display Control Properties', + `default_text` text, + PRIMARY KEY (id), + KEY `indx_rank`(`rank`) ) ENGINE=MyISAM COMMENT='Site Template Variables'; CREATE TABLE IF NOT EXISTS `{PREFIX}user_attributes` ( @@ -415,6 +442,8 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}user_roles` ( `error_dialog` int(1) NOT NULL default '0', `about` int(1) NOT NULL default '0', `file_manager` int(1) NOT NULL default '0', + `assets_files` int(1) NOT NULL default '0', + `assets_images` int(1) NOT NULL default '0', `save_user` int(1) NOT NULL default '0', `delete_user` int(1) NOT NULL default '0', `save_password` int(11) NOT NULL default '0', @@ -446,6 +475,8 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}user_roles` ( `import_static` int(1) NOT NULL default '0', `export_static` int(1) NOT NULL default '0', `remove_locks` int(1) NOT NULL default '0', + `display_locks` int(1) NOT NULL default '0', + `change_resourcetype` int(1) NOT NULL default '0', PRIMARY KEY (`id`) ) ENGINE=MyISAM COMMENT='Contains information describing the user roles.'; @@ -475,7 +506,7 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}webgroup_access` ( CREATE TABLE IF NOT EXISTS `{PREFIX}webgroup_names` ( `id` int(10) NOT NULL auto_increment, - `name` varchar(255) NOT NULL default '', + `name` varchar(245) NOT NULL default '', PRIMARY KEY (`id`), UNIQUE KEY `name` (`name`) ) ENGINE=MyISAM COMMENT='Contains data used for web access permissions.'; @@ -534,84 +565,181 @@ CREATE TABLE IF NOT EXISTS `{PREFIX}web_user_settings` ( # For backward compatibilty with early versions #:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -# 090-091 +ALTER TABLE `{PREFIX}site_content` + ADD COLUMN `publishedon` int(20) NOT NULL DEFAULT '0' COMMENT 'Date the document was published' AFTER `deletedby`; + +ALTER TABLE `{PREFIX}site_content` + ADD COLUMN `publishedby` int(10) NOT NULL DEFAULT '0' COMMENT 'ID of user who published the document' AFTER `publishedon`; -ALTER TABLE `{PREFIX}site_content` ADD COLUMN `publishedon` int(20) NOT NULL DEFAULT '0' COMMENT 'Date the document was published' AFTER `deletedby`; +ALTER TABLE `{PREFIX}site_content` + ADD COLUMN `link_attributes` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link attriubtes' AFTER `alias`; -ALTER TABLE `{PREFIX}site_content` ADD COLUMN `publishedby` int(10) NOT NULL DEFAULT '0' COMMENT 'ID of user who published the document' AFTER `publishedon`; +ALTER TABLE `{PREFIX}site_content` + ADD COLUMN `alias_visible` INT(2) NOT NULL DEFAULT '1' COMMENT 'Hide document from alias path'; -ALTER TABLE `{PREFIX}site_plugins` MODIFY COLUMN `properties` text COMMENT 'Default Properties'; +ALTER TABLE `{PREFIX}site_htmlsnippets` + ADD COLUMN `editor_name` VARCHAR(50) NOT NULL DEFAULT 'none' AFTER `editor_type`; -ALTER TABLE `{PREFIX}site_snippets` MODIFY COLUMN `properties` text COMMENT 'Default Properties'; +ALTER TABLE `{PREFIX}site_plugin_events` + ADD COLUMN `priority` INT(10) NOT NULL default '0' COMMENT 'determines the run order of the plugin' AFTER `evtid`; + +ALTER TABLE `{PREFIX}site_templates` + ADD COLUMN `selectable` TINYINT(4) NOT NULL DEFAULT '1' AFTER `locked`; ALTER TABLE `{PREFIX}site_tmplvar_templates` - DROP INDEX `idx_tmplvarid`, - DROP INDEX `idx_templateid`, - ADD PRIMARY KEY (`tmplvarid`, `templateid`); + ADD COLUMN `rank` integer(11) NOT NULL DEFAULT '0' AFTER `templateid`; -ALTER TABLE `{PREFIX}user_roles` ADD COLUMN `view_unpublished` int(1) NOT NULL DEFAULT '0' AFTER `web_access_permissions`; +ALTER TABLE `{PREFIX}user_attributes` + ADD COLUMN `street` varchar(255) NOT NULL DEFAULT '' AFTER `country`; -#091-092 +ALTER TABLE `{PREFIX}user_attributes` + ADD COLUMN `city` varchar(255) NOT NULL DEFAULT '' AFTER `street`; -#092-095 +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `edit_chunk` INT(1) NOT NULL DEFAULT '0' AFTER `delete_snippet`; -ALTER TABLE `{PREFIX}categories` MODIFY COLUMN `category` varchar(45) NOT NULL DEFAULT ''; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `new_chunk` INT(1) NOT NULL DEFAULT '0' AFTER `edit_chunk`; -ALTER TABLE `{PREFIX}categories` MODIFY COLUMN `category` varchar(45) NOT NULL DEFAULT ''; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `save_chunk` INT(1) NOT NULL DEFAULT '0' AFTER `new_chunk`; -ALTER TABLE `{PREFIX}event_log` MODIFY COLUMN `source` varchar(50) NOT NULL DEFAULT ''; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `delete_chunk` INT(1) NOT NULL DEFAULT '0' AFTER `save_chunk`; -ALTER TABLE `{PREFIX}event_log` MODIFY COLUMN `description` text; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `empty_trash` INT(1) NOT NULL DEFAULT '0' AFTER `delete_document`; -ALTER TABLE `{PREFIX}manager_users` MODIFY COLUMN `username` varchar(100) NOT NULL DEFAULT ''; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `view_unpublished` INT(1) NOT NULL DEFAULT '0' AFTER `web_access_permissions`; -ALTER TABLE `{PREFIX}site_content` - MODIFY COLUMN `pagetitle` varchar(255) NOT NULL default '', - MODIFY COLUMN `alias` varchar(255) default '', - MODIFY COLUMN `introtext` text COMMENT 'Used to provide quick summary of the document', - MODIFY COLUMN `content` mediumtext, - MODIFY COLUMN `menutitle` varchar(255) NOT NULL DEFAULT '' COMMENT 'Menu title'; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `import_static` INT(1) NOT NULL DEFAULT '0' AFTER `view_unpublished`; -ALTER TABLE `{PREFIX}site_content` ADD COLUMN `link_attributes` varchar(255) NOT NULL DEFAULT '' COMMENT 'Link attriubtes' AFTER `alias`; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `export_static` INT(1) NOT NULL DEFAULT '0' AFTER `import_static`; -ALTER TABLE `{PREFIX}site_htmlsnippets` MODIFY COLUMN `snippet` mediumtext; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `remove_locks` INT(1) NOT NULL DEFAULT '0' AFTER `export_static`; -ALTER TABLE `{PREFIX}site_modules` - MODIFY COLUMN `name` varchar(50) NOT NULL DEFAULT '', - MODIFY COLUMN `disabled` tinyint(4) NOT NULL DEFAULT '0', - MODIFY COLUMN `icon` varchar(255) NOT NULL DEFAULT '' COMMENT 'url to module icon', - MODIFY COLUMN `resourcefile` varchar(255) NOT NULL DEFAULT '' COMMENT 'a physical link to a resource file', - MODIFY COLUMN `createdon` int(11) NOT NULL DEFAULT '0', - MODIFY COLUMN `editedon` int(11) NOT NULL DEFAULT '0', - MODIFY COLUMN `guid` varchar(32) NOT NULL DEFAULT '' COMMENT 'globally unique identifier', - MODIFY COLUMN `properties` text, - MODIFY COLUMN `modulecode` mediumtext COMMENT 'module boot up code'; +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `display_locks` INT(1) NOT NULL DEFAULT '0' AFTER `remove_locks`; + +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `publish_document` INT(1) NOT NULL DEFAULT '0' AFTER `save_document`; + +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `change_resourcetype` INT(1) NOT NULL DEFAULT '0' AFTER `remove_locks`; + +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `assets_images` INT(1) NOT NULL DEFAULT '1' AFTER `file_manager`; + +ALTER TABLE `{PREFIX}user_roles` + ADD COLUMN `assets_files` INT(1) NOT NULL DEFAULT '1' AFTER `assets_images`; + +ALTER TABLE `{PREFIX}web_user_attributes` + ADD COLUMN `street` varchar(255) NOT NULL DEFAULT '' AFTER `country`; + +ALTER TABLE `{PREFIX}web_user_attributes` + ADD COLUMN `city` varchar(255) NOT NULL DEFAULT '' AFTER `street`; + +# Set the private manager group flag + +UPDATE {PREFIX}documentgroup_names AS dgn + LEFT JOIN {PREFIX}membergroup_access AS mga ON mga.documentgroup = dgn.id + LEFT JOIN {PREFIX}webgroup_access AS wga ON wga.documentgroup = dgn.id + SET dgn.private_memgroup = (mga.membergroup IS NOT NULL), + dgn.private_webgroup = (wga.webgroup IS NOT NULL); + + +UPDATE `{PREFIX}site_plugins` SET `disabled`='1' WHERE `name` IN ('Bottom Button Bar'); + +UPDATE `{PREFIX}site_plugins` SET `disabled`='1' WHERE `name` IN ('Inherit Parent Template'); + +UPDATE `{PREFIX}system_settings` SET `setting_value` = '0' WHERE `setting_name` = 'validate_referer' AND `setting_value` = '00'; + +# start related to #MODX-1321 + +UPDATE `{PREFIX}site_content` SET `type`='reference', `contentType`='text/html' WHERE `type`='' AND `content` REGEXP '^https?://([-\w\.]+)+(:\d+)?/?'; + +UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/xml' WHERE `type`='' AND `alias` REGEXP '\.(rss|xml)$'; + +UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/javascript' WHERE `type`='' AND `alias` REGEXP '\.js$'; + +UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/css' WHERE `type`='' AND `alias` REGEXP '\.css$'; + +UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/html' WHERE `type`=''; + +ALTER TABLE `{PREFIX}documentgroup_names` + MODIFY COLUMN `name` varchar(245) NOT NULL default ''; + +ALTER TABLE `{PREFIX}event_log` + MODIFY COLUMN `source` varchar(50) NOT NULL DEFAULT '', + MODIFY COLUMN `description` text; + +ALTER TABLE `{PREFIX}categories` + MODIFY COLUMN `category` varchar(45) NOT NULL DEFAULT ''; + +ALTER TABLE `{PREFIX}manager_users` + MODIFY COLUMN `username` varchar(100) NOT NULL DEFAULT ''; + +ALTER TABLE `{PREFIX}membergroup_names` + MODIFY COLUMN `name` varchar(245) NOT NULL default ''; + +ALTER TABLE `{PREFIX}site_content` + MODIFY COLUMN `pagetitle` varchar(255) NOT NULL default '', + MODIFY COLUMN `alias` varchar(245) default '', + MODIFY COLUMN `introtext` text COMMENT 'Used to provide quick summary of the document', + MODIFY COLUMN `content` mediumtext, + MODIFY COLUMN `menutitle` varchar(255) NOT NULL DEFAULT '' COMMENT 'Menu title', + MODIFY COLUMN `template` int(10) NOT NULL default '0'; + +ALTER TABLE `{PREFIX}site_htmlsnippets` + MODIFY COLUMN `snippet` mediumtext; ALTER TABLE `{PREFIX}site_module_access` - MODIFY COLUMN `module` int(11) NOT NULL DEFAULT '0', - MODIFY COLUMN `usergroup` int(11) NOT NULL DEFAULT '0'; + MODIFY COLUMN `module` int(11) NOT NULL DEFAULT '0', + MODIFY COLUMN `usergroup` int(11) NOT NULL DEFAULT '0'; ALTER TABLE `{PREFIX}site_module_depobj` - MODIFY COLUMN `module` int(11) NOT NULL DEFAULT '0', - MODIFY COLUMN `resource` int(11) NOT NULL DEFAULT '0'; + MODIFY COLUMN `module` int(11) NOT NULL DEFAULT '0', + MODIFY COLUMN `resource` int(11) NOT NULL DEFAULT '0'; -ALTER TABLE `{PREFIX}site_plugins` - MODIFY COLUMN `plugincode` mediumtext, - MODIFY COLUMN `moduleguid` varchar(32) NOT NULL DEFAULT '' COMMENT 'GUID of module from which to import shared parameters'; +ALTER TABLE `{PREFIX}site_modules` + MODIFY COLUMN `name` varchar(50) NOT NULL DEFAULT '', + MODIFY COLUMN `disabled` tinyint(4) NOT NULL DEFAULT '0', + MODIFY COLUMN `icon` varchar(255) NOT NULL DEFAULT '' COMMENT 'url to module icon', + MODIFY COLUMN `resourcefile` varchar(255) NOT NULL DEFAULT '' COMMENT 'a physical link to a resource file', + MODIFY COLUMN `createdon` int(11) NOT NULL DEFAULT '0', + MODIFY COLUMN `editedon` int(11) NOT NULL DEFAULT '0', + MODIFY COLUMN `guid` varchar(32) NOT NULL DEFAULT '' COMMENT 'globally unique identifier', + MODIFY COLUMN `properties` text, + MODIFY COLUMN `modulecode` mediumtext COMMENT 'module boot up code'; ALTER TABLE `{PREFIX}site_plugin_events` - MODIFY COLUMN `evtid` int(10) NOT NULL DEFAULT '0'; + MODIFY COLUMN `evtid` int(10) NOT NULL DEFAULT '0'; -ALTER TABLE `{PREFIX}site_plugin_events` ADD COLUMN `priority` INT(10) NOT NULL default '0' COMMENT 'determines the run order of the plugin' AFTER `evtid`; +ALTER TABLE `{PREFIX}site_plugins` + MODIFY COLUMN `properties` text COMMENT 'Default Properties', + MODIFY COLUMN `plugincode` mediumtext, + MODIFY COLUMN `moduleguid` varchar(32) NOT NULL DEFAULT '' COMMENT 'GUID of module from which to import shared parameters'; ALTER TABLE `{PREFIX}site_snippets` - MODIFY COLUMN `snippet` mediumtext, - MODIFY COLUMN `moduleguid` varchar(32) NOT NULL DEFAULT '' COMMENT 'GUID of module from which to import shared parameters'; + MODIFY COLUMN `properties` text COMMENT 'Default Properties', + MODIFY COLUMN `snippet` mediumtext, + MODIFY COLUMN `moduleguid` varchar(32) NOT NULL DEFAULT '' COMMENT 'GUID of module from which to import shared parameters'; ALTER TABLE `{PREFIX}site_templates` MODIFY COLUMN `icon` varchar(255) NOT NULL default '' COMMENT 'url to icon file', MODIFY COLUMN `content` mediumtext; +ALTER TABLE `{PREFIX}site_tmplvar_contentvalues` + MODIFY COLUMN `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id', + MODIFY COLUMN `value` mediumtext; + +ALTER TABLE `{PREFIX}site_tmplvar_templates` + MODIFY COLUMN `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id'; + ALTER TABLE `{PREFIX}site_tmplvars` MODIFY COLUMN `name` varchar(50) NOT NULL default '', MODIFY COLUMN `elements` text, @@ -619,14 +747,6 @@ ALTER TABLE `{PREFIX}site_tmplvars` MODIFY COLUMN `display_params` text COMMENT 'Display Control Properties', MODIFY COLUMN `default_text` text; -ALTER TABLE `{PREFIX}site_tmplvar_contentvalues` - MODIFY COLUMN `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id', - MODIFY COLUMN `value` text; - -ALTER TABLE `{PREFIX}site_tmplvar_templates` MODIFY COLUMN `tmplvarid` int(10) NOT NULL DEFAULT '0' COMMENT 'Template Variable id'; - -ALTER TABLE `{PREFIX}site_tmplvar_templates` ADD COLUMN `rank` integer(11) NOT NULL DEFAULT '0' AFTER `templateid`; - ALTER TABLE `{PREFIX}system_eventnames` MODIFY COLUMN `name` varchar(50) NOT NULL DEFAULT '', MODIFY COLUMN `service` tinyint(4) NOT NULL DEFAULT '0' COMMENT 'System Service number'; @@ -639,94 +759,28 @@ ALTER TABLE `{PREFIX}user_attributes` MODIFY COLUMN `zip` varchar(25) NOT NULL DEFAULT '', MODIFY COLUMN `fax` varchar(100) NOT NULL DEFAULT '', MODIFY COLUMN `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'link to photo', - MODIFY COLUMN `comment` varchar(255) NOT NULL DEFAULT '' COMMENT 'short comment'; - -ALTER TABLE `{PREFIX}user_settings` MODIFY COLUMN `setting_value` text; + MODIFY COLUMN `comment` text; ALTER TABLE `{PREFIX}user_messages` MODIFY COLUMN `message` text; -ALTER TABLE `{PREFIX}user_roles` ADD COLUMN `publish_document` int(1) NOT NULL DEFAULT '0' AFTER `save_document`; +ALTER TABLE `{PREFIX}user_settings` MODIFY COLUMN `setting_value` text; ALTER TABLE `{PREFIX}web_users` MODIFY COLUMN `username` varchar(100) NOT NULL DEFAULT '', MODIFY COLUMN `cachepwd` varchar(100) NOT NULL DEFAULT '' COMMENT 'Store new unconfirmed password' AFTER `password`; -ALTER TABLE `{PREFIX}web_user_attributes` - MODIFY COLUMN `country` varchar(25) NOT NULL DEFAULT '', - MODIFY COLUMN `zip` varchar(25) NOT NULL DEFAULT '', - MODIFY COLUMN `fax` varchar(100) NOT NULL DEFAULT '', - MODIFY COLUMN `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'link to photo'; - ALTER TABLE `{PREFIX}web_user_settings` MODIFY COLUMN `setting_value` text; -#095-096 - -ALTER TABLE `{PREFIX}user_roles` - ADD COLUMN `edit_chunk` int(1) NOT NULL DEFAULT '0' AFTER `delete_snippet`, - ADD COLUMN `new_chunk` int(1) NOT NULL DEFAULT '0' AFTER `edit_chunk`, - ADD COLUMN `save_chunk` int(1) NOT NULL DEFAULT '0' AFTER `new_chunk`, - ADD COLUMN `delete_chunk` int(1) NOT NULL DEFAULT '0' AFTER `save_chunk`, - ADD COLUMN `import_static` int(1) NOT NULL DEFAULT '0' AFTER `view_unpublished`, - ADD COLUMN `export_static` int(1) NOT NULL DEFAULT '0' AFTER `import_static`; - ALTER TABLE `{PREFIX}web_user_attributes` - MODIFY COLUMN `state` varchar(25) NOT NULL DEFAULT '', - MODIFY COLUMN `zip` varchar(25) NOT NULL DEFAULT ''; - -#096-0961 - -#0961-0963 - -ALTER TABLE `{PREFIX}user_roles` ADD COLUMN `empty_trash` int(1) NOT NULL DEFAULT '0' AFTER `delete_document`; - -#0963-1.0.0 - -#1.0.3-1.0.4 - -ALTER TABLE `{PREFIX}user_roles` ADD COLUMN `remove_locks` int(1) NOT NULL DEFAULT '0'; - -#1.0.4-1.0.5 - -ALTER TABLE `{PREFIX}member_groups` ADD UNIQUE INDEX `ix_group_member` (`user_group`,`member`); - -ALTER TABLE `{PREFIX}user_attributes` MODIFY COLUMN `comment` text; - -ALTER TABLE `{PREFIX}web_groups` ADD UNIQUE INDEX `ix_group_user` (`webgroup`,`webuser`); - -ALTER TABLE `{PREFIX}web_user_attributes` MODIFY COLUMN `comment` text; - -# Set the private manager group flag - -UPDATE {PREFIX}documentgroup_names AS dgn - LEFT JOIN {PREFIX}membergroup_access AS mga ON mga.documentgroup = dgn.id - LEFT JOIN {PREFIX}webgroup_access AS wga ON wga.documentgroup = dgn.id - SET dgn.private_memgroup = (mga.membergroup IS NOT NULL), - dgn.private_webgroup = (wga.webgroup IS NOT NULL); - - -UPDATE `{PREFIX}site_plugins` SET `disabled` = '1' WHERE `name` IN ('Bottom Button Bar'); - -UPDATE `{PREFIX}site_plugins` SET `disabled` = '1' WHERE `name` IN ('Inherit Parent Template'); - -UPDATE `{PREFIX}system_settings` SET `setting_value` = '' WHERE `setting_name` = 'settings_version'; - -UPDATE `{PREFIX}system_settings` SET `setting_value` = '0' WHERE `setting_name` = 'validate_referer' AND `setting_value` = '00'; - -# start related to #MODX-1321 - -UPDATE `{PREFIX}site_content` SET `type`='reference', `contentType`='text/html' WHERE `type`='' AND `content` REGEXP '^https?://([-\w\.]+)+(:\d+)?/?'; - -UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/xml' WHERE `type`='' AND `alias` REGEXP '\.(rss|xml)$'; - -UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/javascript' WHERE `type`='' AND `alias` REGEXP '\.js$'; - -UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/css' WHERE `type`='' AND `alias` REGEXP '\.css$'; - -UPDATE `{PREFIX}site_content` SET `type`='document', `contentType`='text/html' WHERE `type`=''; - -#1.0.5-1.0.6 + MODIFY COLUMN `country` varchar(25) NOT NULL DEFAULT '', + MODIFY COLUMN `state` varchar(25) NOT NULL DEFAULT '', + MODIFY COLUMN `zip` varchar(25) NOT NULL DEFAULT '', + MODIFY COLUMN `fax` varchar(100) NOT NULL DEFAULT '', + MODIFY COLUMN `photo` varchar(255) NOT NULL DEFAULT '' COMMENT 'link to photo', + MODIFY COLUMN `comment` text; -ALTER TABLE `{PREFIX}site_content` MODIFY COLUMN `template` int(10) NOT NULL default '0'; +ALTER TABLE `{PREFIX}webgroup_names` + MODIFY COLUMN `name` varchar(245) NOT NULL default ''; ALTER TABLE `{PREFIX}site_content` ADD INDEX `typeidx` (`type`); @@ -748,21 +802,21 @@ ALTER TABLE `{PREFIX}site_plugin_events` DROP PRIMARY KEY; ALTER TABLE `{PREFIX}site_plugin_events` ADD PRIMARY KEY (`pluginid`, `evtid`); -ALTER TABLE `{PREFIX}active_users` MODIFY COLUMN `ip` varchar(50) NOT NULL DEFAULT ''; - ALTER TABLE `{PREFIX}site_tmplvar_contentvalues` ADD FULLTEXT `value_ft_idx` (`value`); -#1.0.10-1.0.11 +ALTER TABLE `{PREFIX}site_tmplvar_contentvalues` ADD UNIQUE INDEX `ix_tvid_contentid` (`tmplvarid`,`contentid`); -ALTER TABLE `{PREFIX}user_attributes` - ADD COLUMN `street` varchar(255) NOT NULL DEFAULT '' AFTER `country`, - ADD COLUMN `city` varchar(255) NOT NULL DEFAULT '' AFTER `street`; +ALTER TABLE `{PREFIX}site_tmplvar_templates` DROP INDEX `idx_tmplvarid`; -ALTER TABLE `{PREFIX}web_user_attributes` - ADD COLUMN `street` varchar(255) NOT NULL DEFAULT '' AFTER `country`, - ADD COLUMN `city` varchar(255) NOT NULL DEFAULT '' AFTER `street`; +ALTER TABLE `{PREFIX}site_tmplvar_templates` DROP INDEX `idx_templateid`; -ALTER TABLE `{PREFIX}site_content` ADD COLUMN `alias_visible` INT(2) NOT NULL DEFAULT '1' COMMENT 'Hide document from alias path'; +ALTER TABLE `{PREFIX}site_tmplvar_templates` DROP PRIMARY KEY; + +ALTER TABLE `{PREFIX}site_tmplvar_templates` ADD PRIMARY KEY (`tmplvarid`, `templateid`); + +ALTER TABLE `{PREFIX}member_groups` ADD UNIQUE INDEX `ix_group_member` (`user_group`,`member`); + +ALTER TABLE `{PREFIX}web_groups` ADD UNIQUE INDEX `ix_group_user` (`webgroup`,`webuser`); # ]]upgrade-able @@ -778,7 +832,7 @@ ALTER TABLE `{PREFIX}site_content` ADD COLUMN `alias_visible` INT(2) NOT NULL DE REPLACE INTO `{PREFIX}site_templates` -(id, templatename, description, editor_type, category, icon, template_type, content, locked) VALUES ('3','Minimal Template','Default minimal empty template (content returned only)','0','0','','0','[*content*]','0'); +(id, templatename, description, editor_type, category, icon, template_type, content, locked, selectable) VALUES ('3','Minimal Template','Default minimal empty template (content returned only)','0','0','','0','[*content*]','0','1'); # Default Site Documents @@ -797,9 +851,9 @@ REPLACE INTO `{PREFIX}user_attributes` REPLACE INTO `{PREFIX}user_roles` -(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks) VALUES -(2,'Editor','Limited to managing content',1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1), -(3,'Publisher','Editor with expanded permissions including manage users\, update Elements and site settings',1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1); +(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks,assets_images,assets_files,change_resourcetype,display_locks) VALUES +(2,'Editor','Limited to managing content',1,1,1,1,1,1,1,0,1,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,1,0,1,1,1,1,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,1,1,1,1,1), +(3,'Publisher','Editor with expanded permissions including manage users\, update Elements and site settings',1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,0,0,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,1,1,0,1,0,0,1,1,1,1,1); # ]]non-upgrade-able @@ -810,11 +864,9 @@ REPLACE INTO `{PREFIX}user_roles` INSERT IGNORE INTO `{PREFIX}system_settings` (setting_name, setting_value) VALUES -('manager_theme','MODxRE'), ('settings_version',''), -('show_meta','0'), +('manager_theme','MODxRE2'), ('server_offset_time','0'), -('server_protocol','http'), ('manager_language','{MANAGERLANGUAGE}'), ('modx_charset','UTF-8'), ('site_name','My MODX Site'), @@ -822,96 +874,25 @@ INSERT IGNORE INTO `{PREFIX}system_settings` ('error_page','1'), ('unauthorized_page','1'), ('site_status','1'), -('site_unavailable_message','The site is currently unavailable'), -('track_visitors','0'), -('top_howmany','10'), ('auto_template_logic','{AUTOTEMPLATELOGIC}'), ('default_template','3'), ('old_template',''), -('publish_default','0'), -('cache_default','1'), -('search_default','1'), -('friendly_urls','0'), -('friendly_url_prefix',''), -('friendly_url_suffix','.html'), -('friendly_alias_urls','1'), -('use_alias_path','1'), +('cache_type','1'), ('use_udperms','1'), ('udperms_allowroot','0'), ('failed_login_attempts','3'), ('blocked_minutes','60'), ('use_captcha','0'), -('captcha_words','MODX,Access,Better,BitCode,Cache,Desc,Design,Excell,Enjoy,URLs,TechView,Gerald,Griff,Humphrey,Holiday,Intel,Integration,Joystick,Join(),Tattoo,Genetic,Light,Likeness,Marit,Maaike,Niche,Netherlands,Ordinance,Oscillo,Parser,Phusion,Query,Question,Regalia,Righteous,Snippet,Sentinel,Template,Thespian,Unity,Enterprise,Verily,Veri,Website,WideWeb,Yap,Yellow,Zebra,Zygote'), ('emailsender','{ADMINEMAIL}'), -('email_method','mail'), -('smtp_auth','0'), -('smtp_host',''), -('smtp_port','25'), -('smtp_username',''), -('emailsubject','Your login details'), -('number_of_logs','100'), -('number_of_messages','30'), -('number_of_results','20'), ('use_editor','1'), ('use_browser','1'), -('rb_base_dir',''), -('rb_base_url',''), -('which_editor','TinyMCE'), ('fe_editor_lang','{MANAGERLANGUAGE}'), -('fck_editor_toolbar','standard'), -('fck_editor_autolang','0'), -('editor_css_path',''), -('editor_css_selectors',''), -('strip_image_paths','1'), -('upload_images','bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff'), -('upload_media','au,avi,mp3,mp4,mpeg,mpg,wav,wmv'), -('upload_flash','fla,flv,swf'), -('upload_files','aac,au,avi,css,cache,doc,docx,gz,gzip,htaccess,htm,html,js,mp3,mp4,mpeg,mpg,ods,odp,odt,pdf,ppt,pptx,rar,tar,tgz,txt,wav,wmv,xls,xlsx,xml,z,zip'), -('upload_maxsize','1048576'), -('new_file_permissions','0644'), -('new_folder_permissions','0755'), -('filemanager_path',''), -('theme_refresher',''), -('manager_layout','4'), -('custom_contenttype','application/rss+xml,application/pdf,application/vnd.ms-word,application/vnd.ms-excel,text/html,text/css,text/xml,text/javascript,text/plain,application/json'), -('auto_menuindex','1'), ('session.cookie.lifetime','604800'), -('mail_check_timeperiod','60'), -('manager_direction','ltr'), -('tinymce_editor_theme','editor'), -('tinymce_custom_plugins','style,advimage,advlink,searchreplace,print,contextmenu,paste,fullscreen,nonbreaking,xhtmlxtras,visualchars,media'), -('tinymce_custom_buttons1','undo,redo,selectall,separator,pastetext,pasteword,separator,search,replace,separator,nonbreaking,hr,charmap,separator,image,link,unlink,anchor,media,separator,cleanup,removeformat,separator,fullscreen,print,code,help'), -('tinymce_custom_buttons2','bold,italic,underline,strikethrough,sub,sup,separator,bullist,numlist,outdent,indent,separator,justifyleft,justifycenter,justifyright,justifyfull,separator,styleselect,formatselect,separator,styleprops'), -('tree_show_protected', '0'), -('rss_url_news', 'http://feeds.feedburner.com/modx-announce'), -('rss_url_security', 'http://feeds.feedburner.com/modxsecurity'), -('validate_referer', '1'), -('datepicker_offset','-10'), -('xhtml_urls','1'), -('allow_duplicate_alias','0'), -('automatic_alias','1'), -('datetime_format','dd-mm-YYYY'), -('warning_visibility', '1'), -('remember_last_tab', '0'), -('enable_bindings', '1'), -('seostrict', '0'), -('cache_type', '1'), -('maxImageWidth', '1600'), -('maxImageHeight', '1200'), -('thumbWidth', '150'), -('thumbHeight', '150'), -('thumbsDir', '.thumbs'), -('jpegQuality', '90'), -('denyZipDownload', '0'), -('denyExtensionRename', '0'), -('showHiddenFiles', '0'), -('docid_incrmnt_method', '0'), -('make_folders', '0'); - +('theme_refresher',''); REPLACE INTO `{PREFIX}user_roles` -(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks) VALUES -(1, 'Administrator', 'Site administrators have full access to all functions',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); +(id,name,description,frames,home,view_document,new_document,save_document,publish_document,delete_document,empty_trash,action_ok,logout,help,messages,new_user,edit_user,logs,edit_parser,save_parser,edit_template,settings,credits,new_template,save_template,delete_template,edit_snippet,new_snippet,save_snippet,delete_snippet,edit_chunk,new_chunk,save_chunk,delete_chunk,empty_cache,edit_document,change_password,error_dialog,about,file_manager,save_user,delete_user,save_password,edit_role,save_role,delete_role,new_role,access_permissions,bk_manager,new_plugin,edit_plugin,save_plugin,delete_plugin,new_module,edit_module,save_module,exec_module,delete_module,view_eventlog,delete_eventlog,manage_metatags,edit_doc_metatags,new_web_user,edit_web_user,save_web_user,delete_web_user,web_access_permissions,view_unpublished,import_static,export_static,remove_locks,assets_images,assets_files,change_resourcetype,display_locks) VALUES +(1, 'Administrator', 'Site administrators have full access to all functions',1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1); # 1 - "Parser Service Events", 2 - "Manager Access Events", 3 - "Web Access Service Events", 4 - "Cache Service Events", 5 - "Template Service Events", 6 - Custom Events @@ -938,6 +919,7 @@ REPLACE INTO `{PREFIX}system_eventnames` ('17','OnManagerCreateGroup','2',''), ('18','OnBeforeCacheUpdate','4',''), ('19','OnCacheUpdate','4',''), +('107','OnMakePageCacheKey','4',''), ('20','OnLoadWebPageCache','4',''), ('21','OnBeforeSaveWebPageCache','4',''), ('22','OnChunkFormPrerender','1','Chunks'), @@ -952,6 +934,9 @@ REPLACE INTO `{PREFIX}system_eventnames` ('31','OnDocFormSave','1','Documents'), ('32','OnBeforeDocFormDelete','1','Documents'), ('33','OnDocFormDelete','1','Documents'), +('1033','OnDocFormUnDelete','1','Documents'), +('1034','onBeforeMoveDocument','1','Documents'), +('1035','onAfterMoveDocument','1','Documents'), ('34','OnPluginFormPrerender','1','Plugins'), ('35','OnPluginFormRender','1','Plugins'), ('36','OnBeforePluginFormSave','1','Plugins'), @@ -1010,8 +995,12 @@ REPLACE INTO `{PREFIX}system_eventnames` ('89','OnManagerPageInit','2',''), ('90','OnWebPageInit','5',''), ('101','OnLoadDocumentObject','5',''), +('104','OnBeforeLoadDocumentObject','5',''), +('105','OnAfterLoadDocumentObject','5',''), ('91','OnLoadWebDocument','5',''), ('92','OnParseDocument','5',''), +('106','OnParseProperties','5',''), +('108','OnBeforeParseParams','5',''), ('93','OnManagerLoginFormRender','2',''), ('94','OnWebPageComplete','5',''), ('95','OnLogPageHit','5',''), @@ -1020,6 +1009,8 @@ REPLACE INTO `{PREFIX}system_eventnames` ('98','OnEmptyTrash','1','Documents'), ('99','OnManagerLoginFormPrerender','2',''), ('100','OnStripAlias','1','Documents'), +('102','OnMakeDocUrl','5',''), +('103','OnBeforeLoadExtension','5',''), ('200','OnCreateDocGroup','1','Documents'), ('201','OnManagerWelcomePrerender','2',''), ('202','OnManagerWelcomeHome','2',''), @@ -1034,8 +1025,12 @@ REPLACE INTO `{PREFIX}system_eventnames` ('211','OnManagerTreeRender','2',''), ('212','OnManagerNodePrerender','2',''), ('213','OnManagerNodeRender','2',''), +('214','OnManagerMenuPrerender','2',''), +('215','OnManagerTopPrerender','2',''), +('224','OnDocFormTemplateRender','1','Documents'), ('999','OnPageUnauthorized','1',''), -('1000','OnPageNotFound','1',''); +('1000','OnPageNotFound','1',''), +('1001','OnFileBrowserUpload','1','File Browser Events'); # ^ I don't think we need more than 1000 built-in events. Custom events will start at 1001 @@ -1046,46 +1041,50 @@ REPLACE INTO `{PREFIX}system_eventnames` UPDATE `{PREFIX}user_roles` SET - bk_manager=1, - new_plugin=1, - edit_plugin=1, - save_plugin=1, - delete_plugin=1, - new_module=1, - edit_module=1, - save_module=1, - delete_module=1, - exec_module=1, - view_eventlog = 1, - delete_eventlog = 1, - manage_metatags = 1, - edit_doc_metatags = 1, - new_web_user = 1, - edit_web_user = 1, - save_web_user = 1, - delete_web_user = 1, - new_chunk = 1, - edit_chunk = 1, - save_chunk = 1, - delete_chunk = 1, - web_access_permissions = 1, - view_unpublished = 1, - publish_document = 1, - import_static = 1, - export_static = 1, - empty_trash = 1, - remove_locks = 1 - WHERE `id`=1; + bk_manager=1, + new_plugin=1, + edit_plugin=1, + save_plugin=1, + delete_plugin=1, + new_module=1, + edit_module=1, + save_module=1, + delete_module=1, + exec_module=1, + view_eventlog = 1, + delete_eventlog = 1, + manage_metatags = 1, + edit_doc_metatags = 1, + new_web_user = 1, + edit_web_user = 1, + save_web_user = 1, + delete_web_user = 1, + new_chunk = 1, + edit_chunk = 1, + save_chunk = 1, + delete_chunk = 1, + web_access_permissions = 1, + view_unpublished = 1, + publish_document = 1, + import_static = 1, + export_static = 1, + empty_trash = 1, + remove_locks = 1, + display_locks = 1, + assets_images = 1, + assets_files = 1, + change_resourcetype = 1 + WHERE `id`=1; # Update any invalid Manager Themes in User Settings and reset the default theme UPDATE `{PREFIX}user_settings` SET - `setting_value`='MODxRE' + `setting_value`='MODxRE2' WHERE `setting_name`='manager_theme'; -REPLACE INTO `{PREFIX}system_settings` (setting_name, setting_value) VALUES ('manager_theme','MODxRE'); +REPLACE INTO `{PREFIX}system_settings` (setting_name, setting_value) VALUES ('manager_theme','MODxRE2'); -UPDATE `{PREFIX}system_settings` set setting_value = if(setting_value REGEXP 'application/json',setting_value,concat_ws(",",setting_value,"application/json")) WHERE setting_name='custom_contenttype'; \ No newline at end of file +UPDATE `{PREFIX}system_settings` set setting_value = if(setting_value REGEXP 'application/json',setting_value,concat_ws(",",setting_value,"application/json")) WHERE setting_name='custom_contenttype'; diff --git a/install/sqlParser.class.php b/install/sqlParser.class.php index 2f218ea9b7..b7bccdc9ae 100755 --- a/install/sqlParser.class.php +++ b/install/sqlParser.class.php @@ -7,7 +7,7 @@ class SqlParser { var $host, $dbname, $prefix, $user, $password, $mysqlErrors; var $conn, $installFailed, $sitename, $adminname, $adminemail, $adminpass, $managerlanguage; var $mode, $fileManagerPath, $imgPath, $imgUrl; - var $dbVersion; + var $dbMODx, $dbVersion; var $connection_charset, $connection_method; function SqlParser($host, $user, $password, $db, $prefix='modx_', $adminname, $adminemail, $adminpass, $connection_charset= 'utf8', $managerlanguage='english', $connection_method = 'SET CHARACTER SET', $auto_template_logic = 'parent') { @@ -27,22 +27,22 @@ function SqlParser($host, $user, $password, $db, $prefix='modx_', $adminname, $a } function connect() { - $this->conn = mysql_connect($this->host, $this->user, $this->password); - mysql_select_db($this->dbname, $this->conn); - if (function_exists('mysql_set_charset')) mysql_set_charset($this->connection_charset); + $this->conn = mysqli_connect($this->host, $this->user, $this->password); + mysqli_select_db($this->conn, $this->dbname); + if (function_exists('mysqli_set_charset')) mysqli_set_charset($this->conn, $this->connection_charset); $this->dbVersion = 3.23; // assume version 3.23 - if(function_exists("mysql_get_server_info")) { - $ver = mysql_get_server_info(); + if(function_exists("mysqli_get_server_info")) { + $ver = mysqli_get_server_info($this->conn); $this->dbMODx = version_compare($ver,"4.0.2"); $this->dbVersion = (float) $ver; // Typecasting (float) instead of floatval() [PHP < 4.2] } - mysql_query("{$this->connection_method} {$this->connection_charset}"); + mysqli_query($this->conn,"{$this->connection_method} {$this->connection_charset}"); } function process($filename) { - global $modx_version; + global $custom_placeholders; // check to make sure file exists if (!file_exists($filename)) { @@ -74,13 +74,20 @@ function process($filename) { $idata = str_replace('{ADMIN}', $this->adminname, $idata); $idata = str_replace('{ADMINEMAIL}', $this->adminemail, $idata); $idata = str_replace('{ADMINPASS}', $this->adminpass, $idata); - $idata = str_replace('{IMAGEPATH}', $this->imagePath, $idata); - $idata = str_replace('{IMAGEURL}', $this->imageUrl, $idata); + $idata = str_replace('{IMAGEPATH}', $this->imgPath, $idata); + $idata = str_replace('{IMAGEURL}', $this->imgUrl, $idata); $idata = str_replace('{FILEMANAGERPATH}', $this->fileManagerPath, $idata); $idata = str_replace('{MANAGERLANGUAGE}', $this->managerlanguage, $idata); $idata = str_replace('{AUTOTEMPLATELOGIC}', $this->autoTemplateLogic, $idata); /*$idata = str_replace('{VERSION}', $modx_version, $idata);*/ + // Replace custom placeholders + foreach($custom_placeholders as $key=>$val) { + if (strpos($idata, '{'.$key.'}') !== false) { + $idata = str_replace('{'.$key.'}', $val, $idata); + } + } + $sql_array = explode("\n\n", $idata); $num = 0; @@ -98,21 +105,21 @@ function process($filename) { $num = $num + 1; - if ($sql_do) mysql_query($sql_do, $this->conn); - if(mysql_error()) { + if ($sql_do) mysqli_query($this->conn, $sql_do); + if(mysqli_error($this->conn)) { // Ignore duplicate and drop errors - Raymond if ($this->ignoreDuplicateErrors){ - if (mysql_errno() == 1060 || mysql_errno() == 1061 || mysql_errno() == 1091) continue; + if (mysqli_errno($this->conn) == 1060 || mysqli_errno($this->conn) == 1061 || mysqli_errno($this->conn) == 1062 ||mysqli_errno($this->conn) == 1091) continue; } // End Ignore duplicate - $this->mysqlErrors[] = array("error" => mysql_error(), "sql" => $sql_do); + $this->mysqlErrors[] = array("error" => mysqli_error($this->conn), "sql" => $sql_do); $this->installFailed = true; } } } function close() { - mysql_close($this->conn); + mysqli_close($this->conn); } } diff --git a/install/style.css b/install/style.css index 65c2efac5c..ae5ef6a0de 100755 --- a/install/style.css +++ b/install/style.css @@ -1,473 +1,642 @@ html { -background-image:url(img/bg.png); + background-color: #f2f2f2; } -html, body, div, span, applet, object, iframe, h1, h2, h3, h4, h5, h6, p, pre, a, abbr, address, big, code, del, dfn, em, font, img, small, strong, sub, b, u, i, center, dl, dt, dd, ol, ul, li, fieldset, form, label, legend, table, caption, tbody, tfoot, thead, tr, th, td, + +html, +body, +div, +span, +applet, +object, +iframe, +h1, +h2, +h3, +h4, +h5, +h6, +p, +pre, +a, +abbr, +address, +big, +code, +del, +dfn, +em, +font, +img, +small, +strong, +sub, +b, +u, +i, +center, +dl, +dt, +dd, +ol, +ul, +li, +fieldset, +form, +label, +legend, +table, +caption, +tbody, +tfoot, +thead, +tr, +th, +td, html body * span.clear, html body * div.clear, html body * li.clear, html body * dd.clear { -border:0 none; -font-size:100.01%; -margin:0; -outline-color:-moz-use-text-color; -outline-style:none; -outline-width:0; -padding:0; -vertical-align:baseline; + border: 0 none; + font-size: 100.01%; + margin: 0; + outline-color: -moz-use-text-color; + outline-style: none; + outline-width: 0; + padding: 0; + vertical-align: baseline; } body { --x-system-font:none; -font-family:Helvetica,Arial,'Liberation Sans',FreeSans,sans-serif; -font-size:78.5%; -font-size-adjust:none; -font-stretch:normal; -font-style:normal; -font-variant:normal; -font-weight:normal; -line-height:1.5; + -x-system-font: none; + font-family: Helvetica, Arial, 'Liberation Sans', FreeSans, sans-serif; + font-size: 78.5%; + font-size-adjust: none; + font-stretch: normal; + font-style: normal; + font-variant: normal; + font-weight: normal; + line-height: 1.5; +} + +html:lang(ja) body { + font-family: Meiryo, "Hiragino Kaku Gothic Pro", Arial, "Helvetica Neue", Helvetica, sans-serif; } + label { -cursor:pointer; + cursor: pointer; } -ol, ul { -list-style-image:none; -list-style-position:outside; -list-style-type:none; + +ol, +ul { + list-style-image: none; + list-style-position: outside; + list-style-type: none; } + ins { -text-decoration:none; + text-decoration: none; } + del { -text-decoration:line-through; + text-decoration: line-through; } + table { -border-collapse:collapse; -border-spacing:0; -} -a:focus { + border-collapse: collapse; + border-spacing: 0; } -h1, h2, h3, h4, h5, h6 { -font-weight:normal; + +a:focus {} + +h1, +h2, +h3, +h4, +h5, +h6 { + font-weight: normal; } + h1 { -font-size:216.667%; -line-height:0.692308; -margin:0.461538em 0 0.230769em; + font-size: 216.667%; + line-height: 0.692308; + margin: 0.461538em 0 0.230769em; } + h2 { -font-size:166.667%; -line-height:0.9; -margin:0.6em 0 0.3em; + font-size: 166.667%; + line-height: 0.9; + margin: 0.6em 0 0.3em; } + h3 { -font-size:141.667%; -line-height:0.823529; -margin:0.54902em 0 0.27451em; -font-weight: bold; + font-size: 141.667%; + line-height: 0.823529; + margin: 0.54902em 0 0.27451em; + font-weight: bold; } + h4 { -font-size:116.667%; -line-height:1; -margin:0.666667em 0 0.333333em; -} -h3, h4 { -color:#585858; -font-size:1.1em; -line-height:1.3em; -margin-top:8px; + font-size: 116.667%; + line-height: 1; + margin: 0.666667em 0 0.333333em; } +h3, +h4 { + color: #585858; + font-size: 1.1em; + line-height: 1.3em; + margin-top: 8px; +} h5 { -font-size:100%; -font-weight:bold; -line-height:1.5; -margin:1em 0 0.5em; + font-size: 100%; + font-weight: bold; + line-height: 1.5; + margin: 1em 0 0.5em; } + h6 { -font-size:83.3333%; -font-weight:bold; -line-height:1.8; -margin:1.8em 0 0; + font-size: 83.3333%; + font-weight: bold; + line-height: 1.8; + margin: 1.8em 0 0; } + ol { -list-style-image:none; -list-style-position:outside; -list-style-type:decimal; + list-style-image: none; + list-style-position: outside; + list-style-type: decimal; } + ul { -list-style-image:none; -list-style-position:outside; -list-style-type:square; + list-style-image: none; + list-style-position: outside; + list-style-type: square; } + li { -margin-left:30px; + margin-left: 30px; } -dl, hr, ol, ul, dl pre, table, address, fieldset { -margin-bottom:1.5em; + +dl, +hr, +ol, +ul, +dl pre, +table, +address, +fieldset { + margin-bottom: 1.5em; } -p {margin-bottom:.5em;} + +p { + margin-bottom: .5em; +} + .container_10 { -margin-left:auto; -margin-right:auto; -width:800px; + margin-left: auto; + margin-right: auto; + max-width: 1000px; + padding-left: 20px; + padding-right: 20px; } #rtl { - direction: rtl; - text-align: right; + direction: rtl; + text-align: right; } -strong, em, b { -color:#444; +strong, +em, +b { + color: #444; } -h1, h2, h3, h4, h5, h6, address { -margin-top:0; + +h1, +h2, +h3, +h4, +h5, +h6, +address { + margin-top: 0; } -p, td, th, dt, dd, li { -color:#6A6A6A; + +p, +td, +th, +dt, +dd, +li { + color: #6A6A6A; } + #footer p { -color:#FFFFFF; + color: #FFFFFF; } -code, pre { -margin-bottom:1em; + +code, +pre { + margin-bottom: 1em; } + dt { -display:inline; -font-weight:bold; + display: inline; + font-weight: bold; } + dd { -margin-bottom:20px; + margin-bottom: 20px; } + .left { -float:left; + float: left; } + .right { -float:right; + float: right; } + img.left { -float:left; -margin-right:10px; + float: left; + margin-right: 10px; } + img.right { -float:right; -margin-left:10px; + float: right; + margin-left: 10px; } + a { -color:#0066CC; + color: #3697CD; } + a img { -border:0 none; + border: 0 none; } + hr { -clear:both; -border-bottom: 1px solid #FFFFFF; -border-top: 1px solid #E6E6E6; -color:#E6E6E6; -height:0; -} -.clear, .cls { -background-color:transparent; -border:0 none; -clear:both !important; -height:1px; -margin-top:-1px; -visibility:hidden; + clear: both; + border-bottom: 1px solid #FFFFFF; + border-top: 1px solid #E6E6E6; + color: #E6E6E6; + height: 0; +} + +.clear, +.cls { + background-color: transparent; + border: 0 none; + clear: both !important; + height: 1px; + margin-top: -1px; + visibility: hidden; } + .center { -margin:0 auto; -text-align:center; + margin: 0 auto; + text-align: center; } .help { - float: right; + float: right; + display: inline-block; + margin-top: -3px; } + .help a { - color: #fff; - text-decoration: none !important; - text-transform: uppercase; - -moz-border-radius: 3x; - -webkit-border-radius: 3px; - border-radius: 3px; - border: 1px solid #ffbc6c; - border-right-color: #db831a; - border-bottom-color: #db831a; - background: #f2901d; - font-size: 86%; - padding: 2px 4px; - letter-spacing: 1px; + display: inline-block; + padding: 2px 7px; + color: #fff; + text-decoration: none !important; + border: 1px solid rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.15); + border-radius: 2px !important; + font-size: 12px; + font-weight: normal !important; } + .help a:hover { - background: #f8a440; + background-color: rgba(255, 255, 255, .3); } + .help a:active { - border: 1px solid #db831a; - border-right-color: #ffbc6c; - border-bottom-color: #ffbc6c; + border: 1px solid #db831a; + border-right-color: #ffbc6c; + border-bottom-color: #ffbc6c; } + .version { - color: #fff; + color: #fff; } + span.mono { - font-family: Courier, monospace; + font-family: Courier, monospace; } + .buttonlinks { - display:block; - height:26px; - line-height:26px; - margin-bottom:20px; - float:right; - clear: left; + display: block; + height: 36px; + line-height: 26px; + margin-bottom: 0; + float: right; + clear: left; } + #rtl .buttonlinks { - float: left; + float: left; } .info .buttonlinks { -margin:0; + margin: 0; } + .buttonlinks a { --x-system-font:none; -background:transparent url(img/link_button.png) no-repeat scroll -54px; -color:#5A5A5A; -display:block; -float:left; -font: bold "Lucida Grande",Lucida,Verdana,sans-serif; -height:26px; -margin:0 20px 0 0; -padding:0; -max-width:250px; -line-height: 1.9; -text-decoration:none; -text-transform:uppercase; + -x-system-font: none; + display: block; + float: left; + font-size: 13px; + text-decoration: none; + margin: 0 0 0 15px; + padding: 5px 15px; + max-width: 250px; + color: #fff; + background: #32AB9A; + border-color: #32AB9A; + border-radius: 3px !important; + cursor: pointer; } + #rtl .buttonlinks a { -margin: 0 0 0 20px; -} -.buttonlinks a span { -background:#FFFFFF url(img/link_button.png) no-repeat scroll 100%; -display:block; -float:left; -height:26px; -margin:0 0 0 10px; -padding:0 22px 0 0; -white-space:nowrap; + margin: 0 0 0 20px; } +.buttonlinks a span {} + .buttonlinks a:hover { -background-image:url(img/link_button_hover.png); -cursor:pointer; + background: #35baa8; + border-color: #35baa8; } -.buttonlinks a:hover span { -background-image:url(img/link_button_hover.png); -cursor:pointer; + +.buttonlinks a:active { + background: #32AB9A; + border-color: #32AB9A; } + #header .buttonlinks a:hover { -text-decoration:none; + text-decoration: none; } + #header .container_10 { -padding:8px 0; -margin:0 auto; -} -.buttonlinks a.prev { -background:transparent url(img/link_button_prev.png) no-repeat scroll right 0; -float:left; -margin:0 20px 0 0; -} -.buttonlinks a.prev span { -background:transparent url(img/link_button_prev.png) no-repeat scroll left 0; -float:left; -margin:0 10px 0 0; -padding:0 0 0 22px; + padding-top: 10px; + padding-bottom: 10px; + margin: 0 auto; } -.buttonlinks a.prev:hover { -background-position:right -26px; -} -.buttonlinks a.prev:hover span { -background-position:left -26px; + +#header { + background-color: #39515D !important; + background-image: -webkit-linear-gradient(left, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; + background-image: -o-linear-gradient(left, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; + background-image: linear-gradient(to right, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; } #header { -background:url(img/header.jpg) repeat-x scroll; - margin-bottom:25px; + padding: 5px 0; + background-color: #39515D !important; } + #header a:hover { -text-decoration:underline; + text-decoration: underline; } + #mainheader { -position:relative; - height:75px; - margin-top:15px; -} -#contentarea { -min-height:250px; + padding: 30px 0; } #contentarea h2 { -color:#0F7096; -font-size:1.7em; -font-weight:bold; -line-height:1em; -margin-bottom:0.5em; + color: #0F7096; + font-size: 1.6em; + line-height: 1.2em; + margin-bottom: 0.5em; } #footer { -background:url(img/footer.jpg) 602px repeat-x scroll; -color:#FFFFFF; -margin-top:20px; -padding:23px 0 30px; -} -#footer-inner { - padding: 15px 0; + color: #858C90; + padding: 40px 0; } + +#footer-inner {} + #footer h6 { -font-size:1.7em; -margin-bottom:10px; + font-size: 1.7em; + margin-bottom: 10px; } + #footer a { -color:#FFFFFF; + color: #858C90 !important; } #content { -overflow:hidden; -zoom:1; -padding: 20px 20px 20px 20px; -border: 1px solid #e1e1e1; -background: #fff; --moz-border-radius: 10px; --webkit-border-radius: 10px; -border-radius: 10px; -margin-bottom:35px; + overflow: hidden; + zoom: 1; + padding: 20px; + background: #fff; + -moz-border-radius: 10px; + -webkit-border-radius: 10px; + border-radius: 0; + margin-bottom: 35px; + box-shadow: 0 0 5px 0 rgba(0, 0, 0, .1); } .notes { -background-color:#FEFFCB; + background-color: #FEFFCB; } + .info { -background-color:#F3F3F3; + background-color: #F3F3F3; } + #contentarea .notes h3 { -font-size:1.3em; + font-size: 1.3em; } .installImg { - float: left; - width: 120px; - min-height: 100px; - text-align: center; - margin-right:15px; + float: left; + width: 120px; + min-height: 100px; + text-align: center; + margin-right: 15px; + margin-bottom: 15px; } + #rtl .installImg { - float: right; + float: right; } + #installChoices { - margin:1em 0; + margin: 1em 0; } + #installChoices h3 { - padding: 0 20px; - background: url(img/elements.gif) no-repeat top left; + margin-top: 20px; + margin-bottom: 10px; + color: #3697CD; } + #rtl #installChoices h3 { - background-position: top right; + background-position: top right; } + #installChoices hr { - height: 1px; - border-width: 1px 0 0; - border-top: 1px dotted #ddd; + height: 1px; + border-width: 1px 0 0; + border-top: 1px dotted #ddd; + margin: 0; } + +#installChoices label { + position: relative; + display: block; + padding: 3px 0; + padding-left: 25px; +} + +#installChoices label:hover { + color: #3697CD; +} + #installChoices input { - margin: 0 10px 10px 0; + margin: 0; + position: absolute; + top: 5px; + left: 0; } + #rtl #installChoices input { - margin: 0 0 10px 10px; + margin: 0 0 0 10px; } -p.labelHolder { - clear: left; - margin-bottom:5px; +#installChoices .comname { + font-weight: bold; } -#content ul li { background: none; list-style: none; } +#installChoices .description { + font-size: 0.9em; +} +p.labelHolder { + clear: left; + margin-bottom: 5px; +} -#setCollation, #AUH { - background-color:#fff; - display:none; +#content ul li { + background: none; + list-style: none; } -#collationMask, #AUHMask { - background-color:#fff; +#setCollation, +#AUH { + background-color: #fff; + display: none; +} + +#collationMask, +#AUHMask { + background-color: #fff; } tbody td { - text-align:left; + text-align: left; } + .labelHolder label { - float: left; - margin-bottom: 5px; - width: 200px; + float: left; + margin-bottom: 5px; + width: 200px; } + #rtl .labelHolder label { - float: right; + float: right; } + .status { - margin: 1em 0 2em; - padding: .25em .5em; -} -p.actions { - line-height: 1; - margin-top: 3px; - overflow:hidden;zoom:1; -} -p.actions a { - margin: 0 5px 1px; - padding: 2px 6px 3px; - border-bottom: 1px solid #039; - display: block; - float: left; - color: navy; - text-decoration: none; -} -#rtl p.actions a { - float: right; + margin: 1em 0 2em; + padding: .25em .5em; +} + +.actions { + line-height: 1; + margin-top: 3px; + overflow: hidden; + zoom: 1; +} + +.actions a { + margin: 0; + padding: 0.8em 1em; + border: 1px solid #CBCBCC; + display: inline-block; + color: #3697CD; + text-decoration: none; + border-radius: 3px; + background-color: #fff; +} + +h3 .actions { + display: block; + margin-top: 0.5em; + font-size: 0.8em; } + +#rtl .actions { + text-align: right; +} + +h3 .actions a:hover, p.actions a:hover { - background: #039; - color: #fff; + background-color: #3697cd; + border-color: #3697cd; + color: #fff; } + +h3 .actions a:active, p.actions a:active { - background-color: #ccc; + background-color: #3189ba; + border-color: #3189ba; } + img.options { - float:left; - margin: 0 10px 0 0; + float: left; + margin: 0 10px 0 0; } + #rtl img.options { - float:right; - margin: 0 0 0 10px; + float: right; + margin: 0 0 0 10px; } + span.ok { - font-weight:bold; - color:green; + font-weight: bold; + color: green; } + span.notok { - font-weight:bold; - color:red; -} -#logo { -background:transparent url(img/logo.png) no-repeat; -display:block; -height:63px; -left:0; -line-height:63px; -margin:20px 0 0; -position:absolute; -text-indent:-9999px; -top:0; -width:228px; -} - -input, select {font:inherit;letter-spacing:1px;} -input#adminemail {style:width:350px;} + font-weight: bold; + color: red; +} + +input, +select { + font: inherit; + letter-spacing: 1px; +} + +select { + padding: 5px; +} + +input#adminemail { + width: 350px; +} \ No newline at end of file diff --git a/install/template.tpl b/install/template.tpl index 03d18d5e36..cae5e80a3c 100644 --- a/install/template.tpl +++ b/install/template.tpl @@ -5,17 +5,26 @@ [+pagetitle+] + + + + +
                        +
                        + +
                        +
                        +
                        @@ -23,6 +32,7 @@
                        + + diff --git a/manager/actions/access_permissions.dynamic.php b/manager/actions/access_permissions.dynamic.php index 010012fbc6..4ff85d0e79 100644 --- a/manager/actions/access_permissions.dynamic.php +++ b/manager/actions/access_permissions.dynamic.php @@ -39,13 +39,33 @@ ?> -

                        +

                        + + + + + + +

                        '.$_lang['access_permissions_off'].'

                        ' : ''?>
                        - +
                        @@ -54,7 +74,7 @@ '.$_lang['access_permissions_users_tab'].'

                        '; + echo '

                        '.$_lang['access_permissions_users_tab'].'

                        '; ?> @@ -78,7 +98,7 @@ LEFT JOIN {$tbl_member_groups} AS groups ON groups.user_group = groupnames.id LEFT JOIN {$tbl_manager_users} AS users ON users.id = groups.member", '', - 'groupnames.name' + 'groupnames.name, user_name' ); if ($modx->db->getRecordCount($rs) < 1) { echo ''.$_lang['no_groups_found'].''; @@ -94,9 +114,9 @@ "\t".''."\n". "\t".''."\n". "\t".''."\n". - "\t".' '."\n". + "\t".' '."\n". "\t".' '."\n". - "\t".''."\n". + "\t".''."\n". ''; echo "
                          \n"; @@ -125,7 +145,7 @@ '.$_lang['access_permissions_resources_tab'].'

                          '; + echo '

                          '.$_lang['access_permissions_resources_tab'].'

                          '; ?>
                        @@ -166,9 +186,9 @@ "\t".''."\n". "\t".''."\n". "\t".''."\n". - "\t".' '."\n". + "\t".' '."\n". "\t".''."\n". - "\t".''."\n". + "\t".''."\n". ''; echo '
                        '.$_lang['access_permissions_resources_in_group'].' '; @@ -180,7 +200,7 @@ continue; } if ($pid == $row['id']) echo ", \n"; - echo ''.$row['doc_id'].''; + echo ''.$row['doc_id'].''; $pid = $row['id']; } echo '
                        '; @@ -194,7 +214,7 @@ '.$_lang['access_permissions_links_tab'].'

                        '; + echo '

                        '.$_lang['access_permissions_links_tab'].'

                        '; $rs = $modx->db->select( "groupnames.*, groupacc.id AS link_id, dgnames.id AS dg_id, dgnames.name AS dg_name", @@ -202,7 +222,7 @@ LEFT JOIN {$tbl_membergroup_access} AS groupacc ON groupacc.membergroup = groupnames.id LEFT JOIN {$tbl_documentgroup_names} AS dgnames ON dgnames.id = groupacc.documentgroup", '', - 'name' + 'name, dg_name' ); if ($modx->db->getRecordCount($rs) < 1) { echo ''.$_lang['no_groups_found'].'
                        '; diff --git a/manager/actions/bkmanager.static.php b/manager/actions/bkmanager.static.php index 7c8b159ad4..5dfc74ab40 100644 --- a/manager/actions/bkmanager.static.php +++ b/manager/actions/bkmanager.static.php @@ -172,14 +172,30 @@ function backup(){ f.submit(); return false; } + function confirmRevert(filename) { + var m = ''; + m = m.replace('[+filename+]', filename); + var c = confirm(m); + if(c) { + document.restore2.filename.value = filename; + document.restore2.save.click(); + } + } -

                        +

                        + + + + + + +

                        @@ -193,7 +209,7 @@ function backup(){
                        -

                        +

                        @@ -277,8 +293,10 @@ function backup(){

                        - - + +
                        + +
                        @@ -373,15 +391,18 @@ function checked($cond)

                        - "snapshot_path={$modx->config['snapshot_path']}"));?> +
                        + "snapshot_path={$modx->config['snapshot_path']}"));?> +
                        -
                        - icons_save" /> - +
                        + + icons_save" /> + +
                        -
                        -

                        - +

                        + + + + + + +

                          -
                        • " />
                        • +
                        • ">
                        • [+subject+]'; - $ph['image'] = 'folder.gif'; + $tpl = '
                        • [+subject+]
                        • '; + $ph['image'] = $_style['files_folder-open']; $ph['subject'] = $_lang['add_folder']; $ph['href'] = 'index.php?a=31&mode=newfolder&path='.urlencode($startpath).'&name='; $_ = parsePlaceholder($tpl,$ph); - $tpl = '
                        • ' . $_lang['files.dynamic.php1'] . '
                        • '; - $ph['image'] = 'page-html.gif'; + $tpl = '
                        • ' . $_lang['files.dynamic.php1'] . '
                        • '; + $ph['image'] = $_style['files_page_html']; $ph['href'] = 'index.php?a=31&mode=newfile&path='.urlencode($startpath).'&name='; $_ .= parsePlaceholder($tpl,$ph); echo $_; } ?> -
                        • icons_cancel" />
                        • +
                        -
                        +
                        webAlertAndQuit($_lang["files.dynamic.php2"]); } -$tpl = '[+subject+] '; +$tpl = ' [+subject+] '; $ph = array(); $ph['style_path'] = $theme_image_path; // To Top Level with folder icon to the left if($startpath==$filemanager_path || $startpath.'/' == $filemanager_path) { - $ph['image'] = 'deletedfolder.gif'; + $ph['image'] = ''.$_style['files_top'] .''; $ph['subject'] = 'Top'; } else { - $ph['image'] = 'folder.gif'; + $ph['image'] = ''.$_style['files_top'] .''; $ph['subject'] = 'Top / '; } echo parsePlaceholder($tpl,$ph); @@ -338,6 +365,73 @@ function deleteFile(file) { umask($old_umask); } } + // Duplicate file here + if($_REQUEST['mode']=='duplicate') + { + $old_umask = umask(0); + $filename = $_REQUEST['path']; + $filename = $modx->db->escape($filename); + $newFilename = str_replace('..\\','',str_replace('../','',$_REQUEST['newFilename'])); + $newFilename = $modx->db->escape($newFilename); + + if(!checkExtension($newFilename)) + { + echo ''.$_lang['files_filetype_notok'].'

                        '; + } + elseif(preg_match('@(\\\\|\/|\:|\;|\,|\*|\?|\"|\<|\>|\||\?)@',$newFilename)!==0) + { + echo $_lang['files.dynamic.php3']; + } + else + { + if (!copy($filename, MODX_BASE_PATH.$newFilename)) { + echo $_lang['files.dynamic.php5']; + } + umask($old_umask); + } + } + // Rename folder here + if($_REQUEST['mode']=='renameFolder') { + $old_umask = umask(0); + $dirname = $_REQUEST['path'] .'/'. $_REQUEST['dirname']; + $dirname = $modx->db->escape($dirname); + $newDirname = str_replace(array('..\\', '../', '\\', '/'),'',$_REQUEST['newDirname']); + $newDirname = $modx->db->escape($newDirname); + + if(preg_match('@(\\\\|\/|\:|\;|\,|\*|\?|\"|\<|\>|\||\?)@',$newDirname)!==0) + { + echo $_lang['files.dynamic.php3']; + } else if (!rename($dirname, $_REQUEST['path'].'/'.$newDirname)) { + echo '', $_lang['file_folder_not_created'], '

                        '; + } + umask($old_umask); + } + // Rename file here + if($_REQUEST['mode']=='renameFile') + { + $old_umask = umask(0); + $path = dirname($_REQUEST['path']); + $filename = $_REQUEST['path']; + $filename = $modx->db->escape($filename); + $newFilename = str_replace(array('..\\', '../', '\\', '/'),'',$_REQUEST['newFilename']); + $newFilename = $modx->db->escape($newFilename); + + if(!checkExtension($newFilename)) + { + echo ''.$_lang['files_filetype_notok'].'

                        '; + } + elseif(preg_match('@(\\\\|\/|\:|\;|\,|\*|\?|\"|\<|\>|\||\?)@',$newFilename)!==0) + { + echo $_lang['files.dynamic.php3']; + } + else + { + if (!rename($filename, $path.'/'.$newFilename)) { + echo $_lang['files.dynamic.php5']; + } + umask($old_umask); + } + } } // End New Folder - Raymond @@ -350,18 +444,20 @@ function deleteFile(file) { echo '
                        '; ?> - - - - - - +
                        + + + + + + +'; + echo ''; } ?>
                        This directory is empty.
                        '.$_lang['files_directory_is_empty'].'

                        @@ -389,8 +485,8 @@ function deleteFile(file) { @@ -420,7 +516,6 @@ function deleteFile(file) { if($buffer===false) { $modx->webAlertAndQuit("Error opening file for reading."); } - ?>
                        @@ -428,23 +523,43 @@ function deleteFile(file) { - +
                        config['site_url'] . $_CM_BASE; -if(is_file(MODX_BASE_PATH . $_CM_BASE .'cm/codemirror.files.php')) - require(MODX_BASE_PATH. $_CM_BASE .'cm/codemirror.files.php'); +$pathinfo = pathinfo($filename); +switch($pathinfo['extension']) { + case "css": + $contentType = "text/css"; break; + case "js": + $contentType = "text/javascript"; break; + case "json": + $contentType = "application/json"; break; + case "php": + $contentType = "application/x-httpd-php"; break; + default: + $contentType = 'htmlmixed'; +}; +$evtOut = $modx->invokeEvent('OnRichTextEditorInit', array( + 'editor' => 'Codemirror', + 'elements' => array( + 'content', + ), + 'contentType'=>$contentType, + 'readOnly'=>$_REQUEST['mode']=='edit' ? false : true +)); +if (is_array($evtOut)) + echo implode('', $evtOut); + } function ls($curpath) { global $_lang,$theme_image_path,$_style; - global $excludes, $proteted_path, $editablefiles, $inlineviewablefiles, $viewablefiles, $enablefileunzip, $enablefiledownload, $uploadablefiles, $folders, $files, $filesizes, $len, $dirs_array, $files_array, $webstart_path, $modx; + global $excludes, $protected_path, $editablefiles, $inlineviewablefiles, $viewablefiles, $enablefileunzip, $enablefiledownload, $uploadablefiles, $folders, $files, $filesizes, $len, $dirs_array, $files_array, $webstart_path, $modx; $dircounter = 0; $filecounter = 0; $curpath = str_replace('//','/',$curpath.'/'); @@ -466,9 +581,9 @@ function ls($curpath) $dirs_array[$dircounter]['dir'] = $newpath; $dirs_array[$dircounter]['stats'] = lstat($newpath); if($file==='..'||$file==='.') continue; - elseif(!in_array($file, $excludes) && !in_array($newpath,$proteted_path)) + elseif(!in_array($file, $excludes) && !in_array($newpath,$protected_path)) { - $dirs_array[$dircounter]['text'] = ' '.$file.''; + $dirs_array[$dircounter]['text'] = ' '.$file.''; $dfiles = scandir($newpath); foreach($dfiles as $i=>$infile) @@ -483,14 +598,18 @@ function ls($curpath) } $file_exists = (0'.$_lang['file_delete_folder'].'' : ''; + $dirs_array[$dircounter]['delete'] = is_writable($curpath) ? '' : ''; } else { - $dirs_array[$dircounter]['text'] = ' '.$file . ''; - $dirs_array[$dircounter]['delete'] = is_writable($curpath) ? ''.$_lang['file_delete_folder'].'' : ''; + $dirs_array[$dircounter]['text'] = ' '.$file . ''; + $dirs_array[$dircounter]['delete'] = is_writable($curpath) ? '' : ''; } - + + $dirs_array[$dircounter]['rename'] = is_writable($curpath) + ? ' ' + : ''; + // increment the counter $dircounter++; } @@ -499,13 +618,15 @@ function ls($curpath) $type=getExtension($newpath); $files_array[$filecounter]['file'] = $newpath; $files_array[$filecounter]['stats'] = lstat($newpath); - $files_array[$filecounter]['text'] = ''.$file; - $files_array[$filecounter]['view'] = (in_array($type, $viewablefiles)) ? - ''.$_lang['files_viewfile'].' ' : (($enablefiledownload && in_array($type, $uploadablefiles))? ''.$_lang['file_download_file'].' ':''.$_lang['files_viewfile'].' '); - $files_array[$filecounter]['view'] = (in_array($type, $inlineviewablefiles)) ? ''.$_lang['files_viewfile'].' ' : $files_array[$filecounter]['view'] ; - $files_array[$filecounter]['unzip'] = ($enablefileunzip && $type=='.zip') ? ''.$_lang['file_download_unzip'].' ' : '' ; - $files_array[$filecounter]['edit'] = (in_array($type, $editablefiles) && is_writable($curpath) && is_writable($newpath)) ? ''.$_lang['files_editfile'].' ' : ''.$_lang['files_editfile'].' '; - $files_array[$filecounter]['delete'] = is_writable($curpath) && is_writable($newpath) ? ''.$_lang['file_delete_file'].' ' : ''.$_lang['file_delete_file'].' '; + $files_array[$filecounter]['text'] = ' '.$file; + $files_array[$filecounter]['view'] = (in_array($type, $viewablefiles)) + ? ' ' : (($enablefiledownload && in_array($type, $uploadablefiles))? ' ':' '); + $files_array[$filecounter]['view'] = (in_array($type, $inlineviewablefiles)) ? ' ' : $files_array[$filecounter]['view'] ; + $files_array[$filecounter]['unzip'] = ($enablefileunzip && $type=='.zip') ? ' ' : '' ; + $files_array[$filecounter]['edit'] = (in_array($type, $editablefiles) && is_writable($curpath) && is_writable($newpath)) ? ' ' : ' '; + $files_array[$filecounter]['duplicate'] = (in_array($type, $editablefiles) && is_writable($curpath) && is_writable($newpath)) ? ' ' : ' '; + $files_array[$filecounter]['rename'] = (in_array($type, $editablefiles) && is_writable($curpath) && is_writable($newpath)) ? ' ' : ' '; + $files_array[$filecounter]['delete'] = is_writable($curpath) && is_writable($newpath) ? ' ' : ' '; // increment the counter $filecounter++; @@ -522,7 +643,8 @@ function ls($curpath) echo '',$dirs_array[$i]['text'],''; echo '',$modx->toDateFormat($dirs_array[$i]['stats']['9']),''; echo '',$modx->nicesize($dirs_array[$i]['stats']['7']),''; - echo ''; + echo ''; + echo $dirs_array[$i]['rename']; echo $dirs_array[$i]['delete']; echo ''; echo ''; @@ -538,10 +660,12 @@ function ls($curpath) echo '',$files_array[$i]['text'],''; echo '',$modx->toDateFormat($files_array[$i]['stats']['9']),''; echo '',$modx->nicesize($files_array[$i]['stats']['7']),''; - echo ''; + echo ''; echo $files_array[$i]['unzip']; echo $files_array[$i]['view']; echo $files_array[$i]['edit']; + echo $files_array[$i]['duplicate']; + echo $files_array[$i]['rename']; echo $files_array[$i]['delete']; echo ''; echo ''; @@ -664,97 +788,89 @@ function rrmdir($dir) return rmdir($dir); } -function fileupload() -{ - global $modx,$_lang,$startpath, $filemanager_path, $uploadablefiles, $new_file_permissions; +function fileupload() { + global $modx, $_lang, $startpath, $filemanager_path, $uploadablefiles, $new_file_permissions; $msg = ''; - - if(!empty($_FILES['userfile']['tmp_name'])) - { - $userfile['tmp_name'] = $_FILES['userfile']['tmp_name']; - $userfile['error'] = $_FILES['userfile']['error']; - $name = $_FILES['userfile']['name']; - if($modx->config['clean_uploaded_filename']==1) - { - $nameparts = explode('.', $name); - $nameparts = array_map(array($modx, 'stripAlias'), $nameparts, array('file_manager')); - $name = implode('.', $nameparts); - } - $userfile['name'] = $name; - $userfile['type'] = $_FILES['userfile']['type']; - } - - // this seems to be an upload action. - $path = $modx->config['site_url'] . substr($startpath, strlen($filemanager_path), strlen($startpath)); - $path = rtrim($path,'/') . '/' . $userfile['name']; - $msg .= $path; - if($userfile['error']==0) - { - $img = (strpos($userfile['type'],'image')!==false) ? '
                        ' : ''; - $msg .= "

                        ".$_lang['files_file_type'].$userfile['type'].", ".$modx->nicesize(filesize($userfile['tmp_name'])).$img.'

                        '; - } - - $userfilename = $userfile['tmp_name']; - - if (is_uploaded_file($userfilename)) - { - // file is uploaded file, process it! - if(!checkExtension($userfile['name'])) - { - $msg .= '

                        '.$_lang['files_filetype_notok'].'

                        '; - } - else - { - if(@move_uploaded_file($userfile['tmp_name'], $_POST['path'].'/'.$userfile['name'])) - { - // Ryan: Repair broken permissions issue with file manager - if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') - @chmod($_POST['path']."/".$userfile['name'], $new_file_permissions); - // Ryan: End - $msg .= '

                        '.$_lang['files_upload_ok'].'

                        '; - - // invoke OnFileManagerUpload event - $modx->invokeEvent('OnFileManagerUpload', - array( - 'filepath' => $_POST['path'], - 'filename' => $userfile['name'] - )); - // Log the change - logFileChange('upload', $_POST['path'].'/'.$userfile['name']); + + foreach ($_FILES['userfile']['name'] as $i => $name) { + if (!empty($_FILES['userfile']['tmp_name'][$i])) { + $userfile['tmp_name'] = $_FILES['userfile']['tmp_name'][$i]; + $userfile['error'] = $_FILES['userfile']['error'][$i]; + $name = $_FILES['userfile']['name'][$i]; + if ($modx->config['clean_uploaded_filename'] == 1) { + $nameparts = explode('.', $name); + $nameparts = array_map(array($modx, 'stripAlias'), $nameparts, array('file_manager')); + $name = implode('.', $nameparts); } - else - { - $msg .= '

                        '.$_lang['files_upload_copyfailed'].' '.$_lang["files_upload_permissions_error"].'

                        '; + $userfile['name'] = $name; + $userfile['type'] = $_FILES['userfile']['type'][$i]; + + + // this seems to be an upload action. + $path = $modx->config['site_url'] . substr($startpath, strlen($filemanager_path), strlen($startpath)); + $path = rtrim($path, '/') . '/' . $userfile['name']; + $msg .= $path; + if ($userfile['error'] == 0) { + $img = (strpos($userfile['type'], 'image') !== false) ? '
                        ' : ''; + $msg .= "

                        " . $_lang['files_file_type'] . $userfile['type'] . ", " . $modx->nicesize(filesize($userfile['tmp_name'])) . $img . '

                        '; + } + + $userfilename = $userfile['tmp_name']; + + if (is_uploaded_file($userfilename)) { + // file is uploaded file, process it! + if (!checkExtension($userfile['name'])) { + $msg .= '

                        ' . $_lang['files_filetype_notok'] . '

                        '; + } + else { + if (@move_uploaded_file($userfile['tmp_name'], $_POST['path'] . '/' . $userfile['name'])) { + // Ryan: Repair broken permissions issue with file manager + if (strtoupper(substr(PHP_OS, 0, 3)) != 'WIN') + @chmod($_POST['path'] . "/" . $userfile['name'], $new_file_permissions); + // Ryan: End + $msg .= '

                        ' . $_lang['files_upload_ok'] . '


                        '; + + // invoke OnFileManagerUpload event + $modx->invokeEvent('OnFileManagerUpload', + array( + 'filepath' => $_POST['path'], + 'filename' => $userfile['name'] + )); + // Log the change + logFileChange('upload', $_POST['path'] . '/' . $userfile['name']); + } + else { + $msg .= '

                        ' . $_lang['files_upload_copyfailed'] . ' ' . $_lang["files_upload_permissions_error"] . '

                        '; + } + } + } + else { + $msg .= '
                        ' . $_lang['files_upload_error'] . ':'; + switch ($userfile['error']) { + case 0: //no error; possible file attack! + $msg .= $_lang['files_upload_error0']; + break; + case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini + $msg .= $_lang['files_upload_error1']; + break; + case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form + $msg .= $_lang['files_upload_error2']; + break; + case 3: //uploaded file was only partially uploaded + $msg .= $_lang['files_upload_error3']; + break; + case 4: //no file was uploaded + $msg .= $_lang['files_upload_error4']; + break; + default: //a default error, just in case! :) + $msg .= $_lang['files_upload_error5']; + break; + } + $msg .= '
                        '; } } } - else - { - $msg .= '
                        '.$_lang['files_upload_error'].':'; - switch($userfile['error']) - { - case 0: //no error; possible file attack! - $msg .= $_lang['files_upload_error0']; - break; - case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini - $msg .= $_lang['files_upload_error1']; - break; - case 2: //uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the html form - $msg .= $_lang['files_upload_error2']; - break; - case 3: //uploaded file was only partially uploaded - $msg .= $_lang['files_upload_error3']; - break; - case 4: //no file was uploaded - $msg .= $_lang['files_upload_error4']; - break; - default: //a default error, just in case! :) - $msg .= $_lang['files_upload_error5']; - break; - } - $msg .= '
                        '; - } - return $msg; + return $msg . '
                        '; } function textsave() diff --git a/manager/actions/help.static.php b/manager/actions/help.static.php index 4dac7983cb..7f77c2779e 100644 --- a/manager/actions/help.static.php +++ b/manager/actions/help.static.php @@ -1,9 +1,17 @@ INCLUDE_ORDERING_ERROR

                        Please use the MODX Content Manager instead of accessing this file directly."); +$helpBasePath = MODX_BASE_PATH . "assets/templates/help/"; ?> -

                        +

                        + + + + + + +

                        @@ -13,14 +21,13 @@ $v) { @@ -31,14 +38,19 @@ if(is_numeric($prefix)) { $helpname = substr($helpname, 2, strlen($helpname)-1 ); } - - $helpname = str_replace('_', ' ', $helpname); - echo '
                        '; + + $hnLower = strtolower($helpname); + $helpname = isset($_lang[$hnLower]) ? $_lang[$hnLower] : str_replace('_', ' ', $helpname); + + echo '
                        '; echo '

                        '.$helpname.'

                        '; - echo ''; - include_once(MODX_BASE_PATH . "assets/templates/help/{$v}"); + echo ''; + include_once($helpBasePath."{$v}"); echo '
                        '; } ?>
                        + diff --git a/manager/actions/import_site.static.php b/manager/actions/import_site.static.php index f5af2220d7..7fc55b3875 100644 --- a/manager/actions/import_site.static.php +++ b/manager/actions/import_site.static.php @@ -20,11 +20,18 @@ function setParent(pId, pName) { } -

                        +

                        + + + + + + +

                        @@ -33,7 +40,7 @@ function setParent(pId, pName) { ".$_lang['import_site_message']."

                        "; + echo "
                        ".$_lang['import_site_message']."
                        "; ?>
                        diff --git a/manager/actions/logging.static.php b/manager/actions/logging.static.php index ab8c269c94..3cfca533a5 100644 --- a/manager/actions/logging.static.php +++ b/manager/actions/logging.static.php @@ -36,22 +36,18 @@ function record_sort($array, $key) { $logs = $modx->db->makeArray($rs); ?> - - -

                        +

                        + + + + + + +

                        +
                        -

                        +

                        @@ -153,8 +149,8 @@ function record_sort($array, $key) { @@ -288,4 +284,3 @@ function record_sort($array, $key) { } else { echo $_lang["mgrlog_noquery"]; } -?> diff --git a/manager/actions/messages.static.php b/manager/actions/messages.static.php index 7393b378f3..d744b8ba8a 100644 --- a/manager/actions/messages.static.php +++ b/manager/actions/messages.static.php @@ -4,7 +4,14 @@ $modx->webAlertAndQuit($_lang["error_no_privileges"]); } ?> -

                        +

                        + + + + + + +

                        @@ -32,12 +39,12 @@
                        @@ -167,7 +174,7 @@ $messagestyle = $message['messageread']==0 ? "messageUnread" : "messageRead"; ?> - + @@ -299,8 +306,8 @@ function hideSpans(showSpan) {
                        " style="display:none;" />
                          -
                        • " />
                        • -
                        • " />
                        • -
                        • " />
                        • - - - +
                        • " />
                        • +
                        • " />
                        • +
                        • " />
                        • + + +
                        " : ""; ?>" : ""; ?>
                        diff --git a/manager/actions/modules.static.php b/manager/actions/modules.static.php index eed5ef1f28..730a30c4b1 100644 --- a/manager/actions/modules.static.php +++ b/manager/actions/modules.static.php @@ -26,7 +26,7 @@ // context menu include_once MODX_MANAGER_PATH."includes/controls/contextmenu.php"; $cm = new ContextMenu("cntxm", 150); -$cm->addItem($_lang["run_module"],"js:menuAction(1)",$_style['icons_save'],(!$modx->hasPermission('exec_module') ? 1:0)); +$cm->addItem($_lang["run_module"],"js:menuAction(1)",$_style['icons_run'],(!$modx->hasPermission('exec_module') ? 1:0)); $cm->addSeparator(); $cm->addItem($_lang["edit"],"js:menuAction(2)",$_style['icons_edit_document'],(!$modx->hasPermission('edit_module') ? 1:0)); $cm->addItem($_lang["duplicate"],"js:menuAction(3)",$_style['icons_resource_duplicate'],(!$modx->hasPermission('new_module') ? 1:0)); @@ -74,15 +74,22 @@ function menuAction(a) { }); -

                        +

                        + + + + + + +

                        -

                        +

                        diff --git a/manager/actions/move_document.dynamic.php b/manager/actions/move_document.dynamic.php index c6487b9abe..19cc0f6d0f 100644 --- a/manager/actions/move_document.dynamic.php +++ b/manager/actions/move_document.dynamic.php @@ -62,14 +62,19 @@ function checkParentChildRelation(pId, pName) { - - -

                        +

                        + + + + + + +

                        diff --git a/manager/actions/mutate_content.dynamic.php b/manager/actions/mutate_content.dynamic.php index 789d5d90d4..58b85e7a6e 100644 --- a/manager/actions/mutate_content.dynamic.php +++ b/manager/actions/mutate_content.dynamic.php @@ -9,7 +9,7 @@ /*******************/ // check permissions -switch ($_REQUEST['a']) { +switch ($modx->manager->action) { case 27: if (!$modx->hasPermission('edit_document')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -37,12 +37,9 @@ } -if (isset($_REQUEST['id'])) - $id = (int)$_REQUEST['id']; -else $id = 0; +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; // Get table names (alphabetical) -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_categories = $modx->getFullTableName('categories'); $tbl_document_group_names = $modx->getFullTableName('documentgroup_names'); $tbl_member_groups = $modx->getFullTableName('member_groups'); @@ -59,7 +56,7 @@ $tbl_site_tmplvar_templates = $modx->getFullTableName('site_tmplvar_templates'); $tbl_site_tmplvars = $modx->getFullTableName('site_tmplvars'); -if ($action == 27) { +if ($modx->manager->action == 27) { //editing an existing document // check permissions on the document include_once(MODX_MANAGER_PATH.'processors/user_documents_permissions.class.php'); @@ -73,11 +70,14 @@ } } -// Check to see the document isn't locked -$rs = $modx->db->select('username', $tbl_active_users, "action=27 AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang['lock_msg'], $username, 'document')); - } +// check to see if resource isn't locked +if ($lockedEl = $modx->elementIsLocked(7, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['resource'])); +} +// end check for lock + +// Lock resource for other users to edit +$modx->lockElement(7, $id); // get document groups for current user if ($_SESSION['mgrDocgroups']) { @@ -85,14 +85,16 @@ } if (!empty ($id)) { - $access = "1='" . $_SESSION['mgrRole'] . "' OR sc.privatemgr=0" . - (!$docgrp ? '' : " OR dg.document_group IN ($docgrp)"); + $access = sprintf("1='%s' OR sc.privatemgr=0", $_SESSION['mgrRole']); + if($docgrp) $access .= " OR dg.document_group IN ({$docgrp})"; $rs = $modx->db->select( 'sc.*', "{$tbl_site_content} AS sc LEFT JOIN {$tbl_document_groups} AS dg ON dg.document=sc.id", "sc.id='{$id}' AND ({$access})" ); + $content = array(); $content = $modx->db->getRow($rs); + $modx->documentObject = &$content; if (!$content) { $modx->webAlertAndQuit($_lang["access_permission_denied"]); } @@ -110,16 +112,13 @@ } // restore saved form -$formRestored = false; -if ($modx->manager->hasFormValues()) { - $modx->manager->loadFormValues(); - $formRestored = true; -} +$formRestored = $modx->manager->loadFormValues(); +if(isset($_REQUEST['newtemplate'])) $formRestored = true; // retain form values if template was changed // edited to convert pub_date and unpub_date // sottwell 02-09-2006 -if ($formRestored == true || isset ($_REQUEST['newtemplate'])) { +if ($formRestored == true) { $content = array_merge($content, $_POST); $content['content'] = $_POST['ta']; if (empty ($content['pub_date'])) { @@ -136,7 +135,8 @@ // increase menu index if this is a new document if (!isset ($_REQUEST['id'])) { - if (!isset ($auto_menuindex) || $auto_menuindex) { + if (!isset ($modx->config['auto_menuindex'])) $modx->config['auto_menuindex'] = 1; + if ($modx->config['auto_menuindex']) { $pid = intval($_REQUEST['pid']); $rs = $modx->db->select('count(*)', $tbl_site_content, "parent='{$pid}'"); $content['menuindex'] = $modx->db->getValue($rs); @@ -146,32 +146,26 @@ } if (isset ($_POST['which_editor'])) { - $which_editor = $_POST['which_editor']; + $modx->config['which_editor'] = $_POST['which_editor']; } + +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 7; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); ?> - @@ -514,8 +574,8 @@ function decode(s) { ?> - - + + @@ -523,31 +583,73 @@ function decode(s) {
                        -

                        ('. $_REQUEST['id'].')'; } else { echo $_lang['create_resource_title'];}?>

                        +

                        + + + + + ('. $_REQUEST['id'].')'; } else { echo $_lang['create_resource_title'];}?> + +

                        + config['use_breadcrumbs']) { + $temp = array(); + $title = isset($content['pagetitle']) ? $content['pagetitle'] : $_lang['create_resource_title']; + + if (isset($_REQUEST['id']) && $content['parent'] != 0) { + $bID = (int)$_REQUEST['id']; + $temp = $modx->getParentIds($bID); + } else if (isset($_REQUEST['pid'])) { + $bID = (int)$_REQUEST['pid']; + $temp = $modx->getParentIds($bID); + array_unshift($temp, $bID); + } + + if ($temp) { + $parents = implode(',', $temp); + + if (!empty($parents)) { + $where = "FIND_IN_SET(id,'{$parents}') DESC"; + $rs = $modx->db->select('id, pagetitle', $tbl_site_content, "id IN ({$parents})", $where); + while ($row = $modx->db->getRow($rs)) { + $out .= ''; + } + } + } + + $out .= ''; + echo ''; + } + ?>
                        @@ -561,6 +663,14 @@ function decode(s) { + invokeEvent('OnDocFormTemplateRender', array( + 'id' => $id + )); + if (is_array($evtOut)) { + echo implode('', $evtOut); + } else { + ?>

                        @@ -568,44 +678,43 @@ function decode(s) { + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> - +manager->action == '72') { // Web Link specific ?> - - + + - + - + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> - + + + + + + @@ -674,22 +788,46 @@ function decode(s) { $modx->webAlertAndQuit($_lang["error_no_parent"]); } } - ?> tree_folder" onclick="enableParentSelection(!allowParentSelection);" style="cursor:pointer;" /> () + ?> tree_folder" onclick="enableParentSelection(!allowParentSelection);" style="cursor:pointer;margin-top:-4px;" /> ()  " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> +manager->action == '72') { +?> + + + + + +
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        " alt="tree_folder" onclick="enableLinkSelection(!allowLinkSelection);" style="cursor:pointer;" />" class="inputBox" onchange="documentDirty=true;" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        " alt="tree_folder" onclick="enableLinkSelection(!allowLinkSelection);" style="cursor:pointer; margin-top:-4px;" />  + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" spellcheck="true"/>
                        + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" spellcheck="true"/>
                          " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        - - -
                        -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />  onclick="changestate(document.mutate.hidemenu);" /> -  " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        + + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> +
                        onclick="changestate(document.mutate.hidemenu);" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> +
                        + +
                        - +manager->action == '4') { ?>
                        manager->action == '4') && $use_editor == 1) { $htmlContent = $content['content']; ?>
                        - +
                        config['which_editor']][] = 'ta'; + $richtexteditorOptions[$modx->config['which_editor']]['ta'] = ''; } else { echo "\t".'
                        '."\n"; } @@ -717,7 +857,7 @@ function decode(s) {
                        - +manager->action == '4') || ($content['type'] == 'reference' || $modx->manager->action == 72)) { ?>
                        @@ -730,34 +870,34 @@ function decode(s) { $template = $content['template']; } - $rs = $modx->db->select( - "DISTINCT tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value", - "{$tbl_site_tmplvars} AS tv - INNER JOIN {$tbl_site_tmplvar_templates} AS tvtpl ON tvtpl.tmplvarid = tv.id - LEFT JOIN {$tbl_site_tmplvar_contentvalues} AS tvc ON tvc.tmplvarid=tv.id AND tvc.contentid='{$id}' - LEFT JOIN {$tbl_site_tmplvar_access} AS tva ON tva.tmplvarid=tv.id", - "tvtpl.templateid='{$template}' AND (1='{$_SESSION['mgrRole']}' OR ISNULL(tva.documentgroup)".(!$docgrp ? '' : " OR tva.documentgroup IN ({$docgrp})").")", - 'tvtpl.rank,tv.rank, tv.id' - ); + $field = "DISTINCT tv.*, IF(tvc.value!='',tvc.value,tv.default_text) as value, tvtpl.rank as tvrank"; + $vs = array($tbl_site_tmplvars, $tbl_site_tmplvar_templates, $tbl_site_tmplvar_contentvalues, $id, $tbl_site_tmplvar_access); + $from = vsprintf("%s AS tv INNER JOIN %s AS tvtpl ON tvtpl.tmplvarid = tv.id + LEFT JOIN %s AS tvc ON tvc.tmplvarid=tv.id AND tvc.contentid='%s' + LEFT JOIN %s AS tva ON tva.tmplvarid=tv.id", $vs); + $dgs = $docgrp ? " OR tva.documentgroup IN ({$docgrp})" : ''; + $vs = array($template, $_SESSION['mgrRole'], $dgs); + $where = vsprintf("tvtpl.templateid='%s' AND (1='%s' OR ISNULL(tva.documentgroup) %s)", $vs); + $rs = $modx->db->select($field,$from,$where,'tvtpl.rank,tv.rank, tv.id'); $limit = $modx->db->getRecordCount($rs); if ($limit > 0) { + $tvsArray = $modx->db->makeArray($rs,'name'); echo "\t".''."\n"; require_once(MODX_MANAGER_PATH.'includes/tmplvars.inc.php'); require_once(MODX_MANAGER_PATH.'includes/tmplvars.commands.inc.php'); $i = 0; - while ($row = $modx->db->getRow($rs)) { + foreach ($tvsArray as $row) { // Go through and display all Template Variables if ($row['type'] == 'richtext' || $row['type'] == 'htmlarea') { + // determine TV-options + $tvOptions = $modx->parseProperties($row['elements']); + if(!empty($tvOptions)) { + // Allow different Editor with TV-option {"editor":"CKEditor4"} or &editor=Editor;text;CKEditor4 + $editor = isset($tvOptions['editor']) ? $tvOptions['editor']: $modx->config['which_editor']; + }; // Add richtext editor to the list - if (is_array($replace_richtexteditor)) { - $replace_richtexteditor = array_merge($replace_richtexteditor, array( - "tv" . $row['id'], - )); - } else { - $replace_richtexteditor = array( - "tv" . $row['id'], - ); - } + $richtexteditorIds[$editor][] = "tv".$row['id']; + $richtexteditorOptions[$editor]["tv".$row['id']] = $tvOptions; } // splitter if ($i++ > 0) @@ -765,7 +905,7 @@ function decode(s) { // post back value if(array_key_exists('tv'.$row['id'], $_POST)) { - if($row['type'] == 'listbox-multiple') { + if(is_array($_POST['tv'.$row['id']])) { $tvPBV = implode('||', $_POST['tv'.$row['id']]); } else { $tvPBV = $_POST['tv'.$row['id']]; @@ -773,14 +913,15 @@ function decode(s) { } else { $tvPBV = $row['value']; } - + $tvDescription = (!empty($row['description'])) ? '
                        ' . $row['description'] . '' : ''; $tvInherited = (substr($tvPBV, 0, 8) == '@INHERIT') ? '
                        (' . $_lang['tmplvars_inherited'] . ')' : ''; - - echo "\t\t",'\n", "\t\t\t",'\n"; } echo "\t
                        ',$row['caption'],"\n", + $tvName = $modx->hasPermission('edit_template') ? '
                        [*'.$row['name'].'*]' : ''; + + echo "\t\t",'
                        ',$row['caption'].$tvName,"\n", "\t\t\t",$tvDescription,$tvInherited,"',"\n", - "\t\t\t",renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $tvPBV, '', $row),"\n", + "\t\t\t",renderFormElement($row['type'], $row['id'], $row['default_text'], $row['elements'], $tvPBV, '', $row, $tvsArray),"\n", "\t\t
                        \n"; @@ -804,17 +945,17 @@ function decode(s) { hasPermission('publish_document') ? '' : 'disabled="disabled" '; ?> - + name="publishedcheck" type="checkbox" class="checkbox" onclick="changestate(document.mutate.published);" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> - + name="pub_date" class="DatePicker" value="toDateFormat($content['pub_date'])?>" onblur="documentDirty=true;" /> " width="16" height="16" border="0" alt="" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left: 5px;" /> @@ -822,11 +963,11 @@ function decode(s) { config['datetime_format']; ?> HH:MM:SS - + name="unpub_date" class="DatePicker" value="toDateFormat($content['unpub_date'])?>" onblur="documentDirty=true;" /> " width="16" height="16" border="0" alt="" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left: 5px;" /> @@ -839,17 +980,17 @@ function decode(s) { manager->action != '27' || $_SESSION['mgrInternalKey'] == $content['createdby'] || $modx->hasPermission('change_resourcetype')) { ?> - + -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> - + -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> - - -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" />
                        manager->action != '72') { // non-admin managers creating or editing a document resource ?> " /> @@ -893,50 +1034,48 @@ function decode(s) { - onclick="changestate(document.mutate.isfolder);" /> - -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + manager->action=='85') ? "checked" : ''?> onclick="changestate(document.mutate.isfolder);" /> + + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" /> - - - - - - onclick="changestate(document.mutate.alias_visible);" /> - " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> - + + + onclick="changestate(document.mutate.alias_visible);" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" /> + - - onclick="changestate(document.mutate.richtext);" /> - -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + + manager->action=='27' ? '' : "checked"?> onclick="changestate(document.mutate.richtext);" /> + + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" /> onclick="changestate(document.mutate.donthit);" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" /> - + onclick="changestate(document.mutate.searchable);" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" /> - + onclick="changestate(document.mutate.cacheable);" /> -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" /> - + -   " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;" /> + " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help;margin-left:5px;" />
                        + hasPermission('edit_doc_metatags') && $modx->config['show_meta']) { // get list of site keywords @@ -1015,7 +1154,7 @@ function decode(s) { $groupsarray = array(); $sql = ''; - $documentId = ($_REQUEST['a'] == '27' ? $id : (!empty($_REQUEST['pid']) ? $_REQUEST['pid'] : $content['parent'])); + $documentId = ($modx->manager->action == '27' ? $id : (!empty($_REQUEST['pid']) ? $_REQUEST['pid'] : $content['parent'])); if ($documentId > 0) { // Load up, the permissions from the parent (if new document) or existing document $rs = $modx->db->select('id, document_group', $tbl_document_groups, "document='{$documentId}'"); @@ -1023,21 +1162,12 @@ function decode(s) { $groupsarray[] = $currentgroup['document_group'].','.$currentgroup['id']; // Load up the current permissions and names - $rs = $modx->db->select( - 'dgn.*, groups.id AS link_id', - "{$tbl_document_group_names} AS dgn - LEFT JOIN {$tbl_document_groups} AS groups ON groups.document_group = dgn.id AND groups.document = '{$documentId}'", - '', - 'name' - ); + $vs = array($tbl_document_group_names, $tbl_document_groups, $documentId); + $from = vsprintf("%s AS dgn LEFT JOIN %s AS groups ON groups.document_group=dgn.id AND groups.document='%s'",$vs); + $rs = $modx->db->select('dgn.*, groups.id AS link_id',$from,'','name'); } else { // Just load up the names, we're starting clean - $rs = $modx->db->select( - '*, NULL AS link_id', - $tbl_document_group_names, - '', - 'name' - ); + $rs = $modx->db->select('*, NULL AS link_id', $tbl_document_group_names, '', 'name'); } // retain selected doc groups between post @@ -1087,11 +1217,10 @@ function decode(s) { $inputHTML = ''; // does user have this permission? - $rsp = $modx->db->select( - 'COUNT(mg.id)', - "{$tbl_membergroup_access} AS mga, {$tbl_member_groups} AS mg", - "mga.membergroup = mg.user_group AND mga.documentgroup = {$row['id']} AND mg.member = {$_SESSION['mgrInternalKey']}" - ); + $from = "{$tbl_membergroup_access} AS mga, {$tbl_member_groups} AS mg"; + $vs = array($row['id'], $_SESSION['mgrInternalKey']); + $where = vsprintf("mga.membergroup=mg.user_group AND mga.documentgroup=%s AND mg.member=%s", $vs); + $rsp = $modx->db->select('COUNT(mg.id)',$from,$where); $count = $modx->db->getValue($rsp); if($count > 0) { ++$permissions_yes; @@ -1176,15 +1305,18 @@ function makePublic(b) { storeCurTemplate(); invokeEvent('OnRichTextEditorInit', array( - 'editor' => $which_editor, - 'elements' => $replace_richtexteditor - )); - if (is_array($evtOut)) - echo implode('', $evtOut); + if (($content['richtext'] == 1 || $modx->manager->action == '4' || $modx->manager->action == '72') && $use_editor == 1) { + if (is_array($richtexteditorIds)) { + foreach($richtexteditorIds as $editor=>$elements) { + // invoke OnRichTextEditorInit event + $evtOut = $modx->invokeEvent('OnRichTextEditorInit', array( + 'editor' => $editor, + 'elements' => $elements, + 'options' => $richtexteditorOptions[$editor] + )); + if (is_array($evtOut)) + echo implode('', $evtOut); + } } } diff --git a/manager/actions/mutate_htmlsnippet.dynamic.php b/manager/actions/mutate_htmlsnippet.dynamic.php index f01baf69d5..5c41e981d2 100644 --- a/manager/actions/mutate_htmlsnippet.dynamic.php +++ b/manager/actions/mutate_htmlsnippet.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                        Please use the MODX Content Manager instead of accessing this file directly."); -switch ((int) $_REQUEST['a']) { +switch ($modx->manager->action) { case 78: if (!$modx->hasPermission('edit_chunk')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -16,19 +16,19 @@ $modx->webAlertAndQuit($_lang["error_no_privileges"]); } -if (isset($_REQUEST['id'])) - $id = (int)$_REQUEST['id']; -else $id = 0; +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; // Get table names (alphabetical) -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_site_htmlsnippets = $modx->getFullTableName('site_htmlsnippets'); -// Check to see the snippet editor isn't locked -$rs = $modx->db->select('username', $tbl_active_users, "action=78 AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang['lock_msg'], $username, $_lang['chunk'])); - } +// check to see the snippet editor isn't locked +if ($lockedEl = $modx->elementIsLocked(3, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['chunk'])); +} +// end check for lock + +// Lock snippet for other users to edit +$modx->lockElement(3, $id); $content = array(); if (isset($_REQUEST['id']) && $_REQUEST['id']!='' && is_numeric($_REQUEST['id'])) { @@ -45,12 +45,23 @@ $_SESSION['itemname'] = $_lang["new_htmlsnippet"]; } -if (isset($_POST['which_editor'])) - $which_editor = $_POST['which_editor']; -else $which_editor = 'none'; +if ($modx->manager->hasFormValues()) { + $modx->manager->loadFormValues(); +} + +if (isset($_POST['which_editor'])) { + $which_editor = $_POST['which_editor']; +} else { + $which_editor = $content['editor_name'] != 'none' ? $content['editor_name'] : 'none'; +} $content = array_merge($content, $_POST); +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 3; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); + // Print RTE Javascript function ?> -

                        + +

                        + +

                        + - + - + @@ -153,7 +176,7 @@ function deletedocument() { $v) { - echo "\t\t\t\t".'\n"; + echo "\t\t\t\t".'\n"; } ?> @@ -162,8 +185,8 @@ function deletedocument() { hasPermission('save_role')):?> - +
                        {{ }} 
                        {{ }}  +
                        -
                        +
                        @@ -173,7 +196,7 @@ function deletedocument() {
                        - +
                        @@ -217,4 +240,4 @@ function deletedocument() { if (is_array($evtOut)) echo implode('', $evtOut); } -?> \ No newline at end of file +?> diff --git a/manager/actions/mutate_menuindex_sort.dynamic.php b/manager/actions/mutate_menuindex_sort.dynamic.php new file mode 100644 index 0000000000..36a6d5ec79 --- /dev/null +++ b/manager/actions/mutate_menuindex_sort.dynamic.php @@ -0,0 +1,213 @@ +INCLUDE_ORDERING_ERROR

                        Please use the MODX Content Manager instead of accessing this file directly."); +if(!$modx->hasPermission('edit_document')) { + $modx->webAlertAndQuit($_lang["error_no_privileges"]); +} + +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : NULL; +$reset = isset($_POST['reset']) && $_POST['reset'] == 'true' ? 1 : 0; +$items = isset($_POST['list']) ? $_POST['list'] : ''; +$ressourcelist = ''; +$updateMsg = ''; + +// check permissions on the document +include_once MODX_MANAGER_PATH . "processors/user_documents_permissions.class.php"; +$udperms = new udperms(); +$udperms->user = $modx->getLoginUserID(); +$udperms->document = $id; +$udperms->role = $_SESSION['mgrRole']; + +if(!$udperms->checkPermissions()) { + $modx->webAlertAndQuit($_lang["access_permission_denied"]); +} + +if(isset($_POST['listSubmitted'])) { + $updateMsg .= 'Updated!'; + if (strlen($items) > 0) { + $items = explode(';', $items); + foreach ($items as $key => $value) { + $docid = ltrim($value, 'item_'); + $key = $reset ? 0 : $key; + if (is_numeric($docid)) { + $modx->db->update(array('menuindex'=>$key), $modx->getFullTableName('site_content'), "id='{$docid}'"); + } + } + } +} + +$limit = 0; +$disabled = 'true'; +$pagetitle = ''; +if ($id !== NULL) { + $rs = $modx->db->select('pagetitle', $modx->getFullTableName('site_content'), "id='{$id}'"); + $pagetitle = $modx->db->getValue($rs); + + $rs = $modx->db->select('id, pagetitle, parent, menuindex, published, hidemenu, deleted', $modx->getFullTableName('site_content'), "parent='{$id}'", 'menuindex ASC'); + $resource = $modx->db->makeArray($rs); + $limit = count($resource); + if ($limit < 1) { + $updateMsg = $_lang['sort_nochildren']; + } else { + $disabled = 0; + foreach ($resource as $item) { + // Add classes to determine whether it's published, deleted, not in the menu + // or has children. + // Use class names which match the classes in the document tree + $classes = ''; + $classes .= ($item['hidemenu']) ? ' notInMenuNode ' : ' inMenuNode' ; + $classes .= ($item['published']) ? ' publishedNode ' : ' unpublishedNode ' ; + $classes = ($item['deleted']) ? ' deletedNode ' : $classes ; + $classes .= (count($modx->getChildIds($item['id'], 1)) > 0) ? ' hasChildren ' : ' noChildren '; + $ressourcelist .= '
                      • '. $item['pagetitle'] . ' ('.$item['id'].')
                      • '; + } + } +} + + +$header = ' + + + '; + + +$pagetitle = $id == 0 ? $site_name : $pagetitle; + +$header .= ' + + +

                        + + + + + '.$_lang["sort_menuindex"].' + +

                        + +
                        + +
                        + +
                        +
                        '.$pagetitle.' ('.$id.')
                        +
                        '; + +if(!$disabled) { + $header .= '

                        ' . $_lang["sort_elements_msg"] . '

                        + '; +}; + +echo $header; + +echo $updateMsg . "Updating..."; + +if(!$disabled) { + echo ' +
                          + '.$ressourcelist.' +
                        + + + + '; +} + +echo ' +
                        +
                        '; +?> diff --git a/manager/actions/mutate_module.dynamic.php b/manager/actions/mutate_module.dynamic.php index 89939c959b..177209c842 100644 --- a/manager/actions/mutate_module.dynamic.php +++ b/manager/actions/mutate_module.dynamic.php @@ -1,7 +1,6 @@ INCLUDE_ORDERING_ERROR

                        Please use the MODX Content Manager instead of accessing this file directly."); - -switch ((int) $_REQUEST['a']) { +switch ($modx->manager->action) { case 107: if(!$modx->hasPermission('new_module')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -15,13 +14,8 @@ default: $modx->webAlertAndQuit($_lang["error_no_privileges"]); } - -if (isset($_REQUEST['id'])) - $id = (int)$_REQUEST['id']; -else $id = 0; - +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; // Get table names (alphabetical) -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_membergroup_names = $modx->getFullTableName('membergroup_names'); $tbl_site_content = $modx->getFullTableName('site_content'); $tbl_site_htmlsnippets = $modx->getFullTableName('site_htmlsnippets'); @@ -32,7 +26,6 @@ $tbl_site_snippets = $modx->getFullTableName('site_snippets'); $tbl_site_templates = $modx->getFullTableName('site_templates'); $tbl_site_tmplvars = $modx->getFullTableName('site_tmplvars'); - // create globally unique identifiers (guid) function createGUID(){ srand((double)microtime()*1000000); @@ -42,17 +35,14 @@ function createGUID(){ return $m; } -// Check to see the editor isn't locked -$rs = $modx->db->select('username', $tbl_active_users, "action=108 AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getRow($rs)) { - $modx->webAlertAndQuit(sprintf($_lang['lock_msg'], $username, $_lang['module'])); - } +// check to see the module editor isn't locked +if ($lockedEl = $modx->elementIsLocked(6, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['module'])); +} // end check for lock -// make sure the id's a number -if (!is_numeric($id)) { - $modx->webAlertAndQuit($_lang["error_id_nan"]); -} +// Lock snippet for other users to edit +$modx->lockElement(6, $id); if (isset($_GET['id'])) { $rs = $modx->db->select('*', $tbl_site_modules, "id='{$id}'"); @@ -60,6 +50,7 @@ function createGUID(){ if (!$content) { $modx->webAlertAndQuit("Module not found for id '{$id}'."); } + $content['properties'] = str_replace("&", "&", $content['properties']); $_SESSION['itemname'] = $content['name']; if ($content['locked'] == 1 && $_SESSION['mgrRole'] != 1) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -68,7 +59,14 @@ function createGUID(){ $_SESSION['itemname'] = $_lang["new_module"]; $content['wrap'] = '1'; } +if ($modx->manager->hasFormValues()) { + $modx->manager->loadFormValues(); +} +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 6; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); ?> - - + + + + + + + + + + + + + + +
                        :  
                          
                        +
                        (32x32)
                        class="inputBox" onclick="documentDirty=true;" />
                        value="on" class="inputBox" /> + '.$_lang['module_disabled'].'' : $_lang['module_disabled']?>
                        class="inputBox" /> +
                        @@ -357,35 +496,52 @@ function SetUrl(url, width, height, alt) {
                        - +
                        - + -
                        -

                        - - - - - - - - - - - +
                        +

                        + +

                        +
                        :

                        class="inputBox" onclick="documentDirty=true;" /> :

                        :
                          
                        + + + + +
                        +
                          +
                        +
                         
                        +
                        + +
                        +

                        + + + + + + + + + + +
                        class="inputBox" onclick="documentDirty=true;" />
                        +
                        +
                        +
                        - - +manager->action == '108'): ?>

                        - - +



                        " align="absmiddle" />

                        @@ -424,41 +580,12 @@ function SetUrl(url, width, height, alt) {
                        - - -
                        -

                        - + +
                        +

                        +
                        - - - - - - - - - - - - - -
                        value="on" class="inputBox" /> - '.$_lang['module_disabled'].'' : $_lang['module_disabled']?>
                        :  
                        :   -
                        :
                        (32x32):  
                        class="inputBox" onclick="documentDirty=true;" /> :
                        class="inputBox" /> -
                        -
                        - - - + db->select('usergroup', $tbl_site_module_access, "module='{$id}'"); @@ -493,7 +620,7 @@ function makePublic(b) { db->select('name, id', $tbl_membergroup_names); + $rs = $modx->db->select('name, id', $tbl_membergroup_names, '', 'name'); while ($row = $modx->db->getRow($rs)) { $groupsarray = is_numeric($id) && $id > 0 ? $groupsarray : array(); $checked = in_array($row['id'], $groupsarray); @@ -511,10 +638,18 @@ function makePublic(b) { ?>
                        - +
                        - + +
                        +

                        + +
                        + +
                        +
                        + - \ No newline at end of file + diff --git a/manager/actions/mutate_module_resources.dynamic.php b/manager/actions/mutate_module_resources.dynamic.php index b70efb511e..94c4a5d4b6 100644 --- a/manager/actions/mutate_module_resources.dynamic.php +++ b/manager/actions/mutate_module_resources.dynamic.php @@ -5,9 +5,7 @@ $modx->webAlertAndQuit($_lang["error_no_privileges"]); } -if (isset($_REQUEST['id'])) - $id = (int)$_REQUEST['id']; -else $id = 0; +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; // Get table names (alphabetical) $tbl_active_users = $modx->getFullTableName('active_users'); @@ -30,11 +28,6 @@ } // end check for lock -// make sure the id's a number -if(!is_numeric($id)) { - $modx->webAlertAndQuit($_lang["error_id_nan"]); -} - // take action switch ($_REQUEST['op']) { case 'add': @@ -165,18 +158,24 @@ function openSelector(resource,mode,callback,w,h){ -

                        - +

                        + + + + + + +

                        -

                        " alt="" align="left" />

                        +


                        diff --git a/manager/actions/mutate_password.dynamic.php b/manager/actions/mutate_password.dynamic.php index 4ba31a0215..5b143010f0 100644 --- a/manager/actions/mutate_password.dynamic.php +++ b/manager/actions/mutate_password.dynamic.php @@ -8,8 +8,8 @@

                        diff --git a/manager/actions/mutate_plugin.dynamic.php b/manager/actions/mutate_plugin.dynamic.php index a70b4653f4..bceb089ba5 100644 --- a/manager/actions/mutate_plugin.dynamic.php +++ b/manager/actions/mutate_plugin.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                        Please use the MODX Content Manager instead of accessing this file directly."); -switch((int) $_REQUEST['a']) { +switch($modx->manager->action) { case 102: if(!$modx->hasPermission('edit_plugin')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -18,18 +18,19 @@ $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_site_plugins = $modx->getFullTableName('site_plugins'); $tbl_site_plugin_events = $modx->getFullTableName('site_plugin_events'); $tbl_system_eventnames = $modx->getFullTableName('system_eventnames'); -// check to see the plugin editor isn't locked -$rs = $modx->db->select('username',$tbl_active_users,"action='102' AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getRow($rs)) { - $modx->webAlertAndQuit(sprintf($_lang["lock_msg"],$username,$_lang['plugin'])); - } +// check to see the plugin isn't locked +if ($lockedEl = $modx->elementIsLocked(5, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['plugin'])); +} // end check for lock +// Lock plugin for other users to edit +$modx->lockElement(5, $id); + if(isset($_GET['id'])) { $rs = $modx->db->select('*',$tbl_site_plugins,"id='{$id}'"); @@ -42,11 +43,21 @@ { $modx->webAlertAndQuit($_lang["error_no_privileges"]); } + $content['properties'] = str_replace("&", "&", $content['properties']); } else { $_SESSION['itemname']=$_lang["new_plugin"]; } + +if ($modx->manager->hasFormValues()) { + $modx->manager->loadFormValues(); +} + +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 5; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); ?> +function IsJsonString(str) { + try { + JSON.parse(str); + } catch (e) { + return false; + } + return true; +} -
                        +function getEventsList() { + var cboxes = document.getElementsByName('sysevents[]'); + var len = cboxes.length; + var s = []; + for (var i=0; iinvokeEvent("OnPluginFormPrerender",array("id" => $id)); if(is_array($evtOut)) echo implode("",$evtOut); + +// Prepare internal params & info-tab via parseDocBlock +$plugincode = isset($content['plugincode']) ? $modx->db->escape($content['plugincode']) : ''; +$parsed = $modx->parseDocBlockFromString($plugincode); +$docBlockList = $modx->convertDocBlockIntoList($parsed); +$internal = array(); +$internal[0]['events'] = isset($parsed['events']) ? $parsed['events'] : ''; ?> +var internal = ; + + + + - + -

                        +

                        + + + + + + +

                        -

                        +

                        - + + +

                        + +

                        +
                        - - + + - + - + - + - + hasPermission('save_role')):?> - + + + +
                        :   +
                        :  
                        :  
                        :
                        ":$_lang['plugin_disabled']; ?>
                        @@ -332,19 +501,37 @@ function decode(s){
                        - +
                        - -
                        + +

                        - - - - + +
                        :  
                        + + + + + + +
                        +
                          +
                        +
                         
                        +
                        + + +
                        +

                        + + + + + + + + - - - - - - - - - - +
                        +
                         

                        :
                          
                        +
                        +
                        -
                        +

                        - +

                        - - -
                        + +
                        +

                        + +
                        + +
                        +
                        +
                        diff --git a/manager/actions/mutate_plugin_priority.dynamic.php b/manager/actions/mutate_plugin_priority.dynamic.php index 1da1975b2b..40a58cbcb5 100644 --- a/manager/actions/mutate_plugin_priority.dynamic.php +++ b/manager/actions/mutate_plugin_priority.dynamic.php @@ -78,7 +78,6 @@ } ul.sortableList { - padding-left: 20px; margin: 0px; width: 300px; font-family: Arial, sans-serif; @@ -135,8 +134,8 @@ function save() {
                      diff --git a/manager/actions/mutate_role.dynamic.php b/manager/actions/mutate_role.dynamic.php index 30978a1bcc..747f8080aa 100644 --- a/manager/actions/mutate_role.dynamic.php +++ b/manager/actions/mutate_role.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -switch((int) $_REQUEST['a']) +switch((int) $modx->manager->action) { case 35: if(!$modx->hasPermission('edit_role')) @@ -21,19 +21,18 @@ $role = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_user_roles = $modx->getFullTableName('user_roles'); -// check to see the role editor isn't locked -$rs = $modx->db->select('username',$tbl_active_users,"action=35 and id='{$role}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang["lock_msg"],$username,$_lang['role'])); - } +// check to see the snippet editor isn't locked +if ($lockedEl = $modx->elementIsLocked(8, $role)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['role'])); +} // end check for lock +// Lock snippet for other users to edit +$modx->lockElement(8, $role); - -if($_REQUEST['a']=='35') +if($modx->manager->action=='35') { $rs = $modx->db->select('*',$tbl_user_roles, "id='{$role}'"); $roledata = $modx->db->getRow($rs); @@ -46,8 +45,10 @@ $_SESSION['itemname']=$_lang["new_role"]; } - - +// Add lock-element JS-Script +$lockElementId = $role; +$lockElementType = 8; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); ?> - +

                      - - + manager->action=='38') { ?> +
                      +
                      @@ -106,7 +108,7 @@ function deletedocument() {
                      - - +
                      +

                      +

                      +
                      +

                      + +
                      +
                      - - - -
                      +

                      +

                      +

                      +

                      + + + + +

                      +
                      - - - - - - diff --git a/manager/actions/mutate_settings.dynamic.php b/manager/actions/mutate_settings.dynamic.php index 2c29a08543..26721cc9c8 100644 --- a/manager/actions/mutate_settings.dynamic.php +++ b/manager/actions/mutate_settings.dynamic.php @@ -1,180 +1,74 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -if(!$modx->hasPermission('settings')) { - $modx->webAlertAndQuit($_lang["error_no_privileges"]); -} +if(IN_MANAGER_MODE!="true") die("INCLUDE_ORDERING_ERROR
                      Please use the MODX Content Manager instead of accessing this file directly."); +if(!$modx->hasPermission('settings')) $modx->webAlertAndQuit($_lang['error_no_privileges']); + +include_once(MODX_MANAGER_PATH . 'actions/mutate_settings/functions.inc.php'); // check to see the edit settings page isn't locked $rs = $modx->db->select('username', $modx->getFullTableName('active_users'), "action=17 AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang["lock_settings_msg"],$username)); - } + if ($username = $modx->db->getValue($rs)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_settings_msg'],$username)); + } // end check for lock // reload system settings from the database. // this will prevent user-defined settings from being saved as system setting $settings = array(); -$rs = $modx->db->select('setting_name, setting_value', $modx->getFullTableName('system_settings')); -while ($row = $modx->db->getRow($rs)) $settings[$row['setting_name']] = $row['setting_value']; +include_once(MODX_MANAGER_PATH . 'includes/default_config.php'); +$rs = $modx->db->select('setting_name, setting_value', '[+prefix+]system_settings'); +while ($row = $modx->db->getRow($rs)) { + $settings[$row['setting_name']] = $row['setting_value']; +} $settings['filemanager_path'] = preg_replace('@^' . MODX_BASE_PATH . '@', '[(base_path)]', $settings['filemanager_path']); $settings['rb_base_dir'] = preg_replace('@^' . MODX_BASE_PATH . '@', '[(base_path)]', $settings['rb_base_dir']); -extract($settings, EXTR_OVERWRITE); -$displayStyle = ($_SESSION['browser']==='modern') ? 'table-row' : 'block' ; +extract($settings, EXTR_OVERWRITE); // load languages and keys $lang_keys = array(); -$dir = dir("includes/lang"); +$dir = dir('includes/lang'); while ($file = $dir->read()) { - if(strpos($file, ".inc.php")>0) { - $endpos = strpos ($file, "."); + if(strpos($file, '.inc.php')>0) { + $endpos = strpos ($file, '.'); $languagename = substr($file, 0, $endpos); $lang_keys[$languagename] = get_lang_keys($file); } } $dir->close(); - -$isDefaultUnavailableMsg = $site_unavailable_message == $_lang['siteunavailable_message_default']; -$isDefaultUnavailableMsgJs = $isDefaultUnavailableMsg ? 'true' : 'false'; -$site_unavailable_message_view = isset($site_unavailable_message) ? $site_unavailable_message : $_lang['siteunavailable_message_default']; - -/* check the file paths */ -$settings['filemanager_path'] = $filemanager_path = trim($settings['filemanager_path']) == '' ? MODX_BASE_PATH : $settings['filemanager_path']; -$settings['rb_base_dir'] = $rb_base_dir = trim($settings['rb_base_dir']) == '' ? MODX_BASE_PATH.'assets/' : $settings['rb_base_dir']; -$settings['rb_base_url'] = $rb_base_url = trim($settings['rb_base_url']) == '' ? 'assets/' : $settings['rb_base_url']; - +$displayStyle = ($_SESSION['browser']==='modern') ? 'table-row' : 'block' ; ?> + + - -

                      - -
                      - -
                      +

                      + + + + + + +

                      +
                      + +
                      @@ -183,1644 +77,39 @@ function confirmLangChange(el, lkey, elupd){ getVersionData('version')) { ?>

                      -
                      - - -
                      -

                      - -
                      +

                      +

                      +

                      +

                      +

                      +

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + tpSettings = new WebFXTabPane(document.getElementById('settingsPane'), config['remember_last_tab'] == 1 ? 'true' : 'false'; ?> ); + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      " />
                       
                       
                       
                      /> -
                      - /> -
                       
                       
                       
                       
                      /> -
                      - /> -
                       
                      " />
                       
                      -
                      -

                      - -
                      - -
                       
                      /> -
                      - /> -
                       
                       
                      -

                      - />
                      - />
                      - />
                      -
                      - db->select( - 't.templatename, t.id, c.category', - $modx->getFullTableName('site_templates')." AS t - LEFT JOIN ".$modx->getFullTableName('categories')." AS c ON t.category = c.id", - "", - 'c.category, t.templatename ASC' - ); - ?> - -
                      - - -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      " onclick='addContentType()' />
                      -
                      - - -  " onclick='removeContentType()' />
                      -
                       
                      - /> -
                      - - /> -
                      - /> -
                      -
                      - - /> -
                      - - /> -
                      -
                       
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      " />
                       
                      " />
                       
                      " />
                       
                      - invokeEvent("OnSiteSettingsRender"); - if(is_array($evtOut)) echo implode("",$evtOut); - ?> -
                      -
                      - - -
                      -

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      onclick='showHide(/furlRow/, 1);' /> -
                      - onclick='showHide(/furlRow/, 0);' /> -
                       
                      " />
                       
                      " />
                       
                      -
                      -
                      -
                       
                      -
                      -
                      -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      - invokeEvent("OnFriendlyURLSettingsRender"); - if(is_array($evtOut)) echo implode("",$evtOut); - ?> -
                      -
                      - - -
                      -

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      -
                      - -
                       
                      onclick='showHide(/udPerms/, 1);' /> -
                      - onclick='showHide(/udPerms/, 0);' /> -
                       
                      /> -
                      - /> -
                       
                      " />
                       
                      " />
                       
                      -
                      -
                      -
                      -
                      -
                       
                      -
                      -
                      -
                      -
                      -$modx->config['emailsender']));?>
                      - manager->checkHashAlgorithm('BLOWFISH_Y') ? 0:1; - $phm['e']['BLOWFISH_A'] = $modx->manager->checkHashAlgorithm('BLOWFISH_A') ? 0:1; - $phm['e']['SHA512'] = $modx->manager->checkHashAlgorithm('SHA512') ? 0:1; - $phm['e']['SHA256'] = $modx->manager->checkHashAlgorithm('SHA256') ? 0:1; - $phm['e']['MD5'] = $modx->manager->checkHashAlgorithm('MD5') ? 0:1; - $phm['e']['UNCRYPT'] = $modx->manager->checkHashAlgorithm('UNCRYPT') ? 0:1; - ?> -
                      -
                      -
                      -
                      -
                      -
                      - -
                       
                      -
                      -
                      - -
                       
                      /> -
                      - /> -
                       
                      -
                      -

                      - -
                      " /> - " /> -
                       
                      " />
                       
                      -
                      -
                      -
                      -
                      -
                      -
                      " />
                      " />
                      -
                      -

                      - -
                      " /> - -
                       
                      -
                      -

                      - -
                      - -
                       
                      -
                      -

                      - -
                      - -
                       
                      -
                      -

                      - -
                      - -
                       
                      - invokeEvent("OnUserSettingsRender"); - if(is_array($evtOut)) echo implode("",$evtOut); - ?> -
                      -
                      - - -
                      -

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      -
                      - -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                       
                       
                       
                      " />
                       
                       
                       
                      onclick="showHide(/editorRow/, 1); checkCustomIcons();" /> -
                      - onclick="showHide(/editorRow/, 0);" /> -
                       
                      - -
                       
                       
                      " /> -
                       
                      - invokeEvent("OnInterfaceSettingsRender"); - if(is_array($evtOut)) echo implode("",$evtOut); - ?> -
                      -
                      - - -
                      -

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - [(base_path)]
                      - " name="reset_filemanager_path"> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      -
                      -
                      - - -
                      -

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      onclick="showHide(/rbRow/, 1);" /> -
                      - onclick="showHide(/rbRow/, 0);" /> -
                       
                      /> -
                      - /> -
                       
                      - [(base_path)]assets/
                      - " name="reset_rb_base_dir"> -
                       
                      - -
                       
                      /> -
                      - /> -
                       
                      /> -
                      - /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      - " /> -
                       
                      /> -
                      - /> -
                      /> -
                      - /> -
                      /> -
                      - /> -
                      - invokeEvent("OnMiscSettingsRender"); - if(is_array($evtOut)) echo implode("",$evtOut); - ?> -
                      -
                      + tpSettings.setSelectedIndex( '.$_GET['tab'].' );'; } - -/** - * get_lang_keys - * - * @return array of keys from a language file - */ -function get_lang_keys($filename) { - $file = MODX_MANAGER_PATH.'includes/lang' . DIRECTORY_SEPARATOR . $filename; - if(is_file($file) && is_readable($file)) { - include($file); - return array_keys($_lang); - } else { - return array(); - } -} -/** - * get_langs_by_key - * - * @return array of languages that define the key in their file - */ -function get_langs_by_key($key) { - global $lang_keys; - $lang_return = array(); - foreach($lang_keys as $lang=>$keys) { - if(in_array($key, $keys)) { - $lang_return[] = $lang; - } - } - return $lang_return; -} - -/** - * get_lang_options - * - * returns html option list of languages - * - * @param string $key specify language key to return options of langauges that override it, default return all languages - * @param string $selected_lang specify language to select in option list, default none - * @return html option list - */ -function get_lang_options($key=null, $selected_lang=null) { - global $lang_keys, $_lang; - $lang_options = ''; - if($key) { - $languages = get_langs_by_key($key); - sort($languages); - $lang_options .= ''; - - foreach($languages as $language_name) { - $uclanguage_name = ucwords(str_replace("_", " ", $language_name)); - $lang_options .= ''; - } - return $lang_options; - } else { - $languages = array_keys($lang_keys); - sort($languages); - foreach($languages as $language_name) { - $uclanguage_name = ucwords(str_replace("_", " ", $language_name)); - $sel = $language_name == $selected_lang ? ' selected="selected"' : ''; - $lang_options .= ''; - } - return $lang_options; - } -} - -function form_radio($name,$value,$checked=false,$add='',$disabled=false) { - if($checked) $checked = ' checked="checked"'; else $checked = ''; - if($disabled) $disabled = ' disabled'; else $disabled = ''; - if($add) $add = ' ' . $add; - return ''; -} - -function wrap_label($str='',$object) { - return ""; -} - -function parsePlaceholder($tpl='', $ph=array()) -{ - if(empty($ph) || empty($tpl)) return $tpl; - - foreach($ph as $k=>$v) - { - $k = "[+{$k}+]"; - $tpl = str_replace($k, $v, $tpl); - } - return $tpl; -} \ No newline at end of file diff --git a/manager/actions/mutate_settings/functions.inc.php b/manager/actions/mutate_settings/functions.inc.php new file mode 100644 index 0000000000..8bd337bd4c --- /dev/null +++ b/manager/actions/mutate_settings/functions.inc.php @@ -0,0 +1,94 @@ +$keys) { + if(in_array($key, $keys)) { + $lang_return[] = $lang; + } + } + return $lang_return; +} + +/** + * get_lang_options + * + * returns html option list of languages + * + * @param string $key specify language key to return options of langauges that override it, default return all languages + * @param string $selected_lang specify language to select in option list, default none + * @return html option list + */ +function get_lang_options($key=null, $selected_lang=null) { + global $lang_keys, $_lang; + $lang_options = ''; + if($key) { + $languages = get_langs_by_key($key); + sort($languages); + $lang_options .= ''; + + foreach($languages as $language_name) { + $uclanguage_name = ucwords(str_replace("_", " ", $language_name)); + $lang_options .= ''; + } + return $lang_options; + } else { + $languages = array_keys($lang_keys); + sort($languages); + foreach($languages as $language_name) { + $uclanguage_name = ucwords(str_replace("_", " ", $language_name)); + $sel = $language_name == $selected_lang ? ' selected="selected"' : ''; + $lang_options .= ''; + } + return $lang_options; + } +} + +function form_radio($name,$value,$add='',$disabled=false) { + global ${$name}; + $var = ${$name}; + $checked = ($var==$value) ? ' checked="checked"' : ''; + if($disabled) $disabled = ' disabled'; else $disabled = ''; + if($add) $add = ' ' . $add; + return sprintf('', $name, $value, $checked, $disabled, $add); +} + +function wrap_label($str='',$object) { + return ""; +} + +function parseText($tpl='', $ph=array()) { + if(empty($ph) || empty($tpl)) return $tpl; + + foreach($ph as $k=>$v) + { + $k = "[+{$k}+]"; + $tpl = str_replace($k, $v, $tpl); + } + return $tpl; +} + +function showHide($cond=true) { + global $displayStyle; + $showHide = $cond ? $displayStyle : 'none'; + return sprintf('style="display:%s"', $showHide); +} diff --git a/manager/actions/mutate_settings/functions.js b/manager/actions/mutate_settings/functions.js new file mode 100644 index 0000000000..084a930306 --- /dev/null +++ b/manager/actions/mutate_settings/functions.js @@ -0,0 +1,71 @@ +function addContentType(){ + var i,o,exists=false; + var txt = document.settings.txt_custom_contenttype; + var lst = document.settings.lst_custom_contenttype; + for(i=0;i + + + +
                      + + + + +
                      + + + + + + +
                      + + + +
                      + + + + + + + +
                      + + + + + + +
                      + + + + + + +
                      + + + + + + diff --git a/manager/actions/mutate_settings/tab1_site_settings.inc.php b/manager/actions/mutate_settings/tab1_site_settings.inc.php new file mode 100644 index 0000000000..e9153d3cbf --- /dev/null +++ b/manager/actions/mutate_settings/tab1_site_settings.inc.php @@ -0,0 +1,288 @@ + + + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + +
                      htmlspecialchars($_lang['sitename_title']) ?> +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                      +

                      + +
                      + +
                      +
                      + db->select( + 't.templatename, t.id, c.category', + $modx->getFullTableName('site_templates')." AS t + LEFT JOIN ".$modx->getFullTableName('categories')." AS c ON t.category = c.id", + "", + 'c.category, t.templatename ASC' + ); + ?> + +
                      + + +
                      +
                      +

                      +
                      +
                      +
                      +
                      + db->getRecordCount( + $modx->db->select('id', '[+prefix+]site_plugins', + "plugincode LIKE '%phx.parser.class.inc.php%OnParseDocument();%' AND disabled != 1") + ); + if($count) { + $disabledFilters = 1; + echo ''.$_lang['enable_filter_phx_warning'].'
                      '; + } + else $disabledFilters = false; + ?> +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +
                      +
                      + +
                      +

                      +
                      + + +  
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      + +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      +
                      + +
                      +
                      +
                      +
                      + invokeEvent('OnSiteSettingsRender'); + if(is_array($evtOut)) echo implode("",$evtOut); + ?> +
                      +
                      diff --git a/manager/actions/mutate_settings/tab2_furl_settings.inc.php b/manager/actions/mutate_settings/tab2_furl_settings.inc.php new file mode 100644 index 0000000000..5a8ac2cf10 --- /dev/null +++ b/manager/actions/mutate_settings/tab2_furl_settings.inc.php @@ -0,0 +1,167 @@ + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + +> + + + +> + + + +> + + +> + + + +> + + + +> + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + + +> + + +> + + + +> + + + +> + + +> + + + +> + + + +> + + +> + + + +> + + + +> + + +> + + +
                      +
                      + +
                       
                      +
                      + +
                       
                       
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      + invokeEvent('OnFriendlyURLSettingsRender'); + if(is_array($evtOut)) echo implode("",$evtOut); + ?> +
                      +
                      diff --git a/manager/actions/mutate_settings/tab3_user_settings.inc.php b/manager/actions/mutate_settings/tab3_user_settings.inc.php new file mode 100644 index 0000000000..83e5b93135 --- /dev/null +++ b/manager/actions/mutate_settings/tab3_user_settings.inc.php @@ -0,0 +1,135 @@ + +
                      +

                      + + + + + + + + + + + + + + > + + + + > + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      +
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                      > + +
                      +
                      +
                      +

                      + +
                      + +
                       
                      +
                      +

                      + +
                      + +
                       
                      +
                      +

                      + +
                      + +
                       
                      +
                      +

                      + +
                      + +
                       
                      + invokeEvent('OnUserSettingsRender'); + if(is_array($evtOut)) echo implode("",$evtOut); + ?> +
                      +
                      diff --git a/manager/actions/mutate_settings/tab4_manager_settings.inc.php b/manager/actions/mutate_settings/tab4_manager_settings.inc.php new file mode 100644 index 0000000000..9f9589ab23 --- /dev/null +++ b/manager/actions/mutate_settings/tab4_manager_settings.inc.php @@ -0,0 +1,348 @@ + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +invokeEvent('OnRichTextEditorRegister'); + if(!is_array($evtOut)) { + $evtOut = array(); + $use_editor = 0; + } +?> + > + + + + > + + + + > + + + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + + + +
                       
                       
                       

                      +
                       
                      +
                      +
                       
                      +
                      +
                       
                      +
                      +
                       
                      +
                      + +
                       
                       
                      +
                      +
                       
                      +
                      +
                       
                       
                       
                       
                       
                       
                       
                      +
                      + +
                       
                      + +
                       
                       
                      +
                       
                      + invokeEvent('OnInterfaceSettingsRender'); + if(is_array($evtOut)) echo implode("",$evtOut); + ?> +
                      +
                      diff --git a/manager/actions/mutate_settings/tab5_security_settings.inc.php b/manager/actions/mutate_settings/tab5_security_settings.inc.php new file mode 100644 index 0000000000..7cef1ffec9 --- /dev/null +++ b/manager/actions/mutate_settings/tab5_security_settings.inc.php @@ -0,0 +1,222 @@ + + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + > + + + + > + + + + > + + +
                      +
                      +
                      +
                      + +
                      + +
                      +
                      + +
                      + +
                      +
                      +
                      + +
                       
                       
                       
                      +
                      + +
                       
                       
                       
                      +
                      +
                      +
                      + +
                       
                      +
                      +
                      +
                      +
                      +$modx->config['emailsender']));?>
                      +manager->checkHashAlgorithm('BLOWFISH_Y') ? 0:1; +$phm['e']['BLOWFISH_A'] = $modx->manager->checkHashAlgorithm('BLOWFISH_A') ? 0:1; +$phm['e']['SHA512'] = $modx->manager->checkHashAlgorithm('SHA512') ? 0:1; +$phm['e']['SHA256'] = $modx->manager->checkHashAlgorithm('SHA256') ? 0:1; +$phm['e']['MD5'] = $modx->manager->checkHashAlgorithm('MD5') ? 0:1; +$phm['e']['UNCRYPT'] = $modx->manager->checkHashAlgorithm('UNCRYPT') ? 0:1; +?> +
                      +
                      +
                      +
                      +
                      + +
                       
                      +
                      + + +
                       

                      +
                       
                      +
                      +

                      + +
                      + +
                       
                      +
                      diff --git a/manager/actions/mutate_settings/tab6_filemanager_settings.inc.php b/manager/actions/mutate_settings/tab6_filemanager_settings.inc.php new file mode 100644 index 0000000000..2f485df6e4 --- /dev/null +++ b/manager/actions/mutate_settings/tab6_filemanager_settings.inc.php @@ -0,0 +1,116 @@ + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      + [(base_path)]
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      +
                      +
                      + diff --git a/manager/actions/mutate_settings/tab7_filebrowser_settings.inc.php b/manager/actions/mutate_settings/tab7_filebrowser_settings.inc.php new file mode 100644 index 0000000000..01ab003ba6 --- /dev/null +++ b/manager/actions/mutate_settings/tab7_filebrowser_settings.inc.php @@ -0,0 +1,243 @@ + +
                      +

                      + + + + + + + + + + + + + + + > + + + + > + + + + + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + + > + + + > + + + + > + + + > + + + + > + + + > + + + + > + + + + + + +
                      +
                      + +
                       
                      + +
                       
                      +
                      + +
                       
                      + [(base_path)]assets/
                      + +
                       
                      + +
                       
                      +
                      + +
                       
                      +
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      + +
                       
                      +
                      + +
                      +
                      + +
                      +
                      + +
                      + invokeEvent('OnMiscSettingsRender'); + if(is_array($evtOut)) echo implode("",$evtOut); + ?> +
                      +
                      diff --git a/manager/actions/mutate_snippet.dynamic.php b/manager/actions/mutate_snippet.dynamic.php index 07bcb1e47b..bcc49f5874 100644 --- a/manager/actions/mutate_snippet.dynamic.php +++ b/manager/actions/mutate_snippet.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -switch((int) $_REQUEST['a']) { +switch($modx->manager->action) { case 22: if(!$modx->hasPermission('edit_snippet')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -19,19 +19,20 @@ $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; // Get table Names (alphabetical) -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_site_module_depobj = $modx->getFullTableName('site_module_depobj'); $tbl_site_modules = $modx->getFullTableName('site_modules'); $tbl_site_snippets = $modx->getFullTableName('site_snippets'); // check to see the snippet editor isn't locked -$rs = $modx->db->select('username', $tbl_active_users, "action=22 AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$username,$_lang['snippet'])); - } +if ($lockedEl = $modx->elementIsLocked(4, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['snippet'])); +} // end check for lock +// Lock snippet for other users to edit +$modx->lockElement(4, $id); +$content = array(); if(isset($_GET['id'])) { $rs = $modx->db->select('*', $tbl_site_snippets, "id='{$id}'"); $content = $modx->db->getRow($rs); @@ -42,9 +43,21 @@ if($content['locked']==1 && $_SESSION['mgrRole']!=1) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); } + $content['properties'] = str_replace("&", "&", $content['properties']); } else { $_SESSION['itemname']=$_lang["new_snippet"]; } + +if ($modx->manager->hasFormValues()) { + $modx->manager->loadFormValues(); +} + +$content = array_merge($content, $_POST); + +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 4; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); ?>
                      @@ -241,38 +363,50 @@ function decode(s){ // invoke OnSnipFormPrerender event $evtOut = $modx->invokeEvent("OnSnipFormPrerender",array("id" => $id)); if(is_array($evtOut)) echo implode("",$evtOut); + + // Prepare info-tab via parseDocBlock + $snippetcode = isset($content['snippet']) ? $modx->db->escape($content['snippet']) : ''; + $parsed = $modx->parseDocBlockFromString($snippetcode); + $docBlockList = $modx->convertDocBlockIntoList($parsed); ?> - - + +
                      -

                      +

                      + + + + + + +

                      - +
                      @@ -284,10 +418,16 @@ function decode(s){

                      + +

                      + +

                      + - - + + @@ -300,19 +440,22 @@ function decode(s){ $v){ - echo ''; + echo ''; } ?> - + hasPermission('save_role')):?> - + + + +
                      :[[  ]] [[  ]]  +
                      :
                      @@ -323,12 +466,30 @@ function decode(s){
                      - +
                      + +
                      +

                      + + + + + + + + +
                      +
                        +
                      +
                       
                      +
                      +

                      @@ -336,7 +497,7 @@ function decode(s){ - - + - - - - - - +
                      @@ -356,21 +517,27 @@ function decode(s){
                       

                      :
                        
                      +
                      +
                      +
                      + + +
                      +

                      + +
                      +
                      -
                      + + + - invokeEvent("OnSnipFormRender",array("id" => $id)); diff --git a/manager/actions/mutate_template_tv_rank.dynamic.php b/manager/actions/mutate_template_tv_rank.dynamic.php index 3ed82efea1..fbae3e4877 100644 --- a/manager/actions/mutate_template_tv_rank.dynamic.php +++ b/manager/actions/mutate_template_tv_rank.dynamic.php @@ -4,9 +4,8 @@ $modx->webAlertAndQuit($_lang["error_no_privileges"]); } -if (!is_numeric($_REQUEST['id'])) { - $modx->webAlertAndQuit($_lang["error_id_nan"]); -} +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; +$reset = isset($_POST['reset']) && $_POST['reset'] == 'true' ? 1 : 0; $tbl_site_templates = $modx->getFullTableName('site_templates'); $tbl_site_tmplvar_templates = $modx->getFullTableName('site_tmplvar_templates'); @@ -19,12 +18,13 @@ if(isset($_POST['listSubmitted'])) { $updateMsg .= 'Updated!

                      '; foreach ($_POST as $listName=>$listValue) { - if ($listName == 'listSubmitted') continue; + if ($listName == 'listSubmitted' || $listName == 'reset') continue; $orderArray = explode(';', rtrim($listValue, ';')); foreach($orderArray as $key => $item) { if (strlen($item) == 0) continue; + $key = $reset ? 0 : $key; $tmplvar = ltrim($item, 'item_'); - $modx->db->update(array('rank'=>$key), $tbl_site_tmplvar_templates, "tmplvarid='{$tmplvar}' AND templateid='{$_REQUEST['id']}'"); + $modx->db->update(array('rank'=>$key), $tbl_site_tmplvar_templates, "tmplvarid='{$tmplvar}' AND templateid='{$id}'"); } } // empty cache @@ -32,35 +32,33 @@ } $rs = $modx->db->select( - "tv.name AS name, tv.id AS id, tr.templateid, tr.rank, tm.templatename", + "tv.name AS name, tv.caption AS caption, tv.id AS id, tr.templateid, tr.rank, tm.templatename", "{$tbl_site_tmplvar_templates} AS tr INNER JOIN {$tbl_site_tmplvars} AS tv ON tv.id = tr.tmplvarid INNER JOIN {$tbl_site_templates} AS tm ON tr.templateid = tm.id", - "tr.templateid='".(int)$_REQUEST['id']."'", - "tr.rank, tv.rank, tv.id" + "tr.templateid='{$id}'", + "tr.rank DESC, tv.rank DESC, tv.id DESC" // workaround for correct sort of none-existing ranks ); $limit = $modx->db->getRecordCount($rs); if($limit>1) { - $i = 0; + $tvsArr = array(); while ($row = $modx->db->getRow($rs)) { + $tvsArr[] = $row; + } + $tvsArr = array_reverse($tvsArr,true); // reverse ORDERBY DESC + + $i = 0; + foreach($tvsArr as $row) { if ($i++ == 0) $evtLists .= ''.$row['templatename'].'
                        '; - $evtLists .= '
                      • '.$row['name'].'
                      • '; + $caption = $row['caption'] != '' ? $row['caption'] : $row['name']; + $evtLists .= '
                      • '.$caption.' [*'.$row['name'].'*]
                      • '; } $evtLists .= '
                      '; } - $header = ' - - - - MODX - - - '; - -$header .= ' + '; $header .= ' @@ -129,15 +162,16 @@ function save() {
                      '.$_lang['template_tv_edit'].'
                      -

                      '.$_lang["template_tv_edit_message"].'

                      '; + +

                      '.$_lang["template_tv_edit_message"].' ('.$_lang["sort_alphabetically"].')

                      '; echo $header; diff --git a/manager/actions/mutate_templates.dynamic.php b/manager/actions/mutate_templates.dynamic.php index 0cb4cfdae0..2ead173b8c 100644 --- a/manager/actions/mutate_templates.dynamic.php +++ b/manager/actions/mutate_templates.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -switch((int) $_REQUEST['a']) { +switch($modx->manager->action) { case 16: if(!$modx->hasPermission('edit_template')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -18,16 +18,17 @@ $id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; -$tbl_active_users = $modx->getFullTableName('active_users'); $tbl_site_templates = $modx->getFullTableName('site_templates'); -// check to see the template editor isn't locked -$rs = $modx->db->select('username',$tbl_active_users,"action=16 AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang['lock_msg'], $username, 'template')); - } +// check to see the snippet editor isn't locked +if ($lockedEl = $modx->elementIsLocked(1, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['template'])); +} // end check for lock +// Lock snippet for other users to edit +$modx->lockElement(1, $id); + $content = array(); if(!empty($id)) { $rs = $modx->db->select('*',$tbl_site_templates,"id='{$id}'"); @@ -44,8 +45,17 @@ $_SESSION['itemname']=$_lang["new_template"]; } +if ($modx->manager->hasFormValues()) { + $modx->manager->loadFormValues(); +} + $content = array_merge($content, $_POST); +$selectable = $modx->manager->action == 19 ? 1 : $content['selectable']; +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 1; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); ?> -' . $_lang['template_msg'] . '
                      '; ?> +

                      + +

                      + - - + + - - + + - + - + hasPermission('save_role')):?> - + + + +
                      : + config['default_template']) echo ' '.$_lang['defaulttemplate_title'].''; ?> +
                      :
                      :
                      :
                      @@ -149,36 +174,74 @@ function deletedocument() {
                      - +
                      db->select( + sprintf("tv.name AS tvname, tv.id AS tvid, tr.templateid AS templateid, tv.description AS tvdescription, tv.caption AS tvcaption, tv.locked AS tvlocked, if(isnull(cat.category),'%s',cat.category) AS category", $_lang['no_category']), + sprintf("%s tv + LEFT JOIN %s tr ON tv.id=tr.tmplvarid + LEFT JOIN %s cat ON tv.category=cat.id", + $modx->getFullTableName('site_tmplvars'), $modx->getFullTableName('site_tmplvar_templates'), $modx->getFullTableName('categories')), + "templateid='{$id}'", + "tr.rank DESC, tv.rank DESC, tvcaption DESC, tvid DESC" // workaround for correct sort of none-existing ranks + ); + while ($row = $modx->db->getRow($rs)) { + $selectedTvs[$row['tvid']] = $row; + } + $selectedTvs = array_reverse($selectedTvs, true); // reverse ORDERBY DESC +} + +$unselectedTvs = array(); $rs = $modx->db->select( - "tv.name as name, tv.id as id, tr.templateid, tr.rank, if(isnull(cat.category),'{$_lang['no_category']}',cat.category) as category", - $modx->getFullTableName('site_tmplvar_templates')." tr - INNER JOIN ".$modx->getFullTableName('site_tmplvars')." tv ON tv.id = tr.tmplvarid - LEFT JOIN ".$modx->getFullTableName('categories')." cat ON tv.category = cat.id", - "tr.templateid='{$id}'", - "tr.rank, tv.rank, tv.id" - ); -$limit = $modx->db->getRecordCount($rs); + sprintf("tv.name AS tvname, tv.id AS tvid, tr.templateid AS templateid, tv.description AS tvdescription, tv.caption AS tvcaption, tv.locked AS tvlocked, if(isnull(cat.category),'%s',cat.category) AS category, cat.id as catid", $_lang['no_category']), + sprintf("%s tv + LEFT JOIN %s tr ON tv.id=tr.tmplvarid + LEFT JOIN %s cat ON tv.category=cat.id", + $modx->getFullTableName('site_tmplvars'), $modx->getFullTableName('site_tmplvar_templates'),$modx->getFullTableName('categories')), + "", + "category, tvcaption" +); +while($row = $modx->db->getRow($rs)) { + $unselectedTvs[$row['tvid']] = $row; +} + +// Catch checkboxes if form not validated +if( isset($_POST['assignedTv']) ) { + $selectedTvs = array(); + foreach($_POST['assignedTv'] as $tvid) { + if(isset($unselectedTvs[$tvid])) + $selectedTvs[$tvid] = $unselectedTvs[$tvid]; + }; +} + +$total = count($selectedTvs); ?>

                      -

                      0) echo $_lang['template_tv_msg']; ?>

                      -

                      hasPermission('save_template') && $limit > 1) { ?>

                      0) echo '

                      ' . $_lang['template_tv_msg'] . '

                      '; +if($modx->hasPermission('save_template') && $total > 1 && $id) { + echo sprintf('',$id,$_lang['template_tv_edit']); +} -if($limit>0) { - $tvList .= '
                        '; - while ($row = $modx->db->getRow($rs)) { - $tvList .= '
                      • '.$row['name'].' ('.$row['category'].')
                      • '; +// Selected TVs +$tvList = '
                        '; +if($total>0) { + $tvList .= '
                          '; + foreach($selectedTvs as $row) { + $desc = !empty($row['tvdescription']) ? '  ('.$row['tvdescription'].')' : ''; + $locked = $row['tvlocked'] ? ' ('.$_lang['locked'].')' : "" ; + $tvList .= sprintf('
                        • %s %s
                        • ', + $row['tvid'], $row['tvname'], $row['tvid'], $row['tvcaption'], $desc, $locked, $row['tvid'], $modx->manager->action, $id, $_lang['edit']); } $tvList .= '
                        '; @@ -186,6 +249,32 @@ function deletedocument() { echo $_lang['template_no_tv']; } echo $tvList; + +// Unselected TVs +$tvList = '


                        '.$_lang['template_notassigned_tv'].'

                          '; +$preCat = ''; +$insideUl = 0; +while ($row = array_shift($unselectedTvs)) { + if(isset($selectedTvs[$row['tvid']])) continue; // Skip selected + $row['category'] = stripslashes($row['category']); //pixelchutes + if ($preCat !== $row['category']) { + $tvList .= $insideUl? '
                        ': ''; + $tvList .= '
                      • '.$row['category']. ($row['catid']!='' ? ' ('.$row['catid'].')' : '') .'
                          '; + $insideUl = 1; + } + + $desc = !empty($row['tvdescription']) ? '  ('.$row['tvdescription'].')' : ''; + $locked = $row['tvlocked'] ? ' ('.$_lang['locked'].')' : "" ; + $tvList .= sprintf('
                        • %s %s
                        • ', + $row['tvid'], $row['tvname'], $row['tvid'], $row['tvcaption'], $desc, $locked, $row['tvid'], $modx->manager->action, $_lang['edit']); + $tvList .= ''; + + $preCat = $row['category']; +} +$tvList .= $insideUl? '
                        ': ''; +$tvList .= '
                      '; +echo $tvList; + ?>
                      INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -if(!$modx->hasPermission('edit_template') && $_REQUEST['a']=='301') { +if(!$modx->hasPermission('edit_template') && $modx->manager->action=='301') { $modx->webAlertAndQuit($_lang["error_no_privileges"]); } -if(!$modx->hasPermission('new_template') && $_REQUEST['a']=='300') { +if(!$modx->hasPermission('new_template') && $modx->manager->action=='300') { $modx->webAlertAndQuit($_lang["error_no_privileges"]); } -if(isset($_REQUEST['id'])) $id = (int) $_REQUEST['id']; -else $id = 0; +$id = isset($_REQUEST['id']) ? intval($_REQUEST['id']) : 0; +$origin = isset($_REQUEST['or']) ? intval($_REQUEST['or']) : 76; +$originId = isset($_REQUEST['oid']) ? intval($_REQUEST['oid']) : NULL; $tbl_site_tmplvars = $modx->getFullTableName('site_tmplvars'); $tbl_site_templates = $modx->getFullTableName('site_templates'); $tbl_site_tmplvar_templates = $modx->getFullTableName('site_tmplvar_templates'); $tbl_documentgroup_names = $modx->getFullTableName('documentgroup_names'); -// check to see the variable editor isn't locked -$rs = $modx->db->select('username',$modx->getFullTableName('active_users'),"action=301 AND id='{$id}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang['lock_msg'], $username, 'template variable')); - } +// check to see the snippet editor isn't locked +if ($lockedEl = $modx->elementIsLocked(2, $id)) { + $modx->webAlertAndQuit(sprintf($_lang['lock_msg'],$lockedEl['username'],$_lang['tmplvar'])); +} // end check for lock -// make sure the id's a number -if(!is_numeric($id)) -{ - $modx->webAlertAndQuit($_lang["error_id_nan"]); -} +// Lock snippet for other users to edit +$modx->lockElement(2, $id); global $content; $content = array(); @@ -49,6 +46,17 @@ $_SESSION['itemname']=$_lang["new_tmplvars"]; } +if ($modx->manager->hasFormValues()) { + $modx->manager->loadFormValues(); +} + +$content = array_merge($content, $_POST); + +// Add lock-element JS-Script +$lockElementId = $id; +$lockElementType = 2; +require_once(MODX_MANAGER_PATH.'includes/active_user_locks.inc.php'); + // get available RichText Editors $RTEditors = ''; $evtOut = $modx->invokeEvent('OnRichTextEditorRegister',array('forfrontend' => 1)); @@ -91,15 +99,12 @@ function deletedocument() { // Widget Parameters var widgetParams = {}; // name = description;datatype;default or list values - datatype: int, string, list : separated by comma (,) - widgetParams['marquee'] = '&width=Width;string;100% &height=Height;string;100px &speed=Speed (1-20);float;3; &modifier=Modifier;float;90; &pause=Mouse Pause;list;Yes,No;Yes &tfx=Transition;list;Vertical,Horizontal &class=Class;string; &style=Style;string;'; - widgetParams['ticker'] = '&width=Width;string;100% &height=Height;string;50px &delay=Delay (ms);int;3000 &delim=Message Delimiter;string;|| &class=Class;string; &style=Style;string;'; widgetParams['date'] = '&format=Date Format;string;%A %d, %B %Y &default=If no value, use current date;list;Yes,No;No'; widgetParams['string'] = '&format=String Format;list;Upper Case,Lower Case,Sentence Case,Capitalize'; widgetParams['delim'] = '&format=Delimiter;string;,'; widgetParams['hyperlink'] = '&text=Display Text;string; &title=Title;string; &class=Class;string &style=Style;string &target=Target;string &attrib=Attributes;string'; widgetParams['htmltag'] = '&tagname=Tag Name;string;div &tagid=Tag ID;string &class=Class;string &style=Style;string &attrib=Attributes;string'; widgetParams['viewport'] = '&vpid=ID/Name;string &width=Width;string;100 &height=Height;string;100 &borsize=Border Size;int;1 &sbar=Scrollbars;list;,Auto,Yes,No &asize=Auto Size;list;,Yes,No &aheight=Auto Height;list;,Yes,No &awidth=Auto Width;list;,Yes,No &stretch=Stretch To Fit;list;,Yes,No &class=Class;string &style=Style;string &attrib=Attributes;string'; - widgetParams['floater'] = '&x=Offset X;int &y=Offset Y;int &width=Width;string;200px &height=Height;string;30px &pos=Position;list;top-right,top-left,bottom-left,bottom-right &gs=Glide Speed;int;6 &class=Class;string &style=Style;string '; widgetParams['datagrid'] = '&cols=Column Names;string &flds=Field Names;string &cwidth=Column Widths;string &calign=Column Alignments;string &ccolor=Column Colors;string &ctype=Column Types;string &cpad=Cell Padding;int;1 &cspace=Cell Spacing;int;1 &rowid=Row ID Field;string &rgf=Row Group Field;string &rgstyle = Row Group Style;string &rgclass = Row Group Class;string &rowsel=Row Select;string &rhigh=Row Hightlight;string; &psize=Page Size;int;100 &ploc=Pager Location;list;top-right,top-left,bottom-left,bottom-right,both-right,both-left; &pclass=Pager Class;string &pstyle=Pager Style;string &head=Header Text;string &foot=Footer Text;string &tblc=Grid Class;string &tbls=Grid Style;string &itmc=Item Class;string &itms=Item Style;string &aitmc=Alt Item Class;string &aitms=Alt Item Style;string &chdrc=Column Header Class;string &chdrs=Column Header Style;string;&egmsg=Empty message;string;No records found;'; widgetParams['richtext'] = '&w=Width;string;100% &h=Height;string;300px &edt=Editor;list;'; widgetParams['image'] = '&alttext=Alternate Text;string &hspace=H Space;int &vspace=V Space;int &borsize=Border Size;int &align=Align;list;none,baseline,top,middle,bottom,texttop,absmiddle,absbottom,left,right &name=Name;string &class=Class;string &id=ID;string &style=Style;string &attrib=Attributes;string'; @@ -256,32 +261,42 @@ function decode(s){ ?> - - - -

                      + + + + + +

                      + + + + + + +

                      - +
                      @@ -293,89 +308,104 @@ function decode(s){

                      -

                      + +

                      + +

                      + - - + + - - + + - - + + - + - + hasPermission('save_role')):?> - + - + - - + + - - + + - + - + @@ -407,40 +437,78 @@ function decode(s){

                      -

                      +
                        +
                      • +
                      • +
                      • +
                      :[* *]   [* *]   
                      : +
                      :
                      :
                      :
                       
                      :  
                      : " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help" />" onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help" />
                      :  " onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help" />" onmouseover="this.src='';" onmouseout="this.src='';" alt="" onclick="alert(this.alt);" style="cursor:help" />
                      :    
                      :  
                      - db->select('id,templatename,tmplvarid',$from); +db->select( + sprintf("tpl.id AS id, templatename, tpl.description AS tpldescription, tpl.locked AS tpllocked, tpl.selectable AS selectable, tmplvarid, if(isnull(cat.category),'%s',cat.category) AS category, cat.id AS catid", $_lang['no_category']), + sprintf("%s as tpl + LEFT JOIN %s as stt ON stt.templateid=tpl.id AND stt.tmplvarid='%s' + LEFT JOIN %s as cat ON tpl.category=cat.id", + $modx->getFullTableName('site_templates'), $modx->getFullTableName('site_tmplvar_templates'), $id, $modx->getFullTableName('categories')), + '', + "category, templatename" + ); ?>
                      db->getRow($rs)) - { - if($_REQUEST['a']=='300' && $modx->config['default_template']==$row['id']) - { - $checked = true; - } - elseif(isset($_GET['tpl']) && $_GET['tpl'] == $row['id']) - { - $checked = true; - } - elseif($id == 0 && is_array($_POST['template'])) - { - $checked = in_array($row['id'], $_POST['template']); - } - else - { - $checked = $row['tmplvarid']; - } - $checked = $checked ? ' checked="checked"':''; - echo ''; - } - ?> + +$tplList = '
                        '; +$preCat = ''; +$insideUl = 0; +while ($row = $modx->db->getRow($rs)) { + $row['category'] = stripslashes($row['category']); //pixelchutes + if ($preCat !== $row['category']) { + $tplList .= $insideUl? '
                      ': ''; + $tplList .= '
                    • '.$row['category']. ($row['catid']!='' ? ' ('.$row['catid'].')' : '') .'
                        '; + $insideUl = 1; + } + + if($modx->manager->action=='300' && $modx->config['default_template']==$row['id']) + { + $checked = true; + } + elseif(isset($_GET['tpl']) && $_GET['tpl'] == $row['id']) + { + $checked = true; + } + elseif($id == 0 && is_array($_POST['template'])) + { + $checked = in_array($row['id'], $_POST['template']); + } + else + { + $checked = $row['tmplvarid']; + } + $selectable = !$row['selectable'] ? ' class="disabled"':''; + $checked = $checked ? ' checked="checked"':''; + $tplId = ' (' . $row['id'] . ')'; + $desc = !empty($row['tpldescription']) ? ' - '.$row['tpldescription'] : ''; + + $tplInfo = array(); + if($row['tpllocked']) $tplInfo[] = $_lang['locked']; + if($row['id'] == $modx->config['default_template']) $tplInfo[] = $_lang['defaulttemplate_title']; + $tplInfo = !empty($tplInfo) ? ' ('.join(', ', $tplInfo).')' : ''; + + $tplList .= sprintf('
                      • %s%s%s%s
                      • ', + $selectable, $row['id'], $checked, $row['templatename'], $tplId, $desc, $tplInfo ); + $tplList .= ''; + + $preCat = $row['category']; +} +$tplList .= $insideUl? '
                      ': ''; +$tplList .= ''; +echo $tplList; + +?>
                    • diff --git a/manager/actions/mutate_tv_rank.dynamic.php b/manager/actions/mutate_tv_rank.dynamic.php new file mode 100644 index 0000000000..502f01badd --- /dev/null +++ b/manager/actions/mutate_tv_rank.dynamic.php @@ -0,0 +1,187 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +if(!$modx->hasPermission('save_template')) { + $modx->webAlertAndQuit($_lang["error_no_privileges"]); +} + +$reset = isset($_POST['reset']) && $_POST['reset'] == 'true' ? 1 : 0; + +$tbl_site_tmplvars = $modx->getFullTableName('site_tmplvars'); + +$siteURL = $modx->config['site_url']; + +$updateMsg = ''; + +if(isset($_POST['listSubmitted'])) { + $updateMsg .= 'Updated!

                      '; + foreach ($_POST as $listName=>$listValue) { + if ($listName == 'listSubmitted' || $listName == 'reset') continue; + $orderArray = explode(';', rtrim($listValue, ';')); + foreach($orderArray as $key => $item) { + if (strlen($item) == 0) continue; + $key = $reset ? 0 : $key; + $id = ltrim($item, 'item_'); + $modx->db->update(array('rank'=>$key), $tbl_site_tmplvars, "id='{$id}'"); + } + } + // empty cache + $modx->clearCache('full'); +} + +$rs = $modx->db->select( + "name, caption, id, rank", + $tbl_site_tmplvars, + "", + "rank ASC, id ASC" + ); +$limit = $modx->db->getRecordCount($rs); + +if($limit>1) { + $tvsArr = array(); + while ($row = $modx->db->getRow($rs)) { + $tvsArr[] = $row; + } + + $i = 0; + foreach($tvsArr as $row) { + if ($i++ == 0) $evtLists .= ''.$row['templatename'].'
                        '; + $caption = $row['caption'] != '' ? $row['caption'] : $row['name']; + $evtLists .= '
                      • '.$caption.' [*'.$row['name'].'*]
                      • '; + } + $evtLists .= '
                      '; +} + +$header = ' + + + '; + +$header .= ' + + +

                      '.$_lang["template_tv_edit_title"].'

                      + + + +
                      +
                      '.$_lang['template_tv_edit'].'
                      +
                      +

                      '.$_lang["tmplvars_rank_edit_message"].'

                      +'; + +echo $header; + +echo $updateMsg . "Updating...

                      "; + +echo $evtLists; + +echo ' +
                      +
                      + + + +'; + + +?> \ No newline at end of file diff --git a/manager/actions/mutate_user.dynamic.php b/manager/actions/mutate_user.dynamic.php index 3d824aa6ed..0dca822b58 100644 --- a/manager/actions/mutate_user.dynamic.php +++ b/manager/actions/mutate_user.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -switch((int) $_REQUEST['a']) { +switch($modx->manager->action) { case 12: if (!$modx->hasPermission('edit_user')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -20,797 +20,975 @@ // check to see the snippet editor isn't locked $rs = $modx->db->select('username', $modx->getFullTableName('active_users'), "action=12 AND id='{$user}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getValue($rs)) { - $modx->webAlertAndQuit(sprintf($_lang["lock_msg"], $username, "user")); - } +if ($username = $modx->db->getValue($rs)) { + $modx->webAlertAndQuit(sprintf($_lang["lock_msg"], $username, "user")); +} // end check for lock -if ($_REQUEST['a'] == '12') { - // get user attribute - $rs = $modx->db->select('*', $modx->getFullTableName('user_attributes'), "internalKey = '{$user}'"); - $userdata = $modx->db->getRow($rs); - if (!$userdata) { - $modx->webAlertAndQuit("No user returned!"); - } - - - // get user settings - $rs = $modx->db->select('*', $modx->getFullTableName('user_settings'), "user = '{$user}'"); - $usersettings = array (); - while ($row = $modx->db->getRow($rs)) - $usersettings[$row['setting_name']] = $row['setting_value']; - // manually extract so that user display settings are not overwritten - foreach ($usersettings as $k => $v) { - if ($k != 'manager_language' && $k!='manager_theme') { - ${$k} = $v; - } - } - - // get user name - $rs = $modx->db->select('*', $modx->getFullTableName('manager_users'), "id = '{$user}'"); - $usernamedata = $modx->db->getRow($rs); - if (!$usernamedata) { - $modx->webAlertAndQuit("No user returned while getting username!"); - } - $_SESSION['itemname'] = $usernamedata['username']; +if ($modx->manager->action == '12') { + // get user attribute + $rs = $modx->db->select('*', $modx->getFullTableName('user_attributes'), "internalKey = '{$user}'"); + $userdata = $modx->db->getRow($rs); + if (!$userdata) { + $modx->webAlertAndQuit("No user returned!"); + } + + + // get user settings + $rs = $modx->db->select('*', $modx->getFullTableName('user_settings'), "user = '{$user}'"); + $usersettings = array (); + while ($row = $modx->db->getRow($rs)) + $usersettings[$row['setting_name']] = $row['setting_value']; + // manually extract so that user display settings are not overwritten + foreach ($usersettings as $k => $v) { + if ($k != 'manager_language' && $k!='manager_theme') { + ${$k} = $v; + } + } + + // get user name + $rs = $modx->db->select('*', $modx->getFullTableName('manager_users'), "id = '{$user}'"); + $usernamedata = $modx->db->getRow($rs); + if (!$usernamedata) { + $modx->webAlertAndQuit("No user returned while getting username!"); + } + $_SESSION['itemname'] = $usernamedata['username']; } else { - $userdata = array (); - $usersettings = array (); - $usernamedata = array (); - $_SESSION['itemname'] = $_lang["new_user"]; + $userdata = array (); + $usersettings = array (); + $usernamedata = array (); + $_SESSION['itemname'] = $_lang["new_user"]; } +// avoid doubling htmlspecialchars (already encoded in DB) +foreach($userdata as $key=>$val) { + $userdata[$key] = html_entity_decode($val, ENT_NOQUOTES, $modx->config['modx_charset']); +}; +$usernamedata['username'] = html_entity_decode($usernamedata['username'], ENT_NOQUOTES, $modx->config['modx_charset']); + // restore saved form $formRestored = false; if ($modx->manager->hasFormValues()) { - $modx->manager->loadFormValues(); - // restore post values - $userdata = array_merge($userdata, $_POST); - $userdata['dob'] = $modx->toTimeStamp($userdata['dob']); - $usernamedata['username'] = $userdata['newusername']; - $usernamedata['oldusername'] = $_POST['oldusername']; - $usersettings = array_merge($usersettings, $userdata); - $usersettings['allowed_days'] = is_array($_POST['allowed_days']) ? implode(",", $_POST['allowed_days']) : ""; - extract($usersettings, EXTR_OVERWRITE); + $modx->manager->loadFormValues(); + // restore post values + $userdata = array_merge($userdata, $_POST); + $userdata['dob'] = $modx->toTimeStamp($userdata['dob']); + $usernamedata['username'] = $userdata['newusername']; + $usernamedata['oldusername'] = $_POST['oldusername']; + $usersettings = array_merge($usersettings, $userdata); + $usersettings['allowed_days'] = is_array($_POST['allowed_days']) ? implode(",", $_POST['allowed_days']) : ""; + extract($usersettings, EXTR_OVERWRITE); } // include the country list language file $_country_lang = array(); include_once "lang/country/english_country.inc.php"; if($manager_language!="english" && file_exists($modx->config['site_manager_path']."includes/lang/country/".$manager_language."_country.inc.php")){ - include_once "lang/country/".$manager_language."_country.inc.php"; + include_once "lang/country/".$manager_language."_country.inc.php"; } $displayStyle = ($_SESSION['browser']==='modern') ? 'table-row' : 'block' ; ?> -
                      -invokeEvent("OnUserFormPrerender", array ( + "id" => $user + )); + if (is_array($evtOut)) + echo implode("", $evtOut); + ?> + + + " /> + +

                      + + + + + + +

                      +
                      + +
                      + +
                      + " /> + +
                      + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + -// invoke OnUserFormPrerender event -$evtOut = $modx->invokeEvent("OnUserFormPrerender", array ( - "id" => $user -)); -if (is_array($evtOut)) - echo implode("", $evtOut); -?> - - -" /> - -

                      -
                      - -
                      - -
                      -" /> - -
                      - -
                      -

                      - -
                      + time() && $userdata['blockeduntil']!=0) || $userdata['failedlogins']>3) { ?>
                      +
                      + " alt="." /> htmlspecialchars(!empty($usernamedata['oldusername']) ? $usernamedata['oldusername']:$usernamedata['username']); ?> - + +
                      +
                      : 
                      manager->action=='11' ? $_lang['password'].":" : $_lang['change_password_new'].":" ; ?> manager->action=="11" ? " checked disabled": "" ; ?>>" onchange="documentDirty=true;" />
                      + " id="passwordBlock"> +
                      + + />
                      + >
                      +
                      + +
                      + +
                      + +
                      +
                      +
                      +
                      + + />
                      + /> +
                      +
                      +
                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + -while ($row = $modx->db->getRow($rs)) { - if ($_REQUEST['a']=='11') { - $selectedtext = $row['id'] == '1' ? ' selected="selected"' : ''; - } else { - $selectedtext = $row['id'] == $userdata['role'] ? "selected='selected'" : ''; - } -?> - - + + + + + + + + -} -?> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -} -?> -
                      - time() && $userdata['blockeduntil']!=0) || $userdata['failedlogins']>3) { ?>
                      -
                      - " alt="." />  - - -
                      -
                      : 
                       >" onchange="documentDirty=true;" />
                      - " id="passwordBlock"> -
                      - - />
                      - >
                      -
                      - -
                      - -
                      - -
                      -
                      -
                      -
                      - - />
                      - /> -
                      -
                      -
                      : 
                      :  - - -
                      :  - db->select('name, id', $modx->getFullTableName('user_roles'), ($_SESSION['mgrRole'] == 1) ? '' : 'id != 1'); -?> -
                      : 
                      :  + + +
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      :  - +
                      :  + db->select('name, id', '[+prefix+]user_roles', ($modx->hasPermission('save_role')) ? '' : 'id != 1'); + ?> +
                      :  - " onblur='documentDirty=true;'> - " border="0" alt="" /> -
                      :  -
                      :  - -
                      : 
                      : toDateFormat($userdata['lastlogin']+$server_offset_time) ?>
                      :    []
                      : time() && $userdata['blockeduntil']!=0)) ? " checked": "" ; ?>>
                      :  - " onblur='documentDirty=true;' readonly="readonly"> - " border="0" alt="" /> -
                      :  - " onblur='documentDirty=true;' readonly="readonly"> - " border="0" alt="" /> -
                      - getLoginUserID()) { ?>

                      -
                      - -
                      -

                      - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - } -} -$dir->close(); -?> + + + + + + + + + + + + + + + + + + - - - + + + + + + + + + + + + + + manager->action=='12') { ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      :  + +
                      :  + " onblur='documentDirty=true;'> + " border="0" alt="" /> +
                      :  -
                       
                      :  + +
                      : 
                      : toDateFormat($userdata['lastlogin']+$server_offset_time) ?>
                      :    []
                      : time() && $userdata['blockeduntil']!=0)) ? " checked": "" ; ?>>
                      :  + " onblur='documentDirty=true;' readonly="readonly"> + " border="0" alt="" /> +
                      :  + " onblur='documentDirty=true;' readonly="readonly"> + " border="0" alt="" /> +
                      + getLoginUserID()) { ?>

                      +
                      + + +
                      +

                      + + + + + + + + + + - + + - + + - - + + + - + + - + + - + + - - + + + - + + + - + + - + + + - + + + read()) { + if ($file != "." && $file != ".." && is_dir("media/style/$file") && substr($file,0,1) != '.') { + $themename = $file; + if($themename==='common') continue; + $attr = 'value="'.$themename.'" '; + if (isset($usersettings['manager_theme']) && $themename == $usersettings['manager_theme']) + $attr .= 'selected="selected" '; + echo "\t\t\n"; + } + } + $dir->close(); + ?> + + + + + + + - - + - + + + + + + + + + + + + + - + + "> + + - + + - + + - + + - + + - + + - + + - + + - + + - + + - + + + - + + - + + + - + + - + + + - + + $edt = isset ($usersettings["which_editor"]) ? $usersettings["which_editor"] : ''; + // invoke OnRichTextEditorRegister event + $evtOut = $modx->invokeEvent("OnRichTextEditorRegister"); + echo "\n"; + if (is_array($evtOut)) + for ($i = 0; $i < count($evtOut); $i++) { + $editor = $evtOut[$i]; + echo "\n"; + } + ?> + + + - + + + - - + + + - + - + + + - + + + - + + + - + + + - + + - - - -
                      + +
                       
                        
                      - />
                      - /> + />
                      + />
                        
                        
                      - />
                      - />
                      - />
                      - />
                      - />
                      - />
                      - />
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                        
                       
                       
                      + +
                       
                      - "> -
                        
                      - "> + ">    />
                        
                      - "> -    />
                      + "> +    />
                        
                      - "> -    />
                      + "> +    />
                        
                      - "> -    />
                      + "> +    />
                        
                      ">
                        
                      - -
                        
                      " /> - " /> +
                        
                      " /> -
                        
                      " /> -
                        
                      - invokeEvent("OnInterfaceSettingsRender"); -if (is_array($evtOut)) - echo implode("", $evtOut); -?> -
                      -
                      - -
                      -

                      - - - - - - - - - + +
                       
                      + + invokeEvent("OnInterfaceSettingsRender"); + if (is_array($evtOut)) + echo implode("", $evtOut); + ?> + +
                      + + +
                      +

                      + + + + + + + + + - - -
                       
                      -
                      - - -db->select('user_group', $modx->getFullTableName('member_groups'), "member='{$_GET['id']}'"); - $groupsarray = $modx->db->getColumn('user_group', $rs); - } - - // retain selected doc groups between post - if (is_array($_POST['user_groups'])) { - foreach ($_POST['user_groups'] as $n => $v) - $groupsarray[] = $v; - } -?> -
                      -

                      - -
                      -
                      -" . $_lang['access_permissions_user_message'] . "

                      "; - $rs = $modx->db->select('name, id', $modx->getFullTableName('membergroup_names'), '', 'name'); - while ($row=$modx->db->getRow($rs)) { - echo "" . $row['name'] . "
                      "; - } -?> -
                      - -
                      + + + +
                      + + + manager->action == '12') { // only do this bit if the user is being edited + $rs = $modx->db->select('user_group', $modx->getFullTableName('member_groups'), "member='{$user}'"); + $groupsarray = $modx->db->getColumn('user_group', $rs); + } + + // retain selected doc groups between post + if (is_array($_POST['user_groups'])) { + foreach ($_POST['user_groups'] as $n => $v) + $groupsarray[] = $v; + } + ?> +
                      +

                      + +
                      +
                      + " . $_lang['access_permissions_user_message'] . "

                      "; + $rs = $modx->db->select('name, id', $modx->getFullTableName('membergroup_names'), '', 'name'); + while ($row=$modx->db->getRow($rs)) { + echo "
                      "; + } + ?> +
                      + +
                      -
                      -
                      - - -invokeEvent("OnUserFormRender", array ( - "id" => $user -)); -if (is_array($evtOut)) - echo implode("", $evtOut); -?> + + + + + invokeEvent("OnUserFormRender", array ( + "id" => $user + )); + if (is_array($evtOut)) + echo implode("", $evtOut); + ?> diff --git a/manager/actions/mutate_web_user.dynamic.php b/manager/actions/mutate_web_user.dynamic.php index 22a5158bb2..9927016b6d 100644 --- a/manager/actions/mutate_web_user.dynamic.php +++ b/manager/actions/mutate_web_user.dynamic.php @@ -1,7 +1,7 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -switch((int) $_REQUEST['a']) { +switch($modx->manager->action) { case 88: if(!$modx->hasPermission('edit_web_user')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); @@ -21,517 +21,636 @@ // check to see the snippet editor isn't locked $rs = $modx->db->select('username', $modx->getFullTableName('active_users'), "action=88 AND id='{$user}' AND internalKey!='".$modx->getLoginUserID()."'"); - if ($username = $modx->db->getRow($rs)) { - $modx->webAlertAndQuit(sprintf($_lang["lock_msg"], $username, "web user")); - } +if ($username = $modx->db->getValue($rs)) { + $modx->webAlertAndQuit(sprintf($_lang["lock_msg"], $username, "web user")); +} // end check for lock -if($_REQUEST['a']=='88') { - // get user attributes - $rs = $modx->db->select('*', $modx->getFullTableName('web_user_attributes'), "internalKey = '{$user}'"); - $userdata = $modx->db->getRow($rs); - if(!$userdata) { - $modx->webAlertAndQuit("No user returned!"); - } - - // get user settings - $rs = $modx->db->select('*', $modx->getFullTableName('web_user_settings'), "webuser = '{$user}'"); - $usersettings = array(); - while($row=$modx->db->getRow($rs)) $usersettings[$row['setting_name']]=$row['setting_value']; - extract($usersettings, EXTR_OVERWRITE); - - // get user name - $rs = $modx->db->select('*', $modx->getFullTableName('web_users'), "id = '{$user}'"); - $usernamedata = $modx->db->getRow($rs); - if(!$usernamedata) { - $modx->webAlertAndQuit("No user returned while getting username!"); - } - $_SESSION['itemname']=$usernamedata['username']; +if($modx->manager->action=='88') { + // get user attributes + $rs = $modx->db->select('*', $modx->getFullTableName('web_user_attributes'), "internalKey = '{$user}'"); + $userdata = $modx->db->getRow($rs); + if(!$userdata) { + $modx->webAlertAndQuit("No user returned!"); + } + + // get user settings + $rs = $modx->db->select('*', $modx->getFullTableName('web_user_settings'), "webuser = '{$user}'"); + $usersettings = array(); + while($row=$modx->db->getRow($rs)) $usersettings[$row['setting_name']]=$row['setting_value']; + extract($usersettings, EXTR_OVERWRITE); + + // get user name + $rs = $modx->db->select('*', $modx->getFullTableName('web_users'), "id = '{$user}'"); + $usernamedata = $modx->db->getRow($rs); + if(!$usernamedata) { + $modx->webAlertAndQuit("No user returned while getting username!"); + } + $_SESSION['itemname']=$usernamedata['username']; } else { - $userdata = array(); - $usersettings = array(); - $usernamedata = array(); - $_SESSION['itemname'] = $_lang["new_web_user"]; + $userdata = array(); + $usersettings = array(); + $usernamedata = array(); + $_SESSION['itemname'] = $_lang["new_web_user"]; } +// avoid doubling htmlspecialchars (already encoded in DB) +foreach($userdata as $key=>$val) { + $userdata[$key] = html_entity_decode($val, ENT_NOQUOTES, $modx->config['modx_charset']); +}; +$usernamedata['username'] = html_entity_decode($usernamedata['username'], ENT_NOQUOTES, $modx->config['modx_charset']); + // restore saved form $formRestored = false; if($modx->manager->hasFormValues()) { - $modx->manager->loadFormValues(); - // restore post values - $userdata = array_merge($userdata,$_POST); - $userdata['dob'] = $modx->toTimeStamp($userdata['dob']); - $usernamedata['username'] = $userdata['newusername']; - $usernamedata['oldusername'] = $_POST['oldusername']; - $usersettings = array_merge($usersettings,$userdata); - $usersettings['allowed_days'] = is_array($_POST['allowed_days']) ? implode(",", $_POST['allowed_days']) : ""; - extract($usersettings, EXTR_OVERWRITE); + $modx->manager->loadFormValues(); + // restore post values + $userdata = array_merge($userdata,$_POST); + $userdata['dob'] = $modx->toTimeStamp($userdata['dob']); + $usernamedata['username'] = $userdata['newusername']; + $usernamedata['oldusername'] = $_POST['oldusername']; + $usersettings = array_merge($usersettings,$userdata); + $usersettings['allowed_days'] = is_array($_POST['allowed_days']) ? implode(",", $_POST['allowed_days']) : ""; + extract($usersettings, EXTR_OVERWRITE); } // include the country list language file $_country_lang = array(); if($manager_language!="english" && file_exists($modx->config['site_manager_path']."includes/lang/country/".$manager_language."_country.inc.php")){ - include_once "lang/country/".$manager_language."_country.inc.php"; + include_once "lang/country/".$manager_language."_country.inc.php"; } else { - include_once "lang/country/english_country.inc.php"; + include_once "lang/country/english_country.inc.php"; } $displayStyle = ($_SESSION['browser']==='modern') ? 'table-row' : 'block' ; ?> -
                      -invokeEvent("OnWUsrFormPrerender",array("id" => $user)); - if(is_array($evtOut)) echo implode("",$evtOut); -?> - - -" /> - -

                      - -
                      -
                        -
                      • " /> + - -
                      • -
                      • " />
                      • - - - -
                      • " />
                      • -
                      -
                      - - -
                      -" /> - -
                      - -
                      -

                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      - time() && $userdata['blockeduntil']!=0)|| ($userdata['blockedafter']3) { ?>
                      -
                      - " alt="." />  - - -
                      -
                      : 
                       >" onchange="documentDirty=true;" />
                      - " id="passwordBlock"> -
                      - - />
                      - >
                      -
                      - -
                      - -
                      - -
                      -
                      -
                      -
                      - - />
                      - /> -
                      -
                      -
                      : 
                      :  - - -
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      :  - + invokeEvent("OnWUsrFormPrerender",array("id" => $user)); + if(is_array($evtOut)) echo implode("",$evtOut); + ?> + + + " /> + +

                      + + + + + + +

                      +
                      +
                        +
                      • + + " /> + + +
                      • + manager->action == '87') { ?> +
                      • " />
                      • + +
                      • " />
                      • + +
                      • " />
                      • +
                      +
                      + + +
                      + " /> + +
                      + +
                      +

                      + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                      + time() && $userdata['blockeduntil']!=0)|| ($userdata['blockedafter']3) { ?>
                      +
                      + " alt="." /> htmlspecialchars(!empty($usernamedata['oldusername']) ? $usernamedata['oldusername']:$usernamedata['username']); ?> - + +
                      +
                      : 
                      manager->action=='87' ? $_lang['password'].":" : $_lang['change_password_new'].":" ; ?> manager->action=="87" ? " checked disabled": "" ; ?>>" onchange="documentDirty=true;" />
                      + " id="passwordBlock"> +
                      + + />
                      + >
                      +
                      + +
                      + +
                      + +
                      +
                      +
                      +
                      + + />
                      + /> +
                      +
                      +
                      : 
                      :  + +
                      :  - " onblur='documentDirty=true;'> - " border="0" alt="" /> -
                      :  -
                      :  - -
                      : 
                      : toDateFormat($userdata['lastlogin']+$server_offset_time) ?>
                      :    []
                      : time() && $userdata['blockeduntil']!=0)||($userdata['blockedafter'] />
                      :  - " onblur='documentDirty=true;' readonly="readonly"> - " border="0" alt="" /> -
                      :  - " onblur='documentDirty=true;' readonly="readonly"> - " border="0" alt="" /> -
                      -
                      - -
                      -

                      - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + manager->action=='88') { ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      : 
                      :  + +
                      :  + " onblur='documentDirty=true;'> + " border="0" alt="" /> +
                      :  +
                      :  + +
                      : 
                      : toDateFormat($userdata['lastlogin']+$server_offset_time) ?>
                      :    []
                      : time() && $userdata['blockeduntil']!=0)||($userdata['blockedafter'] />
                      :  + " onblur='documentDirty=true;' readonly="readonly"> + " border="0" alt="" /> +
                      :  + " onblur='documentDirty=true;' readonly="readonly"> + " border="0" alt="" /> +
                      +
                      + + +
                      +

                      + + + + + + + + + + - + + + + - + + + +
                       
                       
                      - />
                      - />
                      - />
                      - />
                      - />
                      - />
                      - />
                      +
                      +
                      +
                      +
                      +
                      +
                      +
                       
                      +
                      + + +
                      +

                      + + + + - - -
                      -
                      - -
                      -

                      - - - - - - + + + + + -
                       
                      " />
                      -
                      + +
                      +
                      -db->select('webgroup', $modx->getFullTableName('web_groups'), "webuser='{$_GET['id']}'"); - $groupsarray = $modx->db->getColumn('webgroup', $rs); -} + if($modx->manager->action=='88') { // only do this bit if the user is being edited + $rs = $modx->db->select('webgroup', $modx->getFullTableName('web_groups'), "webuser='{$user}'"); + $groupsarray = $modx->db->getColumn('webgroup', $rs); + } -// retain selected user groups between post -if(is_array($_POST['user_groups'])) { - foreach($_POST['user_groups'] as $n => $v) $groupsarray[] = $v; -} + // retain selected user groups between post + if(is_array($_POST['user_groups'])) { + foreach($_POST['user_groups'] as $n => $v) $groupsarray[] = $v; + } - echo '
                      + echo '

                      '.$_lang['web_access_permissions'].'

                      '; - echo '

                      '. $_lang['access_permissions_user_message'] . '

                      '; - $rs = $modx->db->select('name, id', $modx->getFullTableName('webgroup_names'), '', 'name'); - while ($row=$modx->db->getRow($rs)) { - echo ''.$row['name'].'
                      '; - } - - echo '
                      '; + echo '
                      '. $_lang['web_access_permissions'] . '
                      '; + echo '
                      '; + echo '

                      '. $_lang['access_permissions_user_message'] . '

                      '; + $rs = $modx->db->select('name, id', $modx->getFullTableName('webgroup_names'), '', 'name'); + while ($row=$modx->db->getRow($rs)) { + echo '
                      '; + } -} + echo '
                      '; + echo '
                      '; - echo ''; + } - // invoke OnWUsrFormRender event - $evtOut = $modx->invokeEvent("OnWUsrFormRender",array("id" => $user)); - if(is_array($evtOut)) echo implode("",$evtOut); -?> + echo ''; + + // invoke OnWUsrFormRender event + $evtOut = $modx->invokeEvent("OnWUsrFormRender",array("id" => $user)); + if(is_array($evtOut)) echo implode("",$evtOut); + + ?>
                      -
                      +
                      diff --git a/manager/actions/resource_selector.static.php b/manager/actions/resource_selector.static.php index 0a3aa92509..65ffa8055b 100644 --- a/manager/actions/resource_selector.static.php +++ b/manager/actions/resource_selector.static.php @@ -169,7 +169,7 @@ function setCheckbox(chk){
                      - + @@ -177,8 +177,8 @@ function setCheckbox(chk){
                      -
                      -

                      " alt="." width="32" height="32" align="left" />

                      +
                      +


                      @@ -188,7 +188,7 @@ function setCheckbox(chk){
                      + hasPermission('edit_document')) { ?> + + + hasPermission('assets_images')) { ?> + + + hasPermission('assets_files')) { ?> + + + hasPermission('edit_template') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('edit_chunk') || $modx->hasPermission('edit_plugin')) { ?> + + hasPermission('empty_trash')) { ?>
                      - +
                      diff --git a/manager/actions/resources.static.php b/manager/actions/resources.static.php index d3b50a374b..a3dc96c43a 100644 --- a/manager/actions/resources.static.php +++ b/manager/actions/resources.static.php @@ -2,51 +2,105 @@ if(IN_MANAGER_MODE!="true") die("INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); function createResourceList($resourceTable,$action,$nameField = 'name') { - global $modx, $_lang, $modx_textdir; + global $modx, $_lang, $_style, $modx_textdir; $pluginsql = $resourceTable == 'site_plugins' ? $resourceTable.'.disabled, ' : ''; - $tvsql = $resourceTable == 'site_tmplvars' ? $resourceTable.'.caption, ' : ''; + + $tvsql = ''; + $tvjoin = ''; + if($resourceTable == 'site_tmplvars') { + $tvsql = 'site_tmplvars.caption, '; + $tvjoin = sprintf('LEFT JOIN %s AS stt ON site_tmplvars.id=stt.tmplvarid GROUP BY site_tmplvars.id,reltpl', $modx->getFullTableName('site_tmplvar_templates')); + $sttfield = 'IF(stt.templateid,1,0) AS reltpl,'; + } + else $sttfield = ''; //$orderby = $resourceTable == 'site_plugins' ? '6,2' : '5,1'; - if ($resourceTable == 'site_plugins' || $resourceTable == 'site_tmplvars') { - $orderby= '6,2'; - }else{ - $orderby= '5,1'; + switch($resourceTable) { + case 'site_plugins': + $orderby= '6,2'; break; + case 'site_tmplvars': + $orderby= '7,3'; break; + case 'site_templates': + $orderby= '6,1'; break; + default: + $orderby= '5,1'; } + $selectableTemplates = $resourceTable == 'site_templates' ? "{$resourceTable}.selectable, " : ""; $rs = $modx->db->select( - "{$pluginsql} {$tvsql} {$resourceTable}.{$nameField} as name, {$resourceTable}.id, {$resourceTable}.description, {$resourceTable}.locked, IF(isnull(categories.category),'{$_lang['no_category']}',categories.category) as category", + "{$sttfield} {$pluginsql} {$tvsql} {$resourceTable}.{$nameField} as name, {$resourceTable}.id, {$resourceTable}.description, {$resourceTable}.locked, {$selectableTemplates}IF(isnull(categories.category),'{$_lang['no_category']}',categories.category) as category, categories.id as catid", $modx->getFullTableName($resourceTable)." AS {$resourceTable} - LEFT JOIN ".$modx->getFullTableName('categories')." AS categories ON {$resourceTable}.category = categories.id", + LEFT JOIN ".$modx->getFullTableName('categories')." AS categories ON {$resourceTable}.category = categories.id {$tvjoin}", "", $orderby ); - $limit = $modx->db->getRecordCount($rs); + $limit = $modx->db->getRecordCount($rs); if($limit<1){ echo $_lang['no_results']; } else { - $output = '
                        '; + $output = '
                          '; $preCat = ''; $insideUl = 0; while ($row = $modx->db->getRow($rs)) { $row['category'] = stripslashes($row['category']); //pixelchutes if ($preCat !== $row['category']) { $output .= $insideUl? '
                        ': ''; - $output .= '
                      • '.$row['category'].'
                          '; + $output .= '
                        • '.$row['category']. ($row['catid']!=''? ' ('.$row['catid'].')' : '') .'
                            '; $insideUl = 1; } - if ($resourceTable == 'site_plugins') $class = $row['disabled'] ? ' class="disabledPlugin"' : ''; - $output .= '
                          • '.$row['name'].' (' . $row['id'] . ')'.($modx_textdir ? '‏' : '').''; + if ($resourceTable == 'site_templates') { + $class = $row['selectable'] ? '' : ' class="disabledPlugin"'; + $lockElementType = 1; + } + if ($resourceTable == 'site_tmplvars') { + $class = $row['reltpl'] ? '' : ' class="disabledPlugin"'; + $lockElementType = 2; + } + if ($resourceTable == 'site_htmlsnippets') { + $lockElementType = 3; + } + if ($resourceTable == 'site_snippets') { + $lockElementType = 4; + } + if ($resourceTable == 'site_plugins') { + $class = $row['disabled'] ? ' class="disabledPlugin"' : ''; + $lockElementType = 5; + } + + // Prepare displaying user-locks + $lockedByUser = ''; + $rowLock = $modx->elementIsLocked($lockElementType, $row['id'], true); + if($rowLock && $modx->hasPermission('display_locks')) { + if($rowLock['sid'] == $modx->sid) { + $title = $modx->parseText($_lang["lock_element_editing"], array('element_type'=>$_lang["lock_element_type_".$lockElementType],'lasthit_df'=>$rowLock['lasthit_df'])); + $lockedByUser = ' '; + } else { + $title = $modx->parseText($_lang["lock_element_locked_by"], array('element_type'=>$_lang["lock_element_type_".$lockElementType], 'username'=>$rowLock['username'], 'lasthit_df'=>$rowLock['lasthit_df'])); + if($modx->hasPermission('remove_locks')) { + $lockedByUser = ''; + } else { + $lockedByUser = ''; + } + } + } + + $output .= '
                          • '.$lockedByUser.''.$row['name'].' (' . $row['id'] . ')'.($modx_textdir ? '‏' : '').''; if ($resourceTable == 'site_tmplvars') { - $output .= !empty($row['description']) ? ' - '.$row['caption'].'   ('.$row['description'].')' : ' - '.$row['caption']; + $output .= !empty($row['description']) ? ' - '.$row['caption'].'   ('.$row['description'].')' : ' - '.$row['caption']; }else{ $output .= !empty($row['description']) ? ' - '.$row['description'] : '' ; } - $output .= $row['locked'] ? ' ('.$_lang['locked'].')' : "" ; + + $tplInfo = array(); + if($row['locked']) $tplInfo[] = $_lang['locked']; + if($row['id'] == $modx->config['default_template'] && $resourceTable == 'site_templates') $tplInfo[] = $_lang['defaulttemplate_title']; + $output .= !empty($tplInfo) ? ' ('.join(', ', $tplInfo).')' : ''; + $output .= '
                          • '; $preCat = $row['category']; @@ -60,8 +114,55 @@ function createResourceList($resourceTable,$action,$nameField = 'name') { ?> + + -

                            +

                            + + + + + + +

                            @@ -73,74 +174,162 @@ function createResourceList($resourceTable,$action,$nameField = 'name') { hasPermission('new_template') || $modx->hasPermission('edit_template')) { ?>
                            -

                            +

                            -

                            + -
                              +
                                +
                              • + + + +
                              • +
                              + + +
                            hasPermission('new_template') || $modx->hasPermission('edit_template')) { ?>
                            -

                            +

                            -

                            -
                              -
                            • -
                            - + + +
                              +
                            • +
                              + + +
                            • +
                            • +
                            • +
                            • +
                            + + + +
                            hasPermission('new_chunk') || $modx->hasPermission('edit_chunk')) { ?>
                            -

                            +

                            -

                            + -
                              +
                                +
                              • +
                                + + +
                              • +
                              + + +
                            hasPermission('new_snippet') || $modx->hasPermission('edit_snippet')) { ?>
                            -

                            +

                            -

                            + -
                              +
                                +
                              • +
                                + + +
                              • +
                              + + +
                            hasPermission('new_plugin') || $modx->hasPermission('edit_plugin')) { ?>
                            -

                            +

                            -

                            - -
                              -
                            • + + +
                                +
                              • +
                                + + +
                              • + hasPermission('new_plugin')) { ?>
                              • hasPermission('save_plugin')) { ?>
                              • +hasPermission('delete_plugin') && $_SESSION['mgrRole'] == 1) { + $tbl_site_plugins = $modx->getFullTableName('site_plugins'); + if ($modx->db->getRecordCount($modx->db->query("SELECT id FROM {$tbl_site_plugins} t1 WHERE disabled = 1 AND name IN (SELECT name FROM {$tbl_site_plugins} t2 WHERE t1.name = t2.name AND t1.id != t2.id)"))) { ?> +
                              • + +
                              + + +
                            @@ -148,9 +337,20 @@ function createResourceList($resourceTable,$action,$nameField = 'name') {

                            -

                            -
                            -
                              + + +
                                +
                              • +
                                + + +
                              • +
                              • +
                              + +
                              db->select( - "{$pluginsql} {$nameField} as name, {$v['table']}.id, description, locked, categories.category, categories.id as catid", + "{$pluginsql} {$nameField} as name, {$v['table']}.id, description, locked, IF(isnull(categories.category), '{$_lang['no_category']}',categories.category) as category, categories.id as catid", $modx->getFullTableName($v['table'])." AS {$v['table']} LEFT JOIN ".$modx->getFullTableName('categories')." AS categories ON {$v['table']}.category = categories.id", "", @@ -212,7 +412,9 @@ function createResourceList($resourceTable,$action,$nameField = 'name') { $name[$n] = $v['name']; } - array_multisort($category, SORT_ASC, $name, SORT_ASC, $finalInfo); + $category_lowercase = array_map('strtolower', $category); + $name_lowercase = array_map('strtolower', $name); + array_multisort($category_lowercase, SORT_ASC, SORT_STRING, $name_lowercase, SORT_ASC, SORT_STRING, $finalInfo); echo '
                                '; $preCat = ''; @@ -221,16 +423,18 @@ function createResourceList($resourceTable,$action,$nameField = 'name') { if ($preCat !== $v['category']) { echo $insideUl? '
                              ': ''; if ($v['category'] == $_lang['no_category'] || !$delPerm) { - echo '
                            • '.$v['category'].'
                                '; + echo '
                              • '.$v['category']. ($v['catid']!='' ? ' ('.$v['catid'].')' : '') .'
                                  '; } else { - echo '
                                • '.$v['category'].' ('.$_lang['delete'].')
                                    '; + echo '
                                  • '.$v['category']. ($v['catid']!='' ? ' ('.$v['catid'].')' : '') .' - '.$_lang['delete'].'
                                      '; } $insideUl = 1; } $class = array_key_exists('disabled',$v) && $v['disabled'] ? ' class="disabledPlugin"' : ''; + if ($v['id']) { ?> -
                                    • >('.$_lang['locked'].')' : "" ; ?>
                                    • +
                                    • >('.$_lang['locked'].')' : "" ; ?>
                                    • ': ''; @@ -238,7 +442,18 @@ function createResourceList($resourceTable,$action,$nameField = 'name') { -
                                    +
                            • +
                            -
                            + \ No newline at end of file diff --git a/manager/actions/role_management.static.php b/manager/actions/role_management.static.php index e246538211..eb8657dc87 100644 --- a/manager/actions/role_management.static.php +++ b/manager/actions/role_management.static.php @@ -7,10 +7,17 @@ ?> -

                            +

                            + + + + + + +

                            -

                            +

                            • @@ -22,15 +29,15 @@ if($limit<1){ echo "

                              The request returned no roles!

                              "; } else { - echo "
                                "; + echo '
                                  '; while ($row = $modx->db->getRow($rs)) { if($row['id']==1) { - echo '
                                • ' . $row['name'] . ' - ' . $_lang['administrator_role_message'] . '
                                • '; + echo '
                                • ' . $row['name'] . ' - ' . $_lang['administrator_role_message'] . '
                                • '; } else { - echo '
                                • ' . $row['name'] . ' - ' . $row['description'] . '
                                • '; + echo '
                                • ' . $row['name'] . ' - ' . $row['description'] . '
                                • '; } } - echo "
                                "; + echo '
                              '; } ?>
                            diff --git a/manager/actions/search.static.php b/manager/actions/search.static.php index 0aa4f17a3e..fc3499df25 100644 --- a/manager/actions/search.static.php +++ b/manager/actions/search.static.php @@ -1,126 +1,181 @@ INCLUDE_ORDERING_ERROR

                            Please use the MODX Content Manager instead of accessing this file directly."); +if(!defined('IN_MANAGER_MODE') || IN_MANAGER_MODE != 'true') exit(); unset($_SESSION['itemname']); // clear this, because it's only set for logging purposes +// Catch $_REQUEST['searchid'] for compatibility +if(isset($_REQUEST['searchid'])) { + $_REQUEST['searchfields'] = $_REQUEST['searchid']; + $_POST['searchfields'] = $_REQUEST['searchid']; +} ?> -

                            +

                            + + + + + + +

                            -
                            -
                            -
                      " onclick="searchResource();return false;"> " onclick="resetSearch();return false;"> " onclick="changeListMode();return false;">
                      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
                       
                       
                       
                      Alias 
                      URL 
                       
                      - -
                      - - - +
                      +
                      + + + + + + + + + + + + db->select('*',$modx->getFullTableName('site_templates')); + $option[] = ''; + $templateid = (isset($_REQUEST['templateid']) && $_REQUEST['templateid'] !== '') ? intval($_REQUEST['templateid']) : ''; + $selected = $templateid === 0 ? ' selected="selected"' : ''; + $option[] = ''; + while($row=$modx->db->getRow($rs)) + { + $templatename = htmlspecialchars($row['templatename'], ENT_QUOTES, $modx->config['modx_charset']); + $selected = $row['id'] == $templateid ? ' selected="selected"' : ''; + $option[] = sprintf('', $row['id'], $selected, $templatename, $row['id']); + } + $tpls = sprintf('', join("\n",$option)); + ?> + + + + + + + + + + + + + + + + + + +
                       
                       
                      URL 
                       
                      + +
                      + + +
                      db->escape($_REQUEST['alias']); - $searchcontent = $modx->db->escape($_REQUEST['content']); - $searchlongtitle = $modx->db->escape($_REQUEST['longtitle']); - if(isset($_REQUEST['url']) && $_REQUEST['url']!=='') { - $url = $modx->db->escape($_REQUEST['url']); - $friendly_url_suffix = $modx->config['friendly_url_suffix']; - $base_url = $modx->config['base_url']; - $site_url = $modx->config['site_url']; - $url = preg_replace('@' . $friendly_url_suffix . '$@', '', $url); - if($url[0]==='/') $url = preg_replace('@^' . $base_url . '@', '', $url); - if(substr($url,0,4)==='http') $url = preg_replace('@^' . $site_url . '@', '', $url); - $searchid = $modx->getIdFromAlias($url); - if (empty($searchid)) $searchid = 'x'; +$tbl_site_content = $modx->getFullTableName('site_content'); + +$searchfields = htmlentities($_POST['searchfields'], ENT_QUOTES, $modx_manager_charset); +$searchlongtitle = $modx->db->escape($_REQUEST['searchfields']); +$search_alias = $modx->db->escape($_REQUEST['searchfields']); +$templateid = isset($_REQUEST['templateid']) && $_REQUEST['templateid'] !== '' ? intval($_REQUEST['templateid']) : ''; +$searchcontent = $modx->db->escape($_REQUEST['content']); + +$sqladd = ""; + +// Handle Input "Search by exact URL" +$idFromAlias = false; +if (isset($_REQUEST['url']) && $_REQUEST['url'] !== '') { + $url = $modx->db->escape($_REQUEST['url']); + $friendly_url_suffix = $modx->config['friendly_url_suffix']; + $base_url = $modx->config['base_url']; + $site_url = $modx->config['site_url']; + $url = preg_replace('@' . $friendly_url_suffix . '$@', '', $url); + if ($url[0] === '/') $url = preg_replace('@^' . $base_url . '@', '', $url); + if (substr($url, 0, 4) === 'http') $url = preg_replace('@^' . $site_url . '@', '', $url); + $idFromAlias = $modx->getIdFromAlias($url); +} + +// Handle Input "Search in main fields" +if($searchfields != '') { + if (ctype_digit($searchfields)) { + $sqladd .= "id='{$searchfields}'"; + } + if($idFromAlias) { + $sqladd .= $sqladd != '' ? ' OR ' : ''; + $sqladd .= "id='{$idFromAlias}'"; } + + $sqladd = $sqladd ? "({$sqladd})" : $sqladd; + + if(!ctype_digit($searchfields)) { + $sqladd .= $sqladd != '' ? ' AND' : ''; + $sqladd .= " pagetitle LIKE '%{$searchfields}%'"; + $sqladd .= " OR longtitle LIKE '%{$searchlongtitle}%'"; + $sqladd .= " OR alias LIKE '%{$search_alias}%'"; + } +} else if($idFromAlias) { + $sqladd .= " id='{$idFromAlias}'"; +} - $tbl_site_content = $modx->getFullTableName('site_content'); - $sqladd .= $searchid!=='0' ? " AND id='{$searchid}' " : ''; - $sqladd .= $searchtitle!='' ? " AND pagetitle LIKE '%{$searchtitle}%' " : ''; - $sqladd .= $searchlongtitle!='' ? " AND longtitle LIKE '%{$searchlongtitle}%' " : ''; - $sqladd .= $search_alias!='' ? " AND alias LIKE '%{$search_alias}%' " : ''; - $sqladd .= $searchcontent!='' ? " AND content LIKE '%{$searchcontent}%' " : ''; - - $fields = 'id, contenttype, pagetitle, description, deleted, published, isfolder, type'; - $where = "1=1 {$sqladd}"; - $rs = $modx->db->select($fields,$tbl_site_content,$where,'id'); -$limit = $modx->db->getRecordCount($rs); -?> -
                      -
                      -db->select($fields, $tbl_site_content, $where, 'id'); + $limit = $modx->db->getRecordCount($rs); } else { - printf('

                      '.$_lang['search_results_returned_msg'].'

                      ', $limit); + $limit = 0; +} + ?> - - - - - - - - - - - - - +
                      + '.$_lang['search_results_returned_msg'].'

                      ', $limit); + ?> + +
                      + + + + + + + + + + + $_style["tree_page_rss"], 'application/pdf' => $_style["tree_page_pdf"], 'application/vnd.ms-word' => $_style["tree_page_word"], @@ -133,51 +188,51 @@ 'image/gif' => $_style["tree_page_gif"], 'image/jpg' => $_style["tree_page_jpg"], 'image/png' => $_style["tree_page_png"] - ); - -while ($row = $modx->db->getRow($rs)) { - // figure out the icon for the document... - $icon = ""; - if ($row['type']=='reference') { - $icon .= $_style["tree_linkgo"]; - } elseif ($row['isfolder'] == 0) { - $icon .= isset($icons[$row['contenttype']]) ? $icons[$row['contenttype']] : $_style["tree_page_html"]; - } else { - $icon .= $_style['tree_folder']; - } - - $tdClass = ""; - if($row['published'] == 0) { - $tdClass .= ' class="unpublishedNode"'; - } - if($row['deleted'] == 1) { - $tdClass .= ' class="deletedNode"'; - } -?> - - - - - >70 ? mb_substr($row['pagetitle'], 0, 70, $modx_manager_charset)."..." : $row['pagetitle'] ; ?> - >70 ? mb_substr($row['description'], 0, 70, $modx_manager_charset)."..." : $row['description'] ; ?> - - >20 ? substr($row['pagetitle'], 0, 20).'...' : $row['pagetitle'] ; ?> - >35 ? substr($row['description'], 0, 35).'...' : $row['description'] ; ?> - - - - + ); + + while ($row = $modx->db->getRow($rs)) { + // figure out the icon for the document... + $icon = ""; + if ($row['type']=='reference') { + $icon .= $_style["tree_linkgo"]; + } elseif ($row['isfolder'] == 0) { + $icon .= isset($icons[$row['contenttype']]) ? $icons[$row['contenttype']] : $_style["tree_page_html"]; + } else { + $icon .= $_style['tree_folder']; + } + + $tdClass = ""; + if($row['published'] == 0) { + $tdClass .= ' class="unpublishedNode"'; + } + if($row['deleted'] == 1) { + $tdClass .= ' class="deletedNode"'; + } + ?> + + + + + >70 ? mb_substr($row['pagetitle'], 0, 70, $modx_manager_charset)."..." : $row['pagetitle'] ; ?> + >70 ? mb_substr($row['description'], 0, 70, $modx_manager_charset)."..." : $row['description'] ; ?> + + >20 ? substr($row['pagetitle'], 0, 20).'...' : $row['pagetitle'] ; ?> + >35 ? substr($row['description'], 0, 35).'...' : $row['description'] ; ?> + + + + -
                      - +
                      diff --git a/manager/actions/site_schedule.static.php b/manager/actions/site_schedule.static.php index a91786c8ee..c2142293ad 100644 --- a/manager/actions/site_schedule.static.php +++ b/manager/actions/site_schedule.static.php @@ -6,7 +6,14 @@ ?> -

                      +

                      + + + + + + +

                      diff --git a/manager/actions/sysinfo.static.php b/manager/actions/sysinfo.static.php index 9e644c23a3..dd845b60cc 100644 --- a/manager/actions/sysinfo.static.php +++ b/manager/actions/sysinfo.static.php @@ -3,8 +3,42 @@ if(!$modx->hasPermission('logs')) { $modx->webAlertAndQuit($_lang["error_no_privileges"]); } + +$res = $modx->db->query("show variables like 'character_set_database'"); +$charset = $modx->db->getRow($res, 'num'); +$res = $modx->db->query("show variables like 'collation_database'"); +$collation = $modx->db->getRow($res, 'num'); + +$serverArr = array( + $_lang['modx_version'] => $modx->getVersionData('version'). ' '.$newversiontext, + $_lang['release_date'] => $modx->getVersionData('release_date'), + 'PHP Version' => phpversion(), + 'phpInfo()' => ''.$_lang['view'].'', + $_lang['access_permissions'] => ($use_udperms==1 ? $_lang['enabled'] : $_lang['disabled']), + $_lang['servertime'] => strftime('%H:%M:%S', time()), + $_lang['localtime'] => strftime('%H:%M:%S', time()+$server_offset_time), + $_lang['serveroffset'] => $server_offset_time/(60*60) . ' h', + $_lang['database_name'] => trim($dbase,'`'), + $_lang['database_server'] => $database_server, + $_lang['database_version'] => $modx->db->getVersion(), + $_lang['database_charset'] => $charset[1], + $_lang['database_collation'] => $collation[1], + $_lang['table_prefix'] => $modx->db->config['table_prefix'], + $_lang['cfg_base_path'] => MODX_BASE_PATH, + $_lang['cfg_base_url'] => MODX_BASE_URL, + $_lang['cfg_manager_url'] => MODX_MANAGER_URL, + $_lang['cfg_manager_path'] => MODX_MANAGER_PATH, + $_lang['cfg_site_url'] => MODX_SITE_URL +); ?> -

                      +

                      + + + + + + +

                      -

                      +

                      + + + + + + +

                      '.$_lang['access_permissions_off'].'

                      ' : '' ;?>
                      - +
                      @@ -45,7 +65,7 @@ '.$_lang['access_permissions_users_tab'].'

                      '; + echo '

                      '.$_lang['access_permissions_users_tab'].'

                      '; ?> @@ -69,7 +89,7 @@ LEFT JOIN ".$modx->getFullTableName('web_groups')." AS groups ON groups.webgroup = groupnames.id LEFT JOIN ".$modx->getFullTableName('web_users')." AS users ON users.id = groups.webuser", '', - 'groupnames.name' + 'groupnames.name, user_name' ); if ($modx->db->getRecordCount($rs) < 1) { echo ''.$_lang['no_groups_found'].''; @@ -85,9 +105,9 @@ ' '."\n". ' '."\n". ' '."\n". - '  '."\n". + '  '."\n". '  '."\n". - ' '."\n". + ' '."\n". ''; echo "
                        \n"; @@ -116,7 +136,7 @@ '.$_lang['access_permissions_resources_tab'].'

                        '; + echo '

                        '.$_lang['access_permissions_resources_tab'].'

                        '; ?>
                      @@ -158,9 +178,9 @@ ' '."\n". ' '."\n". ' '."\n". - '  '."\n". + '  '."\n". ' '."\n". - ' '."\n". + ' '."\n". ''; echo '
                      '.$_lang['access_permissions_resources_in_group'].' '; @@ -172,7 +192,7 @@ continue; } if ($pid == $row['id']) echo ", \n"; - echo ''.$row['doc_id'].''; + echo ''.$row['doc_id'].''; $pid = $row['id']; } echo "
                      "; @@ -186,7 +206,7 @@ '.$_lang['access_permissions_links_tab'].'

                      '; + echo '

                      '.$_lang['access_permissions_links_tab'].'

                      '; $rs = $modx->db->select( 'groupnames.*, groupacc.id AS link_id, dgnames.id AS dg_id, dgnames.name AS dg_name', @@ -194,7 +214,7 @@ LEFT JOIN ".$modx->getFullTableName('webgroup_access')." AS groupacc ON groupacc.webgroup = groupnames.id LEFT JOIN ".$modx->getFullTableName('documentgroup_names')." AS dgnames ON dgnames.id = groupacc.documentgroup", '', - 'name' + 'name, dg_name' ); if ($modx->db->getRecordCount($rs) < 1) { echo ''.$_lang['no_groups_found'].'
                      '; diff --git a/manager/actions/web_user_management.static.php b/manager/actions/web_user_management.static.php index 8bf5dac949..f1020adc03 100644 --- a/manager/actions/web_user_management.static.php +++ b/manager/actions/web_user_management.static.php @@ -84,19 +84,26 @@ function menuAction(a) { -

                      +

                      + + + + + + +

                      -

                      +

                      '; - } -$modx->setPlaceholder('OnlineInfo',$html); +} +$ph['OnlineInfo'] = $html; + +$modx->toPlaceholders($ph); // invoke event OnManagerWelcomePrerender $evtOut = $modx->invokeEvent('OnManagerWelcomePrerender'); -if(is_array($evtOut)) { - $output = implode("",$evtOut); - $modx->setPlaceholder('OnManagerWelcomePrerender', $output); +if (is_array($evtOut)) { + $output = implode("", $evtOut); + $ph['OnManagerWelcomePrerender'] = $output; } // invoke event OnManagerWelcomeHome $evtOut = $modx->invokeEvent('OnManagerWelcomeHome'); -if(is_array($evtOut)) { - $output = implode("",$evtOut); - $modx->setPlaceholder('OnManagerWelcomeHome', $output); +if (is_array($evtOut)) { + $output = implode("", $evtOut); + $ph['OnManagerWelcomeHome'] = $output; } // invoke event OnManagerWelcomeRender $evtOut = $modx->invokeEvent('OnManagerWelcomeRender'); -if(is_array($evtOut)) { - $output = implode("",$evtOut); - $modx->setPlaceholder('OnManagerWelcomeRender', $output); +if (is_array($evtOut)) { + $output = implode("", $evtOut); + $ph['OnManagerWelcomeRender'] = $output; } // load template -if(!isset($modx->config['manager_welcome_tpl']) || empty($modx->config['manager_welcome_tpl'])) { - $modx->config['manager_welcome_tpl'] = MODX_MANAGER_PATH . 'media/style/common/welcome.tpl'; +if (!isset($modx->config['manager_welcome_tpl']) || empty($modx->config['manager_welcome_tpl'])) { + $modx->config['manager_welcome_tpl'] = MODX_MANAGER_PATH . 'media/style/common/welcome.tpl'; } $target = $modx->config['manager_welcome_tpl']; $target = str_replace('[+base_path+]', MODX_BASE_PATH, $target); $target = $modx->mergeSettingsContent($target); -if(substr($target,0,1)==='@') { - if(substr($target,0,6)==='@CHUNK') { - $target = trim(substr($target,7)); - $welcome_tpl = $modx->getChunk($target); - } - elseif(substr($target,0,5)==='@FILE') { - $target = trim(substr($target,6)); - $welcome_tpl = file_get_contents($target); - } +if (substr($target, 0, 1) === '@') { + if (substr($target, 0, 6) === '@CHUNK') { + $target = trim(substr($target, 7)); + $welcome_tpl = $modx->getChunk($target); + } elseif (substr($target, 0, 5) === '@FILE') { + $target = trim(substr($target, 6)); + $welcome_tpl = file_get_contents($target); + } } else { - $chunk = $modx->getChunk($target); - if($chunk!==false && !empty($chunk)) { - $welcome_tpl = $chunk; - } - elseif(is_file(MODX_BASE_PATH . $target)) { - $target = MODX_BASE_PATH . $target; - $welcome_tpl = file_get_contents($target); - } - elseif(is_file(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/welcome.tpl')) { - $target = MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/welcome.tpl'; - $welcome_tpl = file_get_contents($target); - } - elseif(is_file(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/html/welcome.html')) { // ClipperCMS compatible - $target = MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/html/welcome.html'; - $welcome_tpl = file_get_contents($target); - } - else { - $target = MODX_MANAGER_PATH . 'media/style/common/welcome.tpl'; - $welcome_tpl = file_get_contents($target); - } + $chunk = $modx->getChunk($target); + if ($chunk !== false && !empty($chunk)) { + $welcome_tpl = $chunk; + } elseif (is_file(MODX_BASE_PATH . $target)) { + $target = MODX_BASE_PATH . $target; + $welcome_tpl = file_get_contents($target); + } elseif (is_file(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/welcome.tpl')) { + $target = MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/welcome.tpl'; + $welcome_tpl = file_get_contents($target); + } elseif (is_file(MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/html/welcome.html')) { // ClipperCMS compatible + $target = MODX_MANAGER_PATH . 'media/style/' . $modx->config['manager_theme'] . '/html/welcome.html'; + $welcome_tpl = file_get_contents($target); + } else { + $target = MODX_MANAGER_PATH . 'media/style/common/welcome.tpl'; + $welcome_tpl = file_get_contents($target); + } } // merge placeholders -$welcome_tpl = $modx->mergePlaceholderContent($welcome_tpl); -$welcome_tpl = preg_replace('~\[\+(.*?)\+\]~', '', $welcome_tpl); //cleanup -if ($js= $modx->getRegisteredClientScripts()) { - $welcome_tpl .= $js; +$welcome_tpl = $modx->mergeConditionalTagsContent($welcome_tpl); +$welcome_tpl = $modx->mergeSettingsContent($welcome_tpl); +$welcome_tpl = $modx->parseText($welcome_tpl,$ph); +if(strpos($welcome_tpl,'[+')!==false) { + $modx->toPlaceholders($ph); + $welcome_tpl = $modx->mergePlaceholderContent($welcome_tpl); +} +$welcome_tpl = $modx->parseText($welcome_tpl,$_lang, '[%','%]'); +$welcome_tpl = $modx->parseText($welcome_tpl,$_style,'[&','&]'); +$welcome_tpl = $modx->cleanUpMODXTags($welcome_tpl); //cleanup + +if ($js = $modx->getRegisteredClientScripts()) { + $welcome_tpl .= $js; } echo $welcome_tpl; + + + +function getRecentInfo() { // recent document info + global $modx, $_lang; + + $html = '
                      + + + + + + + + + + '; + + $rs = $modx->db->select('*', '[+prefix+]site_content', '', 'editedon DESC', 10); + + if ($modx->db->getRecordCount($rs) < 1) { + $html .= ''; + } + else { + while ($content = $modx->db->getRow($rs)) { + + $editedbyu = $modx->getUserInfo($content['editedby']); + $content['username'] = $editedbyu['username']; + + $html .= ''; + $html = $modx->parseText($html,$content); + } + } + + $html .= '
                      [%id%][%resource_title%][%page_data_edited%][%user%][%mgrlog_action%]
                      [%no_activity_message%]
                      [+id+]'; + + $html .= 'hasPermission('edit_document')) { + $html .= ' '; + } + + if ($content['deleted'] == 1) { + $html .= ' '; + } else { + $html .= ' '; + } + + if ($modx->hasPermission('delete_document')) { + if ($content['deleted'] == 0) { + $html .= ' '; + } else { + $html .= ' '; + } + } + + if ($content['deleted'] == 1 && $content['published'] == 0) { + $html .= ' '; + } elseif ($content['deleted'] == 1 && $content['published'] == 1) { + $html .= ' '; + } elseif ($content['deleted'] == 0 && $content['published'] == 0) { + $html .= ' '; + } else { + $html .= ' '; + } + + $html .= ''; + + $html .='
                        '; + + $html .= '
                      • [%long_title%]: '; + $html .= ($content['longtitle'] != '') ? '[+longtitle+]' : '([%not_set%])'; + $html .= '
                      • '; + + $html .= '
                      • [%description%]: '; + $html .= ($content['description'] != '') ? '[+description+] ' : '([%not_set%])'; + $html .= '
                      • '; + + $html .= '
                      • [%resource_summary%]: '; + $html .= ($content['introtext'] != '') ? '[+introtext+] ' : '([%not_set%])'; + $html .= '
                      • '; + + $html .= '
                      • [%type%]: '; + $html .= ($content['type'] != 'reference') ? '[%resource%]' : '[%weblink%]'; + $html .= '
                      • '; + + $html .= '
                      • [%resource_alias%]: '; + $html .= ($content['alias'] != '') ? '[+alias+]' : '([%not_set%])'; + $html .= '
                      • '; + + $html .= '
                      • [%page_data_cacheable%]: '; + $html .= ($content['cacheable'] == 0) ? '[%yes%]' : '[%no%]'; + $html .= '
                      • '; + + $html .= '
                      • [%resource_opt_show_menu%]: '; + $html .= ($content['hidemenu'] == 0) ? '[%yes%]' : '[%no%]'; + $html .= '
                      • '; + + $html .= '
                      • [%page_data_template%]: [+template:templatename+]
                      • '; + $html .= '
                      '; + return $html; +} diff --git a/manager/frames/1.php b/manager/frames/1.php old mode 100755 new mode 100644 index 1578f95b0d..9adb447573 --- a/manager/frames/1.php +++ b/manager/frames/1.php @@ -1,35 +1,170 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +header("X-XSS-Protection: 0"); $_SESSION['browser'] = (strpos($_SERVER['HTTP_USER_AGENT'],'MSIE 1')!==false) ? 'legacy_IE' : 'modern'; $mxla = $modx_lang_attribute ? $modx_lang_attribute : 'en'; if(!isset($modx->config['manager_menu_height'])) $modx->config['manager_menu_height'] = '70'; -if(!isset($modx->config['manager_tree_width'])) $modx->config['manager_tree_width'] = '260'; +if(!isset($modx->config['manager_tree_width'])) $modx->config['manager_tree_width'] = '320'; $modx->invokeEvent('OnManagerPreFrameLoader',array('action'=>$action)); + +if(isset($_SESSION['onLoginForwardToAction']) && is_int($_SESSION['onLoginForwardToAction'])) { + $initMainframeAction = $_SESSION['onLoginForwardToAction']; + unset($_SESSION['onLoginForwardToAction']); +} else { + $initMainframeAction = 2; // welcome.static +} ?> - + > <?php echo $site_name?> - (MODX CMS Manager) + - - - - - - - - - - - - - -This software requires a browser with support for frames. + +
                      + +
                      +
                      + +
                      + +
                      + +
                      + +
                      + +
                      + + + invokeEvent('OnManagerFrameLoader',array('action'=>$action)); + ?> + invokeEvent('OnManagerFrameLoader',array('action'=>$action)); diff --git a/manager/frames/mainmenu.php b/manager/frames/mainmenu.php new file mode 100644 index 0000000000..4f73f22027 --- /dev/null +++ b/manager/frames/mainmenu.php @@ -0,0 +1,142 @@ +Build('id','parent','name','link','alt','onclick','permission','target','divider 1/0','menuindex', 'class') +*/ + +//mainMenu +$sitemenu['site'] = array('site', 'main', $_lang['site'], '#site', $_lang['site'], 'new NavToggle(this); return false;', '', '', 0, 10, 'active'); + +if ($modx->hasPermission('edit_template') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('edit_chunk') || $modx->hasPermission('edit_plugin') || $modx->hasPermission('file_manager')) { + $sitemenu['elements'] = array('elements', 'main', $_lang['elements'], '#elements', $_lang['elements'], 'new NavToggle(this); return false;', '', '', 0, 20, ''); +} + +if ($modx->hasPermission('exec_module')) { + $sitemenu['modules'] = array('modules', 'main', $_lang['modules'], '#modules', $_lang['modules'], 'new NavToggle(this); return false;', '', '', 0, 30, ''); +} + +if ($modx->hasPermission('edit_user') || $modx->hasPermission('edit_web_user') || $modx->hasPermission('edit_role') || $modx->hasPermission('access_permissions') || $modx->hasPermission('web_access_permissions')) { + $sitemenu['users'] = array('users', 'main', $_lang['users'], '#users', $_lang['users'], 'new NavToggle(this); return false;', 'edit_user', '', 0, 40, ''); +} + +if ($modx->hasPermission('bk_manager') || $modx->hasPermission('remove_locks') || $modx->hasPermission('import_static') || $modx->hasPermission('export_static') || $modx->hasPermission('settings')) { + $sitemenu['tools'] = array('tools', 'main', $_lang['tools'], '#tools', $_lang['tools'], 'new NavToggle(this); return false;', '', '', 0, 50, ''); +} + +if ($modx->hasPermission('view_eventlog') || $modx->hasPermission('logs')) { + $sitemenu['reports'] = array('reports', 'main', $_lang['reports'], '#reports', $_lang['reports'], 'new NavToggle(this); return false;', '', '', 0, 60, ''); +} + +// Site Menu +$sitemenu['home'] = array('home', 'site', $_lang['home'], 'index.php?a=2', $_lang['home'], 'this.blur();', '', 'main', 0, 10, ''); +$sitemenu['preview'] = array('preview', 'site', $_lang['preview'], '../', $_lang['preview'], 'this.blur();', '', '_blank', 0, 20, ''); +$sitemenu['refresh_site'] = array('refresh_site', 'site', $_lang['refresh_site'], 'index.php?a=26', $_lang['refresh_site'], 'this.blur();', '', 'main', 0, 30, ''); +$sitemenu['search'] = array('search', 'site', $_lang['search'], 'index.php?a=71', $_lang['search'], 'this.blur();', '', 'main', 1, 40, ''); +if ($modx->hasPermission('edit_document')) { + $sitemenu['add_resource'] = array('add_resource', 'site', $_lang['add_resource'], 'index.php?a=4', $_lang['add_resource'], 'this.blur();', 'new_document', 'main', 0, 50, ''); + $sitemenu['add_weblink'] = array('add_weblink', 'site', $_lang['add_weblink'], 'index.php?a=72', $_lang['add_weblink'], 'this.blur();', 'new_document', 'main', 0, 60, ''); +} + +// Elements Menu +if ($modx->hasPermission('edit_template') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('edit_chunk') || $modx->hasPermission('edit_plugin')) { + $sitemenu['element_management'] = array('element_templates', 'elements', $_lang['element_management'], 'index.php?a=76', $_lang['element_management'], 'this.blur();', 'new_template,edit_template,new_snippet,edit_snippet,new_chunk,edit_chunk,new_plugin,edit_plugin', 'main', 0, 10, ''); +} + +//$sitemenu['element_templates'] = array('element_templates','elements',$_lang['manage_templates'],'index.php?a=76&tab=0',$_lang['manage_templates'],'this.blur();','new_template,edit_template','main',0,10,''); +//$sitemenu['element_tplvars'] = array('element_tplvars','elements',$_lang['tmplvars'],'index.php?a=76&tab=1',$_lang['tmplvars'],'this.blur();','new_template,edit_template','main',0,20,''); +//$sitemenu['element_htmlsnippets'] = array('element_htmlsnippets','elements',$_lang['manage_htmlsnippets'],'index.php?a=76&tab=2',$_lang['manage_htmlsnippets'],'this.blur();','new_chunk,edit_chunk','main',0,30,''); +//$sitemenu['element_snippets'] = array('element_snippets','elements',$_lang['manage_snippets'],'index.php?a=76&tab=3',$_lang['manage_snippets'],'this.blur();','new_snippet,edit_snippet','main',0,40,''); +//$sitemenu['element_plugins'] = array('element_plugins','elements',$_lang['manage_plugins'],'index.php?a=76&tab=4',$_lang['manage_plugins'],'this.blur();','new_plugin,edit_plugin','main',0,50,''); +//$sitemenu['element_categories'] = array('element_categories','elements',$_lang['element_categories'],'index.php?a=76&tab=5',$_lang['element_categories'],'this.blur();','new_template,edit_template,new_snippet,edit_snippet,new_chunk,edit_chunk,new_plugin,edit_plugin','main',1,60,''); + +if ($modx->hasPermission('file_manager')) { + $sitemenu['manage_files'] = array('manage_files', 'elements', $_lang['manage_files'], 'index.php?a=31', $_lang['manage_files'], 'this.blur();', 'file_manager', 'main', 0, 70, ''); +} +// Modules Menu Items +if ($modx->hasPermission('new_module')) { + $sitemenu['new_module'] = array('new_module', 'modules', $_lang['module_management'], 'index.php?a=106', $_lang['module_management'], 'this.blur();', 'new_module,edit_module', 'main', 1, 0, ''); +} + +if ($modx->hasPermission('exec_module')) { + if ($_SESSION['mgrRole'] != 1) { + $rs = $modx->db->query('SELECT DISTINCT sm.id, sm.name, mg.member + FROM ' . $modx->getFullTableName('site_modules') . ' AS sm + LEFT JOIN ' . $modx->getFullTableName('site_module_access') . ' AS sma ON sma.module = sm.id + LEFT JOIN ' . $modx->getFullTableName('member_groups') . ' AS mg ON sma.usergroup = mg.user_group + WHERE (mg.member IS NULL OR mg.member = ' . $modx->getLoginUserID() . ') AND sm.disabled != 1 AND sm.locked != 1 + ORDER BY sm.name'); + } else { + $rs = $modx->db->select('*', $modx->getFullTableName('site_modules'), 'disabled != 1', 'name'); + } + $i = 10; + while ($content = $modx->db->getRow($rs)) { + $sitemenu['module' . $content['id']] = array('module' . $content['id'], 'modules', $content['name'], 'index.php?a=112&id=' . $content['id'], $content['name'], 'this.blur();', '', 'main', 0, $i + 10, ''); + $i = $i + 10; + } +} + +// security menu items (users) + +if ($modx->hasPermission('edit_user')) { + $sitemenu['user_management_title'] = array('user_management_title', 'users', $_lang['user_management_title'], 'index.php?a=75', $_lang['user_management_title'], 'this.blur();', 'edit_user', 'main', 0, 10, ''); +} + +if ($modx->hasPermission('edit_web_user')) { + $sitemenu['web_user_management_title'] = array('web_user_management_title', 'users', $_lang['web_user_management_title'], 'index.php?a=99', $_lang['web_user_management_title'], 'this.blur();', 'edit_web_user', 'main', 0, 20, ''); +} + +if ($modx->hasPermission('edit_role')) { + $sitemenu['role_management_title'] = array('role_management_title', 'users', $_lang['role_management_title'], 'index.php?a=86', $_lang['role_management_title'], 'this.blur();', 'new_role,edit_role,delete_role', 'main', 0, 30, ''); +} + +if ($modx->hasPermission('access_permissions')) { + $sitemenu['manager_permissions'] = array('manager_permissions', 'users', $_lang['manager_permissions'], 'index.php?a=40', $_lang['manager_permissions'], 'this.blur();', 'access_permissions', 'main', 0, 40, ''); +} + +if ($modx->hasPermission('web_access_permissions')) { + $sitemenu['web_permissions'] = array('web_permissions', 'users', $_lang['web_permissions'], 'index.php?a=91', $_lang['web_permissions'], 'this.blur();', 'web_access_permissions', 'main', 0, 50, ''); +} + + +// Tools Menu + +if ($modx->hasPermission('bk_manager')) { + $sitemenu['bk_manager'] = array('bk_manager', 'tools', $_lang['bk_manager'], 'index.php?a=93', $_lang['bk_manager'], 'this.blur();', 'bk_manager', 'main', 0, 10, ''); +} + +if ($modx->hasPermission('remove_locks')) { + $sitemenu['remove_locks'] = array('remove_locks', 'tools', $_lang['remove_locks'], 'javascript:removeLocks();', $_lang['remove_locks'], 'this.blur();', 'remove_locks', '', 0, 20, ''); +} + +if ($modx->hasPermission('import_static')) { + $sitemenu['import_site'] = array('import_site', 'tools', $_lang['import_site'], 'index.php?a=95', $_lang['import_site'], 'this.blur();', 'import_static', 'main', 0, 30, ''); +} + +if ($modx->hasPermission('export_static')) { + $sitemenu['export_site'] = array('export_site', 'tools', $_lang['export_site'], 'index.php?a=83', $_lang['export_site'], 'this.blur();', 'export_static', 'main', 1, 40, ''); +} + +if ($modx->hasPermission('settings')) { + $sitemenu['edit_settings'] = array('edit_settings', 'tools', $_lang['edit_settings'], 'index.php?a=17', $_lang['edit_settings'], 'this.blur();', 'settings', 'main', 0, 50, ''); +} + +// Reports Menu + +if ($modx->hasPermission('view_eventlog')) { + $sitemenu['site_schedule'] = array('site_schedule', 'reports', $_lang['site_schedule'], 'index.php?a=70', $_lang['site_schedule'], 'this.blur();', '', 'main', 0, 10, ''); +} + +if ($modx->hasPermission('view_eventlog')) { + $sitemenu['eventlog_viewer'] = array('eventlog_viewer', 'reports', $_lang['eventlog_viewer'], 'index.php?a=114', $_lang['eventlog_viewer'], 'this.blur();', 'view_eventlog', 'main', 0, 20, ''); +} + +if ($modx->hasPermission('logs')) { + $sitemenu['view_logging'] = array('view_logging', 'reports', $_lang['view_logging'], 'index.php?a=13', $_lang['view_logging'], 'this.blur();', 'logs', 'main', 0, 30, ''); + $sitemenu['view_sysinfo'] = array('view_sysinfo', 'reports', $_lang['view_sysinfo'], 'index.php?a=53', $_lang['view_sysinfo'], 'this.blur();', 'logs', 'main', 0, 40, ''); +} + +$menu = $modx->invokeEvent("OnManagerMenuPrerender", array('menu' => $sitemenu)); +$menu = unserialize($menu[0]); +if (is_array($menu)) $sitemenu = $menu; +include_once(MODX_MANAGER_PATH . 'includes/menu.class.inc.php'); +$menu = new EVOmenu(); +$menu->Build($sitemenu); diff --git a/manager/frames/menu.php b/manager/frames/menu.php index 087ed322fe..2428ee7659 100644 --- a/manager/frames/menu.php +++ b/manager/frames/menu.php @@ -57,32 +57,57 @@ function showResponse(request) { } }); + + function setTreeFrameWidth(pos) { + parent.document.getElementById('tree').style.width = pos + 'px'; + parent.document.getElementById('resizer').style.left = pos + 'px'; + parent.document.getElementById('main').style.left = pos + 'px'; + + } + + function toggleTreeFrame() { + var pos = parseInt(parent.document.getElementById('tree').style.width) != 0?0:320; + setTreeFrameWidth(pos); + } + + function hideTreeFrame() { - userDefinedFrameWidth = parent.document.getElementsByTagName("FRAMESET").item(1).cols; - currentFrameState = 'closed'; - try { - var elm = $('tocText'); - if(elm) elm.innerHTML = "' alt='' width='16' height='16' />"; - parent.document.getElementsByTagName("FRAMESET").item(1).cols = ''; - top.__hideTree = true; - } catch(oException) { - x=window.setTimeout('hideTreeFrame()', 1000); - } + var pos = 0; + setTreeFrameWidth(pos); } function defaultTreeFrame() { - userDefinedFrameWidth = defaultFrameWidth; - currentFrameState = 'open'; - try { - var elm = $('tocText'); - if(elm) elm.innerHTML = ""; - parent.document.getElementsByTagName("FRAMESET").item(1).cols = defaultFrameWidth; - top.__hideTree = false; - } catch(oException) { - z=window.setTimeout('defaultTreeFrame()', 1000); - } + var pos = 300; + setTreeFrameWidth(pos); + } + + + //toggle TopMenu Frame + function setMenuFrameHeight(pos) { + parent.document.getElementById('tree').style.top = pos + 'px'; + parent.document.getElementById('resizer').style.top = pos + 'px'; + parent.document.getElementById('resizer2').style.top = pos + 'px'; + parent.document.getElementById('main').style.top = pos + 'px'; + parent.document.getElementById('mainMenu').style.height = pos + 'px'; + } + + function toggleMenuFrame() { + var pos = parseInt(parent.document.getElementById('mainMenu').style.height) != 5?5:70; + setMenuFrameHeight(pos); + } + + function hideMenuFrame() { + var pos = 5; + setMenuFrameHeight(pos); } + function defaultMenuFrame() { + var pos = 65; + setMenuFrameHeight(pos); + } + + + // TREE FUNCTIONS - Expand/ Collapse // These functions affect the expanded/collapsed state of the tree and any items that may be pointing to it function expandTree() { @@ -188,203 +213,58 @@ function NavToggle(element) { // remove focus from top nav if(element) element.blur(); } + + function setLastClickedElement(type, id) { + localStorage.setItem('MODX_lastClickedElement', '['+type+','+id+']' ); + } - - -
                      >
                      +invokeEvent('OnManagerTopPrerender',$_REQUEST); + if (is_array($evtOut)) + echo implode("\n", $evtOut); +?> +
                      >
                      -
                      -
                      - - -
                      - -
                      - getLoginUserName(). ($modx->hasPermission('change_password') ? ': '.$_lang['change_password'].''."\n" : "\n") ?> -hasPermission('messages')) { ?> - | - ( ? / ? ) -hasPermission('help')) { ?> - | - - | - | getVersionData('version') ?>  -
                      -
                      -
                      +
                      + +
                      + + +
                      + +
                      + ' . $modx->getLoginUserName() . '' . ($modx->hasPermission('change_password') ? ' '.$_lang['change_password'].''."\n" : "\n") + ?> + + config['settings_version']!=$modx->getVersionData('version') ? 'style="color:#ffff8a;"' : ''; ?> + hasPermission('help')) { + echo sprintf('%s ',$site_name,$modx->getVersionData('full_appname'),$style,$modx->config['settings_version']); + } else + { + echo sprintf('%s ',$site_name,$modx->getVersionData('full_appname'),$style,$modx->config['settings_version']); + } + ?> +
                      +
                      +
                      +
                      +
                      + + +
                      +
                      diff --git a/manager/frames/nodes.functions.inc.php b/manager/frames/nodes.functions.inc.php new file mode 100644 index 0000000000..80b54466a6 --- /dev/null +++ b/manager/frames/nodes.functions.inc.php @@ -0,0 +1,396 @@ +INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + +function makeHTML($indent,$parent,$expandAll,$theme) { + global $modx; + global $icons, $iconsPrivate, $_style; + global $output, $_lang, $opened, $opened2, $closed2; //added global vars + global $modx_textdir; + + $pad = '     '; + + // setup spacer + $spacer = ''; + for ($i = 1; $i <= $indent; $i++){ + $spacer .= '     '; + } + + // manage order-by + if (!isset($_SESSION['tree_sortby']) && !isset($_SESSION['tree_sortdir'])) { + // This is the first startup, set default sort order + $_SESSION['tree_sortby'] = 'menuindex'; + $_SESSION['tree_sortdir'] = 'ASC'; + } + + switch($_SESSION['tree_sortby']) { + case 'createdon': + case 'editedon': + case 'publishedon': + case 'pub_date': + case 'unpub_date': + $sortby = sprintf('CASE WHEN %s IS NULL THEN 1 ELSE 0 END, %s', $_SESSION['tree_sortby'], $_SESSION['tree_sortby']); + break; + default: + $sortby = $_SESSION['tree_sortby']; + }; + + $orderby = $modx->db->escape($sortby.' '.$_SESSION['tree_sortdir']); + + // Folder sorting gets special setup ;) Add menuindex and pagetitle + if($_SESSION['tree_sortby'] == 'isfolder') $orderby .= ', menuindex ASC, pagetitle'; + + $tblsc = $modx->getFullTableName('site_content'); + $tbldg = $modx->getFullTableName('document_groups'); + $tblst = $modx->getFullTableName('site_templates'); + // get document groups for current user + $docgrp = (isset($_SESSION['mgrDocgroups']) && is_array($_SESSION['mgrDocgroups'])) ? implode(',',$_SESSION['mgrDocgroups']) : ''; + $showProtected= false; + if (isset ($modx->config['tree_show_protected'])) { + $showProtected= (boolean) $modx->config['tree_show_protected']; + } + $mgrRole= (isset ($_SESSION['mgrRole']) && (string) $_SESSION['mgrRole']==='1') ? '1' : '0'; + if ($showProtected == false) { + $access = "AND (1={$mgrRole} OR sc.privatemgr=0". + (!$docgrp ? ')':" OR dg.document_group IN ({$docgrp}))"); + } else { + $access = ''; + } + $docgrp_cond = $docgrp ? "OR dg.document_group IN ({$docgrp})" : ''; + $field = "DISTINCT sc.id, pagetitle, longtitle, menutitle, parent, isfolder, published, pub_date, unpub_date, richtext, searchable, cacheable, deleted, type, template, templatename, menuindex, donthit, hidemenu, alias, contentType, privateweb, privatemgr, + MAX(IF(1={$mgrRole} OR sc.privatemgr=0 {$docgrp_cond}, 1, 0)) AS hasAccess"; + $from = "{$tblsc} AS sc LEFT JOIN {$tbldg} dg on dg.document = sc.id LEFT JOIN {$tblst} st on st.id = sc.template"; + $where = "(parent={$parent}) {$access} GROUP BY sc.id"; + $result = $modx->db->select($field,$from,$where,$orderby); + if($modx->db->getRecordCount($result)==0) { + $output .= sprintf('
                      %s%s %s
                      ',$spacer,$pad,$_style['tree_deletedpage'],$_lang['empty_folder']); + } + + $nodeNameSource = $_SESSION['tree_nodename'] == 'default' ? $modx->config['resource_tree_node_name'] : $_SESSION['tree_nodename']; + while($row = $modx->db->getRow($result)) + { + extract($row); + + $nodetitle = getNodeTitle($nodeNameSource,$row); + $nodetitle_esc = addslashes($nodetitle); + $protectedClass = $hasAccess==0 ? ' protectedNode' : ''; + + if($deleted==1) $nodetitleDisplay = sprintf('%s' ,$nodetitle); + elseif($published==0) $nodetitleDisplay = sprintf('%s',$nodetitle); + elseif($hidemenu==1) $nodetitleDisplay = sprintf('%s',$protectedClass,$nodetitle); + else $nodetitleDisplay = sprintf('%s',$protectedClass,$nodetitle); + + $weblinkDisplay = $type=='reference' ? sprintf(' ',$_style['tree_linkgo']) : '' ; + $pageIdDisplay = '('.($modx_textdir ? '‏':'').$id.')'; + + // Prepare displaying user-locks + $lockedByUser = ''; + $rowLock = $modx->elementIsLocked(7, $id, true); + if($rowLock && $modx->hasPermission('display_locks')) { + if($rowLock['sid'] == $modx->sid) { + $title = $modx->parseText($_lang["lock_element_editing"], array('element_type'=>$_lang["lock_element_type_7"], 'lasthit_df'=>$rowLock['lasthit_df'])); + $lockedByUser = ' '; + } else { + $title = $modx->parseText($_lang["lock_element_locked_by"], array('element_type'=>$_lang["lock_element_type_7"], 'username'=>$rowLock['username'], 'lasthit_df'=>$rowLock['lasthit_df'])); + if($modx->hasPermission('remove_locks')) { + $lockedByUser = ''; + } else { + $lockedByUser = ''; + } + } + } + + $url = $modx->makeUrl($id); + + $alt = ''; + if(isDateNode($nodeNameSource)) $alt = $_lang['pagetitle'] .': '.$pagetitle.'[+lf+]'; + $alt.= $_lang['resource_opt_menu_title'] .': '.$menutitle; + $alt.= '[+lf+]'.$_lang['resource_opt_menu_index'] .': '.$menuindex; + $alt.= '[+lf+]'.$_lang['alias'] .': '.(!empty($alias) ? $alias : '-'); + $alt.= '[+lf+]'.$_lang['template'] .': '.$templatename; + $alt.= '[+lf+]'.$_lang['publish_date'] .': '.$modx->toDateFormat($pub_date); + $alt.= '[+lf+]'.$_lang['unpublish_date'] .': '.$modx->toDateFormat($unpub_date); + $alt.= '[+lf+]'.$_lang['page_data_web_access'] .': '.($privateweb ? $_lang['private']:$_lang['public']); + $alt.= '[+lf+]'.$_lang['page_data_mgr_access'] .': '.($privatemgr ? $_lang['private']:$_lang['public']); + $alt.= '[+lf+]'.$_lang['resource_opt_richtext'] .': '.($richtext==0 ? $_lang['no'] : $_lang['yes']); + $alt.= '[+lf+]'.$_lang['page_data_searchable'] .': '.($searchable==0 ? $_lang['no'] : $_lang['yes']); + $alt.= '[+lf+]'.$_lang['page_data_cacheable'] .': '.($cacheable==0 ? $_lang['no'] : $_lang['yes']); + $alt = $modx->htmlspecialchars($alt); + $alt = str_replace('[+lf+]', ' ', $alt); // replace line-breaks with empty space as fall-back + + $data = array('id' => $id, 'pagetitle' => $pagetitle, 'longtitle' => $longtitle, 'menutitle' => $menutitle,'parent' =>$parent, + 'isfolder' =>$isfolder,'published' =>$published,'deleted' =>$deleted,'type' =>$type,'menuindex' =>$menuindex, + 'donthit' =>$donthit,'hidemenu' =>$hidemenu,'alias' =>$alias,'contenttype' =>$contentType,'privateweb' =>$privateweb, + 'privatemgr' =>$privatemgr,'hasAccess' => $hasAccess, 'template' => $template, + 'nodetitle' => $nodetitle, 'spacer' => $spacer, 'pad' => $pad, 'url' => $url, 'alt' => $alt, + 'nodetitleDisplay' => $nodetitleDisplay,'weblinkDisplay' => $weblinkDisplay,'pageIdDisplay' => $pageIdDisplay, + 'lockedByUser'=>$lockedByUser + ); + // invoke OnManagerNodePrerender event + + $evtOut = $modx->invokeEvent('OnManagerNodePrerender',$data); + if (is_array($evtOut)) $evtOut = implode("\n", $evtOut); + + $node = ''; + $ph = $data; + $ph['nodetitle_esc'] = $nodetitle_esc; + $ph['indent'] = $indent+1; + $ph['expandAll'] = $expandAll; + + if (!$isfolder) + { + switch($id) { + case $modx->config['site_start'] : $icon = $_style['tree_page_home']; break; + case $modx->config['error_page'] : $icon = $_style['tree_page_404']; break; + case $modx->config['site_unavailable_page'] : $icon = $_style['tree_page_hourglass']; break; + case $modx->config['unauthorized_page'] : $icon = $_style['tree_page_info']; break; + default: + if ($privateweb||$privatemgr) { + if (isset($iconsPrivate[$contentType])) $icon = $iconsPrivate[$contentType]; + else $icon = $_style['tree_page_secure']; + } elseif (isset($icons[$contentType])) $icon = $icons[$contentType]; + else $icon = $_style['tree_page']; + } + $ph['icon'] = $icon; + $tpl = getTplSingleNode(); + $node = $modx->parseText($tpl,$ph); + $node = $modx->parseText($node,$_lang,'[%','%]'); + } + else + { + $isPrivate = ($privateweb==1||$privatemgr==1) ? '1' : '0'; + $ph['isPrivate'] = $isPrivate; + // expandAll: two type for partial expansion + if ($expandAll ==1 || ($expandAll == 2 && in_array($id, $opened))) + { + if ($expandAll == 1) $opened2[] = $id; + $tpl = getTplOpenFolderNode(); + $ph['src'] = $isPrivate ? $_style['tree_folderopen_secure'] : $_style['tree_folderopen']; + $node = $modx->parseText($tpl,$ph); + $node = $modx->parseText($node,$_lang, '[%','%]'); + $node = $modx->parseText($node,$_style,'[&','&]'); + $output .= $node; + makeHTML($indent+1,$id,$expandAll,$theme); + $node = '
                      '; + } + else + { + $tpl = getTplClosedFolderNode(); + $ph['src'] = $isPrivate ? $_style['tree_folder_secure'] : $_style['tree_folder']; + $node = $modx->parseText($tpl,$ph); + $node = $modx->parseText($node,$_lang, '[%','%]'); + $node = $modx->parseText($node,$_style,'[&','&]'); + $closed2[] = $id; + } + } + $node = $evtOut.$node; + + // invoke OnManagerNodeRender event + $data['node'] = $node; + $evtOut = $modx->invokeEvent('OnManagerNodeRender',$data); + if (is_array($evtOut)) $evtOut = implode("\n", $evtOut); + if ($evtOut != '') $node = $evtOut; + + $output .= $node; + // store vars in Javascript + $scr = ''; + if ($expandAll == 1) { + $scr .= ' '; + } elseif ($expandAll == 0) { + $scr .= ' '; + } + $output = $scr . $output; + } +} + +function getIconInfo($_style) { + if(!isset($_style['tree_page_gif'])) $_style['tree_page_gif'] = $_style['tree_page']; + if(!isset($_style['tree_page_jpg'])) $_style['tree_page_jpg'] = $_style['tree_page']; + if(!isset($_style['tree_page_png'])) $_style['tree_page_png'] = $_style['tree_page']; + $icons = array( + 'text/html' => $_style['tree_page_html'], + 'text/plain' => $_style['tree_page'], + 'text/xml' => $_style['tree_page_xml'], + 'text/css' => $_style['tree_page_css'], + 'text/javascript' => $_style['tree_page_js'], + 'application/rss+xml' => $_style['tree_page_rss'], + 'application/pdf' => $_style['tree_page_pdf'], + 'application/vnd.ms-word' => $_style['tree_page_word'], + 'application/vnd.ms-excel' => $_style['tree_page_excel'], + 'image/gif' => $_style['tree_page_gif'], + 'image/jpg' => $_style['tree_page_jpg'], + 'image/png' => $_style['tree_page_png'] + ); + return $icons; +} + +function getPrivateIconInfo($_style) { + if(!isset($_style['tree_page_gif_secure'])) $_style['tree_page_gif_secure'] = $_style['tree_page_secure']; + if(!isset($_style['tree_page_jpg_secure'])) $_style['tree_page_jpg_secure'] = $_style['tree_page_secure']; + if(!isset($_style['tree_page_png_secure'])) $_style['tree_page_png_secure'] = $_style['tree_page_secure']; + $iconsPrivate = array( + 'text/html' => $_style['tree_page_html_secure'], + 'text/plain' => $_style['tree_page_secure'], + 'text/xml' => $_style['tree_page_xml_secure'], + 'text/css' => $_style['tree_page_css_secure'], + 'text/javascript' => $_style['tree_page_js_secure'], + 'application/rss+xml' => $_style['tree_page_rss_secure'], + 'application/pdf' => $_style['tree_page_pdf_secure'], + 'application/vnd.ms-word' => $_style['tree_page_word_secure'], + 'application/vnd.ms-excel' => $_style['tree_page_excel_secure'], + 'image/gif' => $_style['tree_page_gif_secure'], + 'image/jpg' => $_style['tree_page_jpg_secure'], + 'image/png' => $_style['tree_page_png_secure'] + ); + return $iconsPrivate; +} + +function getNodeTitle($nodeNameSource,$row) { + global $modx; + + extract($row); + switch($nodeNameSource) + { + case 'menutitle': + $nodetitle = $menutitle ? $menutitle : $pagetitle; + break; + case 'alias': + $nodetitle = $alias ? $alias : $id; + if(strpos($alias, '.') === false) + { + if($isfolder!=1 || $modx->config['make_folders']!=1) + $nodetitle .= $modx->config['friendly_url_suffix']; + } + $nodetitle = $modx->config['friendly_url_prefix'] . $nodetitle; + break; + case 'pagetitle': + $nodetitle = $pagetitle; + break; + case 'longtitle': + $nodetitle = $longtitle ? $longtitle : $pagetitle; + break; + case 'createdon': + case 'editedon': + case 'publishedon': + case 'pub_date': + case 'unpub_date': + $doc = $modx->getDocumentObject('id',$id); + $date = $doc[$nodeNameSource]; + if(!empty($date)) $nodetitle = $modx->toDateFormat($date); + else $nodetitle = '- - -'; + break; + default: + $nodetitle = $pagetitle; + } + $nodetitle = $modx->htmlspecialchars(str_replace(array("\r\n", "\n", "\r"), ' ', $nodetitle), ENT_COMPAT); + return $nodetitle; +} + +function isDateNode($nodeNameSource) { + switch($nodeNameSource) { + case 'createdon': + case 'editedon': + case 'publishedon': + case 'pub_date': + case 'unpub_date': + return true; + default: + return false; + } +} + +function getTplSingleNode() { + return '
                      [+spacer+][+pad+] [+lockedByUser+][+nodetitleDisplay+][+weblinkDisplay+][+pageIdDisplay+]
                      '; +} + +function getTplOpenFolderNode() { + return '
                      [+spacer+] [+lockedByUser+][+nodetitleDisplay+][+weblinkDisplay+][+pageIdDisplay+]
                      '; +} + +function getTplClosedFolderNode() { + return '
                      [+spacer+] [+lockedByUser+][+nodetitleDisplay+][+weblinkDisplay+] [+pageIdDisplay+]
                      '; +} \ No newline at end of file diff --git a/manager/frames/nodes.php b/manager/frames/nodes.php index 71c778deda..9978fb82fe 100644 --- a/manager/frames/nodes.php +++ b/manager/frames/nodes.php @@ -4,65 +4,36 @@ * Build and return document tree view nodes * */ -if(IN_MANAGER_MODE!="true") die("INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +if(IN_MANAGER_MODE!='true') die('INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly.'); + +include_once('nodes.functions.inc.php'); // save folderstate - if (isset($_GET['opened'])) $_SESSION['openedArray'] = $_GET['opened']; - if (isset($_GET['savestateonly'])) { - echo 'send some data'; //?? - exit; - } + if (isset($_GET['opened'])) $_SESSION['openedArray'] = $_GET['opened']; + if (isset($_GET['savestateonly'])) exit('send some data'); //?? $indent = intval($_GET['indent']); $parent = intval($_GET['parent']); $expandAll = intval($_GET['expandAll']); - $output = ""; - $theme = $manager_theme ? "$manager_theme/":""; + $output = ''; + $theme = "{$manager_theme}/"; // setup sorting - if(isset($_REQUEST['tree_sortby'])) { - $_SESSION['tree_sortby'] = $_REQUEST['tree_sortby']; - } - if(isset($_REQUEST['tree_sortdir'])) { - $_SESSION['tree_sortdir'] = $_REQUEST['tree_sortdir']; + $sortParams = array('tree_sortby','tree_sortdir','tree_nodename'); + foreach($sortParams as $param) { + if(isset($_REQUEST[$param])) { + $_SESSION[$param] = $_REQUEST[$param]; + $modx->manager->saveLastUserSetting($param, $_REQUEST[$param]); + } } // icons by content type + $icons = getIconInfo($_style); + $iconsPrivate = getPrivateIconInfo($_style); - $icons = array( - 'application/rss+xml' => $_style["tree_page_rss"], - 'application/pdf' => $_style["tree_page_pdf"], - 'application/vnd.ms-word' => $_style["tree_page_word"], - 'application/vnd.ms-excel' => $_style["tree_page_excel"], - 'text/css' => $_style["tree_page_css"], - 'text/html' => $_style["tree_page_html"], - 'text/plain' => $_style["tree_page"], - 'text/xml' => $_style["tree_page_xml"], - 'text/javascript' => $_style["tree_page_js"], - 'image/gif' => isset($_style["tree_page_gif"]) ? $_style["tree_page_gif"] : $_style["tree_page"], - 'image/jpg' => isset($_style["tree_page_jpg"]) ? $_style["tree_page_jpg"] : $_style["tree_page"], - 'image/png' => isset($_style["tree_page_png"]) ? $_style["tree_page_png"] : $_style["tree_page"] - ); - $iconsPrivate = array( - 'application/rss+xml' => $_style["tree_page_rss_secure"], - 'application/pdf' => $_style["tree_page_pdf_secure"], - 'application/vnd.ms-word' => $_style["tree_page_word_secure"], - 'application/vnd.ms-excel' => $_style["tree_page_excel_secure"], - 'text/css' => $_style["tree_page_css_secure"], - 'text/html' => $_style["tree_page_html_secure"], - 'text/plain' => $_style["tree_page_secure"], - 'text/xml' => $_style["tree_page_xml_secure"], - 'text/javascript' => $_style["tree_page_js_secure"], - 'image/gif' => isset($_style["tree_page_gif_secure"]) ? $_style["tree_page_gif_secure"] : $_style["tree_page_secure"], - 'image/jpg' => isset($_style["tree_page_jpg_secure"]) ? $_style["tree_page_jpg_secure"] : $_style["tree_page_secure"], - 'image/png' => isset($_style["tree_page_png_secure"]) ? $_style["tree_page_png_secure"] : $_style["tree_page_secure"] - ); - - if (isset($_SESSION['openedArray'])) { - $opened = array_filter(array_map('intval', explode('|', $_SESSION['openedArray']))); - } else { - $opened = array(); - } + if (isset($_SESSION['openedArray'])) $opened = array_filter(array_map('intval', explode('|', $_SESSION['openedArray']))); + else $opened = array(); + $opened2 = array(); $closed2 = array(); @@ -75,183 +46,3 @@ $count = $modx->db->getValue($rs); if ($count>0) echo ''; // add a special element to let system now that the bin is full } - - function makeHTML($indent,$parent,$expandAll,$theme) { - global $modx; - global $icons, $iconsPrivate, $_style; - global $output, $_lang, $opened, $opened2, $closed2; //added global vars - - $pad = "     "; - - // setup spacer - $spacer = ""; - for ($i = 1; $i <= $indent; $i++){ - $spacer .= "     "; - } - - if (!isset($_SESSION['tree_sortby']) && !isset($_SESSION['tree_sortdir'])) { - // This is the first startup, set default sort order - $_SESSION['tree_sortby'] = 'menuindex'; - $_SESSION['tree_sortdir'] = 'ASC'; - } - $orderby = $modx->db->escape($_SESSION['tree_sortby']." ".$_SESSION['tree_sortdir']); - - // Folder sorting gets special setup ;) Add menuindex and pagetitle - if($_SESSION['tree_sortby'] == 'isfolder') $orderby .= ", menuindex ASC, pagetitle"; - - $tblsc = $modx->getFullTableName('site_content'); - $tbldg = $modx->getFullTableName('document_groups'); - // get document groups for current user - $docgrp = (isset($_SESSION['mgrDocgroups']) && is_array($_SESSION['mgrDocgroups'])) ? implode(",",$_SESSION['mgrDocgroups']) : ''; - $showProtected= false; - if (isset ($modx->config['tree_show_protected'])) { - $showProtected= (boolean) $modx->config['tree_show_protected']; - } - $mgrRole= (isset ($_SESSION['mgrRole']) && (string) $_SESSION['mgrRole']==='1') ? '1' : '0'; - if ($showProtected == false) { - $access = "AND (1={$mgrRole} OR sc.privatemgr=0". - (!$docgrp ? ")":" OR dg.document_group IN ({$docgrp}))"); - } else { - $access = ''; - } - $result = $modx->db->select( - "DISTINCT sc.id, pagetitle, menutitle, parent, isfolder, published, deleted, type, template, menuindex, donthit, hidemenu, alias, contentType, privateweb, privatemgr, - MAX(IF(1={$mgrRole} OR sc.privatemgr=0" . (!$docgrp ? "":" OR dg.document_group IN ({$docgrp})") . ", 1, 0)) AS has_access", - "{$tblsc} AS sc LEFT JOIN {$tbldg} dg on dg.document = sc.id", - "(parent={$parent}) {$access} GROUP BY sc.id", - $orderby - ); - if($modx->db->getRecordCount($result)==0) { - $output .= '
                      '.$spacer.$pad.' '.$_lang['empty_folder'].'
                      '; - } - - // Make sure to pass in the $modx_textdir variable to the node builder - global $modx_textdir; - - $node_name_source = $modx->config['resource_tree_node_name']; - while(list($id,$pagetitle,$menutitle,$parent,$isfolder,$published,$deleted,$type,$template,$menuindex,$donthit,$hidemenu,$alias,$contenttype,$privateweb,$privatemgr,$hasAccess) = $modx->db->getRow($result,'num')) - { - switch($node_name_source) - { - case 'menutitle': - $nodetitle = $menutitle ? $menutitle : $pagetitle; - break; - case 'alias': - $nodetitle = $alias ? $alias : $id; - if(strpos($alias, '.') === false) - { - if($isfolder!=1 || $modx->config['make_folders']!=='1') - $nodetitle .= $modx->config['friendly_url_suffix']; - } - $nodetitle = $modx->config['friendly_url_prefix'] . $nodetitle; - break; - case 'pagetitle': - $nodetitle = $pagetitle; - break; - case 'createdon': - case 'editedon': - case 'publishedon': - case 'pub_date': - case 'unpub_date': - $doc = $modx->getDocumentObject('id',$id); - $date = $doc[$node_name_source]; - if(!empty($date)) $nodetitle = $modx->toDateFormat($date); - else $nodetitle = '- - -'; - break; - default: - $nodetitle = $pagetitle; - } - $nodetitle = htmlspecialchars(str_replace(array("\r\n", "\n", "\r"), ' ', $nodetitle)); - $protectedClass = $hasAccess==0 ? ' protectedNode' : ''; - $nodetitleDisplay = $published==0 ? "$nodetitle" : ($hidemenu==1 ? "$nodetitle":"$nodetitle"); - $nodetitleDisplay = $deleted==1 ? "$nodetitle" : $nodetitleDisplay; - $weblinkDisplay = $type=="reference" ? ' ' : '' ; - $pageIdDisplay = '('.($modx_textdir ? '‏':'').$id.')'; - $url = $modx->makeUrl($id); - - $alt = !empty($alias) ? $_lang['alias'].": ".$alias : $_lang['alias'].": -"; - $alt.= " ".$_lang['resource_opt_menu_index'].": ".$menuindex; - $alt.= " ".$_lang['resource_opt_show_menu'].": ".($hidemenu==1 ? $_lang['no']:$_lang['yes']); - $alt.= " ".$_lang['page_data_web_access'].": ".($privateweb ? $_lang['private']:$_lang['public']); - $alt.= " ".$_lang['page_data_mgr_access'].": ".($privatemgr ? $_lang['private']:$_lang['public']); - - $data = array('id' => $id, 'pagetitle' => $pagetitle, 'menutitle' => $menutitle,'parent' =>$parent, - 'isfolder' =>$isfolder,'published' =>$published,'deleted' =>$deleted,'type' =>$type,'menuindex' =>$menuindex, - 'donthit' =>$donthit,'hidemenu' =>$hidemenu,'alias' =>$alias,'contenttype' =>$contenttype,'privateweb' =>$privateweb, - 'privatemgr' =>$privatemgr,'hasAccess' => $hasAccess, 'template' => $template, - 'nodetitle' => $nodetitle, 'spacer' => $spacer, 'pad' => $pad, 'url' => $url, 'alt' => $alt, - 'nodetitleDisplay' => $nodetitleDisplay,'weblinkDisplay' => $weblinkDisplay,'pageIdDisplay' => $pageIdDisplay - ); - // invoke OnManagerNodePrerender event - - $evtOut = $modx->invokeEvent('OnManagerNodePrerender',$data); - if (is_array($evtOut)) $evtOut = implode("\n", $evtOut); - - $node = $evtOut; - - if ($replace =='') { - if (!$isfolder) { - $icon = ($privateweb||$privatemgr) ? $_style["tree_page_secure"] : $_style["tree_page"]; - - if ($privateweb||$privatemgr) { - if (isset($iconsPrivate[$contenttype])) { - $icon = $iconsPrivate[$contenttype]; - } - } else { - if (isset($icons[$contenttype])) { - $icon = $icons[$contenttype]; - } - } - if($id == $modx->config['site_start']) $icon = $_style["tree_page_home"]; - elseif($id == $modx->config['error_page']) $icon = $_style["tree_page_404"]; - elseif($id == $modx->config['site_unavailable_page']) $icon = $_style["tree_page_hourglass"]; - elseif($id == $modx->config['unauthorized_page']) $icon = $_style["tree_page_info"]; - $node .= '
                      '.$spacer.$pad.' '; - $node .= ''.$nodetitleDisplay.$weblinkDisplay.' '.$pageIdDisplay.'
                      '; - } - else { - // expandAll: two type for partial expansion - if ($expandAll ==1 || ($expandAll == 2 && in_array($id, $opened))) - { - if ($expandAll == 1) { - array_push($opened2, $id); - } - $node .= '
                      '.$spacer.'  '; - $node .= ''.$nodetitleDisplay.$weblinkDisplay.' '.$pageIdDisplay.'
                      '; - $output .= $node; - makeHTML($indent+1,$id,$expandAll,$theme); - $node = '
                      '; - } - else { - $node .= '
                      '.$spacer.'  '; - $node .= ''.$nodetitleDisplay.$weblinkDisplay.' '.$pageIdDisplay.'
                      '; - array_push($closed2, $id); - } - } - } else { - $node = $evtOut; - } - - // invoke OnManagerNodeRender event - $data['node'] = $node; - $evtOut = $modx->invokeEvent('OnManagerNodeRender',$data); - if (is_array($evtOut)) $evtOut = implode("\n", $evtOut); - if ($evtOut != '') $node = $evtOut; - - $output .= $node; - // store vars in Javascript - if ($expandAll == 1) { - echo ' '; - } elseif ($expandAll == 0) { - echo ' '; - } - } - } diff --git a/manager/frames/tree.php b/manager/frames/tree.php index ae65795002..dceaa5028a 100755 --- a/manager/frames/tree.php +++ b/manager/frames/tree.php @@ -1,33 +1,25 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); - - $modx_textdir = isset($modx_textdir) ? $modx_textdir : null; - function constructLink($action, $img, $text, $allowed) { - if($allowed==1) { ?> -
                      ">">">
                      - - - - - -
                      - +hasPermission('edit_template') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('edit_chunk') || $modx->hasPermission('edit_plugin')) { ?> + + + +hasPermission('assets_images')) { ?> + + + +hasPermission('assets_files')) { ?> + + +
                      manager->saveLastUserSetting($param, $_REQUEST[$param]); + $_SESSION[$param] = $_REQUEST[$param]; + } else if(!isset($_SESSION[$param])) { + $_SESSION[$param] = $modx->manager->getLastUserSetting($param); + } +} ?>
                      + - - - + + + + + +
                      - + +
                      - + - ' />
                      +

                      + +
                      +
                        +
                      • +
                      +
                      @@ -475,7 +591,7 @@ function showBinEmpty() { if (is_array($evtOut)) echo implode("\n", $evtOut); ?> -
                       
                      +
                       
                      invokeEvent('OnManagerTreeRender', $modx->db->escape($_REQUEST)); @@ -485,6 +601,11 @@ function showBinEmpty() {
                      + \ No newline at end of file diff --git a/manager/includes/active_user_locks.php b/manager/includes/active_user_locks.php new file mode 100644 index 0000000000..7be669308b --- /dev/null +++ b/manager/includes/active_user_locks.php @@ -0,0 +1,32 @@ +db->connect(); + + if($modx->elementIsLocked($_GET['type'], $_GET['id'], true)) { + $modx->lockElement($_GET['type'], $_GET['id'], true); + $ok = true; + } + } +} + +header('Content-type: application/json'); +if($ok) { + echo '{status:"ok"}'; +} else { + echo '{status:"null"}'; +} \ No newline at end of file diff --git a/manager/includes/categories.inc.php b/manager/includes/categories.inc.php index de1bf53592..6376fee018 100644 --- a/manager/includes/categories.inc.php +++ b/manager/includes/categories.inc.php @@ -24,6 +24,12 @@ function checkCategory($newCat = '') { } return 0; } +//Check for category, create new if not exists +function getCategory($category='') { + $categoryId = checkCategory($category); + if(!$categoryId) $categoryId = newCategory($category); + return $categoryId; +} //Get all categories function getCategories() { global $modx; diff --git a/manager/includes/config_check.inc.php b/manager/includes/config_check.inc.php index 862a6b9622..9638aef05a 100755 --- a/manager/includes/config_check.inc.php +++ b/manager/includes/config_check.inc.php @@ -1,13 +1,26 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); +// PROCESSOR FIRST +if($_SESSION['mgrRole'] == 1) { + if($_REQUEST['b'] == 'resetSysfilesChecksum' && $modx->hasPermission('settings')) { + $current = $modx->manager->getSystemChecksum($modx->config['check_files_onlogin']); + if(!empty($current)) { + $modx->manager->setSystemChecksum($current); + $modx->clearCache('full'); + $modx->config['sys_files_checksum'] = $current; + }; + } +} + +// NOW CHECK CONFIG $warningspresent = 0; $sysfiles_check = $modx->manager->checkSystemChecksum(); -if ($sysfiles_check==='modified'){ +if ($sysfiles_check!=='0'){ $warningspresent = 1; $warnings[] = array($_lang['configcheck_sysfiles_mod']); - } +} if (is_writable("includes/config.inc.php")){ // Warn if world writable @@ -133,8 +146,8 @@ function checkSiteCache() { } if (count($_lang)!=$length_eng_lang) { - $warningspresent = 0; - $warnings[] = array($_lang['configcheck_lang_difference']); + //$warningspresent = 0; + //$warnings[] = array($_lang['configcheck_lang_difference']); } // clear file info cache @@ -165,14 +178,15 @@ function checkSiteCache() { break; case $_lang['configcheck_sysfiles_mod']: $warnings[$i][1] = $_lang["configcheck_sysfiles_mod_msg"]; - if(!$_SESSION["mgrConfigCheck"]) $modx->logEvent(0,3,$warnings[$i][1],$_lang['configcheck_sysfiles_mod']); + $warnings[$i][2] = '
                      • '. join('
                      • ', $sysfiles_check) .'
                      '; + if($modx->hasPermission('settings')) { + $warnings[$i][2] .= ''; + } + if(!$_SESSION["mgrConfigCheck"]) $modx->logEvent(0,3,$warnings[$i][1]." ".join(', ',$sysfiles_check),$_lang['configcheck_sysfiles_mod']); break; case $_lang['configcheck_lang_difference'] : $warnings[$i][1] = $_lang['configcheck_lang_difference_msg']; break; - case $_lang['configcheck_register_globals'] : - $warnings[$i][1] = $_lang['configcheck_register_globals_msg']; - break; case $_lang['configcheck_php_gdzip'] : $warnings[$i][1] = $_lang['configcheck_php_gdzip_msg']; break; @@ -214,6 +228,7 @@ function checkSiteCache() {

                      ".$_lang['configcheck_warning']." '".$warnings[$i][0]."'

                      ".$_lang['configcheck_what']."
                      ".$warnings[$i][1]." ".$admin_warning."

                      + ".(isset($warnings[$i][2]) ? '
                      '.$warnings[$i][2].'
                      ' : '')." "; if ($i!=count($warnings)-1) { diff --git a/manager/includes/controls/contextmenu.php b/manager/includes/controls/contextmenu.php index dc1fb03f1e..4b42f2a44e 100644 --- a/manager/includes/controls/contextmenu.php +++ b/manager/includes/controls/contextmenu.php @@ -5,7 +5,7 @@ class ContextMenu { var $id; - function ContextMenu($id='',$width=120,$visible=false) { + function __construct($id='',$width=120,$visible=false) { global $ContextMenuCnt; $ContextMenuCnt++; $this->html = ""; diff --git a/manager/includes/controls/datagrid.class.php b/manager/includes/controls/datagrid.class.php index 9c30ef0f53..b8a9ce8e3a 100755 --- a/manager/includes/controls/datagrid.class.php +++ b/manager/includes/controls/datagrid.class.php @@ -50,7 +50,7 @@ class DataGrid { var $pagerClass; var $noRecordMsg = "No records found."; - function DataGrid($id,$ds,$pageSize=20,$pageNumber=-1) { + function __construct($id,$ds,$pageSize=20,$pageNumber=-1) { global $__DataGridCnt; // set id @@ -160,7 +160,7 @@ function render(){ $this->_alt = 0; $this->_total = 0; - $this->_isDataset = is_resource($this->ds); // if not dataset then treat as array + $this->_isDataset = $modx->db->isResult($this->ds); // if not dataset then treat as array if(!$cssStyle && !$cssClass) $cssStyle = "style='width:100%;border:1px solid silver;font-family:verdana,arial; font-size:11px;'"; if(!$columnHeaderStyle && !$columnHeaderClass) $columnHeaderStyle = "style='color:black;background-color:silver'"; diff --git a/manager/includes/controls/datasetpager.class.php b/manager/includes/controls/datasetpager.class.php index a55fdd6fe8..b5bf671e3e 100755 --- a/manager/includes/controls/datasetpager.class.php +++ b/manager/includes/controls/datasetpager.class.php @@ -27,7 +27,7 @@ class DataSetPager { var $selPageStyle; var $selPageClass; - function DataSetPager($id,$ds,$pageSize=10,$pageNumber=-1) { + function __construct($id,$ds,$pageSize=10,$pageNumber=-1) { global $_PAGE; // use view state object global $__DataSetPagerCnt; @@ -85,7 +85,7 @@ function setRenderPagerFnc($fncName, $args = ""){ function render(){ global $modx,$_PAGE; - $isDataset = is_resource($this->ds); + $isDataset = $modx->db->isResult($this->ds); if (!$this->selPageStyle) $this->selPageStyle = "font-weight:bold"; diff --git a/manager/includes/controls/phpmailer.lang-en.php b/manager/includes/controls/phpmailer.lang-en.php deleted file mode 100755 index 67c8d8d687..0000000000 --- a/manager/includes/controls/phpmailer.lang-en.php +++ /dev/null @@ -1,23 +0,0 @@ - \ No newline at end of file diff --git a/manager/includes/controls/phpmailer/class.phpmailer.php b/manager/includes/controls/phpmailer/class.phpmailer.php old mode 100644 new mode 100755 index ff877c4d12..916b8c233c --- a/manager/includes/controls/phpmailer/class.phpmailer.php +++ b/manager/includes/controls/phpmailer/class.phpmailer.php @@ -1,2818 +1,4027 @@ + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + + include_once('class.smtp.php'); + +/** + * PHPMailer - PHP email creation and transport class. + * @package PHPMailer + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + */ +class PHPMailer +{ + /** + * The PHPMailer Version number. + * @var string + */ + public $Version = '5.2.21'; + + /** + * Email priority. + * Options: null (default), 1 = High, 3 = Normal, 5 = low. + * When null, the header is not set at all. + * @var integer + */ + public $Priority = null; + + /** + * The character set of the message. + * @var string + */ + public $CharSet = 'iso-8859-1'; + + /** + * The MIME Content-type of the message. + * @var string + */ + public $ContentType = 'text/plain'; + + /** + * The message encoding. + * Options: "8bit", "7bit", "binary", "base64", and "quoted-printable". + * @var string + */ + public $Encoding = '8bit'; + + /** + * Holds the most recent mailer error message. + * @var string + */ + public $ErrorInfo = ''; + + /** + * The From email address for the message. + * @var string + */ + public $From = 'root@localhost'; + + /** + * The From name of the message. + * @var string + */ + public $FromName = 'Root User'; + + /** + * The Sender email (Return-Path) of the message. + * If not empty, will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. + * @var string + */ + public $Sender = ''; + + /** + * The Return-Path of the message. + * If empty, it will be set to either From or Sender. + * @var string + * @deprecated Email senders should never set a return-path header; + * it's the receiver's job (RFC5321 section 4.4), so this no longer does anything. + * @link https://tools.ietf.org/html/rfc5321#section-4.4 RFC5321 reference + */ + public $ReturnPath = ''; + + /** + * The Subject of the message. + * @var string + */ + public $Subject = ''; + + /** + * An HTML or plain text message body. + * If HTML then call isHTML(true). + * @var string + */ + public $Body = ''; + + /** + * The plain-text message body. + * This body can be read by mail clients that do not have HTML email + * capability such as mutt & Eudora. + * Clients that can read HTML will view the normal Body. + * @var string + */ + public $AltBody = ''; + + /** + * An iCal message part body. + * Only supported in simple alt or alt_inline message types + * To generate iCal events, use the bundled extras/EasyPeasyICS.php class or iCalcreator + * @link http://sprain.ch/blog/downloads/php-class-easypeasyics-create-ical-files-with-php/ + * @link http://kigkonsult.se/iCalcreator/ + * @var string + */ + public $Ical = ''; + + /** + * The complete compiled MIME message body. + * @access protected + * @var string + */ + protected $MIMEBody = ''; + + /** + * The complete compiled MIME message headers. + * @var string + * @access protected + */ + protected $MIMEHeader = ''; + + /** + * Extra headers that createHeader() doesn't fold in. + * @var string + * @access protected + */ + protected $mailHeader = ''; + + /** + * Word-wrap the message body to this number of chars. + * Set to 0 to not wrap. A useful value here is 78, for RFC2822 section 2.1.1 compliance. + * @var integer + */ + public $WordWrap = 0; + + /** + * Which method to use to send mail. + * Options: "mail", "sendmail", or "smtp". + * @var string + */ + public $Mailer = 'mail'; + + /** + * The path to the sendmail program. + * @var string + */ + public $Sendmail = '/usr/sbin/sendmail'; + + /** + * Whether mail() uses a fully sendmail-compatible MTA. + * One which supports sendmail's "-oi -f" options. + * @var boolean + */ + public $UseSendmailOptions = true; + + /** + * Path to PHPMailer plugins. + * Useful if the SMTP class is not in the PHP include path. + * @var string + * @deprecated Should not be needed now there is an autoloader. + */ + public $PluginDir = ''; + + /** + * The email address that a reading confirmation should be sent to, also known as read receipt. + * @var string + */ + public $ConfirmReadingTo = ''; + + /** + * The hostname to use in the Message-ID header and as default HELO string. + * If empty, PHPMailer attempts to find one with, in order, + * $_SERVER['SERVER_NAME'], gethostname(), php_uname('n'), or the value + * 'localhost.localdomain'. + * @var string + */ + public $Hostname = ''; + + /** + * An ID to be used in the Message-ID header. + * If empty, a unique id will be generated. + * You can set your own, but it must be in the format "", + * as defined in RFC5322 section 3.6.4 or it will be ignored. + * @see https://tools.ietf.org/html/rfc5322#section-3.6.4 + * @var string + */ + public $MessageID = ''; + + /** + * The message Date to be used in the Date header. + * If empty, the current date will be added. + * @var string + */ + public $MessageDate = ''; + + /** + * SMTP hosts. + * Either a single hostname or multiple semicolon-delimited hostnames. + * You can also specify a different port + * for each host by using this format: [hostname:port] + * (e.g. "smtp1.example.com:25;smtp2.example.com"). + * You can also specify encryption type, for example: + * (e.g. "tls://smtp1.example.com:587;ssl://smtp2.example.com:465"). + * Hosts will be tried in order. + * @var string + */ + public $Host = 'localhost'; + + /** + * The default SMTP server port. + * @var integer + * @TODO Why is this needed when the SMTP class takes care of it? + */ + public $Port = 25; + + /** + * The SMTP HELO of the message. + * Default is $Hostname. If $Hostname is empty, PHPMailer attempts to find + * one with the same method described above for $Hostname. + * @var string + * @see PHPMailer::$Hostname + */ + public $Helo = ''; + + /** + * What kind of encryption to use on the SMTP connection. + * Options: '', 'ssl' or 'tls' + * @var string + */ + public $SMTPSecure = ''; + + /** + * Whether to enable TLS encryption automatically if a server supports it, + * even if `SMTPSecure` is not set to 'tls'. + * Be aware that in PHP >= 5.6 this requires that the server's certificates are valid. + * @var boolean + */ + public $SMTPAutoTLS = true; + + /** + * Whether to use SMTP authentication. + * Uses the Username and Password properties. + * @var boolean + * @see PHPMailer::$Username + * @see PHPMailer::$Password + */ + public $SMTPAuth = false; + + /** + * Options array passed to stream_context_create when connecting via SMTP. + * @var array + */ + public $SMTPOptions = array(); + + /** + * SMTP username. + * @var string + */ + public $Username = ''; + + /** + * SMTP password. + * @var string + */ + public $Password = ''; + + /** + * SMTP auth type. + * Options are CRAM-MD5, LOGIN, PLAIN, NTLM, XOAUTH2, attempted in that order if not specified + * @var string + */ + public $AuthType = ''; + + /** + * SMTP realm. + * Used for NTLM auth + * @var string + */ + public $Realm = ''; + + /** + * SMTP workstation. + * Used for NTLM auth + * @var string + */ + public $Workstation = ''; + + /** + * The SMTP server timeout in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * @var integer + */ + public $Timeout = 300; + + /** + * SMTP class debug output mode. + * Debug output level. + * Options: + * * `0` No output + * * `1` Commands + * * `2` Data and commands + * * `3` As 2 plus connection status + * * `4` Low-level data output + * @var integer + * @see SMTP::$do_debug + */ + public $SMTPDebug = 0; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
                      `, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * $mail->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * + * @var string|callable + * @see SMTP::$Debugoutput + */ + public $Debugoutput = 'echo'; + + /** + * Whether to keep SMTP connection open after each message. + * If this is set to true then to close the connection + * requires an explicit call to smtpClose(). + * @var boolean + */ + public $SMTPKeepAlive = false; + + /** + * Whether to split multiple to addresses into multiple messages + * or send them all in one message. + * Only supported in `mail` and `sendmail` transports, not in SMTP. + * @var boolean + */ + public $SingleTo = false; + + /** + * Storage for addresses when SingleTo is enabled. + * @var array + * @TODO This should really not be public + */ + public $SingleToArray = array(); + + /** + * Whether to generate VERP addresses on send. + * Only applicable when sending via SMTP. + * @link https://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link http://www.postfix.org/VERP_README.html Postfix VERP info + * @var boolean + */ + public $do_verp = false; + + /** + * Whether to allow sending messages with an empty body. + * @var boolean + */ + public $AllowEmpty = false; + + /** + * The default line ending. + * @note The default remains "\n". We force CRLF where we know + * it must be used via self::CRLF. + * @var string + */ + public $LE = "\n"; + + /** + * DKIM selector. + * @var string + */ + public $DKIM_selector = ''; + + /** + * DKIM Identity. + * Usually the email address used as the source of the email. + * @var string + */ + public $DKIM_identity = ''; + + /** + * DKIM passphrase. + * Used if your key is encrypted. + * @var string + */ + public $DKIM_passphrase = ''; + + /** + * DKIM signing domain name. + * @example 'example.com' + * @var string + */ + public $DKIM_domain = ''; + + /** + * DKIM private key file path. + * @var string + */ + public $DKIM_private = ''; + + /** + * DKIM private key string. + * If set, takes precedence over `$DKIM_private`. + * @var string + */ + public $DKIM_private_string = ''; + + /** + * Callback Action function name. + * + * The function that handles the result of the send email action. + * It is called out by send() for each email sent. + * + * Value can be any php callable: http://www.php.net/is_callable + * + * Parameters: + * boolean $result result of the send action + * string $to email address of the recipient + * string $cc cc email addresses + * string $bcc bcc email addresses + * string $subject the subject + * string $body the email body + * string $from email address of sender + * @var string + */ + public $action_function = ''; + + /** + * What to put in the X-Mailer header. + * Options: An empty string for PHPMailer default, whitespace for none, or a string to use + * @var string + */ + public $XMailer = ''; + + /** + * Which validator to use by default when validating email addresses. + * May be a callable to inject your own validator, but there are several built-in validators. + * @see PHPMailer::validateAddress() + * @var string|callable + * @static + */ + public static $validator = 'auto'; + + /** + * An instance of the SMTP sender class. + * @var SMTP + * @access protected + */ + protected $smtp = null; + + /** + * The array of 'to' names and addresses. + * @var array + * @access protected + */ + protected $to = array(); + + /** + * The array of 'cc' names and addresses. + * @var array + * @access protected + */ + protected $cc = array(); + + /** + * The array of 'bcc' names and addresses. + * @var array + * @access protected + */ + protected $bcc = array(); + + /** + * The array of reply-to names and addresses. + * @var array + * @access protected + */ + protected $ReplyTo = array(); + + /** + * An array of all kinds of addresses. + * Includes all of $to, $cc, $bcc + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + */ + protected $all_recipients = array(); + + /** + * An array of names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $all_recipients + * and one of $to, $cc, or $bcc. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$to @see PHPMailer::$cc @see PHPMailer::$bcc + * @see PHPMailer::$all_recipients + */ + protected $RecipientsQueue = array(); + + /** + * An array of reply-to names and addresses queued for validation. + * In send(), valid and non duplicate entries are moved to $ReplyTo. + * This array is used only for addresses with IDN. + * @var array + * @access protected + * @see PHPMailer::$ReplyTo + */ + protected $ReplyToQueue = array(); + + /** + * The array of attachments. + * @var array + * @access protected + */ + protected $attachment = array(); + + /** + * The array of custom headers. + * @var array + * @access protected + */ + protected $CustomHeader = array(); + + /** + * The most recent Message-ID (including angular brackets). + * @var string + * @access protected + */ + protected $lastMessageID = ''; + + /** + * The message's MIME type. + * @var string + * @access protected + */ + protected $message_type = ''; + + /** + * The array of MIME boundary strings. + * @var array + * @access protected + */ + protected $boundary = array(); + + /** + * The array of available languages. + * @var array + * @access protected + */ + protected $language = array(); + + /** + * The number of errors encountered. + * @var integer + * @access protected + */ + protected $error_count = 0; + + /** + * The S/MIME certificate file path. + * @var string + * @access protected + */ + protected $sign_cert_file = ''; + + /** + * The S/MIME key file path. + * @var string + * @access protected + */ + protected $sign_key_file = ''; + + /** + * The optional S/MIME extra certificates ("CA Chain") file path. + * @var string + * @access protected + */ + protected $sign_extracerts_file = ''; + + /** + * The S/MIME password for the key. + * Used only if the key is encrypted. + * @var string + * @access protected + */ + protected $sign_key_pass = ''; + + /** + * Whether to throw exceptions for errors. + * @var boolean + * @access protected + */ + protected $exceptions = false; + + /** + * Unique ID used for message ID and boundaries. + * @var string + * @access protected + */ + protected $uniqueid = ''; + + /** + * Error severity: message only, continue processing. + */ + const STOP_MESSAGE = 0; + + /** + * Error severity: message, likely ok to continue processing. + */ + const STOP_CONTINUE = 1; + + /** + * Error severity: message, plus full stop, critical error reached. + */ + const STOP_CRITICAL = 2; + + /** + * SMTP RFC standard line ending. + */ + const CRLF = "\r\n"; + + /** + * The maximum line length allowed by RFC 2822 section 2.1.1 + * @var integer + */ + const MAX_LINE_LENGTH = 998; + + /** + * Constructor. + * @param boolean $exceptions Should we throw external exceptions? + */ + public function __construct($exceptions = null) + { + if ($exceptions !== null) { + $this->exceptions = (boolean)$exceptions; + } + } + + /** + * Destructor. + */ + public function __destruct() + { + //Close any open SMTP connection nicely + $this->smtpClose(); + } + + /** + * Call mail() in a safe_mode-aware fashion. + * Also, unless sendmail_path points to sendmail (or something that + * claims to be sendmail), don't pass params (not a perfect fix, + * but it will do) + * @param string $to To + * @param string $subject Subject + * @param string $body Message Body + * @param string $header Additional Header(s) + * @param string $params Params + * @access private + * @return boolean + */ + private function mailPassthru($to, $subject, $body, $header, $params) + { + //Check overloading of mail function to avoid double-encoding + if (ini_get('mbstring.func_overload') & 1) { + $subject = $this->secureHeader($subject); + } else { + $subject = $this->encodeHeader($this->secureHeader($subject)); + } + + //Can't use additional_parameters in safe_mode, calling mail() with null params breaks + //@link http://php.net/manual/en/function.mail.php + if (ini_get('safe_mode') or !$this->UseSendmailOptions or is_null($params)) { + $result = @mail($to, $subject, $body, $header); + } else { + $result = @mail($to, $subject, $body, $header, $params); + } + return $result; + } + /** + * Output debugging info via user-defined method. + * Only generates output if SMTP debug output is enabled (@see SMTP::$do_debug). + * @see PHPMailer::$Debugoutput + * @see PHPMailer::$SMTPDebug + * @param string $str + */ + protected function edebug($str) + { + if ($this->SMTPDebug <= 0) { + return; + } + //Avoid clash with built-in function names + if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { + call_user_func($this->Debugoutput, $str, $this->SMTPDebug); + return; + } + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ) + . "
                      \n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/\r\n?/ms', "\n", $str); + echo gmdate('Y-m-d H:i:s') . "\t" . str_replace( + "\n", + "\n \t ", + trim($str) + ) . "\n"; + } + } + + /** + * Sets message type to HTML or plain. + * @param boolean $isHtml True for HTML mode. + * @return void + */ + public function isHTML($isHtml = true) + { + if ($isHtml) { + $this->ContentType = 'text/html'; + } else { + $this->ContentType = 'text/plain'; + } + } + + /** + * Send messages using SMTP. + * @return void + */ + public function isSMTP() + { + $this->Mailer = 'smtp'; + } + + /** + * Send messages using PHP's mail() function. + * @return void + */ + public function isMail() + { + $this->Mailer = 'mail'; + } + + /** + * Send messages using $Sendmail. + * @return void + */ + public function isSendmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (!stristr($ini_sendmail_path, 'sendmail')) { + $this->Sendmail = '/usr/sbin/sendmail'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'sendmail'; + } + + /** + * Send messages using qmail. + * @return void + */ + public function isQmail() + { + $ini_sendmail_path = ini_get('sendmail_path'); + + if (!stristr($ini_sendmail_path, 'qmail')) { + $this->Sendmail = '/var/qmail/bin/qmail-inject'; + } else { + $this->Sendmail = $ini_sendmail_path; + } + $this->Mailer = 'qmail'; + } + + /** + * Add a "To" address. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addAddress($address, $name = '') + { + return $this->addOrEnqueueAnAddress('to', $address, $name); + } + + /** + * Add a "CC" address. + * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('cc', $address, $name); + } + + /** + * Add a "BCC" address. + * @note: This function works with the SMTP mailer on win32, not with the "mail" mailer. + * @param string $address The email address to send to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addBCC($address, $name = '') + { + return $this->addOrEnqueueAnAddress('bcc', $address, $name); + } + + /** + * Add a "Reply-To" address. + * @param string $address The email address to reply to + * @param string $name + * @return boolean true on success, false if address already used or invalid in some way + */ + public function addReplyTo($address, $name = '') + { + return $this->addOrEnqueueAnAddress('Reply-To', $address, $name); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. Because PHPMailer + * can't validate addresses with an IDN without knowing the PHPMailer::$CharSet (that can still + * be modified after calling this function), addition of such addresses is delayed until send(). + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addOrEnqueueAnAddress($kind, $address, $name) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + if (($pos = strrpos($address, '@')) === false) { + // At-sign is misssing. + $error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $params = array($kind, $address, $name); + // Enqueue addresses with IDN until we know the PHPMailer::$CharSet. + if ($this->has8bitChars(substr($address, ++$pos)) and $this->idnSupported()) { + if ($kind != 'Reply-To') { + if (!array_key_exists($address, $this->RecipientsQueue)) { + $this->RecipientsQueue[$address] = $params; + return true; + } + } else { + if (!array_key_exists($address, $this->ReplyToQueue)) { + $this->ReplyToQueue[$address] = $params; + return true; + } + } + return false; + } + // Immediately add standard addresses without IDN. + return call_user_func_array(array($this, 'addAnAddress'), $params); + } + + /** + * Add an address to one of the recipient arrays or to the ReplyTo array. + * Addresses that have been added already return false, but do not throw exceptions. + * @param string $kind One of 'to', 'cc', 'bcc', or 'ReplyTo' + * @param string $address The email address to send, resp. to reply to + * @param string $name + * @throws phpmailerException + * @return boolean true on success, false if address already used or invalid in some way + * @access protected + */ + protected function addAnAddress($kind, $address, $name = '') + { + if (!in_array($kind, array('to', 'cc', 'bcc', 'Reply-To'))) { + $error_message = $this->lang('Invalid recipient kind: ') . $kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + if (!$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . " (addAnAddress $kind): $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + if ($kind != 'Reply-To') { + if (!array_key_exists(strtolower($address), $this->all_recipients)) { + array_push($this->$kind, array($address, $name)); + $this->all_recipients[strtolower($address)] = true; + return true; + } + } else { + if (!array_key_exists(strtolower($address), $this->ReplyTo)) { + $this->ReplyTo[strtolower($address)] = array($address, $name); + return true; + } + } + return false; + } + + /** + * Parse and validate a string containing one or more RFC822-style comma-separated email addresses + * of the form "display name
                      " into an array of name/address pairs. + * Uses the imap_rfc822_parse_adrlist function if the IMAP extension is available. + * Note that quotes in the name part are removed. + * @param string $addrstr The address list string + * @param bool $useimap Whether to use the IMAP extension to parse the list + * @return array + * @link http://www.andrew.cmu.edu/user/agreen1/testing/mrbs/web/Mail/RFC822.php A more careful implementation + */ + public function parseAddresses($addrstr, $useimap = true) + { + $addresses = array(); + if ($useimap and function_exists('imap_rfc822_parse_adrlist')) { + //Use this built-in parser if it's available + $list = imap_rfc822_parse_adrlist($addrstr, ''); + foreach ($list as $address) { + if ($address->host != '.SYNTAX-ERROR.') { + if ($this->validateAddress($address->mailbox . '@' . $address->host)) { + $addresses[] = array( + 'name' => (property_exists($address, 'personal') ? $address->personal : ''), + 'address' => $address->mailbox . '@' . $address->host + ); + } + } + } + } else { + //Use this simpler parser + $list = explode(',', $addrstr); + foreach ($list as $address) { + $address = trim($address); + //Is there a separate name part? + if (strpos($address, '<') === false) { + //No separate name, just use the whole thing + if ($this->validateAddress($address)) { + $addresses[] = array( + 'name' => '', + 'address' => $address + ); + } + } else { + list($name, $email) = explode('<', $address); + $email = trim(str_replace('>', '', $email)); + if ($this->validateAddress($email)) { + $addresses[] = array( + 'name' => trim(str_replace(array('"', "'"), '', $name)), + 'address' => $email + ); + } + } + } + } + return $addresses; + } + + /** + * Set the From and FromName properties. + * @param string $address + * @param string $name + * @param boolean $auto Whether to also set the Sender address, defaults to true + * @throws phpmailerException + * @return boolean + */ + public function setFrom($address, $name = '', $auto = true) + { + $address = trim($address); + $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim + // Don't validate now addresses with IDN. Will be done in send(). + if (($pos = strrpos($address, '@')) === false or + (!$this->has8bitChars(substr($address, ++$pos)) or !$this->idnSupported()) and + !$this->validateAddress($address)) { + $error_message = $this->lang('invalid_address') . " (setFrom) $address"; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + $this->From = $address; + $this->FromName = $name; + if ($auto) { + if (empty($this->Sender)) { + $this->Sender = $address; + } + } + return true; + } + + /** + * Return the Message-ID header of the last email. + * Technically this is the value from the last time the headers were created, + * but it's also the message ID of the last sent message except in + * pathological cases. + * @return string + */ + public function getLastMessageID() + { + return $this->lastMessageID; + } + + /** + * Check that a string looks like an email address. + * @param string $address The email address to check + * @param string|callable $patternselect A selector for the validation pattern to use : + * * `auto` Pick best pattern automatically; + * * `pcre8` Use the squiloople.com pattern, requires PCRE > 8.0, PHP >= 5.3.2, 5.2.14; + * * `pcre` Use old PCRE implementation; + * * `php` Use PHP built-in FILTER_VALIDATE_EMAIL; + * * `html5` Use the pattern given by the HTML5 spec for 'email' type form input elements. + * * `noregex` Don't use a regex: super fast, really dumb. + * Alternatively you may pass in a callable to inject your own validator, for example: + * PHPMailer::validateAddress('user@example.com', function($address) { + * return (strpos($address, '@') !== false); + * }); + * You can also set the PHPMailer::$validator static to a callable, allowing built-in methods to use your validator. + * @return boolean + * @static + * @access public + */ + public static function validateAddress($address, $patternselect = null) + { + if (is_null($patternselect)) { + $patternselect = self::$validator; + } + if (is_callable($patternselect)) { + return call_user_func($patternselect, $address); + } + //Reject line breaks in addresses; it's valid RFC5322, but not RFC5321 + if (strpos($address, "\n") !== false or strpos($address, "\r") !== false) { + return false; + } + if (!$patternselect or $patternselect == 'auto') { + //Check this constant first so it works when extension_loaded() is disabled by safe mode + //Constant was added in PHP 5.2.4 + if (defined('PCRE_VERSION')) { + //This pattern can get stuck in a recursive loop in PCRE <= 8.0.2 + if (version_compare(PCRE_VERSION, '8.0.3') >= 0) { + $patternselect = 'pcre8'; + } else { + $patternselect = 'pcre'; + } + } elseif (function_exists('extension_loaded') and extension_loaded('pcre')) { + //Fall back to older PCRE + $patternselect = 'pcre'; + } else { + //Filter_var appeared in PHP 5.2.0 and does not require the PCRE extension + if (version_compare(PHP_VERSION, '5.2.0') >= 0) { + $patternselect = 'php'; + } else { + $patternselect = 'noregex'; + } + } + } + switch ($patternselect) { + case 'pcre8': + /** + * Uses the same RFC5322 regex on which FILTER_VALIDATE_EMAIL is based, but allows dotless domains. + * @link http://squiloople.com/2009/12/20/email-address-validation/ + * @copyright 2009-2010 Michael Rushton + * Feel free to use and redistribute this code. But please keep this copyright notice. + */ + return (boolean)preg_match( + '/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)' . + '((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)' . + '(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)' . + '([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*' . + '(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)' . + '(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}' . + '|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:' . + '|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', + $address + ); + case 'pcre': + //An older regex that doesn't need a recent PCRE + return (boolean)preg_match( + '/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>' . + '[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")' . + '(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*' . + '@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})' . + '(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:' . + '[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?' . + '::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:' . + '[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?' . + '::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}' . + '|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD', + $address + ); + case 'html5': + /** + * This is the pattern used in the HTML5 spec for validation of 'email' type form input elements. + * @link http://www.whatwg.org/specs/web-apps/current-work/#e-mail-state-(type=email) + */ + return (boolean)preg_match( + '/^[a-zA-Z0-9.!#$%&\'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}' . + '[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/sD', + $address + ); + case 'noregex': + //No PCRE! Do something _very_ approximate! + //Check the address is 3 chars or longer and contains an @ that's not the first or last char + return (strlen($address) >= 3 + and strpos($address, '@') >= 1 + and strpos($address, '@') != strlen($address) - 1); + case 'php': + default: + return (boolean)filter_var($address, FILTER_VALIDATE_EMAIL); + } + } + + /** + * Tells whether IDNs (Internationalized Domain Names) are supported or not. This requires the + * "intl" and "mbstring" PHP extensions. + * @return bool "true" if required functions for IDN support are present + */ + public function idnSupported() + { + // @TODO: Write our own "idn_to_ascii" function for PHP <= 5.2. + return function_exists('idn_to_ascii') and function_exists('mb_convert_encoding'); + } + + /** + * Converts IDN in given email address to its ASCII form, also known as punycode, if possible. + * Important: Address must be passed in same encoding as currently set in PHPMailer::$CharSet. + * This function silently returns unmodified address if: + * - No conversion is necessary (i.e. domain name is not an IDN, or is already in ASCII form) + * - Conversion to punycode is impossible (e.g. required PHP functions are not available) + * or fails for any reason (e.g. domain has characters not allowed in an IDN) + * @see PHPMailer::$CharSet + * @param string $address The email address to convert + * @return string The encoded address in ASCII form + */ + public function punyencodeAddress($address) + { + // Verify we have required functions, CharSet, and at-sign. + if ($this->idnSupported() and + !empty($this->CharSet) and + ($pos = strrpos($address, '@')) !== false) { + $domain = substr($address, ++$pos); + // Verify CharSet string is a valid one, and domain properly encoded in this CharSet. + if ($this->has8bitChars($domain) and @mb_check_encoding($domain, $this->CharSet)) { + $domain = mb_convert_encoding($domain, 'UTF-8', $this->CharSet); + if (($punycode = defined('INTL_IDNA_VARIANT_UTS46') ? + idn_to_ascii($domain, 0, INTL_IDNA_VARIANT_UTS46) : + idn_to_ascii($domain)) !== false) { + return substr($address, 0, $pos) . $punycode; + } + } + } + return $address; + } + + /** + * Create a message and send it. + * Uses the sending method specified by $Mailer. + * @throws phpmailerException + * @return boolean false on error - See the ErrorInfo property for details of the error. + */ + public function send() + { + try { + if (!$this->preSend()) { + return false; + } + return $this->postSend(); + } catch (phpmailerException $exc) { + $this->mailHeader = ''; + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + } + + /** + * Prepare a message for sending. + * @throws phpmailerException + * @return boolean + */ + public function preSend() + { + try { + $this->error_count = 0; // Reset errors + $this->mailHeader = ''; + + // Dequeue recipient and Reply-To addresses with IDN + foreach (array_merge($this->RecipientsQueue, $this->ReplyToQueue) as $params) { + $params[1] = $this->punyencodeAddress($params[1]); + call_user_func_array(array($this, 'addAnAddress'), $params); + } + if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { + throw new phpmailerException($this->lang('provide_address'), self::STOP_CRITICAL); + } + + // Validate From, Sender, and ConfirmReadingTo addresses + foreach (array('From', 'Sender', 'ConfirmReadingTo') as $address_kind) { + $this->$address_kind = trim($this->$address_kind); + if (empty($this->$address_kind)) { + continue; + } + $this->$address_kind = $this->punyencodeAddress($this->$address_kind); + if (!$this->validateAddress($this->$address_kind)) { + $error_message = $this->lang('invalid_address') . ' (punyEncode) ' . $this->$address_kind; + $this->setError($error_message); + $this->edebug($error_message); + if ($this->exceptions) { + throw new phpmailerException($error_message); + } + return false; + } + } + + // Set whether the message is multipart/alternative + if ($this->alternativeExists()) { + $this->ContentType = 'multipart/alternative'; + } + + $this->setMessageType(); + // Refuse to send an empty message unless we are specifically allowing it + if (!$this->AllowEmpty and empty($this->Body)) { + throw new phpmailerException($this->lang('empty_message'), self::STOP_CRITICAL); + } + + // Create body before headers in case body makes changes to headers (e.g. altering transfer encoding) + $this->MIMEHeader = ''; + $this->MIMEBody = $this->createBody(); + // createBody may have added some headers, so retain them + $tempheaders = $this->MIMEHeader; + $this->MIMEHeader = $this->createHeader(); + $this->MIMEHeader .= $tempheaders; + + // To capture the complete message when using mail(), create + // an extra header list which createHeader() doesn't fold in + if ($this->Mailer == 'mail') { + if (count($this->to) > 0) { + $this->mailHeader .= $this->addrAppend('To', $this->to); + } else { + $this->mailHeader .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + $this->mailHeader .= $this->headerLine( + 'Subject', + $this->encodeHeader($this->secureHeader(trim($this->Subject))) + ); + } + + // Sign with DKIM if enabled + if (!empty($this->DKIM_domain) + && !empty($this->DKIM_selector) + && (!empty($this->DKIM_private_string) + || (!empty($this->DKIM_private) && file_exists($this->DKIM_private)) + ) + ) { + $header_dkim = $this->DKIM_Add( + $this->MIMEHeader . $this->mailHeader, + $this->encodeHeader($this->secureHeader($this->Subject)), + $this->MIMEBody + ); + $this->MIMEHeader = rtrim($this->MIMEHeader, "\r\n ") . self::CRLF . + str_replace("\r\n", "\n", $header_dkim) . self::CRLF; + } + return true; + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + } + + /** + * Actually send a message. + * Send the email via the selected mechanism + * @throws phpmailerException + * @return boolean + */ + public function postSend() + { + try { + // Choose the mailer and send through it + switch ($this->Mailer) { + case 'sendmail': + case 'qmail': + return $this->sendmailSend($this->MIMEHeader, $this->MIMEBody); + case 'smtp': + return $this->smtpSend($this->MIMEHeader, $this->MIMEBody); + case 'mail': + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + default: + $sendMethod = $this->Mailer.'Send'; + if (method_exists($this, $sendMethod)) { + return $this->$sendMethod($this->MIMEHeader, $this->MIMEBody); + } + + return $this->mailSend($this->MIMEHeader, $this->MIMEBody); + } + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + } + return false; + } + + /** + * Send mail using the $Sendmail program. + * @param string $header The message headers + * @param string $body The message body + * @see PHPMailer::$Sendmail + * @throws phpmailerException + * @access protected + * @return boolean + */ + protected function sendmailSend($header, $body) + { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (!empty($this->Sender) and self::isShellSafe($this->Sender)) { + if ($this->Mailer == 'qmail') { + $sendmailFmt = '%s -f%s'; + } else { + $sendmailFmt = '%s -oi -f%s -t'; + } + } else { + if ($this->Mailer == 'qmail') { + $sendmailFmt = '%s'; + } else { + $sendmailFmt = '%s -oi -t'; + } + } + + // TODO: If possible, this should be changed to escapeshellarg. Needs thorough testing. + $sendmail = sprintf($sendmailFmt, escapeshellcmd($this->Sendmail), $this->Sender); + + if ($this->SingleTo) { + foreach ($this->SingleToArray as $toAddr) { + if (!@$mail = popen($sendmail, 'w')) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, 'To: ' . $toAddr . "\n"); + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result == 0), + array($toAddr), + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); + if ($result != 0) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + } else { + if (!@$mail = popen($sendmail, 'w')) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + fputs($mail, $header); + fputs($mail, $body); + $result = pclose($mail); + $this->doCallback( + ($result == 0), + $this->to, + $this->cc, + $this->bcc, + $this->Subject, + $body, + $this->From + ); + if ($result != 0) { + throw new phpmailerException($this->lang('execute') . $this->Sendmail, self::STOP_CRITICAL); + } + } + return true; + } + + /** + * Fix CVE-2016-10033 and CVE-2016-10045 by disallowing potentially unsafe shell characters. + * + * Note that escapeshellarg and escapeshellcmd are inadequate for our purposes, especially on Windows. + * @param string $string The string to be validated + * @see https://github.com/PHPMailer/PHPMailer/issues/924 CVE-2016-10045 bug report + * @access protected + * @return boolean + */ + protected static function isShellSafe($string) + { + // Future-proof + if (escapeshellcmd($string) !== $string + or !in_array(escapeshellarg($string), array("'$string'", "\"$string\"")) + ) { + return false; + } + + $length = strlen($string); + + for ($i = 0; $i < $length; $i++) { + $c = $string[$i]; + + // All other characters have a special meaning in at least one common shell, including = and +. + // Full stop (.) has a special meaning in cmd.exe, but its impact should be negligible here. + // Note that this does permit non-Latin alphanumeric characters based on the current locale. + if (!ctype_alnum($c) && strpos('@_-.', $c) === false) { + return false; + } + } + + return true; + } + + /** + * Send mail using the PHP mail() function. + * @param string $header The message headers + * @param string $body The message body + * @link http://www.php.net/manual/en/book.mail.php + * @throws phpmailerException + * @access protected + * @return boolean + */ + protected function mailSend($header, $body) + { + $toArr = array(); + foreach ($this->to as $toaddr) { + $toArr[] = $this->addrFormat($toaddr); + } + $to = implode(', ', $toArr); + + $params = null; + //This sets the SMTP envelope sender which gets turned into a return-path header by the receiver + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + // CVE-2016-10033, CVE-2016-10045: Don't pass -f if characters will be escaped. + if (self::isShellSafe($this->Sender)) { + $params = sprintf('-f%s', $this->Sender); + } + } + if (!empty($this->Sender) and !ini_get('safe_mode') and $this->validateAddress($this->Sender)) { + $old_from = ini_get('sendmail_from'); + ini_set('sendmail_from', $this->Sender); + } + $result = false; + if ($this->SingleTo and count($toArr) > 1) { + foreach ($toArr as $toAddr) { + $result = $this->mailPassthru($toAddr, $this->Subject, $body, $header, $params); + $this->doCallback($result, array($toAddr), $this->cc, $this->bcc, $this->Subject, $body, $this->From); + } + } else { + $result = $this->mailPassthru($to, $this->Subject, $body, $header, $params); + $this->doCallback($result, $this->to, $this->cc, $this->bcc, $this->Subject, $body, $this->From); + } + if (isset($old_from)) { + ini_set('sendmail_from', $old_from); + } + if (!$result) { + throw new phpmailerException($this->lang('instantiate'), self::STOP_CRITICAL); + } + return true; + } + + /** + * Get an instance to use for SMTP operations. + * Override this function to load your own SMTP implementation + * @return SMTP + */ + public function getSMTPInstance() + { + if (!is_object($this->smtp)) { + $this->smtp = new SMTP; + } + return $this->smtp; + } + + /** + * Send mail via SMTP. + * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. + * Uses the PHPMailerSMTP class by default. + * @see PHPMailer::getSMTPInstance() to use a different class. + * @param string $header The message headers + * @param string $body The message body + * @throws phpmailerException + * @uses SMTP + * @access protected + * @return boolean + */ + protected function smtpSend($header, $body) + { + $bad_rcpt = array(); + if (!$this->smtpConnect($this->SMTPOptions)) { + throw new phpmailerException($this->lang('smtp_connect_failed'), self::STOP_CRITICAL); + } + if (!empty($this->Sender) and $this->validateAddress($this->Sender)) { + $smtp_from = $this->Sender; + } else { + $smtp_from = $this->From; + } + if (!$this->smtp->mail($smtp_from)) { + $this->setError($this->lang('from_failed') . $smtp_from . ' : ' . implode(',', $this->smtp->getError())); + throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL); + } + + // Attempt to send to all recipients + foreach (array($this->to, $this->cc, $this->bcc) as $togroup) { + foreach ($togroup as $to) { + if (!$this->smtp->recipient($to[0])) { + $error = $this->smtp->getError(); + $bad_rcpt[] = array('to' => $to[0], 'error' => $error['detail']); + $isSent = false; + } else { + $isSent = true; + } + $this->doCallback($isSent, array($to[0]), array(), array(), $this->Subject, $body, $this->From); + } + } + + // Only send the DATA command if we have viable recipients + if ((count($this->all_recipients) > count($bad_rcpt)) and !$this->smtp->data($header . $body)) { + throw new phpmailerException($this->lang('data_not_accepted'), self::STOP_CRITICAL); + } + if ($this->SMTPKeepAlive) { + $this->smtp->reset(); + } else { + $this->smtp->quit(); + $this->smtp->close(); + } + //Create error message for any bad addresses + if (count($bad_rcpt) > 0) { + $errstr = ''; + foreach ($bad_rcpt as $bad) { + $errstr .= $bad['to'] . ': ' . $bad['error']; + } + throw new phpmailerException( + $this->lang('recipients_failed') . $errstr, + self::STOP_CONTINUE + ); + } + return true; + } + + /** + * Initiate a connection to an SMTP server. + * Returns false if the operation failed. + * @param array $options An array of options compatible with stream_context_create() + * @uses SMTP + * @access public + * @throws phpmailerException + * @return boolean + */ + public function smtpConnect($options = null) + { + if (is_null($this->smtp)) { + $this->smtp = $this->getSMTPInstance(); + } + + //If no options are provided, use whatever is set in the instance + if (is_null($options)) { + $options = $this->SMTPOptions; + } + + // Already connected? + if ($this->smtp->connected()) { + return true; + } + + $this->smtp->setTimeout($this->Timeout); + $this->smtp->setDebugLevel($this->SMTPDebug); + $this->smtp->setDebugOutput($this->Debugoutput); + $this->smtp->setVerp($this->do_verp); + $hosts = explode(';', $this->Host); + $lastexception = null; + + foreach ($hosts as $hostentry) { + $hostinfo = array(); + if (!preg_match('/^((ssl|tls):\/\/)*([a-zA-Z0-9\.-]*):?([0-9]*)$/', trim($hostentry), $hostinfo)) { + // Not a valid host entry + continue; + } + // $hostinfo[2]: optional ssl or tls prefix + // $hostinfo[3]: the hostname + // $hostinfo[4]: optional port number + // The host string prefix can temporarily override the current setting for SMTPSecure + // If it's not specified, the default value is used + $prefix = ''; + $secure = $this->SMTPSecure; + $tls = ($this->SMTPSecure == 'tls'); + if ('ssl' == $hostinfo[2] or ('' == $hostinfo[2] and 'ssl' == $this->SMTPSecure)) { + $prefix = 'ssl://'; + $tls = false; // Can't have SSL and TLS at the same time + $secure = 'ssl'; + } elseif ($hostinfo[2] == 'tls') { + $tls = true; + // tls doesn't use a prefix + $secure = 'tls'; + } + //Do we need the OpenSSL extension? + $sslext = defined('OPENSSL_ALGO_SHA1'); + if ('tls' === $secure or 'ssl' === $secure) { + //Check for an OpenSSL constant rather than using extension_loaded, which is sometimes disabled + if (!$sslext) { + throw new phpmailerException($this->lang('extension_missing').'openssl', self::STOP_CRITICAL); + } + } + $host = $hostinfo[3]; + $port = $this->Port; + $tport = (integer)$hostinfo[4]; + if ($tport > 0 and $tport < 65536) { + $port = $tport; + } + if ($this->smtp->connect($prefix . $host, $port, $this->Timeout, $options)) { + try { + if ($this->Helo) { + $hello = $this->Helo; + } else { + $hello = $this->serverHostname(); + } + $this->smtp->hello($hello); + //Automatically enable TLS encryption if: + // * it's not disabled + // * we have openssl extension + // * we are not already using SSL + // * the server offers STARTTLS + if ($this->SMTPAutoTLS and $sslext and $secure != 'ssl' and $this->smtp->getServerExt('STARTTLS')) { + $tls = true; + } + if ($tls) { + if (!$this->smtp->startTLS()) { + throw new phpmailerException($this->lang('connect_host')); + } + // We must resend EHLO after TLS negotiation + $this->smtp->hello($hello); + } + if ($this->SMTPAuth) { + if (!$this->smtp->authenticate( + $this->Username, + $this->Password, + $this->AuthType, + $this->Realm, + $this->Workstation + ) + ) { + throw new phpmailerException($this->lang('authenticate')); + } + } + return true; + } catch (phpmailerException $exc) { + $lastexception = $exc; + $this->edebug($exc->getMessage()); + // We must have connected, but then failed TLS or Auth, so close connection nicely + $this->smtp->quit(); + } + } + } + // If we get here, all connection attempts have failed, so close connection hard + $this->smtp->close(); + // As we've caught all exceptions, just report whatever the last one was + if ($this->exceptions and !is_null($lastexception)) { + throw $lastexception; + } + return false; + } + + /** + * Close the active SMTP session if one exists. + * @return void + */ + public function smtpClose() + { + if (is_a($this->smtp, 'SMTP')) { + if ($this->smtp->connected()) { + $this->smtp->quit(); + $this->smtp->close(); + } + } + } + + /** + * Set the language for error messages. + * Returns false if it cannot load the language file. + * The default language is English. + * @param string $langcode ISO 639-1 2-character language code (e.g. French is "fr") + * @param string $lang_path Path to the language file directory, with trailing separator (slash) + * @return boolean + * @access public + */ + public function setLanguage($langcode = 'en', $lang_path = '') + { + // Backwards compatibility for renamed language codes + $renamed_langcodes = array( + 'br' => 'pt_br', + 'cz' => 'cs', + 'dk' => 'da', + 'no' => 'nb', + 'se' => 'sv', + ); + + if (isset($renamed_langcodes[$langcode])) { + $langcode = $renamed_langcodes[$langcode]; + } + + // Define full set of translatable strings in English + $PHPMAILER_LANG = array( + 'authenticate' => 'SMTP Error: Could not authenticate.', + 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', + 'data_not_accepted' => 'SMTP Error: data not accepted.', + 'empty_message' => 'Message body empty', + 'encoding' => 'Unknown encoding: ', + 'execute' => 'Could not execute: ', + 'file_access' => 'Could not access file: ', + 'file_open' => 'File Error: Could not open file: ', + 'from_failed' => 'The following From address failed: ', + 'instantiate' => 'Could not instantiate mail function.', + 'invalid_address' => 'Invalid address: ', + 'mailer_not_supported' => ' mailer is not supported.', + 'provide_address' => 'You must provide at least one recipient email address.', + 'recipients_failed' => 'SMTP Error: The following recipients failed: ', + 'signing' => 'Signing Error: ', + 'smtp_connect_failed' => 'SMTP connect() failed.', + 'smtp_error' => 'SMTP server error: ', + 'variable_set' => 'Cannot set or reset variable: ', + 'extension_missing' => 'Extension missing: ' + ); + if (empty($lang_path)) { + // Calculate an absolute path so it can work if CWD is not here + $lang_path = dirname(__FILE__). DIRECTORY_SEPARATOR . 'language'. DIRECTORY_SEPARATOR; + } + //Validate $langcode + if (!preg_match('/^[a-z]{2}(?:_[a-zA-Z]{2})?$/', $langcode)) { + $langcode = 'en'; + } + $foundlang = true; + $lang_file = $lang_path . 'phpmailer.lang-' . $langcode . '.php'; + // There is no English translation file + if ($langcode != 'en') { + // Make sure language file path is readable + if (!is_readable($lang_file)) { + $foundlang = false; + } else { + // Overwrite language-specific strings. + // This way we'll never have missing translation keys. + $foundlang = include $lang_file; + } + } + $this->language = $PHPMAILER_LANG; + return (boolean)$foundlang; // Returns false if language not found + } + + /** + * Get the array of strings for the current language. + * @return array + */ + public function getTranslations() + { + return $this->language; + } + + /** + * Create recipient headers. + * @access public + * @param string $type + * @param array $addr An array of recipient, + * where each recipient is a 2-element indexed array with element 0 containing an address + * and element 1 containing a name, like: + * array(array('joe@example.com', 'Joe User'), array('zoe@example.com', 'Zoe User')) + * @return string + */ + public function addrAppend($type, $addr) + { + $addresses = array(); + foreach ($addr as $address) { + $addresses[] = $this->addrFormat($address); + } + return $type . ': ' . implode(', ', $addresses) . $this->LE; + } + + /** + * Format an address for use in a message header. + * @access public + * @param array $addr A 2-element indexed array, element 0 containing an address, element 1 containing a name + * like array('joe@example.com', 'Joe User') + * @return string + */ + public function addrFormat($addr) + { + if (empty($addr[1])) { // No name provided + return $this->secureHeader($addr[0]); + } else { + return $this->encodeHeader($this->secureHeader($addr[1]), 'phrase') . ' <' . $this->secureHeader( + $addr[0] + ) . '>'; + } + } + + /** + * Word-wrap message. + * For use with mailers that do not automatically perform wrapping + * and for quoted-printable encoded messages. + * Original written by philippe. + * @param string $message The message to wrap + * @param integer $length The line length to wrap to + * @param boolean $qp_mode Whether to run in Quoted-Printable mode + * @access public + * @return string + */ + public function wrapText($message, $length, $qp_mode = false) + { + if ($qp_mode) { + $soft_break = sprintf(' =%s', $this->LE); + } else { + $soft_break = $this->LE; + } + // If utf-8 encoding is used, we will need to make sure we don't + // split multibyte characters when we wrap + $is_utf8 = (strtolower($this->CharSet) == 'utf-8'); + $lelen = strlen($this->LE); + $crlflen = strlen(self::CRLF); + + $message = $this->fixEOL($message); + //Remove a trailing line break + if (substr($message, -$lelen) == $this->LE) { + $message = substr($message, 0, -$lelen); + } + + //Split message into lines + $lines = explode($this->LE, $message); + //Message will be rebuilt in here + $message = ''; + foreach ($lines as $line) { + $words = explode(' ', $line); + $buf = ''; + $firstword = true; + foreach ($words as $word) { + if ($qp_mode and (strlen($word) > $length)) { + $space_left = $length - strlen($buf) - $crlflen; + if (!$firstword) { + if ($space_left > 20) { + $len = $space_left; + if ($is_utf8) { + $len = $this->utf8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == '=') { + $len--; + } elseif (substr($word, $len - 2, 1) == '=') { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + $buf .= ' ' . $part; + $message .= $buf . sprintf('=%s', self::CRLF); + } else { + $message .= $buf . $soft_break; + } + $buf = ''; + } + while (strlen($word) > 0) { + if ($length <= 0) { + break; + } + $len = $length; + if ($is_utf8) { + $len = $this->utf8CharBoundary($word, $len); + } elseif (substr($word, $len - 1, 1) == '=') { + $len--; + } elseif (substr($word, $len - 2, 1) == '=') { + $len -= 2; + } + $part = substr($word, 0, $len); + $word = substr($word, $len); + + if (strlen($word) > 0) { + $message .= $part . sprintf('=%s', self::CRLF); + } else { + $buf = $part; + } + } + } else { + $buf_o = $buf; + if (!$firstword) { + $buf .= ' '; + } + $buf .= $word; + + if (strlen($buf) > $length and $buf_o != '') { + $message .= $buf_o . $soft_break; + $buf = $word; + } + } + $firstword = false; + } + $message .= $buf . self::CRLF; + } + + return $message; + } + + /** + * Find the last character boundary prior to $maxLength in a utf-8 + * quoted-printable encoded string. + * Original written by Colin Brown. + * @access public + * @param string $encodedText utf-8 QP text + * @param integer $maxLength Find the last character boundary prior to this length + * @return integer + */ + public function utf8CharBoundary($encodedText, $maxLength) + { + $foundSplitPos = false; + $lookBack = 3; + while (!$foundSplitPos) { + $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); + $encodedCharPos = strpos($lastChunk, '='); + if (false !== $encodedCharPos) { + // Found start of encoded character byte within $lookBack block. + // Check the encoded byte value (the 2 chars after the '=') + $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); + $dec = hexdec($hex); + if ($dec < 128) { + // Single byte character. + // If the encoded char was found at pos 0, it will fit + // otherwise reduce maxLength to start of the encoded char + if ($encodedCharPos > 0) { + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + } + $foundSplitPos = true; + } elseif ($dec >= 192) { + // First byte of a multi byte character + // Reduce maxLength to split at start of character + $maxLength = $maxLength - ($lookBack - $encodedCharPos); + $foundSplitPos = true; + } elseif ($dec < 192) { + // Middle byte of a multi byte character, look further back + $lookBack += 3; + } + } else { + // No encoded character found + $foundSplitPos = true; + } + } + return $maxLength; + } + + /** + * Apply word wrapping to the message body. + * Wraps the message body to the number of chars set in the WordWrap property. + * You should only do this to plain-text bodies as wrapping HTML tags may break them. + * This is called automatically by createBody(), so you don't need to call it yourself. + * @access public + * @return void + */ + public function setWordWrap() + { + if ($this->WordWrap < 1) { + return; + } + + switch ($this->message_type) { + case 'alt': + case 'alt_inline': + case 'alt_attach': + case 'alt_inline_attach': + $this->AltBody = $this->wrapText($this->AltBody, $this->WordWrap); + break; + default: + $this->Body = $this->wrapText($this->Body, $this->WordWrap); + break; + } + } + + /** + * Assemble message headers. + * @access public + * @return string The assembled headers + */ + public function createHeader() + { + $result = ''; + + if ($this->MessageDate == '') { + $this->MessageDate = self::rfcDate(); + } + $result .= $this->headerLine('Date', $this->MessageDate); + + // To be created automatically by mail() + if ($this->SingleTo) { + if ($this->Mailer != 'mail') { + foreach ($this->to as $toaddr) { + $this->SingleToArray[] = $this->addrFormat($toaddr); + } + } + } else { + if (count($this->to) > 0) { + if ($this->Mailer != 'mail') { + $result .= $this->addrAppend('To', $this->to); + } + } elseif (count($this->cc) == 0) { + $result .= $this->headerLine('To', 'undisclosed-recipients:;'); + } + } + + $result .= $this->addrAppend('From', array(array(trim($this->From), $this->FromName))); + + // sendmail and mail() extract Cc from the header before sending + if (count($this->cc) > 0) { + $result .= $this->addrAppend('Cc', $this->cc); + } + + // sendmail and mail() extract Bcc from the header before sending + if (( + $this->Mailer == 'sendmail' or $this->Mailer == 'qmail' or $this->Mailer == 'mail' + ) + and count($this->bcc) > 0 + ) { + $result .= $this->addrAppend('Bcc', $this->bcc); + } + + if (count($this->ReplyTo) > 0) { + $result .= $this->addrAppend('Reply-To', $this->ReplyTo); + } + + // mail() sets the subject itself + if ($this->Mailer != 'mail') { + $result .= $this->headerLine('Subject', $this->encodeHeader($this->secureHeader($this->Subject))); + } + + // Only allow a custom message ID if it conforms to RFC 5322 section 3.6.4 + // https://tools.ietf.org/html/rfc5322#section-3.6.4 + if ('' != $this->MessageID and preg_match('/^<.*@.*>$/', $this->MessageID)) { + $this->lastMessageID = $this->MessageID; + } else { + $this->lastMessageID = sprintf('<%s@%s>', $this->uniqueid, $this->serverHostname()); + } + $result .= $this->headerLine('Message-ID', $this->lastMessageID); + if (!is_null($this->Priority)) { + $result .= $this->headerLine('X-Priority', $this->Priority); + } + if ($this->XMailer == '') { + $result .= $this->headerLine( + 'X-Mailer', + 'PHPMailer ' . $this->Version . ' (https://github.com/PHPMailer/PHPMailer)' + ); + } else { + $myXmailer = trim($this->XMailer); + if ($myXmailer) { + $result .= $this->headerLine('X-Mailer', $myXmailer); + } + } + + if ($this->ConfirmReadingTo != '') { + $result .= $this->headerLine('Disposition-Notification-To', '<' . $this->ConfirmReadingTo . '>'); + } + + // Add custom headers + foreach ($this->CustomHeader as $header) { + $result .= $this->headerLine( + trim($header[0]), + $this->encodeHeader(trim($header[1])) + ); + } + if (!$this->sign_key_file) { + $result .= $this->headerLine('MIME-Version', '1.0'); + $result .= $this->getMailMIME(); + } + + return $result; + } + + /** + * Get the message MIME type headers. + * @access public + * @return string + */ + public function getMailMIME() + { + $result = ''; + $ismultipart = true; + switch ($this->message_type) { + case 'inline': + $result .= $this->headerLine('Content-Type', 'multipart/related;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'attach': + case 'inline_attach': + case 'alt_attach': + case 'alt_inline_attach': + $result .= $this->headerLine('Content-Type', 'multipart/mixed;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + case 'alt': + case 'alt_inline': + $result .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $result .= $this->textLine("\tboundary=\"" . $this->boundary[1] . '"'); + break; + default: + // Catches case 'plain': and case '': + $result .= $this->textLine('Content-Type: ' . $this->ContentType . '; charset=' . $this->CharSet); + $ismultipart = false; + break; + } + // RFC1341 part 5 says 7bit is assumed if not specified + if ($this->Encoding != '7bit') { + // RFC 2045 section 6.4 says multipart MIME parts may only use 7bit, 8bit or binary CTE + if ($ismultipart) { + if ($this->Encoding == '8bit') { + $result .= $this->headerLine('Content-Transfer-Encoding', '8bit'); + } + // The only remaining alternatives are quoted-printable and base64, which are both 7bit compatible + } else { + $result .= $this->headerLine('Content-Transfer-Encoding', $this->Encoding); + } + } + + if ($this->Mailer != 'mail') { + $result .= $this->LE; + } + + return $result; + } + + /** + * Returns the whole MIME message. + * Includes complete headers and body. + * Only valid post preSend(). + * @see PHPMailer::preSend() + * @access public + * @return string + */ + public function getSentMIMEMessage() + { + return rtrim($this->MIMEHeader . $this->mailHeader, "\n\r") . self::CRLF . self::CRLF . $this->MIMEBody; + } + + /** + * Create unique ID + * @return string + */ + protected function generateId() { + return md5(uniqid(time())); + } + + /** + * Assemble the message body. + * Returns an empty string on failure. + * @access public + * @throws phpmailerException + * @return string The assembled message body + */ + public function createBody() + { + $body = ''; + //Create unique IDs and preset boundaries + $this->uniqueid = $this->generateId(); + $this->boundary[1] = 'b1_' . $this->uniqueid; + $this->boundary[2] = 'b2_' . $this->uniqueid; + $this->boundary[3] = 'b3_' . $this->uniqueid; + + if ($this->sign_key_file) { + $body .= $this->getMailMIME() . $this->LE; + } + + $this->setWordWrap(); + + $bodyEncoding = $this->Encoding; + $bodyCharSet = $this->CharSet; + //Can we do a 7-bit downgrade? + if ($bodyEncoding == '8bit' and !$this->has8bitChars($this->Body)) { + $bodyEncoding = '7bit'; + //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit + $bodyCharSet = 'us-ascii'; + } + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding for the body part only + if ('base64' != $this->Encoding and self::hasLineLongerThanMax($this->Body)) { + $bodyEncoding = 'quoted-printable'; + } + + $altBodyEncoding = $this->Encoding; + $altBodyCharSet = $this->CharSet; + //Can we do a 7-bit downgrade? + if ($altBodyEncoding == '8bit' and !$this->has8bitChars($this->AltBody)) { + $altBodyEncoding = '7bit'; + //All ISO 8859, Windows codepage and UTF-8 charsets are ascii compatible up to 7-bit + $altBodyCharSet = 'us-ascii'; + } + //If lines are too long, and we're not already using an encoding that will shorten them, + //change to quoted-printable transfer encoding for the alt body part only + if ('base64' != $altBodyEncoding and self::hasLineLongerThanMax($this->AltBody)) { + $altBodyEncoding = 'quoted-printable'; + } + //Use this as a preamble in all multipart message types + $mimepre = "This is a multi-part message in MIME format." . $this->LE . $this->LE; + switch ($this->message_type) { + case 'inline': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[1]); + break; + case 'attach': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'inline_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, '', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'alt': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->getBoundary($this->boundary[1], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + if (!empty($this->Ical)) { + $body .= $this->getBoundary($this->boundary[1], '', 'text/calendar; method=REQUEST', ''); + $body .= $this->encodeString($this->Ical, $this->Encoding); + $body .= $this->LE . $this->LE; + } + $body .= $this->endBoundary($this->boundary[1]); + break; + case 'alt_inline': + $body .= $mimepre; + $body .= $this->getBoundary($this->boundary[1], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[2]); + $body .= $this->LE; + $body .= $this->endBoundary($this->boundary[1]); + break; + case 'alt_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->getBoundary($this->boundary[2], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->endBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + case 'alt_inline_attach': + $body .= $mimepre; + $body .= $this->textLine('--' . $this->boundary[1]); + $body .= $this->headerLine('Content-Type', 'multipart/alternative;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[2] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[2], $altBodyCharSet, 'text/plain', $altBodyEncoding); + $body .= $this->encodeString($this->AltBody, $altBodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->textLine('--' . $this->boundary[2]); + $body .= $this->headerLine('Content-Type', 'multipart/related;'); + $body .= $this->textLine("\tboundary=\"" . $this->boundary[3] . '"'); + $body .= $this->LE; + $body .= $this->getBoundary($this->boundary[3], $bodyCharSet, 'text/html', $bodyEncoding); + $body .= $this->encodeString($this->Body, $bodyEncoding); + $body .= $this->LE . $this->LE; + $body .= $this->attachAll('inline', $this->boundary[3]); + $body .= $this->LE; + $body .= $this->endBoundary($this->boundary[2]); + $body .= $this->LE; + $body .= $this->attachAll('attachment', $this->boundary[1]); + break; + default: + // Catch case 'plain' and case '', applies to simple `text/plain` and `text/html` body content types + //Reset the `Encoding` property in case we changed it for line length reasons + $this->Encoding = $bodyEncoding; + $body .= $this->encodeString($this->Body, $this->Encoding); + break; + } + + if ($this->isError()) { + $body = ''; + } elseif ($this->sign_key_file) { + try { + if (!defined('PKCS7_TEXT')) { + throw new phpmailerException($this->lang('extension_missing') . 'openssl'); + } + // @TODO would be nice to use php://temp streams here, but need to wrap for PHP < 5.1 + $file = tempnam(sys_get_temp_dir(), 'mail'); + if (false === file_put_contents($file, $body)) { + throw new phpmailerException($this->lang('signing') . ' Could not write temp file'); + } + $signed = tempnam(sys_get_temp_dir(), 'signed'); + //Workaround for PHP bug https://bugs.php.net/bug.php?id=69197 + if (empty($this->sign_extracerts_file)) { + $sign = @openssl_pkcs7_sign( + $file, + $signed, + 'file://' . realpath($this->sign_cert_file), + array('file://' . realpath($this->sign_key_file), $this->sign_key_pass), + null + ); + } else { + $sign = @openssl_pkcs7_sign( + $file, + $signed, + 'file://' . realpath($this->sign_cert_file), + array('file://' . realpath($this->sign_key_file), $this->sign_key_pass), + null, + PKCS7_DETACHED, + $this->sign_extracerts_file + ); + } + if ($sign) { + @unlink($file); + $body = file_get_contents($signed); + @unlink($signed); + //The message returned by openssl contains both headers and body, so need to split them up + $parts = explode("\n\n", $body, 2); + $this->MIMEHeader .= $parts[0] . $this->LE . $this->LE; + $body = $parts[1]; + } else { + @unlink($file); + @unlink($signed); + throw new phpmailerException($this->lang('signing') . openssl_error_string()); + } + } catch (phpmailerException $exc) { + $body = ''; + if ($this->exceptions) { + throw $exc; + } + } + } + return $body; + } + + /** + * Return the start of a message boundary. + * @access protected + * @param string $boundary + * @param string $charSet + * @param string $contentType + * @param string $encoding + * @return string + */ + protected function getBoundary($boundary, $charSet, $contentType, $encoding) + { + $result = ''; + if ($charSet == '') { + $charSet = $this->CharSet; + } + if ($contentType == '') { + $contentType = $this->ContentType; + } + if ($encoding == '') { + $encoding = $this->Encoding; + } + $result .= $this->textLine('--' . $boundary); + $result .= sprintf('Content-Type: %s; charset=%s', $contentType, $charSet); + $result .= $this->LE; + // RFC1341 part 5 says 7bit is assumed if not specified + if ($encoding != '7bit') { + $result .= $this->headerLine('Content-Transfer-Encoding', $encoding); + } + $result .= $this->LE; + + return $result; + } + + /** + * Return the end of a message boundary. + * @access protected + * @param string $boundary + * @return string + */ + protected function endBoundary($boundary) + { + return $this->LE . '--' . $boundary . '--' . $this->LE; + } + + /** + * Set the message type. + * PHPMailer only supports some preset message types, not arbitrary MIME structures. + * @access protected + * @return void + */ + protected function setMessageType() + { + $type = array(); + if ($this->alternativeExists()) { + $type[] = 'alt'; + } + if ($this->inlineImageExists()) { + $type[] = 'inline'; + } + if ($this->attachmentExists()) { + $type[] = 'attach'; + } + $this->message_type = implode('_', $type); + if ($this->message_type == '') { + //The 'plain' message_type refers to the message having a single body element, not that it is plain-text + $this->message_type = 'plain'; + } + } + + /** + * Format a header line. + * @access public + * @param string $name + * @param string $value + * @return string + */ + public function headerLine($name, $value) + { + return $name . ': ' . $value . $this->LE; + } + + /** + * Return a formatted mail line. + * @access public + * @param string $value + * @return string + */ + public function textLine($value) + { + return $value . $this->LE; + } + + /** + * Add an attachment from a path on the filesystem. + * Returns false if the file could not be found or read. + * @param string $path Path to the attachment. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @param string $disposition Disposition to use + * @throws phpmailerException + * @return boolean + */ + public function addAttachment($path, $name = '', $encoding = 'base64', $type = '', $disposition = 'attachment') + { + try { + if (!@is_file($path)) { + throw new phpmailerException($this->lang('file_access') . $path, self::STOP_CONTINUE); + } + + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($path); + } + + $filename = basename($path); + if ($name == '') { + $name = $filename; + } + + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => $disposition, + 7 => 0 + ); + + } catch (phpmailerException $exc) { + $this->setError($exc->getMessage()); + $this->edebug($exc->getMessage()); + if ($this->exceptions) { + throw $exc; + } + return false; + } + return true; + } + + /** + * Return the array of attachments. + * @return array + */ + public function getAttachments() + { + return $this->attachment; + } + + /** + * Attach all file, string, and binary attachments to the message. + * Returns an empty string on failure. + * @access protected + * @param string $disposition_type + * @param string $boundary + * @return string + */ + protected function attachAll($disposition_type, $boundary) + { + // Return text of body + $mime = array(); + $cidUniq = array(); + $incl = array(); + + // Add all attachments + foreach ($this->attachment as $attachment) { + // Check if it is a valid disposition_filter + if ($attachment[6] == $disposition_type) { + // Check for string attachment + $string = ''; + $path = ''; + $bString = $attachment[5]; + if ($bString) { + $string = $attachment[0]; + } else { + $path = $attachment[0]; + } + + $inclhash = md5(serialize($attachment)); + if (in_array($inclhash, $incl)) { + continue; + } + $incl[] = $inclhash; + $name = $attachment[2]; + $encoding = $attachment[3]; + $type = $attachment[4]; + $disposition = $attachment[6]; + $cid = $attachment[7]; + if ($disposition == 'inline' && array_key_exists($cid, $cidUniq)) { + continue; + } + $cidUniq[$cid] = true; + + $mime[] = sprintf('--%s%s', $boundary, $this->LE); + //Only include a filename property if we have one + if (!empty($name)) { + $mime[] = sprintf( + 'Content-Type: %s; name="%s"%s', + $type, + $this->encodeHeader($this->secureHeader($name)), + $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Type: %s%s', + $type, + $this->LE + ); + } + // RFC1341 part 5 says 7bit is assumed if not specified + if ($encoding != '7bit') { + $mime[] = sprintf('Content-Transfer-Encoding: %s%s', $encoding, $this->LE); + } + + if ($disposition == 'inline') { + $mime[] = sprintf('Content-ID: <%s>%s', $cid, $this->LE); + } + + // If a filename contains any of these chars, it should be quoted, + // but not otherwise: RFC2183 & RFC2045 5.1 + // Fixes a warning in IETF's msglint MIME checker + // Allow for bypassing the Content-Disposition header totally + if (!(empty($disposition))) { + $encoded_name = $this->encodeHeader($this->secureHeader($name)); + if (preg_match('/[ \(\)<>@,;:\\"\/\[\]\?=]/', $encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename="%s"%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + if (!empty($encoded_name)) { + $mime[] = sprintf( + 'Content-Disposition: %s; filename=%s%s', + $disposition, + $encoded_name, + $this->LE . $this->LE + ); + } else { + $mime[] = sprintf( + 'Content-Disposition: %s%s', + $disposition, + $this->LE . $this->LE + ); + } + } + } else { + $mime[] = $this->LE; + } + + // Encode as string attachment + if ($bString) { + $mime[] = $this->encodeString($string, $encoding); + if ($this->isError()) { + return ''; + } + $mime[] = $this->LE . $this->LE; + } else { + $mime[] = $this->encodeFile($path, $encoding); + if ($this->isError()) { + return ''; + } + $mime[] = $this->LE . $this->LE; + } + } + } + + $mime[] = sprintf('--%s--%s', $boundary, $this->LE); + + return implode('', $mime); + } + + /** + * Encode a file attachment in requested format. + * Returns an empty string on failure. + * @param string $path The full path to the file + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @throws phpmailerException + * @access protected + * @return string + */ + protected function encodeFile($path, $encoding = 'base64') + { + try { + if (!is_readable($path)) { + throw new phpmailerException($this->lang('file_open') . $path, self::STOP_CONTINUE); + } + $magic_quotes = get_magic_quotes_runtime(); + if ($magic_quotes) { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime(false); + } else { + //Doesn't exist in PHP 5.4, but we don't need to check because + //get_magic_quotes_runtime always returns false in 5.4+ + //so it will never get here + ini_set('magic_quotes_runtime', false); + } + } + $file_buffer = file_get_contents($path); + $file_buffer = $this->encodeString($file_buffer, $encoding); + if ($magic_quotes) { + if (version_compare(PHP_VERSION, '5.3.0', '<')) { + set_magic_quotes_runtime($magic_quotes); + } else { + ini_set('magic_quotes_runtime', $magic_quotes); + } + } + return $file_buffer; + } catch (Exception $exc) { + $this->setError($exc->getMessage()); + return ''; + } + } + + /** + * Encode a string in requested format. + * Returns an empty string on failure. + * @param string $str The text to encode + * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' + * @access public + * @return string + */ + public function encodeString($str, $encoding = 'base64') + { + $encoded = ''; + switch (strtolower($encoding)) { + case 'base64': + $encoded = chunk_split(base64_encode($str), 76, $this->LE); + break; + case '7bit': + case '8bit': + $encoded = $this->fixEOL($str); + // Make sure it ends with a line break + if (substr($encoded, -(strlen($this->LE))) != $this->LE) { + $encoded .= $this->LE; + } + break; + case 'binary': + $encoded = $str; + break; + case 'quoted-printable': + $encoded = $this->encodeQP($str); + break; + default: + $this->setError($this->lang('encoding') . $encoding); + break; + } + return $encoded; + } + + /** + * Encode a header string optimally. + * Picks shortest of Q, B, quoted-printable or none. + * @access public + * @param string $str + * @param string $position + * @return string + */ + public function encodeHeader($str, $position = 'text') + { + $matchcount = 0; + switch (strtolower($position)) { + case 'phrase': + if (!preg_match('/[\200-\377]/', $str)) { + // Can't use addslashes as we don't know the value of magic_quotes_sybase + $encoded = addcslashes($str, "\0..\37\177\\\""); + if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { + return ($encoded); + } else { + return ("\"$encoded\""); + } + } + $matchcount = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); + break; + /** @noinspection PhpMissingBreakStatementInspection */ + case 'comment': + $matchcount = preg_match_all('/[()"]/', $str, $matches); + // Intentional fall-through + case 'text': + default: + $matchcount += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); + break; + } + + //There are no chars that need encoding + if ($matchcount == 0) { + return ($str); + } + + $maxlen = 75 - 7 - strlen($this->CharSet); + // Try to select the encoding which should produce the shortest output + if ($matchcount > strlen($str) / 3) { + // More than a third of the content will need encoding, so B encoding will be most efficient + $encoding = 'B'; + if (function_exists('mb_strlen') && $this->hasMultiBytes($str)) { + // Use a custom function which correctly encodes and wraps long + // multibyte strings without breaking lines within a character + $encoded = $this->base64EncodeWrapMB($str, "\n"); + } else { + $encoded = base64_encode($str); + $maxlen -= $maxlen % 4; + $encoded = trim(chunk_split($encoded, $maxlen, "\n")); + } + } else { + $encoding = 'Q'; + $encoded = $this->encodeQ($str, $position); + $encoded = $this->wrapText($encoded, $maxlen, true); + $encoded = str_replace('=' . self::CRLF, "\n", trim($encoded)); + } + + $encoded = preg_replace('/^(.*)$/m', ' =?' . $this->CharSet . "?$encoding?\\1?=", $encoded); + $encoded = trim(str_replace("\n", $this->LE, $encoded)); + + return $encoded; + } + + /** + * Check if a string contains multi-byte characters. + * @access public + * @param string $str multi-byte text to wrap encode + * @return boolean + */ + public function hasMultiBytes($str) + { + if (function_exists('mb_strlen')) { + return (strlen($str) > mb_strlen($str, $this->CharSet)); + } else { // Assume no multibytes (we can't handle without mbstring functions anyway) + return false; + } + } + + /** + * Does a string contain any 8-bit chars (in any charset)? + * @param string $text + * @return boolean + */ + public function has8bitChars($text) + { + return (boolean)preg_match('/[\x80-\xFF]/', $text); + } + + /** + * Encode and wrap long multibyte strings for mail headers + * without breaking lines within a character. + * Adapted from a function by paravoid + * @link http://www.php.net/manual/en/function.mb-encode-mimeheader.php#60283 + * @access public + * @param string $str multi-byte text to wrap encode + * @param string $linebreak string to use as linefeed/end-of-line + * @return string + */ + public function base64EncodeWrapMB($str, $linebreak = null) + { + $start = '=?' . $this->CharSet . '?B?'; + $end = '?='; + $encoded = ''; + if ($linebreak === null) { + $linebreak = $this->LE; + } + + $mb_length = mb_strlen($str, $this->CharSet); + // Each line must have length <= 75, including $start and $end + $length = 75 - strlen($start) - strlen($end); + // Average multi-byte ratio + $ratio = $mb_length / strlen($str); + // Base64 has a 4:3 ratio + $avgLength = floor($length * $ratio * .75); + + for ($i = 0; $i < $mb_length; $i += $offset) { + $lookBack = 0; + do { + $offset = $avgLength - $lookBack; + $chunk = mb_substr($str, $i, $offset, $this->CharSet); + $chunk = base64_encode($chunk); + $lookBack++; + } while (strlen($chunk) > $length); + $encoded .= $chunk . $linebreak; + } + + // Chomp the last linefeed + $encoded = substr($encoded, 0, -strlen($linebreak)); + return $encoded; + } + + /** + * Encode a string in quoted-printable format. + * According to RFC2045 section 6.7. + * @access public + * @param string $string The text to encode + * @param integer $line_max Number of chars allowed on a line before wrapping + * @return string + * @link http://www.php.net/manual/en/function.quoted-printable-decode.php#89417 Adapted from this comment + */ + public function encodeQP($string, $line_max = 76) + { + // Use native function if it's available (>= PHP5.3) + if (function_exists('quoted_printable_encode')) { + return quoted_printable_encode($string); + } + // Fall back to a pure PHP implementation + $string = str_replace( + array('%20', '%0D%0A.', '%0D%0A', '%'), + array(' ', "\r\n=2E", "\r\n", '='), + rawurlencode($string) + ); + return preg_replace('/[^\r\n]{' . ($line_max - 3) . '}[^=\r\n]{2}/', "$0=\r\n", $string); + } + + /** + * Backward compatibility wrapper for an old QP encoding function that was removed. + * @see PHPMailer::encodeQP() + * @access public + * @param string $string + * @param integer $line_max + * @param boolean $space_conv + * @return string + * @deprecated Use encodeQP instead. + */ + public function encodeQPphp( + $string, + $line_max = 76, + /** @noinspection PhpUnusedParameterInspection */ $space_conv = false + ) { + return $this->encodeQP($string, $line_max); + } + + /** + * Encode a string using Q encoding. + * @link http://tools.ietf.org/html/rfc2047 + * @param string $str the text to encode + * @param string $position Where the text is going to be used, see the RFC for what that means + * @access public + * @return string + */ + public function encodeQ($str, $position = 'text') + { + // There should not be any EOL in the string + $pattern = ''; + $encoded = str_replace(array("\r", "\n"), '', $str); + switch (strtolower($position)) { + case 'phrase': + // RFC 2047 section 5.3 + $pattern = '^A-Za-z0-9!*+\/ -'; + break; + /** @noinspection PhpMissingBreakStatementInspection */ + case 'comment': + // RFC 2047 section 5.2 + $pattern = '\(\)"'; + // intentional fall-through + // for this reason we build the $pattern without including delimiters and [] + case 'text': + default: + // RFC 2047 section 5.1 + // Replace every high ascii, control, =, ? and _ characters + $pattern = '\000-\011\013\014\016-\037\075\077\137\177-\377' . $pattern; + break; + } + $matches = array(); + if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { + // If the string contains an '=', make sure it's the first thing we replace + // so as to avoid double-encoding + $eqkey = array_search('=', $matches[0]); + if (false !== $eqkey) { + unset($matches[0][$eqkey]); + array_unshift($matches[0], '='); + } + foreach (array_unique($matches[0]) as $char) { + $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); + } + } + // Replace every spaces to _ (more readable than =20) + return str_replace(' ', '_', $encoded); + } -/** - * PHPMailer - PHP email creation and transport class - * NOTE: Requires PHP version 5 or later - * @package PHPMailer - * @author Andy Prevost - * @author Marcus Bointon - * @author Jim Jagielski - * @copyright 2010 - 2012 Jim Jagielski - * @copyright 2004 - 2009 Andy Prevost - * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License - */ + /** + * Add a string or binary attachment (non-filesystem). + * This method can be used to attach ascii or binary data, + * such as a BLOB record from a database. + * @param string $string String attachment data. + * @param string $filename Name of the attachment. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File extension (MIME) type. + * @param string $disposition Disposition to use + * @return void + */ + public function addStringAttachment( + $string, + $filename, + $encoding = 'base64', + $type = '', + $disposition = 'attachment' + ) { + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($filename); + } + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $filename, + 2 => basename($filename), + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => $disposition, + 7 => 0 + ); + } -if (version_compare(PHP_VERSION, '5.0.0', '<') ) exit("Sorry, this version of PHPMailer will only run on PHP version 5 or greater!\n"); + /** + * Add an embedded (inline) attachment from a file. + * This can include images, sounds, and just about any other document type. + * These differ from 'regular' attachments in that they are intended to be + * displayed inline with the message, not just attached for download. + * This is used in HTML messages that embed the images + * the HTML refers to using the $cid value. + * @param string $path Path to the attachment. + * @param string $cid Content ID of the attachment; Use this to reference + * the content when using an embedded image in HTML. + * @param string $name Overrides the attachment name. + * @param string $encoding File encoding (see $Encoding). + * @param string $type File MIME type. + * @param string $disposition Disposition to use + * @return boolean True on successfully adding an attachment + */ + public function addEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = '', $disposition = 'inline') + { + if (!@is_file($path)) { + $this->setError($this->lang('file_access') . $path); + return false; + } -/** - * PHP email creation and transport class - * @package PHPMailer - */ -class PHPMailer { - - ///////////////////////////////////////////////// - // PROPERTIES, PUBLIC - ///////////////////////////////////////////////// - - /** - * Email priority (1 = High, 3 = Normal, 5 = low). - * @var int - */ - public $Priority = 3; - - /** - * Sets the CharSet of the message. - * @var string - */ - public $CharSet = 'utf-8'; - - /** - * Sets the Content-type of the message. - * @var string - */ - public $ContentType = 'text/plain'; - - /** - * Sets the Encoding of the message. Options for this are - * "8bit", "7bit", "binary", "base64", and "quoted-printable". - * @var string - */ - public $Encoding = '8bit'; - - /** - * Holds the most recent mailer error message. - * @var string - */ - public $ErrorInfo = ''; - - /** - * Sets the From email address for the message. - * @var string - */ - public $From = 'root@localhost'; - - /** - * Sets the From name of the message. - * @var string - */ - public $FromName = 'Root User'; - - /** - * Sets the Sender email (Return-Path) of the message. If not empty, - * will be sent via -f to sendmail or as 'MAIL FROM' in smtp mode. - * @var string - */ - public $Sender = ''; - - /** - * Sets the Return-Path of the message. If empty, it will - * be set to either From or Sender. - * @var string - */ - public $ReturnPath = ''; - - /** - * Sets the Subject of the message. - * @var string - */ - public $Subject = ''; - - /** - * Sets the Body of the message. This can be either an HTML or text body. - * If HTML then run IsHTML(true). - * @var string - */ - public $Body = ''; - - /** - * Sets the text-only body of the message. This automatically sets the - * email to multipart/alternative. This body can be read by mail - * clients that do not have HTML email capability such as mutt. Clients - * that can read HTML will view the normal Body. - * @var string - */ - public $AltBody = ''; - - /** - * Stores the complete compiled MIME message body. - * @var string - * @access protected - */ - protected $MIMEBody = ''; - - /** - * Stores the complete compiled MIME message headers. - * @var string - * @access protected - */ - protected $MIMEHeader = ''; - - /** - * Stores the extra header list which CreateHeader() doesn't fold in - * @var string - * @access protected - */ - protected $mailHeader = ''; - - /** - * Sets word wrapping on the body of the message to a given number of - * characters. - * @var int - */ - public $WordWrap = 0; - - /** - * Method to send mail: ("mail", "sendmail", or "smtp"). - * @var string - */ - public $Mailer = 'mail'; - - /** - * Sets the path of the sendmail program. - * @var string - */ - public $Sendmail = '/usr/sbin/sendmail'; - - /** - * Determine if mail() uses a fully sendmail compatible MTA that - * supports sendmail's "-oi -f" options - * @var boolean - */ - public $UseSendmailOptions = true; - - /** - * Path to PHPMailer plugins. Useful if the SMTP class - * is in a different directory than the PHP include path. - * @var string - */ - public $PluginDir = ''; - - /** - * Sets the email address that a reading confirmation will be sent. - * @var string - */ - public $ConfirmReadingTo = ''; - - /** - * Sets the hostname to use in Message-Id and Received headers - * and as default HELO string. If empty, the value returned - * by SERVER_NAME is used or 'localhost.localdomain'. - * @var string - */ - public $Hostname = ''; - - /** - * Sets the message ID to be used in the Message-Id header. - * If empty, a unique id will be generated. - * @var string - */ - public $MessageID = ''; - - /** - * Sets the message Date to be used in the Date header. - * If empty, the current date will be added. - * @var string - */ - public $MessageDate = ''; - - ///////////////////////////////////////////////// - // PROPERTIES FOR SMTP - ///////////////////////////////////////////////// - - /** - * Sets the SMTP hosts. - * - * All hosts must be separated by a - * semicolon. You can also specify a different port - * for each host by using this format: [hostname:port] - * (e.g. "smtp1.example.com:25;smtp2.example.com"). - * Hosts will be tried in order. - * @var string - */ - public $Host = 'localhost'; - - /** - * Sets the default SMTP server port. - * @var int - */ - public $Port = 25; - - /** - * Sets the SMTP HELO of the message (Default is $Hostname). - * @var string - */ - public $Helo = ''; - - /** - * Sets connection prefix. Options are "", "ssl" or "tls" - * @var string - */ - public $SMTPSecure = ''; - - /** - * Sets SMTP authentication. Utilizes the Username and Password variables. - * @var bool - */ - public $SMTPAuth = false; - - /** - * Sets SMTP username. - * @var string - */ - public $Username = ''; - - /** - * Sets SMTP password. - * @var string - */ - public $Password = ''; - - /** - * Sets SMTP auth type. Options are LOGIN | PLAIN | NTLM | CRAM-MD5 (default LOGIN) - * @var string - */ - public $AuthType = ''; - - /** - * Sets SMTP realm. - * @var string - */ - public $Realm = ''; - - /** - * Sets SMTP workstation. - * @var string - */ - public $Workstation = ''; - - /** - * Sets the SMTP server timeout in seconds. - * This function will not work with the win32 version. - * @var int - */ - public $Timeout = 10; - - /** - * Sets SMTP class debugging on or off. - * @var bool - */ - public $SMTPDebug = false; - - /** - * Sets the function/method to use for debugging output. - * Right now we only honor "echo" or "error_log" - * @var string - */ - public $Debugoutput = "echo"; - - /** - * Prevents the SMTP connection from being closed after each mail - * sending. If this is set to true then to close the connection - * requires an explicit call to SmtpClose(). - * @var bool - */ - public $SMTPKeepAlive = false; - - /** - * Provides the ability to have the TO field process individual - * emails, instead of sending to entire TO addresses - * @var bool - */ - public $SingleTo = false; - - /** - * Should we generate VERP addresses when sending via SMTP? - * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path - * @var bool - */ - public $do_verp = false; - - /** - * If SingleTo is true, this provides the array to hold the email addresses - * @var bool - */ - public $SingleToArray = array(); - - /** - * Should we allow sending messages with empty body? - * @var bool - */ - public $AllowEmpty = false; - - /** - * Provides the ability to change the generic line ending - * NOTE: The default remains '\n'. We force CRLF where we KNOW - * it must be used via self::CRLF - * @var string - */ - public $LE = "\n"; - - /** - * Used with DKIM Signing - * required parameter if DKIM is enabled - * - * domain selector example domainkey - * @var string - */ - public $DKIM_selector = ''; - - /** - * Used with DKIM Signing - * required if DKIM is enabled, in format of email address 'you@yourdomain.com' typically used as the source of the email - * @var string - */ - public $DKIM_identity = ''; - - /** - * Used with DKIM Signing - * optional parameter if your private key requires a passphras - * @var string - */ - public $DKIM_passphrase = ''; - - /** - * Used with DKIM Singing - * required if DKIM is enabled, in format of email address 'domain.com' - * @var string - */ - public $DKIM_domain = ''; - - /** - * Used with DKIM Signing - * required if DKIM is enabled, path to private key file - * @var string - */ - public $DKIM_private = ''; - - /** - * Callback Action function name. - * The function that handles the result of the send email action. - * It is called out by Send() for each email sent. - * - * Value can be: - * - 'function_name' for function names - * - 'Class::Method' for static method calls - * - array($object, 'Method') for calling methods on $object - * See http://php.net/is_callable manual page for more details. - * - * Parameters: - * bool $result result of the send action - * string $to email address of the recipient - * string $cc cc email addresses - * string $bcc bcc email addresses - * string $subject the subject - * string $body the email body - * string $from email address of sender - * @var string - */ - public $action_function = ''; //'callbackAction'; - - /** - * Sets the PHPMailer Version number - * @var string - */ - public $Version = '5.2.6'; - - /** - * What to use in the X-Mailer header - * @var string NULL for default, whitespace for None, or actual string to use - */ - public $XMailer = ''; - - ///////////////////////////////////////////////// - // PROPERTIES, PRIVATE AND PROTECTED - ///////////////////////////////////////////////// - - /** - * @var SMTP An instance of the SMTP sender class - * @access protected - */ - protected $smtp = null; - /** - * @var array An array of 'to' addresses - * @access protected - */ - protected $to = array(); - /** - * @var array An array of 'cc' addresses - * @access protected - */ - protected $cc = array(); - /** - * @var array An array of 'bcc' addresses - * @access protected - */ - protected $bcc = array(); - /** - * @var array An array of reply-to name and address - * @access protected - */ - protected $ReplyTo = array(); - /** - * @var array An array of all kinds of addresses: to, cc, bcc, replyto - * @access protected - */ - protected $all_recipients = array(); - /** - * @var array An array of attachments - * @access protected - */ - protected $attachment = array(); - /** - * @var array An array of custom headers - * @access protected - */ - protected $CustomHeader = array(); - /** - * @var string The message's MIME type - * @access protected - */ - protected $message_type = ''; - /** - * @var array An array of MIME boundary strings - * @access protected - */ - protected $boundary = array(); - /** - * @var array An array of available languages - * @access protected - */ - protected $language = array(); - /** - * @var integer The number of errors encountered - * @access protected - */ - protected $error_count = 0; - /** - * @var string The filename of a DKIM certificate file - * @access protected - */ - protected $sign_cert_file = ''; - /** - * @var string The filename of a DKIM key file - * @access protected - */ - protected $sign_key_file = ''; - /** - * @var string The password of a DKIM key - * @access protected - */ - protected $sign_key_pass = ''; - /** - * @var boolean Whether to throw exceptions for errors - * @access protected - */ - protected $exceptions = false; - - ///////////////////////////////////////////////// - // CONSTANTS - ///////////////////////////////////////////////// - - const STOP_MESSAGE = 0; // message only, continue processing - const STOP_CONTINUE = 1; // message?, likely ok to continue processing - const STOP_CRITICAL = 2; // message, plus full stop, critical error reached - const CRLF = "\r\n"; // SMTP RFC specified EOL - - ///////////////////////////////////////////////// - // METHODS, VARIABLES - ///////////////////////////////////////////////// - - /** - * Calls actual mail() function, but in a safe_mode aware fashion - * Also, unless sendmail_path points to sendmail (or something that - * claims to be sendmail), don't pass params (not a perfect fix, - * but it will do) - * @param string $to To - * @param string $subject Subject - * @param string $body Message Body - * @param string $header Additional Header(s) - * @param string $params Params - * @access private - * @return bool - */ - private function mail_passthru($to, $subject, $body, $header, $params) { - if ( ini_get('safe_mode') || !($this->UseSendmailOptions) ) { - $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($subject)), $body, $header); - } else { - $rt = @mail($to, $this->EncodeHeader($this->SecureHeader($subject)), $body, $header, $params); - } - return $rt; - } - - /** - * Outputs debugging info via user-defined method - * @param string $str - */ - private function edebug($str) { - if ($this->Debugoutput == "error_log") { - error_log($str); - } else { - echo $str; - } - } - - /** - * Constructor - * @param boolean $exceptions Should we throw external exceptions? - */ - public function __construct($exceptions = false) { - $this->exceptions = ($exceptions == true); - } - - /** - * Destructor - */ - public function __destruct() { - if ($this->Mailer == 'smtp') { //Close any open SMTP connection nicely - $this->SmtpClose(); - } - } - - /** - * Sets message type to HTML. - * @param bool $ishtml - * @return void - */ - public function IsHTML($ishtml = true) { - if ($ishtml) { - $this->ContentType = 'text/html'; - } else { - $this->ContentType = 'text/plain'; - } - } - - /** - * Sets Mailer to send message using SMTP. - * @return void - */ - public function IsSMTP() { - $this->Mailer = 'smtp'; - } - - /** - * Sets Mailer to send message using PHP mail() function. - * @return void - */ - public function IsMail() { - $this->Mailer = 'mail'; - } - - /** - * Sets Mailer to send message using the $Sendmail program. - * @return void - */ - public function IsSendmail() { - if (!stristr(ini_get('sendmail_path'), 'sendmail')) { - $this->Sendmail = '/var/qmail/bin/sendmail'; - } - $this->Mailer = 'sendmail'; - } - - /** - * Sets Mailer to send message using the qmail MTA. - * @return void - */ - public function IsQmail() { - if (stristr(ini_get('sendmail_path'), 'qmail')) { - $this->Sendmail = '/var/qmail/bin/sendmail'; - } - $this->Mailer = 'sendmail'; - } - - ///////////////////////////////////////////////// - // METHODS, RECIPIENTS - ///////////////////////////////////////////////// - - /** - * Adds a "To" address. - * @param string $address - * @param string $name - * @return boolean true on success, false if address already used - */ - public function AddAddress($address, $name = '') { - return $this->AddAnAddress('to', $address, $name); - } - - /** - * Adds a "Cc" address. - * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer. - * @param string $address - * @param string $name - * @return boolean true on success, false if address already used - */ - public function AddCC($address, $name = '') { - return $this->AddAnAddress('cc', $address, $name); - } - - /** - * Adds a "Bcc" address. - * Note: this function works with the SMTP mailer on win32, not with the "mail" mailer. - * @param string $address - * @param string $name - * @return boolean true on success, false if address already used - */ - public function AddBCC($address, $name = '') { - return $this->AddAnAddress('bcc', $address, $name); - } - - /** - * Adds a "Reply-to" address. - * @param string $address - * @param string $name - * @return boolean - */ - public function AddReplyTo($address, $name = '') { - return $this->AddAnAddress('Reply-To', $address, $name); - } - - /** - * Adds an address to one of the recipient arrays - * Addresses that have been added already return false, but do not throw exceptions - * @param string $kind One of 'to', 'cc', 'bcc', 'ReplyTo' - * @param string $address The email address to send to - * @param string $name - * @throws phpmailerException - * @return boolean true on success, false if address already used or invalid in some way - * @access protected - */ - protected function AddAnAddress($kind, $address, $name = '') { - if (!preg_match('/^(to|cc|bcc|Reply-To)$/', $kind)) { - $this->SetError($this->Lang('Invalid recipient array').': '.$kind); - if ($this->exceptions) { - throw new phpmailerException('Invalid recipient array: ' . $kind); - } - if ($this->SMTPDebug) { - $this->edebug($this->Lang('Invalid recipient array').': '.$kind); - } - return false; - } - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - if (!$this->ValidateAddress($address)) { - $this->SetError($this->Lang('invalid_address').': '. $address); - if ($this->exceptions) { - throw new phpmailerException($this->Lang('invalid_address').': '.$address); - } - if ($this->SMTPDebug) { - $this->edebug($this->Lang('invalid_address').': '.$address); - } - return false; - } - if ($kind != 'Reply-To') { - if (!isset($this->all_recipients[strtolower($address)])) { - array_push($this->$kind, array($address, $name)); - $this->all_recipients[strtolower($address)] = true; + // If a MIME type is not specified, try to work it out from the file name + if ($type == '') { + $type = self::filenameToType($path); + } + + $filename = basename($path); + if ($name == '') { + $name = $filename; + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $path, + 1 => $filename, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => false, // isStringAttachment + 6 => $disposition, + 7 => $cid + ); return true; - } - } else { - if (!array_key_exists(strtolower($address), $this->ReplyTo)) { - $this->ReplyTo[strtolower($address)] = array($address, $name); - return true; - } - } - return false; -} + } - /** - * Set the From and FromName properties - * @param string $address - * @param string $name - * @param int $auto Also set Reply-To and Sender - * @throws phpmailerException - * @return boolean - */ - public function SetFrom($address, $name = '', $auto = 1) { - $address = trim($address); - $name = trim(preg_replace('/[\r\n]+/', '', $name)); //Strip breaks and trim - if (!$this->ValidateAddress($address)) { - $this->SetError($this->Lang('invalid_address').': '. $address); - if ($this->exceptions) { - throw new phpmailerException($this->Lang('invalid_address').': '.$address); - } - if ($this->SMTPDebug) { - $this->edebug($this->Lang('invalid_address').': '.$address); - } - return false; - } - $this->From = $address; - $this->FromName = $name; - if ($auto) { - if (empty($this->ReplyTo)) { - $this->AddAnAddress('Reply-To', $address, $name); - } - if (empty($this->Sender)) { - $this->Sender = $address; - } - } - return true; - } - - /** - * Check that a string looks roughly like an email address should - * Static so it can be used without instantiation, public so people can overload - * Conforms to RFC5322: Uses *correct* regex on which FILTER_VALIDATE_EMAIL is - * based; So why not use FILTER_VALIDATE_EMAIL? Because it was broken to - * not allow a@b type valid addresses :( - * @link http://squiloople.com/2009/12/20/email-address-validation/ - * @copyright regex Copyright Michael Rushton 2009-10 | http://squiloople.com/ | Feel free to use and redistribute this code. But please keep this copyright notice. - * @param string $address The email address to check - * @return boolean - * @static - * @access public - */ - public static function ValidateAddress($address) { - if (defined('PCRE_VERSION')) { //Check this instead of extension_loaded so it works when that function is disabled - if (version_compare(PCRE_VERSION, '8.0') >= 0) { - return (boolean)preg_match('/^(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){255,})(?!(?>(?1)"?(?>\\\[ -~]|[^"])"?(?1)){65,}@)((?>(?>(?>((?>(?>(?>\x0D\x0A)?[\t ])+|(?>[\t ]*\x0D\x0A)?[\t ]+)?)(\((?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-\'*-\[\]-\x7F]|\\\[\x00-\x7F]|(?3)))*(?2)\)))+(?2))|(?2))?)([!#-\'*+\/-9=?^-~-]+|"(?>(?2)(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\x7F]))*(?2)")(?>(?1)\.(?1)(?4))*(?1)@(?!(?1)[a-z0-9-]{64,})(?1)(?>([a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>(?1)\.(?!(?1)[a-z0-9-]{64,})(?1)(?5)){0,126}|\[(?:(?>IPv6:(?>([a-f0-9]{1,4})(?>:(?6)){7}|(?!(?:.*[a-f0-9][:\]]){8,})((?6)(?>:(?6)){0,6})?::(?7)?))|(?>(?>IPv6:(?>(?6)(?>:(?6)){5}:|(?!(?:.*[a-f0-9]:){6,})(?8)?::(?>((?6)(?>:(?6)){0,4}):)?))?(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?9)){3}))\])(?1)$/isD', $address); - } else { - //Fall back to an older regex that doesn't need a recent PCRE - return (boolean)preg_match('/^(?!(?>"?(?>\\\[ -~]|[^"])"?){255,})(?!(?>"?(?>\\\[ -~]|[^"])"?){65,}@)(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*")(?>\.(?>[!#-\'*+\/-9=?^-~-]+|"(?>(?>[\x01-\x08\x0B\x0C\x0E-!#-\[\]-\x7F]|\\\[\x00-\xFF]))*"))*@(?>(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)(?>\.(?![a-z0-9-]{64,})(?>[a-z0-9](?>[a-z0-9-]*[a-z0-9])?)){0,126}|\[(?:(?>IPv6:(?>(?>[a-f0-9]{1,4})(?>:[a-f0-9]{1,4}){7}|(?!(?:.*[a-f0-9][:\]]){8,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?::(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,6})?))|(?>(?>IPv6:(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){5}:|(?!(?:.*[a-f0-9]:){6,})(?>[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4})?::(?>(?:[a-f0-9]{1,4}(?>:[a-f0-9]{1,4}){0,4}):)?))?(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])(?>\.(?>25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}))\])$/isD', $address); - } - } else { - //No PCRE! Do something _very_ approximate! - //Check the address is 3 chars or longer and contains an @ that's not the first or last char - return (strlen($address) >= 3 and strpos($address, '@') >= 1 and strpos($address, '@') != strlen($address) - 1); - } - } - - ///////////////////////////////////////////////// - // METHODS, MAIL SENDING - ///////////////////////////////////////////////// - - /** - * Creates message and assigns Mailer. If the message is - * not sent successfully then it returns false. Use the ErrorInfo - * variable to view description of the error. - * @throws phpmailerException - * @return bool - */ - public function Send() { - try { - if(!$this->PreSend()) return false; - return $this->PostSend(); - } catch (phpmailerException $e) { - $this->mailHeader = ''; - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - return false; - } - } - - /** - * Prep mail by constructing all message entities - * @throws phpmailerException - * @return bool - */ - public function PreSend() { - try { - $this->mailHeader = ""; - if ((count($this->to) + count($this->cc) + count($this->bcc)) < 1) { - throw new phpmailerException($this->Lang('provide_address'), self::STOP_CRITICAL); - } - - // Set whether the message is multipart/alternative - if(!empty($this->AltBody)) { - $this->ContentType = 'multipart/alternative'; - } - - $this->error_count = 0; // reset errors - $this->SetMessageType(); - //Refuse to send an empty message unless we are specifically allowing it - if (!$this->AllowEmpty and empty($this->Body)) { - throw new phpmailerException($this->Lang('empty_message'), self::STOP_CRITICAL); - } - - $this->MIMEHeader = $this->CreateHeader(); - $this->MIMEBody = $this->CreateBody(); - - // To capture the complete message when using mail(), create - // an extra header list which CreateHeader() doesn't fold in - if ($this->Mailer == 'mail') { - if (count($this->to) > 0) { - $this->mailHeader .= $this->AddrAppend("To", $this->to); - } else { - $this->mailHeader .= $this->HeaderLine("To", "undisclosed-recipients:;"); - } - $this->mailHeader .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader(trim($this->Subject)))); - } - - // digitally sign with DKIM if enabled - if (!empty($this->DKIM_domain) && !empty($this->DKIM_private) && !empty($this->DKIM_selector) && !empty($this->DKIM_domain) && file_exists($this->DKIM_private)) { - $header_dkim = $this->DKIM_Add($this->MIMEHeader . $this->mailHeader, $this->EncodeHeader($this->SecureHeader($this->Subject)), $this->MIMEBody); - $this->MIMEHeader = str_replace("\r\n", "\n", $header_dkim) . $this->MIMEHeader; - } - - return true; - - } catch (phpmailerException $e) { - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - return false; - } - } - - /** - * Actual Email transport function - * Send the email via the selected mechanism - * @throws phpmailerException - * @return bool - */ - public function PostSend() { - try { - // Choose the mailer and send through it - switch($this->Mailer) { - case 'sendmail': - return $this->SendmailSend($this->MIMEHeader, $this->MIMEBody); - case 'smtp': - return $this->SmtpSend($this->MIMEHeader, $this->MIMEBody); - case 'mail': - return $this->MailSend($this->MIMEHeader, $this->MIMEBody); - default: - return $this->MailSend($this->MIMEHeader, $this->MIMEBody); - } - } catch (phpmailerException $e) { - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - if ($this->SMTPDebug) { - $this->edebug($e->getMessage()."\n"); - } - } - return false; - } - - /** - * Sends mail using the $Sendmail program. - * @param string $header The message headers - * @param string $body The message body - * @throws phpmailerException - * @access protected - * @return bool - */ - protected function SendmailSend($header, $body) { - if ($this->Sender != '') { - $sendmail = sprintf("%s -oi -f%s -t", escapeshellcmd($this->Sendmail), escapeshellarg($this->Sender)); - } else { - $sendmail = sprintf("%s -oi -t", escapeshellcmd($this->Sendmail)); - } - if ($this->SingleTo === true) { - foreach ($this->SingleToArray as $val) { - if(!@$mail = popen($sendmail, 'w')) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fputs($mail, "To: " . $val . "\n"); - fputs($mail, $header); - fputs($mail, $body); - $result = pclose($mail); - // implement call back function if it exists - $isSent = ($result == 0) ? 1 : 0; - $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); - if($result != 0) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - } else { - if(!@$mail = popen($sendmail, 'w')) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - fputs($mail, $header); - fputs($mail, $body); - $result = pclose($mail); - // implement call back function if it exists - $isSent = ($result == 0) ? 1 : 0; - $this->doCallback($isSent, $this->to, $this->cc, $this->bcc, $this->Subject, $body); - if($result != 0) { - throw new phpmailerException($this->Lang('execute') . $this->Sendmail, self::STOP_CRITICAL); - } - } - return true; - } - - /** - * Sends mail using the PHP mail() function. - * @param string $header The message headers - * @param string $body The message body - * @throws phpmailerException - * @access protected - * @return bool - */ - protected function MailSend($header, $body) { - $toArr = array(); - foreach($this->to as $t) { - $toArr[] = $this->AddrFormat($t); - } - $to = implode(', ', $toArr); - - if (empty($this->Sender)) { - $params = " "; - } else { - $params = sprintf("-f%s", $this->Sender); - } - if ($this->Sender != '' and !ini_get('safe_mode')) { - $old_from = ini_get('sendmail_from'); - ini_set('sendmail_from', $this->Sender); - } - $rt = false; - if ($this->SingleTo === true && count($toArr) > 1) { - foreach ($toArr as $val) { - $rt = $this->mail_passthru($val, $this->Subject, $body, $header, $params); - // implement call back function if it exists - $isSent = ($rt == 1) ? 1 : 0; - $this->doCallback($isSent, $val, $this->cc, $this->bcc, $this->Subject, $body); - } - } else { - $rt = $this->mail_passthru($to, $this->Subject, $body, $header, $params); - // implement call back function if it exists - $isSent = ($rt == 1) ? 1 : 0; - $this->doCallback($isSent, $to, $this->cc, $this->bcc, $this->Subject, $body); - } - if (isset($old_from)) { - ini_set('sendmail_from', $old_from); - } - if(!$rt) { - throw new phpmailerException($this->Lang('instantiate'), self::STOP_CRITICAL); - } - return true; - } - - /** - * Sends mail via SMTP using PhpSMTP - * Returns false if there is a bad MAIL FROM, RCPT, or DATA input. - * @param string $header The message headers - * @param string $body The message body - * @throws phpmailerException - * @uses SMTP - * @access protected - * @return bool - */ - protected function SmtpSend($header, $body) { - require_once $this->PluginDir . 'class.smtp.php'; - $bad_rcpt = array(); - - if(!$this->SmtpConnect()) { - throw new phpmailerException($this->Lang('smtp_connect_failed'), self::STOP_CRITICAL); - } - $smtp_from = ($this->Sender == '') ? $this->From : $this->Sender; - if(!$this->smtp->Mail($smtp_from)) { - $this->SetError($this->Lang('from_failed') . $smtp_from . ' : ' .implode(',', $this->smtp->getError())); - throw new phpmailerException($this->ErrorInfo, self::STOP_CRITICAL); - } - - // Attempt to send attach all recipients - foreach($this->to as $to) { - if (!$this->smtp->Recipient($to[0])) { - $bad_rcpt[] = $to[0]; - // implement call back function if it exists - $isSent = 0; - $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); - } else { - // implement call back function if it exists - $isSent = 1; - $this->doCallback($isSent, $to[0], '', '', $this->Subject, $body); - } - } - foreach($this->cc as $cc) { - if (!$this->smtp->Recipient($cc[0])) { - $bad_rcpt[] = $cc[0]; - // implement call back function if it exists - $isSent = 0; - $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); - } else { - // implement call back function if it exists - $isSent = 1; - $this->doCallback($isSent, '', $cc[0], '', $this->Subject, $body); - } - } - foreach($this->bcc as $bcc) { - if (!$this->smtp->Recipient($bcc[0])) { - $bad_rcpt[] = $bcc[0]; - // implement call back function if it exists - $isSent = 0; - $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); - } else { - // implement call back function if it exists - $isSent = 1; - $this->doCallback($isSent, '', '', $bcc[0], $this->Subject, $body); - } - } - - - if (count($bad_rcpt) > 0 ) { //Create error message for any bad addresses - $badaddresses = implode(', ', $bad_rcpt); - throw new phpmailerException($this->Lang('recipients_failed') . $badaddresses); - } - if(!$this->smtp->Data($header . $body)) { - throw new phpmailerException($this->Lang('data_not_accepted'), self::STOP_CRITICAL); - } - if($this->SMTPKeepAlive == true) { - $this->smtp->Reset(); - } else { - $this->smtp->Quit(); - $this->smtp->Close(); - } - return true; - } - - /** - * Initiates a connection to an SMTP server. - * Returns false if the operation failed. - * @uses SMTP - * @access public - * @throws phpmailerException - * @return bool - */ - public function SmtpConnect() { - if(is_null($this->smtp)) { - $this->smtp = new SMTP; - } - - $this->smtp->Timeout = $this->Timeout; - $this->smtp->do_debug = $this->SMTPDebug; - $this->smtp->do_verp = $this->do_verp; - $hosts = explode(';', $this->Host); - $index = 0; - $connection = $this->smtp->Connected(); - - // Retry while there is no connection - try { - while($index < count($hosts) && !$connection) { - $hostinfo = array(); - if (preg_match('/^(.+):([0-9]+)$/', $hosts[$index], $hostinfo)) { - $host = $hostinfo[1]; - $port = $hostinfo[2]; - } else { - $host = $hosts[$index]; - $port = $this->Port; - } - - $tls = ($this->SMTPSecure == 'tls'); - $ssl = ($this->SMTPSecure == 'ssl'); - - if ($this->smtp->Connect(($ssl ? 'ssl://':'').$host, $port, $this->Timeout)) { - - $hello = ($this->Helo != '' ? $this->Helo : $this->ServerHostname()); - $this->smtp->Hello($hello); - - if ($tls) { - if (!$this->smtp->StartTLS()) { - throw new phpmailerException($this->Lang('connect_host')); - } - - //We must resend HELO after tls negotiation - $this->smtp->Hello($hello); - } - - $connection = true; - if ($this->SMTPAuth) { - if (!$this->smtp->Authenticate($this->Username, $this->Password, $this->AuthType, $this->Realm, $this->Workstation)) { - throw new phpmailerException($this->Lang('authenticate')); - } - } - } - $index++; - if (!$connection) { - throw new phpmailerException($this->Lang('connect_host')); - } - } - } catch (phpmailerException $e) { - $this->smtp->Reset(); - if ($this->exceptions) { - throw $e; - } - } - return true; - } - - /** - * Closes the active SMTP session if one exists. - * @return void - */ - public function SmtpClose() { - if ($this->smtp !== null) { - if($this->smtp->Connected()) { - $this->smtp->Quit(); - $this->smtp->Close(); - } - } - } - - /** - * Sets the language for all class error messages. - * Returns false if it cannot load the language file. The default language is English. - * @param string $langcode ISO 639-1 2-character language code (e.g. Portuguese: "br") - * @param string $lang_path Path to the language file directory - * @return bool - * @access public - */ - function SetLanguage($langcode = 'en', $lang_path = 'language/') { - //Define full set of translatable strings - $PHPMAILER_LANG = array( - 'authenticate' => 'SMTP Error: Could not authenticate.', - 'connect_host' => 'SMTP Error: Could not connect to SMTP host.', - 'data_not_accepted' => 'SMTP Error: Data not accepted.', - 'empty_message' => 'Message body empty', - 'encoding' => 'Unknown encoding: ', - 'execute' => 'Could not execute: ', - 'file_access' => 'Could not access file: ', - 'file_open' => 'File Error: Could not open file: ', - 'from_failed' => 'The following From address failed: ', - 'instantiate' => 'Could not instantiate mail function.', - 'invalid_address' => 'Invalid address', - 'mailer_not_supported' => ' mailer is not supported.', - 'provide_address' => 'You must provide at least one recipient email address.', - 'recipients_failed' => 'SMTP Error: The following recipients failed: ', - 'signing' => 'Signing Error: ', - 'smtp_connect_failed' => 'SMTP Connect() failed.', - 'smtp_error' => 'SMTP server error: ', - 'variable_set' => 'Cannot set or reset variable: ' - ); - //Overwrite language-specific strings. This way we'll never have missing translations - no more "language string failed to load"! - $l = true; - if ($langcode != 'en') { //There is no English translation file - $l = @include $lang_path.'phpmailer.lang-'.$langcode.'.php'; - } - $this->language = $PHPMAILER_LANG; - return ($l == true); //Returns false if language not found - } - - /** - * Return the current array of language strings - * @return array - */ - public function GetTranslations() { - return $this->language; - } - - ///////////////////////////////////////////////// - // METHODS, MESSAGE CREATION - ///////////////////////////////////////////////// - - /** - * Creates recipient headers. - * @access public - * @param string $type - * @param array $addr - * @return string - */ - public function AddrAppend($type, $addr) { - $addr_str = $type . ': '; - $addresses = array(); - foreach ($addr as $a) { - $addresses[] = $this->AddrFormat($a); - } - $addr_str .= implode(', ', $addresses); - $addr_str .= $this->LE; - - return $addr_str; - } - - /** - * Formats an address correctly. - * @access public - * @param string $addr - * @return string - */ - public function AddrFormat($addr) { - if (empty($addr[1])) { - return $this->SecureHeader($addr[0]); - } else { - return $this->EncodeHeader($this->SecureHeader($addr[1]), 'phrase') . " <" . $this->SecureHeader($addr[0]) . ">"; - } - } - - /** - * Wraps message for use with mailers that do not - * automatically perform wrapping and for quoted-printable. - * Original written by philippe. - * @param string $message The message to wrap - * @param integer $length The line length to wrap to - * @param boolean $qp_mode Whether to run in Quoted-Printable mode - * @access public - * @return string - */ - public function WrapText($message, $length, $qp_mode = false) { - $soft_break = ($qp_mode) ? sprintf(" =%s", $this->LE) : $this->LE; - // If utf-8 encoding is used, we will need to make sure we don't - // split multibyte characters when we wrap - $is_utf8 = (strtolower($this->CharSet) == "utf-8"); - $lelen = strlen($this->LE); - $crlflen = strlen(self::CRLF); - - $message = $this->FixEOL($message); - if (substr($message, -$lelen) == $this->LE) { - $message = substr($message, 0, -$lelen); - } - - $line = explode($this->LE, $message); // Magic. We know FixEOL uses $LE - $message = ''; - for ($i = 0 ;$i < count($line); $i++) { - $line_part = explode(' ', $line[$i]); - $buf = ''; - for ($e = 0; $e $length)) { - $space_left = $length - strlen($buf) - $crlflen; - if ($e != 0) { - if ($space_left > 20) { - $len = $space_left; - if ($is_utf8) { - $len = $this->UTF8CharBoundary($word, $len); - } elseif (substr($word, $len - 1, 1) == "=") { - $len--; - } elseif (substr($word, $len - 2, 1) == "=") { - $len -= 2; - } - $part = substr($word, 0, $len); - $word = substr($word, $len); - $buf .= ' ' . $part; - $message .= $buf . sprintf("=%s", self::CRLF); - } else { - $message .= $buf . $soft_break; + /** + * Add an embedded stringified attachment. + * This can include images, sounds, and just about any other document type. + * Be sure to set the $type to an image type for images: + * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'. + * @param string $string The attachment binary data. + * @param string $cid Content ID of the attachment; Use this to reference + * the content when using an embedded image in HTML. + * @param string $name + * @param string $encoding File encoding (see $Encoding). + * @param string $type MIME type. + * @param string $disposition Disposition to use + * @return boolean True on successfully adding an attachment + */ + public function addStringEmbeddedImage( + $string, + $cid, + $name = '', + $encoding = 'base64', + $type = '', + $disposition = 'inline' + ) { + // If a MIME type is not specified, try to work it out from the name + if ($type == '' and !empty($name)) { + $type = self::filenameToType($name); + } + + // Append to $attachment array + $this->attachment[] = array( + 0 => $string, + 1 => $name, + 2 => $name, + 3 => $encoding, + 4 => $type, + 5 => true, // isStringAttachment + 6 => $disposition, + 7 => $cid + ); + return true; + } + + /** + * Check if an inline attachment is present. + * @access public + * @return boolean + */ + public function inlineImageExists() + { + foreach ($this->attachment as $attachment) { + if ($attachment[6] == 'inline') { + return true; } - $buf = ''; - } - while (strlen($word) > 0) { - if ($length <= 0) { - break; + } + return false; + } + + /** + * Check if an attachment (non-inline) is present. + * @return boolean + */ + public function attachmentExists() + { + foreach ($this->attachment as $attachment) { + if ($attachment[6] == 'attachment') { + return true; } - $len = $length; - if ($is_utf8) { - $len = $this->UTF8CharBoundary($word, $len); - } elseif (substr($word, $len - 1, 1) == "=") { - $len--; - } elseif (substr($word, $len - 2, 1) == "=") { - $len -= 2; + } + return false; + } + + /** + * Check if this message has an alternative body set. + * @return boolean + */ + public function alternativeExists() + { + return !empty($this->AltBody); + } + + /** + * Clear queued addresses of given kind. + * @access protected + * @param string $kind 'to', 'cc', or 'bcc' + * @return void + */ + public function clearQueuedAddresses($kind) + { + $RecipientsQueue = $this->RecipientsQueue; + foreach ($RecipientsQueue as $address => $params) { + if ($params[0] == $kind) { + unset($this->RecipientsQueue[$address]); } - $part = substr($word, 0, $len); - $word = substr($word, $len); + } + } - if (strlen($word) > 0) { - $message .= $part . sprintf("=%s", self::CRLF); - } else { - $buf = $part; + /** + * Clear all To recipients. + * @return void + */ + public function clearAddresses() + { + foreach ($this->to as $to) { + unset($this->all_recipients[strtolower($to[0])]); + } + $this->to = array(); + $this->clearQueuedAddresses('to'); + } + + /** + * Clear all CC recipients. + * @return void + */ + public function clearCCs() + { + foreach ($this->cc as $cc) { + unset($this->all_recipients[strtolower($cc[0])]); + } + $this->cc = array(); + $this->clearQueuedAddresses('cc'); + } + + /** + * Clear all BCC recipients. + * @return void + */ + public function clearBCCs() + { + foreach ($this->bcc as $bcc) { + unset($this->all_recipients[strtolower($bcc[0])]); + } + $this->bcc = array(); + $this->clearQueuedAddresses('bcc'); + } + + /** + * Clear all ReplyTo recipients. + * @return void + */ + public function clearReplyTos() + { + $this->ReplyTo = array(); + $this->ReplyToQueue = array(); + } + + /** + * Clear all recipient types. + * @return void + */ + public function clearAllRecipients() + { + $this->to = array(); + $this->cc = array(); + $this->bcc = array(); + $this->all_recipients = array(); + $this->RecipientsQueue = array(); + } + + /** + * Clear all filesystem, string, and binary attachments. + * @return void + */ + public function clearAttachments() + { + $this->attachment = array(); + } + + /** + * Clear all custom headers. + * @return void + */ + public function clearCustomHeaders() + { + $this->CustomHeader = array(); + } + + /** + * Add an error message to the error container. + * @access protected + * @param string $msg + * @return void + */ + protected function setError($msg) + { + $this->error_count++; + if ($this->Mailer == 'smtp' and !is_null($this->smtp)) { + $lasterror = $this->smtp->getError(); + if (!empty($lasterror['error'])) { + $msg .= $this->lang('smtp_error') . $lasterror['error']; + if (!empty($lasterror['detail'])) { + $msg .= ' Detail: '. $lasterror['detail']; + } + if (!empty($lasterror['smtp_code'])) { + $msg .= ' SMTP code: ' . $lasterror['smtp_code']; + } + if (!empty($lasterror['smtp_code_ex'])) { + $msg .= ' Additional SMTP info: ' . $lasterror['smtp_code_ex']; + } } - } - } else { - $buf_o = $buf; - $buf .= ($e == 0) ? $word : (' ' . $word); - - if (strlen($buf) > $length and $buf_o != '') { - $message .= $buf_o . $soft_break; - $buf = $word; - } - } - } - $message .= $buf . self::CRLF; - } - - return $message; - } - - /** - * Finds last character boundary prior to maxLength in a utf-8 - * quoted (printable) encoded string. - * Original written by Colin Brown. - * @access public - * @param string $encodedText utf-8 QP text - * @param int $maxLength find last character boundary prior to this length - * @return int - */ - public function UTF8CharBoundary($encodedText, $maxLength) { - $foundSplitPos = false; - $lookBack = 3; - while (!$foundSplitPos) { - $lastChunk = substr($encodedText, $maxLength - $lookBack, $lookBack); - $encodedCharPos = strpos($lastChunk, "="); - if ($encodedCharPos !== false) { - // Found start of encoded character byte within $lookBack block. - // Check the encoded byte value (the 2 chars after the '=') - $hex = substr($encodedText, $maxLength - $lookBack + $encodedCharPos + 1, 2); - $dec = hexdec($hex); - if ($dec < 128) { // Single byte character. - // If the encoded char was found at pos 0, it will fit - // otherwise reduce maxLength to start of the encoded char - $maxLength = ($encodedCharPos == 0) ? $maxLength : - $maxLength - ($lookBack - $encodedCharPos); - $foundSplitPos = true; - } elseif ($dec >= 192) { // First byte of a multi byte character - // Reduce maxLength to split at start of character - $maxLength = $maxLength - ($lookBack - $encodedCharPos); - $foundSplitPos = true; - } elseif ($dec < 192) { // Middle byte of a multi byte character, look further back - $lookBack += 3; - } - } else { - // No encoded character found - $foundSplitPos = true; - } - } - return $maxLength; - } - - - /** - * Set the body wrapping. - * @access public - * @return void - */ - public function SetWordWrap() { - if($this->WordWrap < 1) { - return; - } - - switch($this->message_type) { - case 'alt': - case 'alt_inline': - case 'alt_attach': - case 'alt_inline_attach': - $this->AltBody = $this->WrapText($this->AltBody, $this->WordWrap); - break; - default: - $this->Body = $this->WrapText($this->Body, $this->WordWrap); - break; - } - } - - /** - * Assembles message header. - * @access public - * @return string The assembled header - */ - public function CreateHeader() { - $result = ''; - - // Set the boundaries - $uniq_id = md5(uniqid(time())); - $this->boundary[1] = 'b1_' . $uniq_id; - $this->boundary[2] = 'b2_' . $uniq_id; - $this->boundary[3] = 'b3_' . $uniq_id; - - if ($this->MessageDate == '') { - $result .= $this->HeaderLine('Date', self::RFCDate()); - } else { - $result .= $this->HeaderLine('Date', $this->MessageDate); - } - - if ($this->ReturnPath) { - $result .= $this->HeaderLine('Return-Path', '<'.trim($this->ReturnPath).'>'); - } elseif ($this->Sender == '') { - $result .= $this->HeaderLine('Return-Path', '<'.trim($this->From).'>'); - } else { - $result .= $this->HeaderLine('Return-Path', '<'.trim($this->Sender).'>'); - } - - // To be created automatically by mail() - if($this->Mailer != 'mail') { - if ($this->SingleTo === true) { - foreach($this->to as $t) { - $this->SingleToArray[] = $this->AddrFormat($t); - } - } else { - if(count($this->to) > 0) { - $result .= $this->AddrAppend('To', $this->to); - } elseif (count($this->cc) == 0) { - $result .= $this->HeaderLine('To', 'undisclosed-recipients:;'); - } - } - } - - $from = array(); - $from[0][0] = trim($this->From); - $from[0][1] = $this->FromName; - $result .= $this->AddrAppend('From', $from); - - // sendmail and mail() extract Cc from the header before sending - if(count($this->cc) > 0) { - $result .= $this->AddrAppend('Cc', $this->cc); - } - - // sendmail and mail() extract Bcc from the header before sending - if((($this->Mailer == 'sendmail') || ($this->Mailer == 'mail')) && (count($this->bcc) > 0)) { - $result .= $this->AddrAppend('Bcc', $this->bcc); - } - - if(count($this->ReplyTo) > 0) { - $result .= $this->AddrAppend('Reply-To', $this->ReplyTo); - } - - // mail() sets the subject itself - if($this->Mailer != 'mail') { - $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject))); - } - - if(trim($this->MessageID) != '') { - $result .= $this->HeaderLine('Message-ID', $this->MessageID); - } else { - $result .= sprintf("Message-ID: <%s@%s>%s", $uniq_id, $this->ServerHostname(), $this->LE); - } - $result .= $this->HeaderLine('X-Priority', $this->Priority); - if ($this->XMailer == '') { - $result .= $this->HeaderLine('X-Mailer', 'PHPMailer (https://github.com/PHPMailer/PHPMailer/)'); - } else { - $myXmailer = trim($this->XMailer); - if ($myXmailer) { - $result .= $this->HeaderLine('X-Mailer', $myXmailer); - } - } - - if($this->ConfirmReadingTo != '') { - $result .= $this->HeaderLine('Disposition-Notification-To', '<' . trim($this->ConfirmReadingTo) . '>'); - } - - // Add custom headers - for($index = 0; $index < count($this->CustomHeader); $index++) { - $result .= $this->HeaderLine(trim($this->CustomHeader[$index][0]), $this->EncodeHeader(trim($this->CustomHeader[$index][1]))); - } - if (!$this->sign_key_file) { - $result .= $this->HeaderLine('MIME-Version', '1.0'); - $result .= $this->GetMailMIME(); - } - - return $result; - } - - /** - * Returns the message MIME. - * @access public - * @return string - */ - public function GetMailMIME() { - $result = ''; - switch($this->message_type) { - case 'inline': - $result .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - case 'attach': - case 'inline_attach': - case 'alt_attach': - case 'alt_inline_attach': - $result .= $this->HeaderLine('Content-Type', 'multipart/mixed;'); - $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - case 'alt': - case 'alt_inline': - $result .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); - $result .= $this->TextLine("\tboundary=\"" . $this->boundary[1] . '"'); - break; - default: - // Catches case 'plain': and case '': - $result .= $this->HeaderLine('Content-Transfer-Encoding', $this->Encoding); - $result .= $this->TextLine('Content-Type: '.$this->ContentType.'; charset='.$this->CharSet); - break; - } - - if($this->Mailer != 'mail') { - $result .= $this->LE; - } - - return $result; - } - - /** - * Returns the MIME message (headers and body). Only really valid post PreSend(). - * @access public - * @return string - */ - public function GetSentMIMEMessage() { - return $this->MIMEHeader . $this->mailHeader . self::CRLF . $this->MIMEBody; - } - - - /** - * Assembles the message body. Returns an empty string on failure. - * @access public - * @throws phpmailerException - * @return string The assembled message body - */ - public function CreateBody() { - $body = ''; - - if ($this->sign_key_file) { - $body .= $this->GetMailMIME().$this->LE; - } - - $this->SetWordWrap(); - - switch($this->message_type) { - case 'inline': - $body .= $this->GetBoundary($this->boundary[1], '', '', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll('inline', $this->boundary[1]); - break; - case 'attach': - $body .= $this->GetBoundary($this->boundary[1], '', '', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll('attachment', $this->boundary[1]); - break; - case 'inline_attach': - $body .= $this->TextLine('--' . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', '', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll('inline', $this->boundary[2]); - $body .= $this->LE; - $body .= $this->AttachAll('attachment', $this->boundary[1]); - break; - case 'alt': - $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->GetBoundary($this->boundary[1], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->EndBoundary($this->boundary[1]); - break; - case 'alt_inline': - $body .= $this->GetBoundary($this->boundary[1], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->TextLine('--' . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll('inline', $this->boundary[2]); - $body .= $this->LE; - $body .= $this->EndBoundary($this->boundary[1]); - break; - case 'alt_attach': - $body .= $this->TextLine('--' . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->EndBoundary($this->boundary[2]); - $body .= $this->LE; - $body .= $this->AttachAll('attachment', $this->boundary[1]); - break; - case 'alt_inline_attach': - $body .= $this->TextLine('--' . $this->boundary[1]); - $body .= $this->HeaderLine('Content-Type', 'multipart/alternative;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[2] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[2], '', 'text/plain', ''); - $body .= $this->EncodeString($this->AltBody, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->TextLine('--' . $this->boundary[2]); - $body .= $this->HeaderLine('Content-Type', 'multipart/related;'); - $body .= $this->TextLine("\tboundary=\"" . $this->boundary[3] . '"'); - $body .= $this->LE; - $body .= $this->GetBoundary($this->boundary[3], '', 'text/html', ''); - $body .= $this->EncodeString($this->Body, $this->Encoding); - $body .= $this->LE.$this->LE; - $body .= $this->AttachAll('inline', $this->boundary[3]); - $body .= $this->LE; - $body .= $this->EndBoundary($this->boundary[2]); - $body .= $this->LE; - $body .= $this->AttachAll('attachment', $this->boundary[1]); - break; - default: - // catch case 'plain' and case '' - $body .= $this->EncodeString($this->Body, $this->Encoding); - break; - } - - if ($this->IsError()) { - $body = ''; - } elseif ($this->sign_key_file) { - try { - if (!defined('PKCS7_TEXT')) { - throw new phpmailerException($this->Lang('signing').' OpenSSL extension missing.'); - } - $file = tempnam(sys_get_temp_dir(), 'mail'); - file_put_contents($file, $body); //TODO check this worked - $signed = tempnam(sys_get_temp_dir(), 'signed'); - if (@openssl_pkcs7_sign($file, $signed, 'file://'.realpath($this->sign_cert_file), array('file://'.realpath($this->sign_key_file), $this->sign_key_pass), null)) { - @unlink($file); - $body = file_get_contents($signed); - @unlink($signed); + } + $this->ErrorInfo = $msg; + } + + /** + * Return an RFC 822 formatted date. + * @access public + * @return string + * @static + */ + public static function rfcDate() + { + // Set the time zone to whatever the default is to avoid 500 errors + // Will default to UTC if it's not set properly in php.ini + date_default_timezone_set(@date_default_timezone_get()); + return date('D, j M Y H:i:s O'); + } + + /** + * Get the server hostname. + * Returns 'localhost.localdomain' if unknown. + * @access protected + * @return string + */ + protected function serverHostname() + { + $result = 'localhost.localdomain'; + if (!empty($this->Hostname)) { + $result = $this->Hostname; + } elseif (isset($_SERVER) and array_key_exists('SERVER_NAME', $_SERVER) and !empty($_SERVER['SERVER_NAME'])) { + $result = $_SERVER['SERVER_NAME']; + } elseif (function_exists('gethostname') && gethostname() !== false) { + $result = gethostname(); + } elseif (php_uname('n') !== false) { + $result = php_uname('n'); + } + return $result; + } + + /** + * Get an error message in the current language. + * @access protected + * @param string $key + * @return string + */ + protected function lang($key) + { + if (count($this->language) < 1) { + $this->setLanguage('en'); // set the default language + } + + if (array_key_exists($key, $this->language)) { + if ($key == 'smtp_connect_failed') { + //Include a link to troubleshooting docs on SMTP connection failure + //this is by far the biggest cause of support questions + //but it's usually not PHPMailer's fault. + return $this->language[$key] . ' https://github.com/PHPMailer/PHPMailer/wiki/Troubleshooting'; + } + return $this->language[$key]; } else { - @unlink($file); - @unlink($signed); - throw new phpmailerException($this->Lang('signing').openssl_error_string()); + //Return the key as a fallback + return $key; } - } catch (phpmailerException $e) { - $body = ''; - if ($this->exceptions) { - throw $e; - } - } - } - return $body; - } - - /** - * Returns the start of a message boundary. - * @access protected - * @param string $boundary - * @param string $charSet - * @param string $contentType - * @param string $encoding - * @return string - */ - protected function GetBoundary($boundary, $charSet, $contentType, $encoding) { - $result = ''; - if($charSet == '') { - $charSet = $this->CharSet; - } - if($contentType == '') { - $contentType = $this->ContentType; - } - if($encoding == '') { - $encoding = $this->Encoding; - } - $result .= $this->TextLine('--' . $boundary); - $result .= sprintf("Content-Type: %s; charset=%s", $contentType, $charSet); - $result .= $this->LE; - $result .= $this->HeaderLine('Content-Transfer-Encoding', $encoding); - $result .= $this->LE; - - return $result; - } - - /** - * Returns the end of a message boundary. - * @access protected - * @param string $boundary - * @return string - */ - protected function EndBoundary($boundary) { - return $this->LE . '--' . $boundary . '--' . $this->LE; - } - - /** - * Sets the message type. - * @access protected - * @return void - */ - protected function SetMessageType() { - $this->message_type = array(); - if($this->AlternativeExists()) $this->message_type[] = "alt"; - if($this->InlineImageExists()) $this->message_type[] = "inline"; - if($this->AttachmentExists()) $this->message_type[] = "attach"; - $this->message_type = implode("_", $this->message_type); - if($this->message_type == "") $this->message_type = "plain"; - } - - /** - * Returns a formatted header line. - * @access public - * @param string $name - * @param string $value - * @return string - */ - public function HeaderLine($name, $value) { - return $name . ': ' . $value . $this->LE; - } - - /** - * Returns a formatted mail line. - * @access public - * @param string $value - * @return string - */ - public function TextLine($value) { - return $value . $this->LE; - } - - ///////////////////////////////////////////////// - // CLASS METHODS, ATTACHMENTS - ///////////////////////////////////////////////// - - /** - * Adds an attachment from a path on the filesystem. - * Returns false if the file could not be found - * or accessed. - * @param string $path Path to the attachment. - * @param string $name Overrides the attachment name. - * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. - * @throws phpmailerException - * @return bool - */ - public function AddAttachment($path, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { - try { - if ( !@is_file($path) ) { - throw new phpmailerException($this->Lang('file_access') . $path, self::STOP_CONTINUE); - } - $filename = basename($path); - if ( $name == '' ) { - $name = $filename; - } - - $this->attachment[] = array( - 0 => $path, - 1 => $filename, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => false, // isStringAttachment - 6 => 'attachment', - 7 => 0 - ); - - } catch (phpmailerException $e) { - $this->SetError($e->getMessage()); - if ($this->exceptions) { - throw $e; - } - if ($this->SMTPDebug) { - $this->edebug($e->getMessage()."\n"); - } - if ( $e->getCode() == self::STOP_CRITICAL ) { - return false; - } - } - return true; - } - - /** - * Return the current array of attachments - * @return array - */ - public function GetAttachments() { - return $this->attachment; - } - - /** - * Attaches all fs, string, and binary attachments to the message. - * Returns an empty string on failure. - * @access protected - * @param string $disposition_type - * @param string $boundary - * @return string - */ - protected function AttachAll($disposition_type, $boundary) { - // Return text of body - $mime = array(); - $cidUniq = array(); - $incl = array(); - - // Add all attachments - foreach ($this->attachment as $attachment) { - // CHECK IF IT IS A VALID DISPOSITION_FILTER - if($attachment[6] == $disposition_type) { - // Check for string attachment - $string = ''; - $path = ''; - $bString = $attachment[5]; - if ($bString) { - $string = $attachment[0]; + } + + /** + * Check if an error occurred. + * @access public + * @return boolean True if an error did occur. + */ + public function isError() + { + return ($this->error_count > 0); + } + + /** + * Ensure consistent line endings in a string. + * Changes every end of line from CRLF, CR or LF to $this->LE. + * @access public + * @param string $str String to fixEOL + * @return string + */ + public function fixEOL($str) + { + // Normalise to \n + $nstr = str_replace(array("\r\n", "\r"), "\n", $str); + // Now convert LE as needed + if ($this->LE !== "\n") { + $nstr = str_replace("\n", $this->LE, $nstr); + } + return $nstr; + } + + /** + * Add a custom header. + * $name value can be overloaded to contain + * both header name and value (name:value) + * @access public + * @param string $name Custom header name + * @param string $value Header value + * @return void + */ + public function addCustomHeader($name, $value = null) + { + if ($value === null) { + // Value passed in as name:value + $this->CustomHeader[] = explode(':', $name, 2); } else { - $path = $attachment[0]; + $this->CustomHeader[] = array($name, $value); + } + } + + /** + * Returns all custom headers. + * @return array + */ + public function getCustomHeaders() + { + return $this->CustomHeader; + } + + /** + * Create a message body from an HTML string. + * Automatically inlines images and creates a plain-text version by converting the HTML, + * overwriting any existing values in Body and AltBody. + * $basedir is used when handling relative image paths, e.g. + * will look for an image file in $basedir/images/a.png and convert it to inline. + * If you don't want to apply these transformations to your HTML, just set Body and AltBody yourself. + * @access public + * @param string $message HTML message string + * @param string $basedir base directory for relative paths to images + * @param boolean|callable $advanced Whether to use the internal HTML to text converter + * or your own custom converter @see PHPMailer::html2text() + * @return string $message The transformed message Body + */ + public function msgHTML($message, $basedir = '', $advanced = false) + { + preg_match_all('/(src|background)=["\'](.*)["\']/Ui', $message, $images); + if (array_key_exists(2, $images)) { + foreach ($images[2] as $imgindex => $url) { + // Convert data URIs into embedded images + if (preg_match('#^data:(image[^;,]*)(;base64)?,#', $url, $match)) { + $data = substr($url, strpos($url, ',')); + if ($match[2]) { + $data = base64_decode($data); + } else { + $data = rawurldecode($data); + } + $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 + if ($this->addStringEmbeddedImage($data, $cid, 'embed' . $imgindex, 'base64', $match[1])) { + $message = str_replace( + $images[0][$imgindex], + $images[1][$imgindex] . '="cid:' . $cid . '"', + $message + ); + } + } elseif (substr($url, 0, 4) !== 'cid:' && !preg_match('#^[a-z][a-z0-9+.-]*://#i', $url)) { + // Do not change urls for absolute images (thanks to corvuscorax) + // Do not change urls that are already inline images + $filename = basename($url); + $directory = dirname($url); + if ($directory == '.') { + $directory = ''; + } + $cid = md5($url) . '@phpmailer.0'; // RFC2392 S 2 + if (strlen($basedir) > 1 && substr($basedir, -1) != '/') { + $basedir .= '/'; + } + if (strlen($directory) > 1 && substr($directory, -1) != '/') { + $directory .= '/'; + } + if ($this->addEmbeddedImage( + $basedir . $directory . $filename, + $cid, + $filename, + 'base64', + self::_mime_types((string)self::mb_pathinfo($filename, PATHINFO_EXTENSION)) + ) + ) { + $message = preg_replace( + '/' . $images[1][$imgindex] . '=["\']' . preg_quote($url, '/') . '["\']/Ui', + $images[1][$imgindex] . '="cid:' . $cid . '"', + $message + ); + } + } + } + } + $this->isHTML(true); + // Convert all message body line breaks to CRLF, makes quoted-printable encoding work much better + $this->Body = $this->normalizeBreaks($message); + $this->AltBody = $this->normalizeBreaks($this->html2text($message, $advanced)); + if (!$this->alternativeExists()) { + $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . + self::CRLF . self::CRLF; } + return $this->Body; + } - $inclhash = md5(serialize($attachment)); - if (in_array($inclhash, $incl)) { continue; } - $incl[] = $inclhash; - $filename = $attachment[1]; - $name = $attachment[2]; - $encoding = $attachment[3]; - $type = $attachment[4]; - $disposition = $attachment[6]; - $cid = $attachment[7]; - if ( $disposition == 'inline' && isset($cidUniq[$cid]) ) { continue; } - $cidUniq[$cid] = true; + /** + * Convert an HTML string into plain text. + * This is used by msgHTML(). + * Note - older versions of this function used a bundled advanced converter + * which was been removed for license reasons in #232. + * Example usage: + * + * // Use default conversion + * $plain = $mail->html2text($html); + * // Use your own custom converter + * $plain = $mail->html2text($html, function($html) { + * $converter = new MyHtml2text($html); + * return $converter->get_text(); + * }); + * + * @param string $html The HTML text to convert + * @param boolean|callable $advanced Any boolean value to use the internal converter, + * or provide your own callable for custom conversion. + * @return string + */ + public function html2text($html, $advanced = false) + { + if (is_callable($advanced)) { + return call_user_func($advanced, $html); + } + return html_entity_decode( + trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/si', '', $html))), + ENT_QUOTES, + $this->CharSet + ); + } - $mime[] = sprintf("--%s%s", $boundary, $this->LE); - $mime[] = sprintf("Content-Type: %s; name=\"%s\"%s", $type, $this->EncodeHeader($this->SecureHeader($name)), $this->LE); - $mime[] = sprintf("Content-Transfer-Encoding: %s%s", $encoding, $this->LE); + /** + * Get the MIME type for a file extension. + * @param string $ext File extension + * @access public + * @return string MIME type of file. + * @static + */ + public static function _mime_types($ext = '') + { + $mimes = array( + 'xl' => 'application/excel', + 'js' => 'application/javascript', + 'hqx' => 'application/mac-binhex40', + 'cpt' => 'application/mac-compactpro', + 'bin' => 'application/macbinary', + 'doc' => 'application/msword', + 'word' => 'application/msword', + 'xlsx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet', + 'xltx' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.template', + 'potx' => 'application/vnd.openxmlformats-officedocument.presentationml.template', + 'ppsx' => 'application/vnd.openxmlformats-officedocument.presentationml.slideshow', + 'pptx' => 'application/vnd.openxmlformats-officedocument.presentationml.presentation', + 'sldx' => 'application/vnd.openxmlformats-officedocument.presentationml.slide', + 'docx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.document', + 'dotx' => 'application/vnd.openxmlformats-officedocument.wordprocessingml.template', + 'xlam' => 'application/vnd.ms-excel.addin.macroEnabled.12', + 'xlsb' => 'application/vnd.ms-excel.sheet.binary.macroEnabled.12', + 'class' => 'application/octet-stream', + 'dll' => 'application/octet-stream', + 'dms' => 'application/octet-stream', + 'exe' => 'application/octet-stream', + 'lha' => 'application/octet-stream', + 'lzh' => 'application/octet-stream', + 'psd' => 'application/octet-stream', + 'sea' => 'application/octet-stream', + 'so' => 'application/octet-stream', + 'oda' => 'application/oda', + 'pdf' => 'application/pdf', + 'ai' => 'application/postscript', + 'eps' => 'application/postscript', + 'ps' => 'application/postscript', + 'smi' => 'application/smil', + 'smil' => 'application/smil', + 'mif' => 'application/vnd.mif', + 'xls' => 'application/vnd.ms-excel', + 'ppt' => 'application/vnd.ms-powerpoint', + 'wbxml' => 'application/vnd.wap.wbxml', + 'wmlc' => 'application/vnd.wap.wmlc', + 'dcr' => 'application/x-director', + 'dir' => 'application/x-director', + 'dxr' => 'application/x-director', + 'dvi' => 'application/x-dvi', + 'gtar' => 'application/x-gtar', + 'php3' => 'application/x-httpd-php', + 'php4' => 'application/x-httpd-php', + 'php' => 'application/x-httpd-php', + 'phtml' => 'application/x-httpd-php', + 'phps' => 'application/x-httpd-php-source', + 'swf' => 'application/x-shockwave-flash', + 'sit' => 'application/x-stuffit', + 'tar' => 'application/x-tar', + 'tgz' => 'application/x-tar', + 'xht' => 'application/xhtml+xml', + 'xhtml' => 'application/xhtml+xml', + 'zip' => 'application/zip', + 'mid' => 'audio/midi', + 'midi' => 'audio/midi', + 'mp2' => 'audio/mpeg', + 'mp3' => 'audio/mpeg', + 'mpga' => 'audio/mpeg', + 'aif' => 'audio/x-aiff', + 'aifc' => 'audio/x-aiff', + 'aiff' => 'audio/x-aiff', + 'ram' => 'audio/x-pn-realaudio', + 'rm' => 'audio/x-pn-realaudio', + 'rpm' => 'audio/x-pn-realaudio-plugin', + 'ra' => 'audio/x-realaudio', + 'wav' => 'audio/x-wav', + 'bmp' => 'image/bmp', + 'gif' => 'image/gif', + 'jpeg' => 'image/jpeg', + 'jpe' => 'image/jpeg', + 'jpg' => 'image/jpeg', + 'png' => 'image/png', + 'tiff' => 'image/tiff', + 'tif' => 'image/tiff', + 'eml' => 'message/rfc822', + 'css' => 'text/css', + 'html' => 'text/html', + 'htm' => 'text/html', + 'shtml' => 'text/html', + 'log' => 'text/plain', + 'text' => 'text/plain', + 'txt' => 'text/plain', + 'rtx' => 'text/richtext', + 'rtf' => 'text/rtf', + 'vcf' => 'text/vcard', + 'vcard' => 'text/vcard', + 'xml' => 'text/xml', + 'xsl' => 'text/xml', + 'mpeg' => 'video/mpeg', + 'mpe' => 'video/mpeg', + 'mpg' => 'video/mpeg', + 'mov' => 'video/quicktime', + 'qt' => 'video/quicktime', + 'rv' => 'video/vnd.rn-realvideo', + 'avi' => 'video/x-msvideo', + 'movie' => 'video/x-sgi-movie' + ); + if (array_key_exists(strtolower($ext), $mimes)) { + return $mimes[strtolower($ext)]; + } + return 'application/octet-stream'; + } - if($disposition == 'inline') { - $mime[] = sprintf("Content-ID: <%s>%s", $cid, $this->LE); + /** + * Map a file name to a MIME type. + * Defaults to 'application/octet-stream', i.e.. arbitrary binary data. + * @param string $filename A file name or full path, does not need to exist as a file + * @return string + * @static + */ + public static function filenameToType($filename) + { + // In case the path is a URL, strip any query string before getting extension + $qpos = strpos($filename, '?'); + if (false !== $qpos) { + $filename = substr($filename, 0, $qpos); } + $pathinfo = self::mb_pathinfo($filename); + return self::_mime_types($pathinfo['extension']); + } - $mime[] = sprintf("Content-Disposition: %s; filename=\"%s\"%s", $disposition, $this->EncodeHeader($this->SecureHeader($name)), $this->LE.$this->LE); + /** + * Multi-byte-safe pathinfo replacement. + * Drop-in replacement for pathinfo(), but multibyte-safe, cross-platform-safe, old-version-safe. + * Works similarly to the one in PHP >= 5.2.0 + * @link http://www.php.net/manual/en/function.pathinfo.php#107461 + * @param string $path A filename or path, does not need to exist as a file + * @param integer|string $options Either a PATHINFO_* constant, + * or a string name to return only the specified piece, allows 'filename' to work on PHP < 5.2 + * @return string|array + * @static + */ + public static function mb_pathinfo($path, $options = null) + { + $ret = array('dirname' => '', 'basename' => '', 'extension' => '', 'filename' => ''); + $pathinfo = array(); + if (preg_match('%^(.*?)[\\\\/]*(([^/\\\\]*?)(\.([^\.\\\\/]+?)|))[\\\\/\.]*$%im', $path, $pathinfo)) { + if (array_key_exists(1, $pathinfo)) { + $ret['dirname'] = $pathinfo[1]; + } + if (array_key_exists(2, $pathinfo)) { + $ret['basename'] = $pathinfo[2]; + } + if (array_key_exists(5, $pathinfo)) { + $ret['extension'] = $pathinfo[5]; + } + if (array_key_exists(3, $pathinfo)) { + $ret['filename'] = $pathinfo[3]; + } + } + switch ($options) { + case PATHINFO_DIRNAME: + case 'dirname': + return $ret['dirname']; + case PATHINFO_BASENAME: + case 'basename': + return $ret['basename']; + case PATHINFO_EXTENSION: + case 'extension': + return $ret['extension']; + case PATHINFO_FILENAME: + case 'filename': + return $ret['filename']; + default: + return $ret; + } + } - // Encode as string attachment - if($bString) { - $mime[] = $this->EncodeString($string, $encoding); - if($this->IsError()) { - return ''; - } - $mime[] = $this->LE.$this->LE; + /** + * Set or reset instance properties. + * You should avoid this function - it's more verbose, less efficient, more error-prone and + * harder to debug than setting properties directly. + * Usage Example: + * `$mail->set('SMTPSecure', 'tls');` + * is the same as: + * `$mail->SMTPSecure = 'tls';` + * @access public + * @param string $name The property name to set + * @param mixed $value The value to set the property to + * @return boolean + * @TODO Should this not be using the __set() magic function? + */ + public function set($name, $value = '') + { + if (property_exists($this, $name)) { + $this->$name = $value; + return true; } else { - $mime[] = $this->EncodeFile($path, $encoding); - if($this->IsError()) { + $this->setError($this->lang('variable_set') . $name); + return false; + } + } + + /** + * Strip newlines to prevent header injection. + * @access public + * @param string $str + * @return string + */ + public function secureHeader($str) + { + return trim(str_replace(array("\r", "\n"), '', $str)); + } + + /** + * Normalize line breaks in a string. + * Converts UNIX LF, Mac CR and Windows CRLF line breaks into a single line break format. + * Defaults to CRLF (for message bodies) and preserves consecutive breaks. + * @param string $text + * @param string $breaktype What kind of line break to use, defaults to CRLF + * @return string + * @access public + * @static + */ + public static function normalizeBreaks($text, $breaktype = "\r\n") + { + return preg_replace('/(\r\n|\r|\n)/ms', $breaktype, $text); + } + + /** + * Set the public and private key files and password for S/MIME signing. + * @access public + * @param string $cert_filename + * @param string $key_filename + * @param string $key_pass Password for private key + * @param string $extracerts_filename Optional path to chain certificate + */ + public function sign($cert_filename, $key_filename, $key_pass, $extracerts_filename = '') + { + $this->sign_cert_file = $cert_filename; + $this->sign_key_file = $key_filename; + $this->sign_key_pass = $key_pass; + $this->sign_extracerts_file = $extracerts_filename; + } + + /** + * Quoted-Printable-encode a DKIM header. + * @access public + * @param string $txt + * @return string + */ + public function DKIM_QP($txt) + { + $line = ''; + for ($i = 0; $i < strlen($txt); $i++) { + $ord = ord($txt[$i]); + if (((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E))) { + $line .= $txt[$i]; + } else { + $line .= '=' . sprintf('%02X', $ord); + } + } + return $line; + } + + /** + * Generate a DKIM signature. + * @access public + * @param string $signHeader + * @throws phpmailerException + * @return string The DKIM signature value + */ + public function DKIM_Sign($signHeader) + { + if (!defined('PKCS7_TEXT')) { + if ($this->exceptions) { + throw new phpmailerException($this->lang('extension_missing') . 'openssl'); + } return ''; - } - $mime[] = $this->LE.$this->LE; - } - } - } - - $mime[] = sprintf("--%s--%s", $boundary, $this->LE); - - return implode("", $mime); - } - - /** - * Encodes attachment in requested format. - * Returns an empty string on failure. - * @param string $path The full path to the file - * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' - * @throws phpmailerException - * @see EncodeFile() - * @access protected - * @return string - */ - protected function EncodeFile($path, $encoding = 'base64') { - try { - if (!is_readable($path)) { - throw new phpmailerException($this->Lang('file_open') . $path, self::STOP_CONTINUE); - } - $magic_quotes = get_magic_quotes_runtime(); - if ($magic_quotes) { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - set_magic_quotes_runtime(0); + } + $privKeyStr = !empty($this->DKIM_private_string) ? $this->DKIM_private_string : file_get_contents($this->DKIM_private); + if ('' != $this->DKIM_passphrase) { + $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); } else { - ini_set('magic_quotes_runtime', 0); - } - } - $file_buffer = file_get_contents($path); - $file_buffer = $this->EncodeString($file_buffer, $encoding); - if ($magic_quotes) { - if (version_compare(PHP_VERSION, '5.3.0', '<')) { - set_magic_quotes_runtime($magic_quotes); + $privKey = openssl_pkey_get_private($privKeyStr); + } + //Workaround for missing digest algorithms in old PHP & OpenSSL versions + //@link http://stackoverflow.com/a/11117338/333340 + if (version_compare(PHP_VERSION, '5.3.0') >= 0 and + in_array('sha256WithRSAEncryption', openssl_get_md_methods(true))) { + if (openssl_sign($signHeader, $signature, $privKey, 'sha256WithRSAEncryption')) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } } else { - ini_set('magic_quotes_runtime', $magic_quotes); - } - } - return $file_buffer; - } catch (Exception $e) { - $this->SetError($e->getMessage()); - return ''; - } - } - - /** - * Encodes string to requested format. - * Returns an empty string on failure. - * @param string $str The text to encode - * @param string $encoding The encoding to use; one of 'base64', '7bit', '8bit', 'binary', 'quoted-printable' - * @access public - * @return string - */ - public function EncodeString($str, $encoding = 'base64') { - $encoded = ''; - switch(strtolower($encoding)) { - case 'base64': - $encoded = chunk_split(base64_encode($str), 76, $this->LE); - break; - case '7bit': - case '8bit': - $encoded = $this->FixEOL($str); - //Make sure it ends with a line break - if (substr($encoded, -(strlen($this->LE))) != $this->LE) - $encoded .= $this->LE; - break; - case 'binary': - $encoded = $str; - break; - case 'quoted-printable': - $encoded = $this->EncodeQP($str); - break; - default: - $this->SetError($this->Lang('encoding') . $encoding); - break; - } - return $encoded; - } - - /** - * Encode a header string to best (shortest) of Q, B, quoted or none. - * @access public - * @param string $str - * @param string $position - * @return string - */ - public function EncodeHeader($str, $position = 'text') { - $x = 0; - - switch (strtolower($position)) { - case 'phrase': - if (!preg_match('/[\200-\377]/', $str)) { - // Can't use addslashes as we don't know what value has magic_quotes_sybase - $encoded = addcslashes($str, "\0..\37\177\\\""); - if (($str == $encoded) && !preg_match('/[^A-Za-z0-9!#$%&\'*+\/=?^_`{|}~ -]/', $str)) { - return ($encoded); - } else { - return ("\"$encoded\""); - } - } - $x = preg_match_all('/[^\040\041\043-\133\135-\176]/', $str, $matches); - break; - case 'comment': - $x = preg_match_all('/[()"]/', $str, $matches); - // Fall-through - case 'text': - default: - $x += preg_match_all('/[\000-\010\013\014\016-\037\177-\377]/', $str, $matches); - break; - } - - if ($x == 0) { //There are no chars that need encoding - return ($str); - } - - $maxlen = 75 - 7 - strlen($this->CharSet); - // Try to select the encoding which should produce the shortest output - if ($x > strlen($str)/3) { //More than a third of the content will need encoding, so B encoding will be most efficient - $encoding = 'B'; - if (function_exists('mb_strlen') && $this->HasMultiBytes($str)) { - // Use a custom function which correctly encodes and wraps long - // multibyte strings without breaking lines within a character - $encoded = $this->Base64EncodeWrapMB($str, "\n"); - } else { - $encoded = base64_encode($str); - $maxlen -= $maxlen % 4; - $encoded = trim(chunk_split($encoded, $maxlen, "\n")); - } - } else { - $encoding = 'Q'; - $encoded = $this->EncodeQ($str, $position); - $encoded = $this->WrapText($encoded, $maxlen, true); - $encoded = str_replace('='.self::CRLF, "\n", trim($encoded)); - } - - $encoded = preg_replace('/^(.*)$/m', " =?".$this->CharSet."?$encoding?\\1?=", $encoded); - $encoded = trim(str_replace("\n", $this->LE, $encoded)); - - return $encoded; - } - - /** - * Checks if a string contains multibyte characters. - * @access public - * @param string $str multi-byte text to wrap encode - * @return bool - */ - public function HasMultiBytes($str) { - if (function_exists('mb_strlen')) { - return (strlen($str) > mb_strlen($str, $this->CharSet)); - } else { // Assume no multibytes (we can't handle without mbstring functions anyway) - return false; - } - } - - /** - * Correctly encodes and wraps long multibyte strings for mail headers - * without breaking lines within a character. - * Adapted from a function by paravoid at http://uk.php.net/manual/en/function.mb-encode-mimeheader.php - * @access public - * @param string $str multi-byte text to wrap encode - * @param string $lf string to use as linefeed/end-of-line - * @return string - */ - public function Base64EncodeWrapMB($str, $lf=null) { - $start = "=?".$this->CharSet."?B?"; - $end = "?="; - $encoded = ""; - if ($lf === null) { - $lf = $this->LE; - } - - $mb_length = mb_strlen($str, $this->CharSet); - // Each line must have length <= 75, including $start and $end - $length = 75 - strlen($start) - strlen($end); - // Average multi-byte ratio - $ratio = $mb_length / strlen($str); - // Base64 has a 4:3 ratio - $offset = $avgLength = floor($length * $ratio * .75); - - for ($i = 0; $i < $mb_length; $i += $offset) { - $lookBack = 0; - - do { - $offset = $avgLength - $lookBack; - $chunk = mb_substr($str, $i, $offset, $this->CharSet); - $chunk = base64_encode($chunk); - $lookBack++; - } - while (strlen($chunk) > $length); - - $encoded .= $chunk . $lf; - } - - // Chomp the last linefeed - $encoded = substr($encoded, 0, -strlen($lf)); - return $encoded; - } - - /** - * Encode string to RFC2045 (6.7) quoted-printable format - * @access public - * @param string $string The text to encode - * @param integer $line_max Number of chars allowed on a line before wrapping - * @return string - * @link PHP version adapted from http://www.php.net/manual/en/function.quoted-printable-decode.php#89417 - */ - public function EncodeQP($string, $line_max = 76) { - if (function_exists('quoted_printable_encode')) { //Use native function if it's available (>= PHP5.3) - return quoted_printable_encode($string); - } - //Fall back to a pure PHP implementation - $string = str_replace(array('%20', '%0D%0A.', '%0D%0A', '%'), array(' ', "\r\n=2E", "\r\n", '='), rawurlencode($string)); - $string = preg_replace('/[^\r\n]{'.($line_max - 3).'}[^=\r\n]{2}/', "$0=\r\n", $string); - return $string; - } - - /** - * Wrapper to preserve BC for old QP encoding function that was removed - * @see EncodeQP() - * @access public - * @param string $string - * @param integer $line_max - * @param bool $space_conv - * @return string - */ - public function EncodeQPphp($string, $line_max = 76, $space_conv = false) { - return $this->EncodeQP($string, $line_max); - } - - /** - * Encode string to q encoding. - * @link http://tools.ietf.org/html/rfc2047 - * @param string $str the text to encode - * @param string $position Where the text is going to be used, see the RFC for what that means - * @access public - * @return string - */ - public function EncodeQ($str, $position = 'text') { - //There should not be any EOL in the string - $pattern=""; - $encoded = str_replace(array("\r", "\n"), '', $str); - switch (strtolower($position)) { - case 'phrase': - $pattern = '^A-Za-z0-9!*+\/ -'; - break; - - case 'comment': - $pattern = '\(\)"'; - //note that we don't break here! - //for this reason we build the $pattern without including delimiters and [] - - case 'text': - default: - //Replace every high ascii, control =, ? and _ characters - //We put \075 (=) as first value to make sure it's the first one in being converted, preventing double encode - $pattern = '\075\000-\011\013\014\016-\037\077\137\177-\377' . $pattern; - break; - } - - if (preg_match_all("/[{$pattern}]/", $encoded, $matches)) { - foreach (array_unique($matches[0]) as $char) { - $encoded = str_replace($char, '=' . sprintf('%02X', ord($char)), $encoded); - } - } - - //Replace every spaces to _ (more readable than =20) - return str_replace(' ', '_', $encoded); -} + $pinfo = openssl_pkey_get_details($privKey); + $hash = hash('sha256', $signHeader); + //'Magic' constant for SHA256 from RFC3447 + //@link https://tools.ietf.org/html/rfc3447#page-43 + $t = '3031300d060960864801650304020105000420' . $hash; + $pslen = $pinfo['bits'] / 8 - (strlen($t) / 2 + 3); + $eb = pack('H*', '0001' . str_repeat('FF', $pslen) . '00' . $t); + + if (openssl_private_encrypt($eb, $signature, $privKey, OPENSSL_NO_PADDING)) { + openssl_pkey_free($privKey); + return base64_encode($signature); + } + } + openssl_pkey_free($privKey); + return ''; + } + /** + * Generate a DKIM canonicalization header. + * @access public + * @param string $signHeader Header + * @return string + */ + public function DKIM_HeaderC($signHeader) + { + $signHeader = preg_replace('/\r\n\s+/', ' ', $signHeader); + $lines = explode("\r\n", $signHeader); + foreach ($lines as $key => $line) { + list($heading, $value) = explode(':', $line, 2); + $heading = strtolower($heading); + $value = preg_replace('/\s{2,}/', ' ', $value); // Compress useless spaces + $lines[$key] = $heading . ':' . trim($value); // Don't forget to remove WSP around the value + } + $signHeader = implode("\r\n", $lines); + return $signHeader; + } - /** - * Adds a string or binary attachment (non-filesystem) to the list. - * This method can be used to attach ascii or binary data, - * such as a BLOB record from a database. - * @param string $string String attachment data. - * @param string $filename Name of the attachment. - * @param string $encoding File encoding (see $Encoding). - * @param string $type File extension (MIME) type. - * @return void - */ - public function AddStringAttachment($string, $filename, $encoding = 'base64', $type = 'application/octet-stream') { - // Append to $attachment array - $this->attachment[] = array( - 0 => $string, - 1 => $filename, - 2 => basename($filename), - 3 => $encoding, - 4 => $type, - 5 => true, // isStringAttachment - 6 => 'attachment', - 7 => 0 - ); - } - - /** - * Add an embedded attachment from a file. - * This can include images, sounds, and just about any other document type. - * Be sure to set the $type to an image type for images: - * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'. - * @param string $path Path to the attachment. - * @param string $cid Content ID of the attachment; Use this to reference - * the content when using an embedded image in HTML. - * @param string $name Overrides the attachment name. - * @param string $encoding File encoding (see $Encoding). - * @param string $type File MIME type. - * @return bool True on successfully adding an attachment - */ - public function AddEmbeddedImage($path, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { - - if ( !@is_file($path) ) { - $this->SetError($this->Lang('file_access') . $path); - return false; - } - - $filename = basename($path); - if ( $name == '' ) { - $name = $filename; - } - - // Append to $attachment array - $this->attachment[] = array( - 0 => $path, - 1 => $filename, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => false, // isStringAttachment - 6 => 'inline', - 7 => $cid - ); - return true; - } - - - /** - * Add an embedded stringified attachment. - * This can include images, sounds, and just about any other document type. - * Be sure to set the $type to an image type for images: - * JPEG images use 'image/jpeg', GIF uses 'image/gif', PNG uses 'image/png'. - * @param string $string The attachment binary data. - * @param string $cid Content ID of the attachment; Use this to reference - * the content when using an embedded image in HTML. - * @param string $name - * @param string $encoding File encoding (see $Encoding). - * @param string $type MIME type. - * @return bool True on successfully adding an attachment - */ - public function AddStringEmbeddedImage($string, $cid, $name = '', $encoding = 'base64', $type = 'application/octet-stream') { - // Append to $attachment array - $this->attachment[] = array( - 0 => $string, - 1 => $name, - 2 => $name, - 3 => $encoding, - 4 => $type, - 5 => true, // isStringAttachment - 6 => 'inline', - 7 => $cid - ); - return true; - } - - /** - * Returns true if an inline attachment is present. - * @access public - * @return bool - */ - public function InlineImageExists() { - foreach($this->attachment as $attachment) { - if ($attachment[6] == 'inline') { - return true; - } - } - return false; - } - - /** - * Returns true if an attachment (non-inline) is present. - * @return bool - */ - public function AttachmentExists() { - foreach($this->attachment as $attachment) { - if ($attachment[6] == 'attachment') { - return true; - } - } - return false; - } - - /** - * Does this message have an alternative body set? - * @return bool - */ - public function AlternativeExists() { - return !empty($this->AltBody); - } - - ///////////////////////////////////////////////// - // CLASS METHODS, MESSAGE RESET - ///////////////////////////////////////////////// - - /** - * Clears all recipients assigned in the TO array. Returns void. - * @return void - */ - public function ClearAddresses() { - foreach($this->to as $to) { - unset($this->all_recipients[strtolower($to[0])]); - } - $this->to = array(); - } - - /** - * Clears all recipients assigned in the CC array. Returns void. - * @return void - */ - public function ClearCCs() { - foreach($this->cc as $cc) { - unset($this->all_recipients[strtolower($cc[0])]); - } - $this->cc = array(); - } - - /** - * Clears all recipients assigned in the BCC array. Returns void. - * @return void - */ - public function ClearBCCs() { - foreach($this->bcc as $bcc) { - unset($this->all_recipients[strtolower($bcc[0])]); - } - $this->bcc = array(); - } - - /** - * Clears all recipients assigned in the ReplyTo array. Returns void. - * @return void - */ - public function ClearReplyTos() { - $this->ReplyTo = array(); - } - - /** - * Clears all recipients assigned in the TO, CC and BCC - * array. Returns void. - * @return void - */ - public function ClearAllRecipients() { - $this->to = array(); - $this->cc = array(); - $this->bcc = array(); - $this->all_recipients = array(); - } - - /** - * Clears all previously set filesystem, string, and binary - * attachments. Returns void. - * @return void - */ - public function ClearAttachments() { - $this->attachment = array(); - } - - /** - * Clears all custom headers. Returns void. - * @return void - */ - public function ClearCustomHeaders() { - $this->CustomHeader = array(); - } - - ///////////////////////////////////////////////// - // CLASS METHODS, MISCELLANEOUS - ///////////////////////////////////////////////// - - /** - * Adds the error message to the error container. - * @access protected - * @param string $msg - * @return void - */ - protected function SetError($msg) { - $this->error_count++; - if ($this->Mailer == 'smtp' and !is_null($this->smtp)) { - $lasterror = $this->smtp->getError(); - if (!empty($lasterror) and array_key_exists('smtp_msg', $lasterror)) { - $msg .= '

                      ' . $this->Lang('smtp_error') . $lasterror['smtp_msg'] . "

                      \n"; - } - } - $this->ErrorInfo = $msg; - } - - /** - * Returns the proper RFC 822 formatted date. - * @access public - * @return string - * @static - */ - public static function RFCDate() { - //Set the time zone to whatever the default is to avoid 500 errors - //Will default to UTC if it's not set properly in php.ini - date_default_timezone_set(@date_default_timezone_get()); - return date('D, j M Y H:i:s O'); - } - - /** - * Returns the server hostname or 'localhost.localdomain' if unknown. - * @access protected - * @return string - */ - protected function ServerHostname() { - if (!empty($this->Hostname)) { - $result = $this->Hostname; - } elseif (isset($_SERVER['SERVER_NAME'])) { - $result = $_SERVER['SERVER_NAME']; - } else { - $result = 'localhost.localdomain'; - } - - return $result; - } - - /** - * Returns a message in the appropriate language. - * @access protected - * @param string $key - * @return string - */ - protected function Lang($key) { - if(count($this->language) < 1) { - $this->SetLanguage('en'); // set the default language - } - - if(isset($this->language[$key])) { - return $this->language[$key]; - } else { - return 'Language string failed to load: ' . $key; - } - } - - /** - * Returns true if an error occurred. - * @access public - * @return bool - */ - public function IsError() { - return ($this->error_count > 0); - } - - /** - * Changes every end of line from CRLF, CR or LF to $this->LE. - * @access public - * @param string $str String to FixEOL - * @return string - */ - public function FixEOL($str) { - // condense down to \n - $nstr = str_replace(array("\r\n", "\r"), "\n", $str); - // Now convert LE as needed - if ($this->LE !== "\n") { - $nstr = str_replace("\n", $this->LE, $nstr); - } - return $nstr; - } - - /** - * Adds a custom header. $name value can be overloaded to contain - * both header name and value (name:value) - * @access public - * @param string $name custom header name - * @param string $value header value - * @return void - */ - public function AddCustomHeader($name, $value=null) { - if ($value === null) { - // Value passed in as name:value - $this->CustomHeader[] = explode(':', $name, 2); - } else { - $this->CustomHeader[] = array($name, $value); - } - } - - /** - * Creates a message from an HTML string, making modifications for inline images and backgrounds - * and creates a plain-text version by converting the HTML - * Overwrites any existing values in $this->Body and $this->AltBody - * @access public - * @param string $message HTML message string - * @param string $basedir baseline directory for path - * @param bool $advanced Whether to use the advanced HTML to text converter - * @return string $message - */ - public function MsgHTML($message, $basedir = '', $advanced = false) { - preg_match_all("/(src|background)=[\"'](.*)[\"']/Ui", $message, $images); - if(isset($images[2])) { - foreach($images[2] as $i => $url) { - // do not change urls for absolute images (thanks to corvuscorax) - if (!preg_match('#^[A-z]+://#', $url)) { - $filename = basename($url); - $directory = dirname($url); - if ($directory == '.') { - $directory = ''; - } - $cid = 'cid:' . md5($url); - $ext = pathinfo($filename, PATHINFO_EXTENSION); - $mimeType = self::_mime_types($ext); - if ( strlen($basedir) > 1 && substr($basedir, -1) != '/') { $basedir .= '/'; } - if ( strlen($directory) > 1 && substr($directory, -1) != '/') { $directory .= '/'; } - if ( $this->AddEmbeddedImage($basedir.$directory.$filename, md5($url), $filename, 'base64', $mimeType) ) { - $message = preg_replace("/".$images[1][$i]."=[\"']".preg_quote($url, '/')."[\"']/Ui", $images[1][$i]."=\"".$cid."\"", $message); - } - } - } - } - $this->IsHTML(true); - $this->Body = $message; - $this->AltBody = $this->html2text($message, $advanced); - if (empty($this->AltBody)) { - $this->AltBody = 'To view this email message, open it in a program that understands HTML!' . "\n\n"; - } - return $message; - } - - /** - * Convert an HTML string into a plain text version - * @param string $html The HTML text to convert - * @param bool $advanced Should this use the more complex html2text converter or just a simple one? + /** + * Generate a DKIM canonicalization body. + * @access public + * @param string $body Message Body * @return string */ - public function html2text($html, $advanced = false) { - if ($advanced) { - require_once 'extras/class.html2text.php'; - $h = new html2text($html); - return $h->get_text(); - } - return html_entity_decode(trim(strip_tags(preg_replace('/<(head|title|style|script)[^>]*>.*?<\/\\1>/s', '', $html))), ENT_QUOTES, $this->CharSet); - } - - /** - * Gets the MIME type of the embedded or inline image - * @param string $ext File extension - * @access public - * @return string MIME type of ext - * @static - */ - public static function _mime_types($ext = '') { - $mimes = array( - 'xl' => 'application/excel', - 'hqx' => 'application/mac-binhex40', - 'cpt' => 'application/mac-compactpro', - 'bin' => 'application/macbinary', - 'doc' => 'application/msword', - 'word' => 'application/msword', - 'class' => 'application/octet-stream', - 'dll' => 'application/octet-stream', - 'dms' => 'application/octet-stream', - 'exe' => 'application/octet-stream', - 'lha' => 'application/octet-stream', - 'lzh' => 'application/octet-stream', - 'psd' => 'application/octet-stream', - 'sea' => 'application/octet-stream', - 'so' => 'application/octet-stream', - 'oda' => 'application/oda', - 'pdf' => 'application/pdf', - 'ai' => 'application/postscript', - 'eps' => 'application/postscript', - 'ps' => 'application/postscript', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'mif' => 'application/vnd.mif', - 'xls' => 'application/vnd.ms-excel', - 'ppt' => 'application/vnd.ms-powerpoint', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'dxr' => 'application/x-director', - 'dvi' => 'application/x-dvi', - 'gtar' => 'application/x-gtar', - 'php3' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'js' => 'application/x-javascript', - 'swf' => 'application/x-shockwave-flash', - 'sit' => 'application/x-stuffit', - 'tar' => 'application/x-tar', - 'tgz' => 'application/x-tar', - 'xht' => 'application/xhtml+xml', - 'xhtml' => 'application/xhtml+xml', - 'zip' => 'application/zip', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mpga' => 'audio/mpeg', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'ram' => 'audio/x-pn-realaudio', - 'rm' => 'audio/x-pn-realaudio', - 'rpm' => 'audio/x-pn-realaudio-plugin', - 'ra' => 'audio/x-realaudio', - 'wav' => 'audio/x-wav', - 'bmp' => 'image/bmp', - 'gif' => 'image/gif', - 'jpeg' => 'image/jpeg', - 'jpe' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'png' => 'image/png', - 'tiff' => 'image/tiff', - 'tif' => 'image/tiff', - 'eml' => 'message/rfc822', - 'css' => 'text/css', - 'html' => 'text/html', - 'htm' => 'text/html', - 'shtml' => 'text/html', - 'log' => 'text/plain', - 'text' => 'text/plain', - 'txt' => 'text/plain', - 'rtx' => 'text/richtext', - 'rtf' => 'text/rtf', - 'xml' => 'text/xml', - 'xsl' => 'text/xml', - 'mpeg' => 'video/mpeg', - 'mpe' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mov' => 'video/quicktime', - 'qt' => 'video/quicktime', - 'rv' => 'video/vnd.rn-realvideo', - 'avi' => 'video/x-msvideo', - 'movie' => 'video/x-sgi-movie' - ); - return (!isset($mimes[strtolower($ext)])) ? 'application/octet-stream' : $mimes[strtolower($ext)]; - } - - /** - * Set (or reset) Class Objects (variables) - * - * Usage Example: - * $page->set('X-Priority', '3'); - * - * @access public - * @param string $name - * @param mixed $value - * NOTE: will not work with arrays, there are no arrays to set/reset - * @throws phpmailerException - * @return bool - * @todo Should this not be using __set() magic function? - */ - public function set($name, $value = '') { - try { - if (isset($this->$name) ) { - $this->$name = $value; - } else { - throw new phpmailerException($this->Lang('variable_set') . $name, self::STOP_CRITICAL); - } - } catch (Exception $e) { - $this->SetError($e->getMessage()); - if ($e->getCode() == self::STOP_CRITICAL) { - return false; - } - } - return true; - } - - /** - * Strips newlines to prevent header injection. - * @access public - * @param string $str - * @return string - */ - public function SecureHeader($str) { - return trim(str_replace(array("\r", "\n"), '', $str)); - } - - /** - * Set the private key file and password to sign the message. - * - * @access public - * @param string $cert_filename - * @param string $key_filename - * @param string $key_pass Password for private key - */ - public function Sign($cert_filename, $key_filename, $key_pass) { - $this->sign_cert_file = $cert_filename; - $this->sign_key_file = $key_filename; - $this->sign_key_pass = $key_pass; - } - - /** - * Set the private key file and password to sign the message. - * - * @access public - * @param string $txt - * @return string - */ - public function DKIM_QP($txt) { - $line = ''; - for ($i = 0; $i < strlen($txt); $i++) { - $ord = ord($txt[$i]); - if ( ((0x21 <= $ord) && ($ord <= 0x3A)) || $ord == 0x3C || ((0x3E <= $ord) && ($ord <= 0x7E)) ) { - $line .= $txt[$i]; - } else { - $line .= "=".sprintf("%02X", $ord); - } - } - return $line; - } - - /** - * Generate DKIM signature - * - * @access public - * @param string $s Header - * @throws phpmailerException - * @return string - */ - public function DKIM_Sign($s) { - if (!defined('PKCS7_TEXT')) { - if ($this->exceptions) { - throw new phpmailerException($this->Lang("signing").' OpenSSL extension missing.'); + public function DKIM_BodyC($body) + { + if ($body == '') { + return "\r\n"; } - return ''; + // stabilize line endings + $body = str_replace("\r\n", "\n", $body); + $body = str_replace("\n", "\r\n", $body); + // END stabilize line endings + while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") { + $body = substr($body, 0, strlen($body) - 2); + } + return $body; } - $privKeyStr = file_get_contents($this->DKIM_private); - if ($this->DKIM_passphrase != '') { - $privKey = openssl_pkey_get_private($privKeyStr, $this->DKIM_passphrase); - } else { - $privKey = $privKeyStr; - } - if (openssl_sign($s, $signature, $privKey)) { - return base64_encode($signature); - } - return ''; - } - - /** - * Generate DKIM Canonicalization Header - * - * @access public - * @param string $s Header - * @return string - */ - public function DKIM_HeaderC($s) { - $s = preg_replace("/\r\n\s+/", " ", $s); - $lines = explode("\r\n", $s); - foreach ($lines as $key => $line) { - list($heading, $value) = explode(":", $line, 2); - $heading = strtolower($heading); - $value = preg_replace("/\s+/", " ", $value) ; // Compress useless spaces - $lines[$key] = $heading.":".trim($value) ; // Don't forget to remove WSP around the value - } - $s = implode("\r\n", $lines); - return $s; - } - - /** - * Generate DKIM Canonicalization Body - * - * @access public - * @param string $body Message Body - * @return string - */ - public function DKIM_BodyC($body) { - if ($body == '') return "\r\n"; - // stabilize line endings - $body = str_replace("\r\n", "\n", $body); - $body = str_replace("\n", "\r\n", $body); - // END stabilize line endings - while (substr($body, strlen($body) - 4, 4) == "\r\n\r\n") { - $body = substr($body, 0, strlen($body) - 2); - } - return $body; - } - - /** - * Create the DKIM header, body, as new header - * - * @access public - * @param string $headers_line Header lines - * @param string $subject Subject - * @param string $body Body - * @return string - */ - public function DKIM_Add($headers_line, $subject, $body) { - $DKIMsignatureType = 'rsa-sha1'; // Signature & hash algorithms - $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body - $DKIMquery = 'dns/txt'; // Query method - $DKIMtime = time() ; // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) - $subject_header = "Subject: $subject"; - $headers = explode($this->LE, $headers_line); - $from_header = ''; - $to_header = ''; - $current = ''; - foreach($headers as $header) { - if (strpos($header, 'From:') === 0) { - $from_header = $header; - $current = 'from_header'; - } elseif (strpos($header, 'To:') === 0) { - $to_header = $header; - $current = 'to_header'; - } else { - if($current && strpos($header, ' =?') === 0){ - $$current .= $header; + + /** + * Create the DKIM header and body in a new message header. + * @access public + * @param string $headers_line Header lines + * @param string $subject Subject + * @param string $body Body + * @return string + */ + public function DKIM_Add($headers_line, $subject, $body) + { + $DKIMsignatureType = 'rsa-sha256'; // Signature & hash algorithms + $DKIMcanonicalization = 'relaxed/simple'; // Canonicalization of header/body + $DKIMquery = 'dns/txt'; // Query method + $DKIMtime = time(); // Signature Timestamp = seconds since 00:00:00 - Jan 1, 1970 (UTC time zone) + $subject_header = "Subject: $subject"; + $headers = explode($this->LE, $headers_line); + $from_header = ''; + $to_header = ''; + $date_header = ''; + $current = ''; + foreach ($headers as $header) { + if (strpos($header, 'From:') === 0) { + $from_header = $header; + $current = 'from_header'; + } elseif (strpos($header, 'To:') === 0) { + $to_header = $header; + $current = 'to_header'; + } elseif (strpos($header, 'Date:') === 0) { + $date_header = $header; + $current = 'date_header'; + } else { + if (!empty($$current) && strpos($header, ' =?') === 0) { + $$current .= $header; + } else { + $current = ''; + } + } + } + $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); + $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); + $date = str_replace('|', '=7C', $this->DKIM_QP($date_header)); + $subject = str_replace( + '|', + '=7C', + $this->DKIM_QP($subject_header) + ); // Copied header fields (dkim-quoted-printable) + $body = $this->DKIM_BodyC($body); + $DKIMlen = strlen($body); // Length of body + $DKIMb64 = base64_encode(pack('H*', hash('sha256', $body))); // Base64 of packed binary SHA-256 hash of body + if ('' == $this->DKIM_identity) { + $ident = ''; } else { - $current = ''; - } - } - } - $from = str_replace('|', '=7C', $this->DKIM_QP($from_header)); - $to = str_replace('|', '=7C', $this->DKIM_QP($to_header)); - $subject = str_replace('|', '=7C', $this->DKIM_QP($subject_header)) ; // Copied header fields (dkim-quoted-printable - $body = $this->DKIM_BodyC($body); - $DKIMlen = strlen($body) ; // Length of body - $DKIMb64 = base64_encode(pack("H*", sha1($body))) ; // Base64 of packed binary SHA-1 hash of body - $ident = ($this->DKIM_identity == '')? '' : " i=" . $this->DKIM_identity . ";"; - $dkimhdrs = "DKIM-Signature: v=1; a=" . $DKIMsignatureType . "; q=" . $DKIMquery . "; l=" . $DKIMlen . "; s=" . $this->DKIM_selector . ";\r\n". - "\tt=" . $DKIMtime . "; c=" . $DKIMcanonicalization . ";\r\n". - "\th=From:To:Subject;\r\n". - "\td=" . $this->DKIM_domain . ";" . $ident . "\r\n". - "\tz=$from\r\n". - "\t|$to\r\n". - "\t|$subject;\r\n". - "\tbh=" . $DKIMb64 . ";\r\n". - "\tb="; - $toSign = $this->DKIM_HeaderC($from_header . "\r\n" . $to_header . "\r\n" . $subject_header . "\r\n" . $dkimhdrs); - $signed = $this->DKIM_Sign($toSign); - return $dkimhdrs.$signed."\r\n"; - } - - /** - * Perform callback - * @param boolean $isSent - * @param string $to - * @param string $cc - * @param string $bcc - * @param string $subject - * @param string $body - * @param string $from - */ - protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from = null) { - if (!empty($this->action_function) && is_callable($this->action_function)) { - $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from); - call_user_func_array($this->action_function, $params); - } - } + $ident = ' i=' . $this->DKIM_identity . ';'; + } + $dkimhdrs = 'DKIM-Signature: v=1; a=' . + $DKIMsignatureType . '; q=' . + $DKIMquery . '; l=' . + $DKIMlen . '; s=' . + $this->DKIM_selector . + ";\r\n" . + "\tt=" . $DKIMtime . '; c=' . $DKIMcanonicalization . ";\r\n" . + "\th=From:To:Date:Subject;\r\n" . + "\td=" . $this->DKIM_domain . ';' . $ident . "\r\n" . + "\tz=$from\r\n" . + "\t|$to\r\n" . + "\t|$date\r\n" . + "\t|$subject;\r\n" . + "\tbh=" . $DKIMb64 . ";\r\n" . + "\tb="; + $toSign = $this->DKIM_HeaderC( + $from_header . "\r\n" . + $to_header . "\r\n" . + $date_header . "\r\n" . + $subject_header . "\r\n" . + $dkimhdrs + ); + $signed = $this->DKIM_Sign($toSign); + return $dkimhdrs . $signed . "\r\n"; + } + + /** + * Detect if a string contains a line longer than the maximum line length allowed. + * @param string $str + * @return boolean + * @static + */ + public static function hasLineLongerThanMax($str) + { + //+2 to include CRLF line break for a 1000 total + return (boolean)preg_match('/^(.{'.(self::MAX_LINE_LENGTH + 2).',})/m', $str); + } + + /** + * Allows for public read access to 'to' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getToAddresses() + { + return $this->to; + } + + /** + * Allows for public read access to 'cc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getCcAddresses() + { + return $this->cc; + } + + /** + * Allows for public read access to 'bcc' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getBccAddresses() + { + return $this->bcc; + } + + /** + * Allows for public read access to 'ReplyTo' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getReplyToAddresses() + { + return $this->ReplyTo; + } + + /** + * Allows for public read access to 'all_recipients' property. + * @note: Before the send() call, queued addresses (i.e. with IDN) are not yet included. + * @access public + * @return array + */ + public function getAllRecipientAddresses() + { + return $this->all_recipients; + } + + /** + * Perform a callback. + * @param boolean $isSent + * @param array $to + * @param array $cc + * @param array $bcc + * @param string $subject + * @param string $body + * @param string $from + */ + protected function doCallback($isSent, $to, $cc, $bcc, $subject, $body, $from) + { + if (!empty($this->action_function) && is_callable($this->action_function)) { + $params = array($isSent, $to, $cc, $bcc, $subject, $body, $from); + call_user_func_array($this->action_function, $params); + } + } } /** - * Exception handler for PHPMailer + * PHPMailer exception handler * @package PHPMailer */ -class phpmailerException extends Exception { - /** - * Prettify error message output - * @return string - */ - public function errorMessage() { - $errorMsg = '' . $this->getMessage() . "
                      \n"; - return $errorMsg; - } +class phpmailerException extends Exception +{ + /** + * Prettify error message output + * @return string + */ + public function errorMessage() + { + $errorMsg = '' . $this->getMessage() . "
                      \n"; + return $errorMsg; + } } diff --git a/manager/includes/controls/phpmailer/class.pop3.php b/manager/includes/controls/phpmailer/class.pop3.php new file mode 100755 index 0000000000..373c886cde --- /dev/null +++ b/manager/includes/controls/phpmailer/class.pop3.php @@ -0,0 +1,407 @@ + + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2012 - 2014 Marcus Bointon + * @copyright 2010 - 2012 Jim Jagielski + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. + */ + +/** + * PHPMailer POP-Before-SMTP Authentication Class. + * Specifically for PHPMailer to use for RFC1939 POP-before-SMTP authentication. + * Does not support APOP. + * @package PHPMailer + * @author Richard Davey (original author) + * @author Marcus Bointon (Synchro/coolbru) + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + */ +class POP3 +{ + /** + * The POP3 PHPMailer Version number. + * @var string + * @access public + */ + public $Version = '5.2.21'; + + /** + * Default POP3 port number. + * @var integer + * @access public + */ + public $POP3_PORT = 110; + + /** + * Default timeout in seconds. + * @var integer + * @access public + */ + public $POP3_TIMEOUT = 30; + + /** + * POP3 Carriage Return + Line Feed. + * @var string + * @access public + * @deprecated Use the constant instead + */ + public $CRLF = "\r\n"; + + /** + * Debug display level. + * Options: 0 = no, 1+ = yes + * @var integer + * @access public + */ + public $do_debug = 0; + + /** + * POP3 mail server hostname. + * @var string + * @access public + */ + public $host; + + /** + * POP3 port number. + * @var integer + * @access public + */ + public $port; + + /** + * POP3 Timeout Value in seconds. + * @var integer + * @access public + */ + public $tval; + + /** + * POP3 username + * @var string + * @access public + */ + public $username; + + /** + * POP3 password. + * @var string + * @access public + */ + public $password; + + /** + * Resource handle for the POP3 connection socket. + * @var resource + * @access protected + */ + protected $pop_conn; + + /** + * Are we connected? + * @var boolean + * @access protected + */ + protected $connected = false; + + /** + * Error container. + * @var array + * @access protected + */ + protected $errors = array(); + + /** + * Line break constant + */ + const CRLF = "\r\n"; + + /** + * Simple static wrapper for all-in-one POP before SMTP + * @param $host + * @param integer|boolean $port The port number to connect to + * @param integer|boolean $timeout The timeout value + * @param string $username + * @param string $password + * @param integer $debug_level + * @return boolean + */ + public static function popBeforeSmtp( + $host, + $port = false, + $timeout = false, + $username = '', + $password = '', + $debug_level = 0 + ) { + $pop = new POP3; + return $pop->authorise($host, $port, $timeout, $username, $password, $debug_level); + } + + /** + * Authenticate with a POP3 server. + * A connect, login, disconnect sequence + * appropriate for POP-before SMTP authorisation. + * @access public + * @param string $host The hostname to connect to + * @param integer|boolean $port The port number to connect to + * @param integer|boolean $timeout The timeout value + * @param string $username + * @param string $password + * @param integer $debug_level + * @return boolean + */ + public function authorise($host, $port = false, $timeout = false, $username = '', $password = '', $debug_level = 0) + { + $this->host = $host; + // If no port value provided, use default + if (false === $port) { + $this->port = $this->POP3_PORT; + } else { + $this->port = (integer)$port; + } + // If no timeout value provided, use default + if (false === $timeout) { + $this->tval = $this->POP3_TIMEOUT; + } else { + $this->tval = (integer)$timeout; + } + $this->do_debug = $debug_level; + $this->username = $username; + $this->password = $password; + // Reset the error log + $this->errors = array(); + // connect + $result = $this->connect($this->host, $this->port, $this->tval); + if ($result) { + $login_result = $this->login($this->username, $this->password); + if ($login_result) { + $this->disconnect(); + return true; + } + } + // We need to disconnect regardless of whether the login succeeded + $this->disconnect(); + return false; + } + + /** + * Connect to a POP3 server. + * @access public + * @param string $host + * @param integer|boolean $port + * @param integer $tval + * @return boolean + */ + public function connect($host, $port = false, $tval = 30) + { + // Are we already connected? + if ($this->connected) { + return true; + } + + //On Windows this will raise a PHP Warning error if the hostname doesn't exist. + //Rather than suppress it with @fsockopen, capture it cleanly instead + set_error_handler(array($this, 'catchWarning')); + + if (false === $port) { + $port = $this->POP3_PORT; + } + + // connect to the POP3 server + $this->pop_conn = fsockopen( + $host, // POP3 Host + $port, // Port # + $errno, // Error Number + $errstr, // Error Message + $tval + ); // Timeout (seconds) + // Restore the error handler + restore_error_handler(); + + // Did we connect? + if (false === $this->pop_conn) { + // It would appear not... + $this->setError(array( + 'error' => "Failed to connect to server $host on port $port", + 'errno' => $errno, + 'errstr' => $errstr + )); + return false; + } + + // Increase the stream time-out + stream_set_timeout($this->pop_conn, $tval, 0); + + // Get the POP3 server response + $pop3_response = $this->getResponse(); + // Check for the +OK + if ($this->checkResponse($pop3_response)) { + // The connection is established and the POP3 server is talking + $this->connected = true; + return true; + } + return false; + } + + /** + * Log in to the POP3 server. + * Does not support APOP (RFC 2828, 4949). + * @access public + * @param string $username + * @param string $password + * @return boolean + */ + public function login($username = '', $password = '') + { + if (!$this->connected) { + $this->setError('Not connected to POP3 server'); + } + if (empty($username)) { + $username = $this->username; + } + if (empty($password)) { + $password = $this->password; + } + + // Send the Username + $this->sendString("USER $username" . self::CRLF); + $pop3_response = $this->getResponse(); + if ($this->checkResponse($pop3_response)) { + // Send the Password + $this->sendString("PASS $password" . self::CRLF); + $pop3_response = $this->getResponse(); + if ($this->checkResponse($pop3_response)) { + return true; + } + } + return false; + } + + /** + * Disconnect from the POP3 server. + * @access public + */ + public function disconnect() + { + $this->sendString('QUIT'); + //The QUIT command may cause the daemon to exit, which will kill our connection + //So ignore errors here + try { + @fclose($this->pop_conn); + } catch (Exception $e) { + //Do nothing + }; + } + + /** + * Get a response from the POP3 server. + * $size is the maximum number of bytes to retrieve + * @param integer $size + * @return string + * @access protected + */ + protected function getResponse($size = 128) + { + $response = fgets($this->pop_conn, $size); + if ($this->do_debug >= 1) { + echo "Server -> Client: $response"; + } + return $response; + } + + /** + * Send raw data to the POP3 server. + * @param string $string + * @return integer + * @access protected + */ + protected function sendString($string) + { + if ($this->pop_conn) { + if ($this->do_debug >= 2) { //Show client messages when debug >= 2 + echo "Client -> Server: $string"; + } + return fwrite($this->pop_conn, $string, strlen($string)); + } + return 0; + } + + /** + * Checks the POP3 server response. + * Looks for for +OK or -ERR. + * @param string $string + * @return boolean + * @access protected + */ + protected function checkResponse($string) + { + if (substr($string, 0, 3) !== '+OK') { + $this->setError(array( + 'error' => "Server reported an error: $string", + 'errno' => 0, + 'errstr' => '' + )); + return false; + } else { + return true; + } + } + + /** + * Add an error to the internal error store. + * Also display debug output if it's enabled. + * @param $error + * @access protected + */ + protected function setError($error) + { + $this->errors[] = $error; + if ($this->do_debug >= 1) { + echo '
                      ';
                      +            foreach ($this->errors as $error) {
                      +                print_r($error);
                      +            }
                      +            echo '
                      '; + } + } + + /** + * Get an array of error messages, if any. + * @return array + */ + public function getErrors() + { + return $this->errors; + } + + /** + * POP3 connection error handler. + * @param integer $errno + * @param string $errstr + * @param string $errfile + * @param integer $errline + * @access protected + */ + protected function catchWarning($errno, $errstr, $errfile, $errline) + { + $this->setError(array( + 'error' => "Connecting to the POP3 server raised a PHP warning: ", + 'errno' => $errno, + 'errstr' => $errstr, + 'errfile' => $errfile, + 'errline' => $errline + )); + } +} diff --git a/manager/includes/controls/phpmailer/class.smtp.php b/manager/includes/controls/phpmailer/class.smtp.php old mode 100644 new mode 100755 index 8444eb8952..270162b264 --- a/manager/includes/controls/phpmailer/class.smtp.php +++ b/manager/includes/controls/phpmailer/class.smtp.php @@ -1,1088 +1,1249 @@ + * @author Jim Jagielski (jimjag) + * @author Andy Prevost (codeworxtech) + * @author Brent R. Matzelle (original founder) + * @copyright 2014 Marcus Bointon * @copyright 2010 - 2012 Jim Jagielski - * @license http://www.gnu.org/copyleft/lesser.html Distributed under the Lesser General Public License (LGPL) + * @copyright 2004 - 2009 Andy Prevost + * @license http://www.gnu.org/copyleft/lesser.html GNU Lesser General Public License + * @note This program is distributed in the hope that it will be useful - WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. */ /** - * PHP RFC821 SMTP client - * - * Implements all the RFC 821 SMTP commands except TURN which will always return a not implemented error. - * SMTP also provides some utility methods for sending mail to an SMTP server. - * @author Chris Ryan + * PHPMailer RFC821 SMTP email transport class. + * Implements RFC 821 SMTP commands and provides some utility methods for sending mail to an SMTP server. * @package PHPMailer + * @author Chris Ryan + * @author Marcus Bointon */ +class SMTP +{ + /** + * The PHPMailer SMTP version number. + * @var string + */ + const VERSION = '5.2.21'; -class SMTP { - /** - * SMTP server port - * @var int - */ - public $SMTP_PORT = 25; - - /** - * SMTP reply line ending (don't change) - * @var string - */ - public $CRLF = "\r\n"; - - /** - * Debug output level; 0 for no output - * @var int - */ - public $do_debug = 0; - - /** - * Sets the function/method to use for debugging output. - * Right now we only honor 'echo' or 'error_log' - * @var string - */ - public $Debugoutput = 'echo'; - - /** - * Sets VERP use on/off (default is off) - * @var bool - */ - public $do_verp = false; - - /** - * Sets the SMTP timeout value for reads, in seconds - * @var int - */ - public $Timeout = 15; - - /** - * Sets the SMTP timelimit value for reads, in seconds - * @var int - */ - public $Timelimit = 30; - - /** - * Sets the SMTP PHPMailer Version number - * @var string - */ - public $Version = '5.2.6'; - - ///////////////////////////////////////////////// - // PROPERTIES, PRIVATE AND PROTECTED - ///////////////////////////////////////////////// - - /** - * @var resource The socket to the server - */ - private $smtp_conn; - /** - * @var string Error message, if any, for the last call - */ - private $error; - /** - * @var string The reply the server sent to us for HELO - */ - private $helo_rply; - - /** - * Outputs debugging info via user-defined method - * @param string $str - */ - private function edebug($str) { - if ($this->Debugoutput == 'error_log') { - error_log($str); - } else { - echo $str; - } - } - - /** - * Initialize the class so that the data is in a known state. - * @access public - * @return SMTP - */ - public function __construct() { - $this->smtp_conn = 0; - $this->error = null; - $this->helo_rply = null; - - $this->do_debug = 0; - } - - ///////////////////////////////////////////////// - // CONNECTION FUNCTIONS - ///////////////////////////////////////////////// - - /** - * Connect to the server specified on the port specified. - * If the port is not specified use the default SMTP_PORT. - * If tval is specified then a connection will try and be - * established with the server for that number of seconds. - * If tval is not specified the default is 30 seconds to - * try on the connection. - * - * SMTP CODE SUCCESS: 220 - * SMTP CODE FAILURE: 421 - * @access public - * @param string $host - * @param int $port - * @param int $tval - * @return bool - */ - public function Connect($host, $port = 0, $tval = 30) { - // set the error val to null so there is no confusion - $this->error = null; - - // make sure we are __not__ connected - if($this->connected()) { - // already connected, generate error - $this->error = array('error' => 'Already connected to a server'); - return false; - } + /** + * SMTP line break constant. + * @var string + */ + const CRLF = "\r\n"; - if(empty($port)) { - $port = $this->SMTP_PORT; - } + /** + * The SMTP port to use if one is not specified. + * @var integer + */ + const DEFAULT_SMTP_PORT = 25; - // connect to the smtp server - $this->smtp_conn = @fsockopen($host, // the host of the server - $port, // the port to use - $errno, // error number if any - $errstr, // error message if any - $tval); // give up after ? secs - // verify we connected properly - if(empty($this->smtp_conn)) { - $this->error = array('error' => 'Failed to connect to server', - 'errno' => $errno, - 'errstr' => $errstr); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ": $errstr ($errno)" . $this->CRLF . '
                      '); - } - return false; - } + /** + * The maximum line length allowed by RFC 2822 section 2.1.1 + * @var integer + */ + const MAX_LINE_LENGTH = 998; - // SMTP server can take longer to respond, give longer timeout for first read - // Windows does not have support for this timeout function - if(substr(PHP_OS, 0, 3) != 'WIN') { - $max = ini_get('max_execution_time'); - if ($max != 0 && $tval > $max) { // don't bother if unlimited - @set_time_limit($tval); - } - stream_set_timeout($this->smtp_conn, $tval, 0); - } + /** + * Debug level for no output + */ + const DEBUG_OFF = 0; - // get any announcement - $announce = $this->get_lines(); + /** + * Debug level to show client -> server messages + */ + const DEBUG_CLIENT = 1; - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $announce . $this->CRLF . '
                      '); - } + /** + * Debug level to show client -> server and server -> client messages + */ + const DEBUG_SERVER = 2; - return true; - } - - /** - * Initiate a TLS communication with the server. - * - * SMTP CODE 220 Ready to start TLS - * SMTP CODE 501 Syntax error (no parameters allowed) - * SMTP CODE 454 TLS not available due to temporary reason - * @access public - * @return bool success - */ - public function StartTLS() { - $this->error = null; # to avoid confusion - - if(!$this->connected()) { - $this->error = array('error' => 'Called StartTLS() without being connected'); - return false; - } + /** + * Debug level to show connection status, client -> server and server -> client messages + */ + const DEBUG_CONNECTION = 3; - $this->client_send('STARTTLS' . $this->CRLF); + /** + * Debug level to show all messages + */ + const DEBUG_LOWLEVEL = 4; - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + /** + * The PHPMailer SMTP Version number. + * @var string + * @deprecated Use the `VERSION` constant instead + * @see SMTP::VERSION + */ + public $Version = '5.2.21'; - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); - } + /** + * SMTP server port number. + * @var integer + * @deprecated This is only ever used as a default value, so use the `DEFAULT_SMTP_PORT` constant instead + * @see SMTP::DEFAULT_SMTP_PORT + */ + public $SMTP_PORT = 25; - if($code != 220) { - $this->error = - array('error' => 'STARTTLS not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; - } + /** + * SMTP reply line ending. + * @var string + * @deprecated Use the `CRLF` constant instead + * @see SMTP::CRLF + */ + public $CRLF = "\r\n"; + + /** + * Debug output level. + * Options: + * * self::DEBUG_OFF (`0`) No debug output, default + * * self::DEBUG_CLIENT (`1`) Client commands + * * self::DEBUG_SERVER (`2`) Client commands and server responses + * * self::DEBUG_CONNECTION (`3`) As DEBUG_SERVER plus connection status + * * self::DEBUG_LOWLEVEL (`4`) Low-level data output, all messages + * @var integer + */ + public $do_debug = self::DEBUG_OFF; + + /** + * How to handle debug output. + * Options: + * * `echo` Output plain-text as-is, appropriate for CLI + * * `html` Output escaped, line breaks converted to `
                      `, appropriate for browser output + * * `error_log` Output to error log as configured in php.ini + * + * Alternatively, you can provide a callable expecting two params: a message string and the debug level: + * + * $smtp->Debugoutput = function($str, $level) {echo "debug level $level; message: $str";}; + * + * @var string|callable + */ + public $Debugoutput = 'echo'; - // Begin encrypted connection - if(!stream_socket_enable_crypto($this->smtp_conn, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { - return false; - } + /** + * Whether to use VERP. + * @link http://en.wikipedia.org/wiki/Variable_envelope_return_path + * @link http://www.postfix.org/VERP_README.html Info on VERP + * @var boolean + */ + public $do_verp = false; + + /** + * The timeout value for connection, in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * This needs to be quite high to function correctly with hosts using greetdelay as an anti-spam measure. + * @link http://tools.ietf.org/html/rfc2821#section-4.5.3.2 + * @var integer + */ + public $Timeout = 300; - return true; - } - - /** - * Performs SMTP authentication. Must be run after running the - * Hello() method. Returns true if successfully authenticated. - * @access public - * @param string $username - * @param string $password - * @param string $authtype - * @param string $realm - * @param string $workstation - * @return bool - */ - public function Authenticate($username, $password, $authtype='LOGIN', $realm='', $workstation='') { - if (empty($authtype)) { - $authtype = 'LOGIN'; - } + /** + * How long to wait for commands to complete, in seconds. + * Default of 5 minutes (300sec) is from RFC2821 section 4.5.3.2 + * @var integer + */ + public $Timelimit = 300; + + /** + * @var array patterns to extract smtp transaction id from smtp reply + * Only first capture group will be use, use non-capturing group to deal with it + * Extend this class to override this property to fulfil your needs. + */ + protected $smtp_transaction_id_patterns = array( + 'exim' => '/[0-9]{3} OK id=(.*)/', + 'sendmail' => '/[0-9]{3} 2.0.0 (.*) Message/', + 'postfix' => '/[0-9]{3} 2.0.0 Ok: queued as (.*)/' + ); + + /** + * The socket for the server connection. + * @var resource + */ + protected $smtp_conn; - switch ($authtype) { - case 'PLAIN': - // Start authentication - $this->client_send('AUTH PLAIN' . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 334) { - $this->error = - array('error' => 'AUTH not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + /** + * Error information, if any, for the last SMTP command. + * @var array + */ + protected $error = array( + 'error' => '', + 'detail' => '', + 'smtp_code' => '', + 'smtp_code_ex' => '' + ); + + /** + * The reply the server sent to us for HELO. + * If null, no HELO string has yet been received. + * @var string|null + */ + protected $helo_rply = null; + + /** + * The set of SMTP extensions sent in reply to EHLO command. + * Indexes of the array are extension names. + * Value at index 'HELO' or 'EHLO' (according to command that was sent) + * represents the server name. In case of HELO it is the only element of the array. + * Other values can be boolean TRUE or an array containing extension options. + * If null, no HELO/EHLO string has yet been received. + * @var array|null + */ + protected $server_caps = null; + + /** + * The most recent reply received from the server. + * @var string + */ + protected $last_reply = ''; + + /** + * Output debugging info via a user-selected method. + * @see SMTP::$Debugoutput + * @see SMTP::$do_debug + * @param string $str Debug string to output + * @param integer $level The debug level of this message; see DEBUG_* constants + * @return void + */ + protected function edebug($str, $level = 0) + { + if ($level > $this->do_debug) { + return; } - // Send encoded username and password - $this->client_send(base64_encode("\0".$username."\0".$password) . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 235) { - $this->error = - array('error' => 'Authentication not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + //Avoid clash with built-in function names + if (!in_array($this->Debugoutput, array('error_log', 'html', 'echo')) and is_callable($this->Debugoutput)) { + call_user_func($this->Debugoutput, $str, $level); + return; } - break; - case 'LOGIN': - // Start authentication - $this->client_send('AUTH LOGIN' . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 334) { - $this->error = - array('error' => 'AUTH not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + switch ($this->Debugoutput) { + case 'error_log': + //Don't output, just log + error_log($str); + break; + case 'html': + //Cleans up output a bit for a better looking, HTML-safe output + echo htmlentities( + preg_replace('/[\r\n]+/', '', $str), + ENT_QUOTES, + 'UTF-8' + ) + . "
                      \n"; + break; + case 'echo': + default: + //Normalize line breaks + $str = preg_replace('/(\r\n|\r|\n)/ms', "\n", $str); + echo gmdate('Y-m-d H:i:s') . "\t" . str_replace( + "\n", + "\n \t ", + trim($str) + )."\n"; } + } - // Send encoded username - $this->client_send(base64_encode($username) . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 334) { - $this->error = - array('error' => 'Username not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + /** + * Connect to an SMTP server. + * @param string $host SMTP server IP or host name + * @param integer $port The port number to connect to + * @param integer $timeout How long to wait for the connection to open + * @param array $options An array of options for stream_context_create() + * @access public + * @return boolean + */ + public function connect($host, $port = null, $timeout = 30, $options = array()) + { + static $streamok; + //This is enabled by default since 5.0.0 but some providers disable it + //Check this once and cache the result + if (is_null($streamok)) { + $streamok = function_exists('stream_socket_client'); } - - // Send encoded password - $this->client_send(base64_encode($password) . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 235) { - $this->error = - array('error' => 'Password not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + // Clear errors to avoid confusion + $this->setError(''); + // Make sure we are __not__ connected + if ($this->connected()) { + // Already connected, generate error + $this->setError('Already connected to a server'); + return false; } - break; - case 'NTLM': - /* - * ntlm_sasl_client.php - ** Bundled with Permission - ** - ** How to telnet in windows: http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx - ** PROTOCOL Documentation http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication - */ - require_once 'extras/ntlm_sasl_client.php'; - $temp = new stdClass(); - $ntlm_client = new ntlm_sasl_client_class; - if(! $ntlm_client->Initialize($temp)){//let's test if every function its available - $this->error = array('error' => $temp->error); - if($this->do_debug >= 1) { - $this->edebug('You need to enable some modules in your php.ini file: ' . $this->error['error'] . $this->CRLF); - } + if (empty($port)) { + $port = self::DEFAULT_SMTP_PORT; + } + // Connect to the SMTP server + $this->edebug( + "Connection: opening to $host:$port, timeout=$timeout, options=".var_export($options, true), + self::DEBUG_CONNECTION + ); + $errno = 0; + $errstr = ''; + if ($streamok) { + $socket_context = stream_context_create($options); + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = stream_socket_client( + $host . ":" . $port, + $errno, + $errstr, + $timeout, + STREAM_CLIENT_CONNECT, + $socket_context + ); + restore_error_handler(); + } else { + //Fall back to fsockopen which should work in more places, but is missing some features + $this->edebug( + "Connection: stream_socket_client not available, falling back to fsockopen", + self::DEBUG_CONNECTION + ); + set_error_handler(array($this, 'errorHandler')); + $this->smtp_conn = fsockopen( + $host, + $port, + $errno, + $errstr, + $timeout + ); + restore_error_handler(); + } + // Verify we connected properly + if (!is_resource($this->smtp_conn)) { + $this->setError( + 'Failed to connect to server', + $errno, + $errstr + ); + $this->edebug( + 'SMTP ERROR: ' . $this->error['error'] + . ": $errstr ($errno)", + self::DEBUG_CLIENT + ); return false; } - $msg1 = $ntlm_client->TypeMsg1($realm, $workstation);//msg1 + $this->edebug('Connection: opened', self::DEBUG_CONNECTION); + // SMTP server can take longer to respond, give longer timeout for first read + // Windows does not have support for this timeout function + if (substr(PHP_OS, 0, 3) != 'WIN') { + $max = ini_get('max_execution_time'); + // Don't bother if unlimited + if ($max != 0 && $timeout > $max) { + @set_time_limit($timeout); + } + stream_set_timeout($this->smtp_conn, $timeout, 0); + } + // Get any announcement + $announce = $this->get_lines(); + $this->edebug('SERVER -> CLIENT: ' . $announce, self::DEBUG_SERVER); + return true; + } - $this->client_send('AUTH NTLM ' . base64_encode($msg1) . $this->CRLF); + /** + * Initiate a TLS (encrypted) session. + * @access public + * @return boolean + */ + public function startTLS() + { + if (!$this->sendCommand('STARTTLS', 'STARTTLS', 220)) { + return false; + } - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + //Allow the best TLS version(s) we can + $crypto_method = STREAM_CRYPTO_METHOD_TLS_CLIENT; + //PHP 5.6.7 dropped inclusion of TLS 1.1 and 1.2 in STREAM_CRYPTO_METHOD_TLS_CLIENT + //so add them back in manually if we can + if (defined('STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT')) { + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT; + $crypto_method |= STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT; + } - if($code != 334) { - $this->error = - array('error' => 'AUTH not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF); - } + // Begin encrypted connection + if (!stream_socket_enable_crypto( + $this->smtp_conn, + true, + $crypto_method + )) { return false; } + return true; + } - $challenge = substr($rply, 3);//though 0 based, there is a white space after the 3 digit number....//msg2 - $challenge = base64_decode($challenge); - $ntlm_res = $ntlm_client->NTLMResponse(substr($challenge, 24, 8), $password); - $msg3 = $ntlm_client->TypeMsg3($ntlm_res, $username, $realm, $workstation);//msg3 - // Send encoded username - $this->client_send(base64_encode($msg3) . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 235) { - $this->error = - array('error' => 'Could not authenticate', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF); - } + /** + * Perform SMTP authentication. + * Must be run after hello(). + * @see hello() + * @param string $username The user name + * @param string $password The password + * @param string $authtype The auth type (PLAIN, LOGIN, NTLM, CRAM-MD5, XOAUTH2) + * @param string $realm The auth realm for NTLM + * @param string $workstation The auth workstation for NTLM + * @param null|OAuth $OAuth An optional OAuth instance (@see PHPMailerOAuth) + * @return bool True if successfully authenticated.* @access public + */ + public function authenticate( + $username, + $password, + $authtype = null, + $realm = '', + $workstation = '', + $OAuth = null + ) { + if (!$this->server_caps) { + $this->setError('Authentication is not allowed before HELO/EHLO'); return false; } - break; - case 'CRAM-MD5': - // Start authentication - $this->client_send('AUTH CRAM-MD5' . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($code != 334) { - $this->error = - array('error' => 'AUTH not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; - } - - // Get the challenge - $challenge = base64_decode(substr($rply, 4)); - // Build the response - $response = $username . ' ' . $this->hmac($challenge, $password); + if (array_key_exists('EHLO', $this->server_caps)) { + // SMTP extensions are available. Let's try to find a proper authentication method - // Send encoded credentials - $this->client_send(base64_encode($response) . $this->CRLF); + if (!array_key_exists('AUTH', $this->server_caps)) { + $this->setError('Authentication is not allowed at this stage'); + // 'at this stage' means that auth may be allowed after the stage changes + // e.g. after STARTTLS + return false; + } - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + self::edebug('Auth method requested: ' . ($authtype ? $authtype : 'UNKNOWN'), self::DEBUG_LOWLEVEL); + self::edebug( + 'Auth methods available on the server: ' . implode(',', $this->server_caps['AUTH']), + self::DEBUG_LOWLEVEL + ); + + if (empty($authtype)) { + foreach (array('CRAM-MD5', 'LOGIN', 'PLAIN', 'NTLM', 'XOAUTH2') as $method) { + if (in_array($method, $this->server_caps['AUTH'])) { + $authtype = $method; + break; + } + } + if (empty($authtype)) { + $this->setError('No supported authentication methods found'); + return false; + } + self::edebug('Auth method selected: '.$authtype, self::DEBUG_LOWLEVEL); + } - if($code != 334) { - $this->error = - array('error' => 'Credentials not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + if (!in_array($authtype, $this->server_caps['AUTH'])) { + $this->setError("The requested authentication method \"$authtype\" is not supported by the server"); + return false; + } + } elseif (empty($authtype)) { + $authtype = 'LOGIN'; } - break; - } - return true; - } - - /** - * Works like hash_hmac('md5', $data, $key) in case that function is not available - * @access private - * @param string $data - * @param string $key - * @return string - */ - private function hmac($data, $key) { - if (function_exists('hash_hmac')) { - return hash_hmac('md5', $data, $key); - } - - // The following borrowed from http://php.net/manual/en/function.mhash.php#27225 - - // RFC 2104 HMAC implementation for php. - // Creates an md5 HMAC. - // Eliminates the need to install mhash to compute a HMAC - // Hacked by Lance Rushing - - $b = 64; // byte length for md5 - if (strlen($key) > $b) { - $key = pack('H*', md5($key)); - } - $key = str_pad($key, $b, chr(0x00)); - $ipad = str_pad('', $b, chr(0x36)); - $opad = str_pad('', $b, chr(0x5c)); - $k_ipad = $key ^ $ipad ; - $k_opad = $key ^ $opad; - - return md5($k_opad . pack('H*', md5($k_ipad . $data))); - } - - /** - * Returns true if connected to a server otherwise false - * @access public - * @return bool - */ - public function Connected() { - if(!empty($this->smtp_conn)) { - $sock_status = stream_get_meta_data($this->smtp_conn); - if($sock_status['eof']) { - // the socket is valid but we are not connected - if($this->do_debug >= 1) { - $this->edebug('SMTP -> NOTICE:' . $this->CRLF . 'EOF caught while checking if connected'); + switch ($authtype) { + case 'PLAIN': + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH PLAIN', 334)) { + return false; + } + // Send encoded username and password + if (!$this->sendCommand( + 'User & Password', + base64_encode("\0" . $username . "\0" . $password), + 235 + ) + ) { + return false; + } + break; + case 'LOGIN': + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH LOGIN', 334)) { + return false; + } + if (!$this->sendCommand("Username", base64_encode($username), 334)) { + return false; + } + if (!$this->sendCommand("Password", base64_encode($password), 235)) { + return false; + } + break; + case 'XOAUTH2': + //If the OAuth Instance is not set. Can be a case when PHPMailer is used + //instead of PHPMailerOAuth + if (is_null($OAuth)) { + return false; + } + $oauth = $OAuth->getOauth64(); + + // Start authentication + if (!$this->sendCommand('AUTH', 'AUTH XOAUTH2 ' . $oauth, 235)) { + return false; + } + break; + case 'NTLM': + /* + * ntlm_sasl_client.php + * Bundled with Permission + * + * How to telnet in windows: + * http://technet.microsoft.com/en-us/library/aa995718%28EXCHG.65%29.aspx + * PROTOCOL Docs http://curl.haxx.se/rfc/ntlm.html#ntlmSmtpAuthentication + */ + require_once 'extras/ntlm_sasl_client.php'; + $temp = new stdClass; + $ntlm_client = new ntlm_sasl_client_class; + //Check that functions are available + if (!$ntlm_client->initialize($temp)) { + $this->setError($temp->error); + $this->edebug( + 'You need to enable some modules in your php.ini file: ' + . $this->error['error'], + self::DEBUG_CLIENT + ); + return false; + } + //msg1 + $msg1 = $ntlm_client->typeMsg1($realm, $workstation); //msg1 + + if (!$this->sendCommand( + 'AUTH NTLM', + 'AUTH NTLM ' . base64_encode($msg1), + 334 + ) + ) { + return false; + } + //Though 0 based, there is a white space after the 3 digit number + //msg2 + $challenge = substr($this->last_reply, 3); + $challenge = base64_decode($challenge); + $ntlm_res = $ntlm_client->NTLMResponse( + substr($challenge, 24, 8), + $password + ); + //msg3 + $msg3 = $ntlm_client->typeMsg3( + $ntlm_res, + $username, + $realm, + $workstation + ); + // send encoded username + return $this->sendCommand('Username', base64_encode($msg3), 235); + case 'CRAM-MD5': + // Start authentication + if (!$this->sendCommand('AUTH CRAM-MD5', 'AUTH CRAM-MD5', 334)) { + return false; + } + // Get the challenge + $challenge = base64_decode(substr($this->last_reply, 4)); + + // Build the response + $response = $username . ' ' . $this->hmac($challenge, $password); + + // send encoded credentials + return $this->sendCommand('Username', base64_encode($response), 235); + default: + $this->setError("Authentication method \"$authtype\" is not supported"); + return false; } - $this->Close(); - return false; - } - return true; // everything looks good - } - return false; - } - - /** - * Closes the socket and cleans up the state of the class. - * It is not considered good to use this function without - * first trying to use QUIT. - * @access public - * @return void - */ - public function Close() { - $this->error = null; // so there is no confusion - $this->helo_rply = null; - if(!empty($this->smtp_conn)) { - // close the connection and cleanup - fclose($this->smtp_conn); - $this->smtp_conn = 0; - } - } - - ///////////////////////////////////////////////// - // SMTP COMMANDS - ///////////////////////////////////////////////// - - /** - * Issues a data command and sends the msg_data to the server - * finializing the mail transaction. $msg_data is the message - * that is to be send with the headers. Each header needs to be - * on a single line followed by a with the message headers - * and the message body being seperated by and additional . - * - * Implements rfc 821: DATA - * - * SMTP CODE INTERMEDIATE: 354 - * [data] - * . - * SMTP CODE SUCCESS: 250 - * SMTP CODE FAILURE: 552, 554, 451, 452 - * SMTP CODE FAILURE: 451, 554 - * SMTP CODE ERROR : 500, 501, 503, 421 - * @access public - * @param string $msg_data - * @return bool - */ - public function Data($msg_data) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - 'error' => 'Called Data() without being connected'); - return false; + return true; } - $this->client_send('DATA' . $this->CRLF); + /** + * Calculate an MD5 HMAC hash. + * Works like hash_hmac('md5', $data, $key) + * in case that function is not available + * @param string $data The data to hash + * @param string $key The key to hash with + * @access protected + * @return string + */ + protected function hmac($data, $key) + { + if (function_exists('hash_hmac')) { + return hash_hmac('md5', $data, $key); + } + + // The following borrowed from + // http://php.net/manual/en/function.mhash.php#27225 - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + // RFC 2104 HMAC implementation for php. + // Creates an md5 HMAC. + // Eliminates the need to install mhash to compute a HMAC + // by Lance Rushing - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); + $bytelen = 64; // byte length for md5 + if (strlen($key) > $bytelen) { + $key = pack('H*', md5($key)); + } + $key = str_pad($key, $bytelen, chr(0x00)); + $ipad = str_pad('', $bytelen, chr(0x36)); + $opad = str_pad('', $bytelen, chr(0x5c)); + $k_ipad = $key ^ $ipad; + $k_opad = $key ^ $opad; + + return md5($k_opad . pack('H*', md5($k_ipad . $data))); } - if($code != 354) { - $this->error = - array('error' => 'DATA command not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + /** + * Check connection state. + * @access public + * @return boolean True if connected. + */ + public function connected() + { + if (is_resource($this->smtp_conn)) { + $sock_status = stream_get_meta_data($this->smtp_conn); + if ($sock_status['eof']) { + // The socket is valid but we are not connected + $this->edebug( + 'SMTP NOTICE: EOF caught while checking if connected', + self::DEBUG_CLIENT + ); + $this->close(); + return false; + } + return true; // everything looks good + } + return false; } - /* the server is ready to accept data! - * according to rfc 821 we should not send more than 1000 - * including the CRLF - * characters on a single line so we will break the data up - * into lines by \r and/or \n then if needed we will break - * each of those into smaller lines to fit within the limit. - * in addition we will be looking for lines that start with - * a period '.' and append and additional period '.' to that - * line. NOTE: this does not count towards limit. + /** + * Close the socket and clean up the state of the class. + * Don't use this function without first trying to use QUIT. + * @see quit() + * @access public + * @return void */ + public function close() + { + $this->setError(''); + $this->server_caps = null; + $this->helo_rply = null; + if (is_resource($this->smtp_conn)) { + // close the connection and cleanup + fclose($this->smtp_conn); + $this->smtp_conn = null; //Makes for cleaner serialization + $this->edebug('Connection: closed', self::DEBUG_CONNECTION); + } + } - // normalize the line breaks so we know the explode works - $msg_data = str_replace("\r\n", "\n", $msg_data); - $msg_data = str_replace("\r", "\n", $msg_data); - $lines = explode("\n", $msg_data); - - /* we need to find a good way to determine is headers are - * in the msg_data or if it is a straight msg body - * currently I am assuming rfc 822 definitions of msg headers - * and if the first field of the first line (':' sperated) - * does not contain a space then it _should_ be a header - * and we can process all lines before a blank "" line as - * headers. + /** + * Send an SMTP DATA command. + * Issues a data command and sends the msg_data to the server, + * finializing the mail transaction. $msg_data is the message + * that is to be send with the headers. Each header needs to be + * on a single line followed by a with the message headers + * and the message body being separated by and additional . + * Implements rfc 821: DATA + * @param string $msg_data Message data to send + * @access public + * @return boolean */ + public function data($msg_data) + { + //This will use the standard timelimit + if (!$this->sendCommand('DATA', 'DATA', 354)) { + return false; + } - $field = substr($lines[0], 0, strpos($lines[0], ':')); - $in_headers = false; - if(!empty($field) && !strstr($field, ' ')) { - $in_headers = true; - } + /* The server is ready to accept data! + * According to rfc821 we should not send more than 1000 characters on a single line (including the CRLF) + * so we will break the data up into lines by \r and/or \n then if needed we will break each of those into + * smaller lines to fit within the limit. + * We will also look for lines that start with a '.' and prepend an additional '.'. + * NOTE: this does not count towards line-length limit. + */ + + // Normalize line breaks before exploding + $lines = explode("\n", str_replace(array("\r\n", "\r"), "\n", $msg_data)); - $max_line_length = 998; // used below; set here for ease in change + /* To distinguish between a complete RFC822 message and a plain message body, we check if the first field + * of the first line (':' separated) does not contain a space then it _should_ be a header and we will + * process all lines before a blank line as headers. + */ - while(list(, $line) = @each($lines)) { - $lines_out = null; - if($line == '' && $in_headers) { + $field = substr($lines[0], 0, strpos($lines[0], ':')); $in_headers = false; - } - // ok we need to break this line up into several smaller lines - while(strlen($line) > $max_line_length) { - $pos = strrpos(substr($line, 0, $max_line_length), ' '); - - // Patch to fix DOS attack - if(!$pos) { - $pos = $max_line_length - 1; - $lines_out[] = substr($line, 0, $pos); - $line = substr($line, $pos); - } else { - $lines_out[] = substr($line, 0, $pos); - $line = substr($line, $pos + 1); + if (!empty($field) && strpos($field, ' ') === false) { + $in_headers = true; } - /* if processing headers add a LWSP-char to the front of new line - * rfc 822 on long msg headers - */ - if($in_headers) { - $line = "\t" . $line; - } - } - $lines_out[] = $line; - - // send the lines to the server - while(list(, $line_out) = @each($lines_out)) { - if(strlen($line_out) > 0) - { - if(substr($line_out, 0, 1) == '.') { - $line_out = '.' . $line_out; - } + foreach ($lines as $line) { + $lines_out = array(); + if ($in_headers and $line == '') { + $in_headers = false; + } + //Break this line up into several smaller lines if it's too long + //Micro-optimisation: isset($str[$len]) is faster than (strlen($str) > $len), + while (isset($line[self::MAX_LINE_LENGTH])) { + //Working backwards, try to find a space within the last MAX_LINE_LENGTH chars of the line to break on + //so as to avoid breaking in the middle of a word + $pos = strrpos(substr($line, 0, self::MAX_LINE_LENGTH), ' '); + //Deliberately matches both false and 0 + if (!$pos) { + //No nice break found, add a hard break + $pos = self::MAX_LINE_LENGTH - 1; + $lines_out[] = substr($line, 0, $pos); + $line = substr($line, $pos); + } else { + //Break at the found point + $lines_out[] = substr($line, 0, $pos); + //Move along by the amount we dealt with + $line = substr($line, $pos + 1); + } + //If processing headers add a LWSP-char to the front of new line RFC822 section 3.1.1 + if ($in_headers) { + $line = "\t" . $line; + } + } + $lines_out[] = $line; + + //Send the lines to the server + foreach ($lines_out as $line_out) { + //RFC2821 section 4.5.2 + if (!empty($line_out) and $line_out[0] == '.') { + $line_out = '.' . $line_out; + } + $this->client_send($line_out . self::CRLF); + } } - $this->client_send($line_out . $this->CRLF); - } - } - - // message data has been sent - $this->client_send($this->CRLF . '.' . $this->CRLF); - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); + //Message data has been sent, complete the command + //Increase timelimit for end of DATA command + $savetimelimit = $this->Timelimit; + $this->Timelimit = $this->Timelimit * 2; + $result = $this->sendCommand('DATA END', '.', 250); + //Restore timelimit + $this->Timelimit = $savetimelimit; + return $result; } - if($code != 250) { - $this->error = - array('error' => 'DATA not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; - } - return true; - } - - /** - * Sends the HELO command to the smtp server. - * This makes sure that we and the server are in - * the same known state. - * - * Implements from rfc 821: HELO - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE ERROR : 500, 501, 504, 421 - * @access public - * @param string $host - * @return bool - */ - public function Hello($host = '') { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - 'error' => 'Called Hello() without being connected'); - return false; + /** + * Send an SMTP HELO or EHLO command. + * Used to identify the sending server to the receiving server. + * This makes sure that client and server are in a known state. + * Implements RFC 821: HELO + * and RFC 2821 EHLO. + * @param string $host The host name or IP to connect to + * @access public + * @return boolean + */ + public function hello($host = '') + { + //Try extended hello first (RFC 2821) + return (boolean)($this->sendHello('EHLO', $host) or $this->sendHello('HELO', $host)); } - // if hostname for HELO was not specified send default - if(empty($host)) { - // determine appropriate default to send to server - $host = 'localhost'; + /** + * Send an SMTP HELO or EHLO command. + * Low-level implementation used by hello() + * @see hello() + * @param string $hello The HELO string + * @param string $host The hostname to say we are + * @access protected + * @return boolean + */ + protected function sendHello($hello, $host) + { + $noerror = $this->sendCommand($hello, $hello . ' ' . $host, 250); + $this->helo_rply = $this->last_reply; + if ($noerror) { + $this->parseHelloFields($hello); + } else { + $this->server_caps = null; + } + return $noerror; } - // Send extended hello first (RFC 2821) - if(!$this->SendHello('EHLO', $host)) { - if(!$this->SendHello('HELO', $host)) { - return false; - } + /** + * Parse a reply to HELO/EHLO command to discover server extensions. + * In case of HELO, the only parameter that can be discovered is a server name. + * @access protected + * @param string $type - 'HELO' or 'EHLO' + */ + protected function parseHelloFields($type) + { + $this->server_caps = array(); + $lines = explode("\n", $this->helo_rply); + + foreach ($lines as $n => $s) { + //First 4 chars contain response code followed by - or space + $s = trim(substr($s, 4)); + if (empty($s)) { + continue; + } + $fields = explode(' ', $s); + if (!empty($fields)) { + if (!$n) { + $name = $type; + $fields = $fields[0]; + } else { + $name = array_shift($fields); + switch ($name) { + case 'SIZE': + $fields = ($fields ? $fields[0] : 0); + break; + case 'AUTH': + if (!is_array($fields)) { + $fields = array(); + } + break; + default: + $fields = true; + } + } + $this->server_caps[$name] = $fields; + } + } } - return true; - } - - /** - * Sends a HELO/EHLO command. - * @access private - * @param string $hello - * @param string $host - * @return bool - */ - private function SendHello($hello, $host) { - $this->client_send($hello . ' ' . $host . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + /** + * Send an SMTP MAIL command. + * Starts a mail transaction from the email address specified in + * $from. Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more recipient + * commands may be called followed by a data command. + * Implements rfc 821: MAIL FROM: + * @param string $from Source address of this message + * @access public + * @return boolean + */ + public function mail($from) + { + $useVerp = ($this->do_verp ? ' XVERP' : ''); + return $this->sendCommand( + 'MAIL FROM', + 'MAIL FROM:<' . $from . '>' . $useVerp, + 250 + ); + } - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER: ' . $rply . $this->CRLF . '
                      '); + /** + * Send an SMTP QUIT command. + * Closes the socket if there is no error or the $close_on_error argument is true. + * Implements from rfc 821: QUIT + * @param boolean $close_on_error Should the connection close if an error occurs? + * @access public + * @return boolean + */ + public function quit($close_on_error = true) + { + $noerror = $this->sendCommand('QUIT', 'QUIT', 221); + $err = $this->error; //Save any error + if ($noerror or $close_on_error) { + $this->close(); + $this->error = $err; //Restore any error from the quit command + } + return $noerror; } - if($code != 250) { - $this->error = - array('error' => $hello . ' not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + /** + * Send an SMTP RCPT command. + * Sets the TO argument to $toaddr. + * Returns true if the recipient was accepted false if it was rejected. + * Implements from rfc 821: RCPT TO: + * @param string $address The address the message is being sent to + * @access public + * @return boolean + */ + public function recipient($address) + { + return $this->sendCommand( + 'RCPT TO', + 'RCPT TO:<' . $address . '>', + array(250, 251) + ); } - $this->helo_rply = $rply; - - return true; - } - - /** - * Starts a mail transaction from the email address specified in - * $from. Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more Recipient - * commands may be called followed by a Data command. - * - * Implements rfc 821: MAIL FROM: - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE SUCCESS: 552, 451, 452 - * SMTP CODE SUCCESS: 500, 501, 421 - * @access public - * @param string $from - * @return bool - */ - public function Mail($from) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - 'error' => 'Called Mail() without being connected'); - return false; + /** + * Send an SMTP RSET command. + * Abort any transaction that is currently in progress. + * Implements rfc 821: RSET + * @access public + * @return boolean True on success. + */ + public function reset() + { + return $this->sendCommand('RSET', 'RSET', 250); } - $useVerp = ($this->do_verp ? ' XVERP' : ''); - $this->client_send('MAIL FROM:<' . $from . '>' . $useVerp . $this->CRLF); + /** + * Send a command to an SMTP server and check its return code. + * @param string $command The command name - not sent to the server + * @param string $commandstring The actual command to send + * @param integer|array $expect One or more expected integer success codes + * @access protected + * @return boolean True on success. + */ + protected function sendCommand($command, $commandstring, $expect) + { + if (!$this->connected()) { + $this->setError("Called $command without being connected"); + return false; + } + //Reject line breaks in all commands + if (strpos($commandstring, "\n") !== false or strpos($commandstring, "\r") !== false) { + $this->setError("Command '$command' contained line breaks"); + return false; + } + $this->client_send($commandstring . self::CRLF); + + $this->last_reply = $this->get_lines(); + // Fetch SMTP code and possible error code explanation + $matches = array(); + if (preg_match("/^([0-9]{3})[ -](?:([0-9]\\.[0-9]\\.[0-9]) )?/", $this->last_reply, $matches)) { + $code = $matches[1]; + $code_ex = (count($matches) > 2 ? $matches[2] : null); + // Cut off error code from each response line + $detail = preg_replace( + "/{$code}[ -]".($code_ex ? str_replace('.', '\\.', $code_ex).' ' : '')."/m", + '', + $this->last_reply + ); + } else { + // Fall back to simple parsing if regex fails + $code = substr($this->last_reply, 0, 3); + $code_ex = null; + $detail = substr($this->last_reply, 4); + } - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + $this->edebug('SERVER -> CLIENT: ' . $this->last_reply, self::DEBUG_SERVER); + + if (!in_array($code, (array)$expect)) { + $this->setError( + "$command command failed", + $detail, + $code, + $code_ex + ); + $this->edebug( + 'SMTP ERROR: ' . $this->error['error'] . ': ' . $this->last_reply, + self::DEBUG_CLIENT + ); + return false; + } - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); + $this->setError(''); + return true; } - if($code != 250) { - $this->error = - array('error' => 'MAIL not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; - } - return true; - } - - /** - * Sends the quit command to the server and then closes the socket - * if there is no error or the $close_on_error argument is true. - * - * Implements from rfc 821: QUIT - * - * SMTP CODE SUCCESS: 221 - * SMTP CODE ERROR : 500 - * @access public - * @param bool $close_on_error - * @return bool - */ - public function Quit($close_on_error = true) { - $this->error = null; // so there is no confusion - - if(!$this->connected()) { - $this->error = array( - 'error' => 'Called Quit() without being connected'); - return false; + /** + * Send an SMTP SAML command. + * Starts a mail transaction from the email address specified in $from. + * Returns true if successful or false otherwise. If True + * the mail transaction is started and then one or more recipient + * commands may be called followed by a data command. This command + * will send the message to the users terminal if they are logged + * in and send them an email. + * Implements rfc 821: SAML FROM: + * @param string $from The address the message is from + * @access public + * @return boolean + */ + public function sendAndMail($from) + { + return $this->sendCommand('SAML', "SAML FROM:$from", 250); } - // send the quit command to the server - $this->client_send('quit' . $this->CRLF); + /** + * Send an SMTP VRFY command. + * @param string $name The name to verify + * @access public + * @return boolean + */ + public function verify($name) + { + return $this->sendCommand('VRFY', "VRFY $name", array(250, 251)); + } - // get any good-bye messages - $byemsg = $this->get_lines(); + /** + * Send an SMTP NOOP command. + * Used to keep keep-alives alive, doesn't actually do anything + * @access public + * @return boolean + */ + public function noop() + { + return $this->sendCommand('NOOP', 'NOOP', 250); + } - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $byemsg . $this->CRLF . '
                      '); + /** + * Send an SMTP TURN command. + * This is an optional command for SMTP that this class does not support. + * This method is here to make the RFC821 Definition complete for this class + * and _may_ be implemented in future + * Implements from rfc 821: TURN + * @access public + * @return boolean + */ + public function turn() + { + $this->setError('The SMTP TURN command is not implemented'); + $this->edebug('SMTP NOTICE: ' . $this->error['error'], self::DEBUG_CLIENT); + return false; } - $rval = true; - $e = null; - - $code = substr($byemsg, 0, 3); - if($code != 221) { - // use e as a tmp var cause Close will overwrite $this->error - $e = array('error' => 'SMTP server rejected quit command', - 'smtp_code' => $code, - 'smtp_rply' => substr($byemsg, 4)); - $rval = false; - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $e['error'] . ': ' . $byemsg . $this->CRLF . '
                      '); - } + /** + * Send raw data to the server. + * @param string $data The data to send + * @access public + * @return integer|boolean The number of bytes sent to the server or false on error + */ + public function client_send($data) + { + $this->edebug("CLIENT -> SERVER: $data", self::DEBUG_CLIENT); + return fwrite($this->smtp_conn, $data); } - if(empty($e) || $close_on_error) { - $this->Close(); + /** + * Get the latest error. + * @access public + * @return array + */ + public function getError() + { + return $this->error; } - return $rval; - } - - /** - * Sends the command RCPT to the SMTP server with the TO: argument of $to. - * Returns true if the recipient was accepted false if it was rejected. - * - * Implements from rfc 821: RCPT TO: - * - * SMTP CODE SUCCESS: 250, 251 - * SMTP CODE FAILURE: 550, 551, 552, 553, 450, 451, 452 - * SMTP CODE ERROR : 500, 501, 503, 421 - * @access public - * @param string $to - * @return bool - */ - public function Recipient($to) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - 'error' => 'Called Recipient() without being connected'); - return false; + /** + * Get SMTP extensions available on the server + * @access public + * @return array|null + */ + public function getServerExtList() + { + return $this->server_caps; } - $this->client_send('RCPT TO:<' . $to . '>' . $this->CRLF); + /** + * A multipurpose method + * The method works in three ways, dependent on argument value and current state + * 1. HELO/EHLO was not sent - returns null and set up $this->error + * 2. HELO was sent + * $name = 'HELO': returns server name + * $name = 'EHLO': returns boolean false + * $name = any string: returns null and set up $this->error + * 3. EHLO was sent + * $name = 'HELO'|'EHLO': returns server name + * $name = any string: if extension $name exists, returns boolean True + * or its options. Otherwise returns boolean False + * In other words, one can use this method to detect 3 conditions: + * - null returned: handshake was not or we don't know about ext (refer to $this->error) + * - false returned: the requested feature exactly not exists + * - positive value returned: the requested feature exists + * @param string $name Name of SMTP extension or 'HELO'|'EHLO' + * @return mixed + */ + public function getServerExt($name) + { + if (!$this->server_caps) { + $this->setError('No HELO/EHLO was sent'); + return null; + } - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + // the tight logic knot ;) + if (!array_key_exists($name, $this->server_caps)) { + if ($name == 'HELO') { + return $this->server_caps['EHLO']; + } + if ($name == 'EHLO' || array_key_exists('EHLO', $this->server_caps)) { + return false; + } + $this->setError('HELO handshake was used. Client knows nothing about server extensions'); + return null; + } - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); + return $this->server_caps[$name]; } - if($code != 250 && $code != 251) { - $this->error = - array('error' => 'RCPT not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; - } - return true; - } - - /** - * Sends the RSET command to abort and transaction that is - * currently in progress. Returns true if successful false - * otherwise. - * - * Implements rfc 821: RSET - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE ERROR : 500, 501, 504, 421 - * @access public - * @return bool - */ - public function Reset() { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array('error' => 'Called Reset() without being connected'); - return false; + /** + * Get the last reply from the server. + * @access public + * @return string + */ + public function getLastReply() + { + return $this->last_reply; } - $this->client_send('RSET' . $this->CRLF); - - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); - - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); + /** + * Read the SMTP server's response. + * Either before eof or socket timeout occurs on the operation. + * With SMTP we can tell if we have more lines to read if the + * 4th character is '-' symbol. If it is a space then we don't + * need to read anything else. + * @access protected + * @return string + */ + protected function get_lines() + { + // If the connection is bad, give up straight away + if (!is_resource($this->smtp_conn)) { + return ''; + } + $data = ''; + $endtime = 0; + stream_set_timeout($this->smtp_conn, $this->Timeout); + if ($this->Timelimit > 0) { + $endtime = time() + $this->Timelimit; + } + while (is_resource($this->smtp_conn) && !feof($this->smtp_conn)) { + $str = @fgets($this->smtp_conn, 515); + $this->edebug("SMTP -> get_lines(): \$data is \"$data\"", self::DEBUG_LOWLEVEL); + $this->edebug("SMTP -> get_lines(): \$str is \"$str\"", self::DEBUG_LOWLEVEL); + $data .= $str; + // If 4th character is a space, we are done reading, break the loop, micro-optimisation over strlen + if ((isset($str[3]) and $str[3] == ' ')) { + break; + } + // Timed-out? Log and break + $info = stream_get_meta_data($this->smtp_conn); + if ($info['timed_out']) { + $this->edebug( + 'SMTP -> get_lines(): timed-out (' . $this->Timeout . ' sec)', + self::DEBUG_LOWLEVEL + ); + break; + } + // Now check if reads took too long + if ($endtime and time() > $endtime) { + $this->edebug( + 'SMTP -> get_lines(): timelimit reached ('. + $this->Timelimit . ' sec)', + self::DEBUG_LOWLEVEL + ); + break; + } + } + return $data; } - if($code != 250) { - $this->error = - array('error' => 'RSET failed', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + /** + * Enable or disable VERP address generation. + * @param boolean $enabled + */ + public function setVerp($enabled = false) + { + $this->do_verp = $enabled; } - return true; - } - - /** - * Starts a mail transaction from the email address specified in - * $from. Returns true if successful or false otherwise. If True - * the mail transaction is started and then one or more Recipient - * commands may be called followed by a Data command. This command - * will send the message to the users terminal if they are logged - * in and send them an email. - * - * Implements rfc 821: SAML FROM: - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE SUCCESS: 552, 451, 452 - * SMTP CODE SUCCESS: 500, 501, 502, 421 - * @access public - * @param string $from - * @return bool - */ - public function SendAndMail($from) { - $this->error = null; // so no confusion is caused - - if(!$this->connected()) { - $this->error = array( - 'error' => 'Called SendAndMail() without being connected'); - return false; + /** + * Get VERP address generation mode. + * @return boolean + */ + public function getVerp() + { + return $this->do_verp; } - $this->client_send('SAML FROM:' . $from . $this->CRLF); + /** + * Set error messages and codes. + * @param string $message The error message + * @param string $detail Further detail on the error + * @param string $smtp_code An associated SMTP error code + * @param string $smtp_code_ex Extended SMTP code + */ + protected function setError($message, $detail = '', $smtp_code = '', $smtp_code_ex = '') + { + $this->error = array( + 'error' => $message, + 'detail' => $detail, + 'smtp_code' => $smtp_code, + 'smtp_code_ex' => $smtp_code_ex + ); + } - $rply = $this->get_lines(); - $code = substr($rply, 0, 3); + /** + * Set debug output method. + * @param string|callable $method The name of the mechanism to use for debugging output, or a callable to handle it. + */ + public function setDebugOutput($method = 'echo') + { + $this->Debugoutput = $method; + } - if($this->do_debug >= 2) { - $this->edebug('SMTP -> FROM SERVER:' . $rply . $this->CRLF . '
                      '); + /** + * Get debug output method. + * @return string + */ + public function getDebugOutput() + { + return $this->Debugoutput; } - if($code != 250) { - $this->error = - array('error' => 'SAML not accepted from server', - 'smtp_code' => $code, - 'smtp_msg' => substr($rply, 4)); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> ERROR: ' . $this->error['error'] . ': ' . $rply . $this->CRLF . '
                      '); - } - return false; + /** + * Set debug output level. + * @param integer $level + */ + public function setDebugLevel($level = 0) + { + $this->do_debug = $level; } - return true; - } - - /** - * This is an optional command for SMTP that this class does not - * support. This method is here to make the RFC821 Definition - * complete for this class and __may__ be implimented in the future - * - * Implements from rfc 821: TURN - * - * SMTP CODE SUCCESS: 250 - * SMTP CODE FAILURE: 502 - * SMTP CODE ERROR : 500, 503 - * @access public - * @return bool - */ - public function Turn() { - $this->error = array('error' => 'This method, TURN, of the SMTP '. - 'is not implemented'); - if($this->do_debug >= 1) { - $this->edebug('SMTP -> NOTICE: ' . $this->error['error'] . $this->CRLF . '
                      '); + + /** + * Get debug output level. + * @return integer + */ + public function getDebugLevel() + { + return $this->do_debug; } - return false; - } - - /** - * Sends data to the server - * @param string $data - * @access public - * @return Integer number of bytes sent to the server or FALSE on error - */ - public function client_send($data) { - if ($this->do_debug >= 1) { - $this->edebug("CLIENT -> SMTP: $data" . $this->CRLF . '
                      '); - } - return fwrite($this->smtp_conn, $data); - } - - /** - * Get the current error - * @access public - * @return array - */ - public function getError() { - return $this->error; - } - - ///////////////////////////////////////////////// - // INTERNAL FUNCTIONS - ///////////////////////////////////////////////// - - /** - * Read in as many lines as possible - * either before eof or socket timeout occurs on the operation. - * With SMTP we can tell if we have more lines to read if the - * 4th character is '-' symbol. If it is a space then we don't - * need to read anything else. - * @access private - * @return string - */ - private function get_lines() { - $data = ''; - $endtime = 0; - /* If for some reason the fp is bad, don't inf loop */ - if (!is_resource($this->smtp_conn)) { - return $data; + + /** + * Set SMTP timeout. + * @param integer $timeout + */ + public function setTimeout($timeout = 0) + { + $this->Timeout = $timeout; } - stream_set_timeout($this->smtp_conn, $this->Timeout); - if ($this->Timelimit > 0) { - $endtime = time() + $this->Timelimit; + + /** + * Get SMTP timeout. + * @return integer + */ + public function getTimeout() + { + return $this->Timeout; } - while(is_resource($this->smtp_conn) && !feof($this->smtp_conn)) { - $str = @fgets($this->smtp_conn, 515); - if($this->do_debug >= 4) { - $this->edebug("SMTP -> get_lines(): \$data was \"$data\"" . $this->CRLF . '
                      '); - $this->edebug("SMTP -> get_lines(): \$str is \"$str\"" . $this->CRLF . '
                      '); - } - $data .= $str; - if($this->do_debug >= 4) { - $this->edebug("SMTP -> get_lines(): \$data is \"$data\"" . $this->CRLF . '
                      '); - } - // if 4th character is a space, we are done reading, break the loop - if(substr($str, 3, 1) == ' ') { break; } - // Timed-out? Log and break - $info = stream_get_meta_data($this->smtp_conn); - if ($info['timed_out']) { - if($this->do_debug >= 4) { - $this->edebug('SMTP -> get_lines(): timed-out (' . $this->Timeout . ' seconds)
                      '); - } - break; - } - // Now check if reads took too long - if ($endtime) { - if (time() > $endtime) { - if($this->do_debug >= 4) { - $this->edebug('SMTP -> get_lines(): timelimit reached (' . $this->Timelimit . ' seconds)
                      '); - } - break; - } - } + + /** + * Reports an error number and string. + * @param integer $errno The error number returned by PHP. + * @param string $errmsg The error message returned by PHP. + */ + protected function errorHandler($errno, $errmsg) + { + $notice = 'Connection: Failed to connect to server.'; + $this->setError( + $notice, + $errno, + $errmsg + ); + $this->edebug( + $notice . ' Error number ' . $errno . '. "Error notice: ' . $errmsg, + self::DEBUG_CONNECTION + ); } - return $data; - } + /** + * Will return the ID of the last smtp transaction based on a list of patterns provided + * in SMTP::$smtp_transaction_id_patterns. + * If no reply has been received yet, it will return null. + * If no pattern has been matched, it will return false. + * @return bool|null|string + */ + public function getLastTransactionID() + { + $reply = $this->getLastReply(); + + if (empty($reply)) { + return null; + } + + foreach($this->smtp_transaction_id_patterns as $smtp_transaction_id_pattern) { + if(preg_match($smtp_transaction_id_pattern, $reply, $matches)) { + return $matches[1]; + } + } + + return false; + } } diff --git a/manager/includes/controls/phpmailer/extras/EasyPeasyICS.php b/manager/includes/controls/phpmailer/extras/EasyPeasyICS.php new file mode 100755 index 0000000000..d8bfcfae65 --- /dev/null +++ b/manager/includes/controls/phpmailer/extras/EasyPeasyICS.php @@ -0,0 +1,148 @@ + + * @author Manuel Reinhard + * + * Built with inspiration from + * http://stackoverflow.com/questions/1463480/how-can-i-use-php-to-dynamically-publish-an-ical-file-to-be-read-by-google-calend/1464355#1464355 + * History: + * 2010/12/17 - Manuel Reinhard - when it all started + * 2014 PHPMailer project becomes maintainer + */ + +/** + * Class EasyPeasyICS. + * Simple ICS data generator + * @package phpmailer + * @subpackage easypeasyics + */ +class EasyPeasyICS +{ + /** + * The name of the calendar + * @var string + */ + protected $calendarName; + /** + * The array of events to add to this calendar + * @var array + */ + protected $events = array(); + + /** + * Constructor + * @param string $calendarName + */ + public function __construct($calendarName = "") + { + $this->calendarName = $calendarName; + } + + /** + * Add an event to this calendar. + * @param string $start The start date and time as a unix timestamp + * @param string $end The end date and time as a unix timestamp + * @param string $summary A summary or title for the event + * @param string $description A description of the event + * @param string $url A URL for the event + * @param string $uid A unique identifier for the event - generated automatically if not provided + * @return array An array of event details, including any generated UID + */ + public function addEvent($start, $end, $summary = '', $description = '', $url = '', $uid = '') + { + if (empty($uid)) { + $uid = md5(uniqid(mt_rand(), true)) . '@EasyPeasyICS'; + } + $event = array( + 'start' => gmdate('Ymd', $start) . 'T' . gmdate('His', $start) . 'Z', + 'end' => gmdate('Ymd', $end) . 'T' . gmdate('His', $end) . 'Z', + 'summary' => $summary, + 'description' => $description, + 'url' => $url, + 'uid' => $uid + ); + $this->events[] = $event; + return $event; + } + + /** + * @return array Get the array of events. + */ + public function getEvents() + { + return $this->events; + } + + /** + * Clear all events. + */ + public function clearEvents() + { + $this->events = array(); + } + + /** + * Get the name of the calendar. + * @return string + */ + public function getName() + { + return $this->calendarName; + } + + /** + * Set the name of the calendar. + * @param $name + */ + public function setName($name) + { + $this->calendarName = $name; + } + + /** + * Render and optionally output a vcal string. + * @param bool $output Whether to output the calendar data directly (the default). + * @return string The complete rendered vlal + */ + public function render($output = true) + { + //Add header + $ics = 'BEGIN:VCALENDAR +METHOD:PUBLISH +VERSION:2.0 +X-WR-CALNAME:' . $this->calendarName . ' +PRODID:-//hacksw/handcal//NONSGML v1.0//EN'; + + //Add events + foreach ($this->events as $event) { + $ics .= ' +BEGIN:VEVENT +UID:' . $event['uid'] . ' +DTSTAMP:' . gmdate('Ymd') . 'T' . gmdate('His') . 'Z +DTSTART:' . $event['start'] . ' +DTEND:' . $event['end'] . ' +SUMMARY:' . str_replace("\n", "\\n", $event['summary']) . ' +DESCRIPTION:' . str_replace("\n", "\\n", $event['description']) . ' +URL;VALUE=URI:' . $event['url'] . ' +END:VEVENT'; + } + + //Add footer + $ics .= ' +END:VCALENDAR'; + + if ($output) { + //Output + $filename = $this->calendarName; + //Filename needs quoting if it contains spaces + if (strpos($filename, ' ') !== false) { + $filename = '"'.$filename.'"'; + } + header('Content-type: text/calendar; charset=utf-8'); + header('Content-Disposition: inline; filename=' . $filename . '.ics'); + echo $ics; + } + return $ics; + } +} diff --git a/manager/includes/controls/phpmailer/extras/README.md b/manager/includes/controls/phpmailer/extras/README.md new file mode 100755 index 0000000000..dac79e05fa --- /dev/null +++ b/manager/includes/controls/phpmailer/extras/README.md @@ -0,0 +1,17 @@ +#PHPMailer Extras + +These classes provide optional additional functions to PHPMailer. + +These are not loaded by the PHPMailer autoloader, so in some cases you may need to `require` them yourself before using them. + +##EasyPeasyICS + +This class was originally written by Manuel Reinhard and provides a simple means of generating ICS/vCal files that are used in sending calendar events. PHPMailer does not use it directly, but you can use it to generate content appropriate for placing in the `Ical` property of PHPMailer. The PHPMailer project is now its official home as Manuel has given permission for that and is no longer maintaining it himself. + +##htmlfilter + +This class by Konstantin Riabitsev and Jim Jagielski implements HTML filtering to remove potentially malicious tags, such as `'."\n", $modx->config['mgr_jquery_path']); ?> + + \n"; - break; - - case "marquee": - $value = parseInput($value," "); - $modx->regClientStartupScript(MODX_MANAGER_URL."media/script/mootools/mootools.js", array('name'=>'mootools', 'version'=>'1.1.1', 'plaintext'=>false)); - $modx->regClientStartupScript(MODX_MANAGER_URL."media/script/mootools/moodx.js", array('name'=>'moodx', 'version'=>'0', 'plaintext'=>false)); - $class = (!empty($params['class']) ? " class=\"".$params['class']."\"" : ""); - $style = (!empty($params['style']) ? " style=\"".$params['style']."\"" : ""); - $o .= "\n
                      ".$value."
                      \n"; - $o .= "\n"; - break; - - case "ticker": - $modx->regClientStartupScript(MODX_MANAGER_URL."media/script/mootools/mootools.js", array('name'=>'mootools', 'version'=>'1.1.1', 'plaintext'=>false)); - $modx->regClientStartupScript(MODX_MANAGER_URL."media/script/mootools/moostick.js?init=false", array('name'=>'moostick', 'version'=>'0', 'plaintext'=>false)); - $class = (!empty($params['class']) ? " class=\"".$params['class']."\"" : ""); - $style = (!empty($params['style']) ? " style=\"".$params['style']."\"" : ""); - $o .= "\n
                      \n"; - if(!empty($value)){ - $delim = ($params['delim'])? $params['delim']:"||"; - if ($delim=="\\n") $delim = "\n"; - $val = parseInput($value,$delim,"array",false); - if(count($val)>0){ - $o.= "
                        \n"; - for($i=0;$i".$val[$i]."\n"; - } - $o.= "
                      \n"; - } - } - $o .= "
                      \n"; - $o .= "\n"; - break; - case "hyperlink": $value = parseInput($value,"||","array"); for ($i = 0; $i < count($value); $i++) { @@ -164,7 +97,7 @@ function getTVDisplayFormat($name,$value,$format,$paramstring="",$tvtype="",$doc // setup the link attributes $attr = array( 'href' => $url, - 'title' => $params['title'] ? htmlspecialchars($params['title']) : $name, + 'title' => $params['title'] ? $modx->htmlspecialchars($params['title']) : $name, 'class' => $params['class'], 'style' => $params['style'], 'target' => $params['target'], @@ -173,7 +106,7 @@ function getTVDisplayFormat($name,$value,$format,$paramstring="",$tvtype="",$doc $attributes .= ' '.$params['attrib']; // add extra // Output the link - $o .= ''. ($params['text'] ? htmlspecialchars($params['text']) : $name) .''; + $o .= ''. ($params['text'] ? $modx->htmlspecialchars($params['text']) : $name) .''; } } break; @@ -207,7 +140,7 @@ function getTVDisplayFormat($name,$value,$format,$paramstring="",$tvtype="",$doc $h = $params['h']? $params['h']:'400px'; $richtexteditor = $params['edt']? $params['edt']: ""; $o = '
                      '; $replace_richtext = array($id); // setup editors @@ -337,7 +270,10 @@ function getTVDisplayFormat($name,$value,$format,$paramstring="",$tvtype="",$doc $widget_output = ''; } if(is_string($widget_output)) { - $widget_output = str_replace('[+value+]', $value, $widget_output); + $_ = $modx->config['enable_filter']; + $modx->config['enable_filter'] = 1; + $widget_output = $modx->parseText($widget_output, array('value'=>$value)); + $modx->config['enable_filter'] = $_; $o = $modx->parseDocumentSource($widget_output); } else { $o = $widget_output; @@ -366,7 +302,7 @@ function decodeParamValue($s){ // returns an array if a delimiter is present. returns array is a recordset is present function parseInput($src, $delim="||", $type="string", $columns=true) { // type can be: string, array global $modx; - if (is_resource($src)) { + if ($modx->db->isResult($src)) { // must be a recordset $rows = array(); while ($cols = $modx->db->getRow($src,'num')) $rows[] = ($columns)? $cols : implode(" ",$cols); diff --git a/manager/includes/tmplvars.inc.php b/manager/includes/tmplvars.inc.php old mode 100755 new mode 100644 index ecc37dd8c5..66f8ec888e --- a/manager/includes/tmplvars.inc.php +++ b/manager/includes/tmplvars.inc.php @@ -1,325 +1,360 @@ '; + $field_html .= ''; break; case "email": // handles email input fields - $field_html .= ''; + $field_html .= ''; break; case "number": // handles the input of numbers - $field_html .= ''; + $field_html .= ''; break; case "textareamini": // handler for textarea mini boxes - $field_html .= ''; + $field_html .= ''; break; case "textarea": // handler for textarea boxes case "rawtextarea": // non-htmlentity convertex textarea boxes case "htmlarea": // handler for textarea boxes (deprecated) case "richtext": // handler for textarea boxes - $field_html .= ''; + $field_html .= ''; break; case "date": - $field_id = str_replace(array('-', '.'),'_', urldecode($field_id)); - if($field_value=='') $field_value=0; - $field_html .= ''; - $field_html .= ' No date'; - - $field_html .= ''; + $field_id = str_replace(array('-', '.'), '_', urldecode($field_id)); + if ($field_value == '') $field_value = 0; + $field_html .= ''; + $field_html .= ' No date'; break; case "dropdown": // handler for select boxes - $field_html .= ''; + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); + while (list($item, $itemvalue) = each($index_list)) { + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); + if (strlen($itemvalue) == 0) $itemvalue = $item; + $field_html .= ''; } - $field_html .= ""; + $field_html .= ""; break; case "listbox": // handler for select boxes - $field_html .= ''; + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); + while (list($item, $itemvalue) = each($index_list)) { + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); + if (strlen($itemvalue) == 0) $itemvalue = $item; + $field_html .= ''; } - $field_html .= ""; + $field_html .= ""; break; case "listbox-multiple": // handler for select boxes where you can choose multiple items - $field_value = explode("||",$field_value); - $field_html .= ''; + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); + while (list($item, $itemvalue) = each($index_list)) { + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); + if (strlen($itemvalue) == 0) $itemvalue = $item; + $field_html .= ''; } - $field_html .= ""; + $field_html .= ""; break; case "url": // handles url input fields - $urls= array(''=>'--', 'http://'=>'http://', 'https://'=>'https://', 'ftp://'=>'ftp://', 'mailto:'=>'mailto:'); - $field_html ='
                      '; - $field_html .= '
                      '; + $field_html .= '
                      '; + $field_html .= '
                      '; break; - case "checkbox": // handles check boxes - $field_value = !is_array($field_value) ? explode("||",$field_value) : $field_value; - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id,'','tvform')); - static $i=0; - while (list($item, $itemvalue) = each ($index_list)) - { - list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue); - if (strlen($itemvalue)==0) $itemvalue = $item; - $field_html .= '
                      '; + case 'checkbox': // handles check boxes + $values = !is_array($field_value) ? explode('||', $field_value) : $field_value; + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); + $tpl = '
                      '; + $i = 0; + $_ = array(); + foreach ($index_list as $c=>$item) { + if(is_array($item)) { + $name = trim($item[0]); + $value = $item[1]; + } else { + $item = trim($item); + list($name, $value) = (strpos($item,'==')!==false) ? explode('==', $item, 2) : array($item, $item); + } + $checked = in_array($value, $values) ? ' checked="checked"' : ''; + $param = array($modx->htmlspecialchars($value), $i, $field_id, $checked, $modx->htmlspecialchars($name)); + $_[] = vsprintf($tpl, $param); $i++; } + $field_html = join("\n", $_); break; case "option": // handles radio buttons - $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id,'','tvform')); - while (list($item, $itemvalue) = each ($index_list)) - { - list($item,$itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==",$itemvalue); - if (strlen($itemvalue)==0) $itemvalue = $item; - $field_html .= ''.$item.'
                      '; + $index_list = ParseIntputOptions(ProcessTVCommand($field_elements, $field_id, '', 'tvform', $tvsArray)); + static $i = 0; + while (list($item, $itemvalue) = each($index_list)) { + list($item, $itemvalue) = (is_array($itemvalue)) ? $itemvalue : explode("==", $itemvalue); + if (strlen($itemvalue) == 0) $itemvalue = $item; + $field_html .= '
                      '; + $i++; } break; - case "image": // handles image fields using htmlarea image manager + case "image": // handles image fields using htmlarea image manager global $_lang; global $ResourceManagerLoaded; - global $content,$use_editor,$which_editor; - if (!$ResourceManagerLoaded && !(($content['richtext']==1 || $_GET['a']==4) && $use_editor==1 && $which_editor==3)){ - $field_html .=" - "; - $ResourceManagerLoaded = true; - } - $field_html .=' '; + /* ]]> */ + "; + $ResourceManagerLoaded = true; + } + $field_html .= ' '; break; case "file": // handles the input of file uploads - /* Modified by Timon for use with resource browser */ - global $_lang; + /* Modified by Timon for use with resource browser */ + global $_lang; global $ResourceManagerLoaded; - global $content,$use_editor,$which_editor; - if (!$ResourceManagerLoaded && !(($content['richtext']==1 || $_GET['a']==4) && $use_editor==1 && $which_editor==3)){ - /* I didn't understand the meaning of the condition above, so I left it untouched ;-) */ - $field_html .=" - "; - $ResourceManagerLoaded = true; - } - $field_html .=' '; - + /* ]]> */ + "; + $ResourceManagerLoaded = true; + } + $field_html .= ' '; + + break; + + case 'custom_tv': + $custom_output = ''; + /* If we are loading a file */ + if (substr($field_elements, 0, 5) == "@FILE") { + $file_name = MODX_BASE_PATH.trim(substr($field_elements, 6)); + if (!file_exists($file_name)) { + $custom_output = $file_name.' does not exist'; + } else { + $custom_output = file_get_contents($file_name); + } + } elseif (substr($field_elements, 0, 8) == '@INCLUDE') { + $file_name = MODX_BASE_PATH.trim(substr($field_elements, 9)); + if (!file_exists($file_name)) { + $custom_output = $file_name.' does not exist'; + } else { + ob_start(); + include $file_name; + $custom_output = ob_get_contents(); + ob_end_clean(); + } + } elseif (substr($field_elements, 0, 6) == "@CHUNK") { + $chunk_name = trim(substr($field_elements, 7)); + $chunk_body = $modx->getChunk($chunk_name); + if ($chunk_body == false) { + $custom_output = $_lang['chunk_no_exist'] + .'('.$_lang['htmlsnippet_name'] + .':'.$chunk_name.')'; + } else { + $custom_output = $chunk_body; + } + } elseif (substr($field_elements, 0, 5) == "@EVAL") { + $eval_str = trim(substr($field_elements, 6)); + $custom_output = eval($eval_str); + } else { + $custom_output = $field_elements; + } + $replacements = array( + '[+field_type+]' => $field_type, + '[+field_id+]' => $field_id, + '[+default_text+]' => $default_text, + '[+field_value+]' => $modx->htmlspecialchars($field_value), + '[+field_style+]' => $field_style, + ); + $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); + $modx->documentObject = $content; + $modx->documentIdentifier = $content['id']; + $custom_output = $modx->parseDocumentSource($custom_output); + $field_html .= $custom_output; break; - case 'custom_tv': - $custom_output = ''; - /* If we are loading a file */ - if(substr($field_elements, 0, 5) == "@FILE") { - $file_name = MODX_BASE_PATH . trim(substr($field_elements, 6)); - if( !file_exists($file_name) ) { - $custom_output = $file_name . ' does not exist'; - } else { - $custom_output = file_get_contents($file_name); - } - } elseif(substr($field_elements, 0, 8) == '@INCLUDE') { - $file_name = MODX_BASE_PATH . trim(substr($field_elements, 9)); - if( !file_exists($file_name) ) { - $custom_output = $file_name . ' does not exist'; - } else { - ob_start(); - include $file_name; - $custom_output = ob_get_contents(); - ob_end_clean(); - } - } elseif(substr($field_elements, 0, 6) == "@CHUNK") { - $chunk_name = trim(substr($field_elements, 7)); - $chunk_body = $modx->getChunk($chunk_name); - if($chunk_body == false) { - $custom_output = $_lang['chunk_no_exist'] - . '(' . $_lang['htmlsnippet_name'] - . ':' . $chunk_name . ')'; - } else { - $custom_output = $chunk_body; - } - } elseif(substr($field_elements, 0, 5) == "@EVAL") { - $eval_str = trim(substr($field_elements, 6)); - $custom_output = eval($eval_str); - } else { - $custom_output = $field_elements; - } - $replacements = array( - '[+field_type+]' => $field_type, - '[+field_id+]' => $field_id, - '[+default_text+]' => $default_text, - '[+field_value+]' => htmlspecialchars($field_value), - '[+field_style+]' => $field_style, - ); - $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); - $modx->documentObject = $content; - $custom_output = $modx->parseDocumentSource($custom_output); - $field_html .= $custom_output; - break; - default: // the default handler -- for errors, mostly - $field_html .= ''; + $field_html .= ''; } // end switch statement - return $field_html; - } // end renderFormElement function - - function ParseIntputOptions($v) { - global $modx; - $a = array(); - if(is_array($v)) return $v; - else if(is_resource($v)) { - while ($cols = $modx->db->getRow($v,'num')) $a[] = $cols; + } else { + $custom = explode(":", $field_type); + $custom_output = ''; + $file_name = MODX_BASE_PATH.'assets/tvs/'.$custom['1'].'/'.$custom['1'].'.customtv.php'; + if (!file_exists($file_name)) { + $custom_output = $file_name.' does not exist'; + } else { + ob_start(); + include $file_name; + $custom_output = ob_get_contents(); + ob_end_clean(); } - else $a = explode("||", $v); - return $a; - } + $replacements = array( + '[+field_type+]' => $field_type, + '[+field_id+]' => $field_id, + '[+default_text+]' => $default_text, + '[+field_value+]' => $modx->htmlspecialchars($field_value), + '[+field_style+]' => $field_style, + ); + $custom_output = str_replace(array_keys($replacements), $replacements, $custom_output); + $modx->documentObject = $content; + $custom_output = $modx->parseDocumentSource($custom_output); + $field_html .= $custom_output; + } + + return $field_html; +} // end renderFormElement function + +function ParseIntputOptions($v) { + global $modx; + $a = array(); + if (is_array($v)) return $v; + else if ($modx->db->isResult($v)) { + while ($cols = $modx->db->getRow($v, 'num')) $a[] = $cols; + } else $a = explode("||", $v); + return $a; +} + ?> diff --git a/manager/includes/user_settings.inc.php b/manager/includes/user_settings.inc.php index 5e7cc5851d..9a62214478 100755 --- a/manager/includes/user_settings.inc.php +++ b/manager/includes/user_settings.inc.php @@ -12,14 +12,15 @@ if (!empty($user_id)) { // Raymond: grab the user settings from the database. $rs = $modx->db->select('setting_name, setting_value', $modx->getFullTableName('user_settings'), "user=".$modx->getLoginUserID()); - + + $which_browser_default = $which_browser; while ($row = $modx->db->getRow($rs)) { + if($row['setting_name'] == 'which_browser' && $row['setting_value'] == 'default') $row['setting_value'] = $which_browser_default; $settings[$row['setting_name']] = $row['setting_value']; if (isset($modx->config)) { $modx->config[$row['setting_name']] = $row['setting_value']; } } - extract($settings, EXTR_OVERWRITE); } ?> \ No newline at end of file diff --git a/manager/includes/veriword.php b/manager/includes/veriword.php index c7957ec0bb..63a242040e 100755 --- a/manager/includes/veriword.php +++ b/manager/includes/veriword.php @@ -53,7 +53,7 @@ class VeriWord { var $im_width = 0; var $im_height = 0; - function VeriWord($w=200, $h=80) { + function __construct($w=200, $h=80) { /* create session to set word for verification */ startCMSSession(); $this->set_veriword(); diff --git a/manager/includes/version.inc.php b/manager/includes/version.inc.php index 09c9970641..0b5254f8bd 100755 --- a/manager/includes/version.inc.php +++ b/manager/includes/version.inc.php @@ -1,5 +1,5 @@ Unable to load configuration settings"; - echo "Please run the MODX install utility"; - exit; + echo "

                      Unable to load configuration settings

                      "; + echo "Please run the MODX install utility"; + exit; } // include the database configuration file @@ -143,6 +156,7 @@ // start session startCMSSession(); +$modx->sid = session_id(); // get the settings from the database include_once "settings.inc.php"; @@ -150,16 +164,19 @@ // get the user settings from the database include_once "user_settings.inc.php"; -// include_once the language file +// now include_once different language file as english if(!isset($manager_language) || !file_exists(MODX_MANAGER_PATH."includes/lang/".$manager_language.".inc.php")) { - $manager_language = "english"; // if not set, get the english language file. + $manager_language = "english"; // if not set, get the english language file. } -$_lang = array(); -include_once "lang/english.inc.php"; $length_eng_lang = count($_lang); if($manager_language!="english" && file_exists(MODX_MANAGER_PATH."includes/lang/".$manager_language.".inc.php")) { - include_once "lang/".$manager_language.".inc.php"; + include_once "lang/".$manager_language.".inc.php"; +} + +// allow custom language overrides not altered by future MODX-updates +if(file_exists(MODX_MANAGER_PATH."includes/lang/override/".$manager_language.".inc.php")) { + include_once "lang/override/".$manager_language.".inc.php"; } $s = array('[+MGR_DIR+]'); @@ -181,19 +198,19 @@ // double check the session if(!isset($_SESSION['mgrValidated'])){ - echo "Not Logged In!"; - exit; + echo "Not Logged In!"; + exit; } // include_once the style variables file if(isset($manager_theme) && !isset($_style)) { - $_style = array(); - include_once "media/style/".$manager_theme."/style.php"; + $_style = array(); + include_once "media/style/".$manager_theme."/style.php"; } // check if user is allowed to access manager interface if(isset($allow_manager_access) && $allow_manager_access==0) { - include_once "manager.lockout.inc.php"; + include_once "manager.lockout.inc.php"; } // Initialize System Alert Message Queque @@ -202,20 +219,24 @@ // first we check to see if this is a frameset request if(!isset($_POST['a']) && !isset($_GET['a']) && !isset($_POST['updateMsgCount'])) { - // this looks to be a top-level frameset request, so let's serve up a frameset - include_once "frames/1.php"; - exit; + // this looks to be a top-level frameset request, so let's serve up a frameset + if(is_file(MODX_MANAGER_PATH."media/style/".$manager_theme."/frames/1.php")) { + include_once "media/style/".$manager_theme."/frames/1.php"; + }else{ + include_once "frames/1.php"; + } + exit; } // OK, let's retrieve the action directive from the request -if(isset($_GET['a']) && isset($_POST['a'])) { - $modx->webAlertAndQuit($_lang["error_double_action"]); -} else { - $action= isset($_REQUEST['a']) ? (int) $_REQUEST['a'] : null; -} +$option = array('min_range'=>1,'max_range'=>2000); +if(isset($_GET['a']) && isset($_POST['a'])) $modx->webAlertAndQuit($_lang['error_double_action']); +elseif(isset($_GET['a'])) $action = filter_input(INPUT_GET, 'a',FILTER_VALIDATE_INT,$option); +elseif(isset($_POST['a'])) $action = filter_input(INPUT_POST,'a',FILTER_VALIDATE_INT,$option); +else $action = null; if (isset($_POST['updateMsgCount']) && $modx->hasPermission('messages')) { - include_once 'messageCount.inc.php'; + include_once 'messageCount.inc.php'; } // save page to manager object @@ -223,721 +244,746 @@ // attempt to foil some simple types of CSRF attacks if (isset($modx->config['validate_referer']) && intval($modx->config['validate_referer'])) { - if (isset($_SERVER['HTTP_REFERER'])) { - $referer = $_SERVER['HTTP_REFERER']; - - if (!empty($referer)) { - if (!preg_match('/^'.preg_quote(MODX_SITE_URL, '/').'/i', $referer)) { - $modx->webAlertAndQuit("A possible CSRF attempt was detected from referer: {$referer}.", "index.php"); - } - } else { - $modx->webAlertAndQuit("A possible CSRF attempt was detected. No referer was provided by the client.", "index.php"); - } - } else { - $modx->webAlertAndQuit("A possible CSRF attempt was detected. No referer was provided by the server.", "index.php"); - } + if (isset($_SERVER['HTTP_REFERER'])) { + $referer = $_SERVER['HTTP_REFERER']; + + if (!empty($referer)) { + if (!preg_match('/^'.preg_quote(MODX_SITE_URL, '/').'/i', $referer)) { + $modx->webAlertAndQuit("A possible CSRF attempt was detected from referer: {$referer}.", "index.php"); + } + } else { + $modx->webAlertAndQuit("A possible CSRF attempt was detected. No referer was provided by the client.", "index.php"); + } + } else { + $modx->webAlertAndQuit("A possible CSRF attempt was detected. No referer was provided by the server.", "index.php"); + } } // invoke OnManagerPageInit event $modx->invokeEvent("OnManagerPageInit", array("action" => $action)); +// return element filepath +function includeFileProcessor ($filepath,$manager_theme) { + $element = ""; + if(is_file(MODX_MANAGER_PATH."media/style/".$manager_theme."/".$filepath)) { + $element = MODX_MANAGER_PATH."media/style/".$manager_theme."/".$filepath; + }else{ + $element = $filepath; + } + return $element; +} // Now we decide what to do according to the action request. This is a BIG list :) switch ($action) { /********************************************************************/ /* frame management - show the requested frame */ /********************************************************************/ - case 1 : - // get the requested frame - $frame = preg_replace('/[^a-z0-9]/i','',$_REQUEST['f']); - if($frame>9) { - $enable_debug=false; // this is to stop the debug thingy being attached to the framesets - } - include_once "frames/".$frame.".php"; - break; + case 1 : + // get the requested frame + $frame = preg_replace('/[^a-z0-9]/i','',$_REQUEST['f']); + if($frame>9) { + $enable_debug=false; // this is to stop the debug thingy being attached to the framesets + } + include_once(includeFileProcessor("frames/".$frame.".php",$manager_theme)); + break; /********************************************************************/ /* show the homepage */ /********************************************************************/ - case 2: - // get the home page - include_once "header.inc.php"; - include_once "actions/welcome.static.php"; - include_once "footer.inc.php"; - break; + case 2: + // get the home page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/welcome.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* document data */ /********************************************************************/ - case 3: - // get the page to show document's data - include_once "header.inc.php"; - include_once "actions/document_data.static.php"; - include_once "footer.inc.php"; - break; + case 3: + // get the page to show document's data + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/document_data.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* content management */ /********************************************************************/ - case 85: - // get the mutate page for adding a folder - include_once "header.inc.php"; - include_once "actions/mutate_content.dynamic.php"; - include_once "footer.inc.php"; - break; - case 27: - // get the mutate page for changing content - include_once "header.inc.php"; - include_once "actions/mutate_content.dynamic.php"; - include_once "footer.inc.php"; - break; - case 4: - // get the mutate page for adding content - include_once "header.inc.php"; - include_once "actions/mutate_content.dynamic.php"; - include_once "footer.inc.php"; - break; - case 5: - // get the save processor - include_once "processors/save_content.processor.php"; - break; - case 6: - // get the delete processor - include_once "processors/delete_content.processor.php"; - break; - case 63: - // get the undelete processor - include_once "processors/undelete_content.processor.php"; - break; - case 51: - // get the move action - include_once "header.inc.php"; - include_once "actions/move_document.dynamic.php"; - include_once "footer.inc.php"; - break; - case 52: - // get the move document processor - include_once "processors/move_document.processor.php"; - break; - case 61: - // get the processor for publishing content - include_once "processors/publish_content.processor.php"; - break; - case 62: - // get the processor for publishing content - include_once "processors/unpublish_content.processor.php"; - break; + case 85: + // get the mutate page for adding a folder + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_content.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 27: + // get the mutate page for changing content + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_content.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 4: + // get the mutate page for adding content + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_content.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 5: + // get the save processor + include_once(includeFileProcessor("processors/save_content.processor.php",$manager_theme)); + break; + case 6: + // get the delete processor + include_once(includeFileProcessor("processors/delete_content.processor.php",$manager_theme)); + break; + case 63: + // get the undelete processor + include_once(includeFileProcessor("processors/undelete_content.processor.php",$manager_theme)); + break; + case 51: + // get the move action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/move_document.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 52: + // get the move document processor + include_once(includeFileProcessor("processors/move_document.processor.php",$manager_theme)); + break; + case 61: + // get the processor for publishing content + include_once(includeFileProcessor("processors/publish_content.processor.php",$manager_theme)); + break; + case 62: + // get the processor for publishing content + include_once(includeFileProcessor("processors/unpublish_content.processor.php",$manager_theme)); + break; + case 56: + // get the sort menuindex action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_menuindex_sort.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* show the wait page - gives the tree time to refresh (hopefully) */ /********************************************************************/ - case 7: - // get the wait page (so the tree can reload) - include_once "header.inc.php"; - include_once "actions/wait.static.php"; - include_once "footer.inc.php"; - break; + case 7: + // get the wait page (so the tree can reload) + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/wait.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* let the user log out */ /********************************************************************/ - case 8: - // get the logout processor - include_once "processors/logout.processor.php"; - break; + case 8: + // get the logout processor + include_once(includeFileProcessor("processors/logout.processor.php",$manager_theme)); + break; /********************************************************************/ /* user management */ /********************************************************************/ - case 87: - // get the new web user page - include_once "header.inc.php"; - include_once "actions/mutate_web_user.dynamic.php"; - include_once "footer.inc.php"; - break; - case 88: - // get the edit web user page - include_once "header.inc.php"; - include_once "actions/mutate_web_user.dynamic.php"; - include_once "footer.inc.php"; - break; - case 89: - // get the save web user processor - include_once "processors/save_web_user.processor.php"; - break; - case 90: - // get the delete web user page - include_once "processors/delete_web_user.processor.php"; - break; - case 11: - // get the new user page - include_once "header.inc.php"; - include_once "actions/mutate_user.dynamic.php"; - include_once "footer.inc.php"; - break; - case 12: - // get the edit user page - include_once "header.inc.php"; - include_once "actions/mutate_user.dynamic.php"; - include_once "footer.inc.php"; - break; - case 32: - // get the save user processor - include_once "processors/save_user.processor.php"; - break; - case 28: - // get the change password page - include_once "header.inc.php"; - include_once "actions/mutate_password.dynamic.php"; - include_once "footer.inc.php"; - break; - case 34: - // get the save new password page - include_once "processors/save_password.processor.php"; - break; - case 33: - // get the delete user page - include_once "processors/delete_user.processor.php"; - break; + case 87: + // get the new web user page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_web_user.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 88: + // get the edit web user page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_web_user.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 89: + // get the save web user processor + include_once(includeFileProcessor("processors/save_web_user.processor.php",$manager_theme)); + break; + case 90: + // get the delete web user page + include_once(includeFileProcessor("processors/delete_web_user.processor.php",$manager_theme)); + break; + case 11: + // get the new user page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_user.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 12: + // get the edit user page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_user.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 32: + // get the save user processor + include_once(includeFileProcessor("processors/save_user.processor.php",$manager_theme)); + break; + case 28: + // get the change password page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_password.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 34: + // get the save new password page + include_once(includeFileProcessor("processors/save_password.processor.php",$manager_theme)); + break; + case 33: + // get the delete user page + include_once(includeFileProcessor("processors/delete_user.processor.php",$manager_theme)); + break; /********************************************************************/ /* role management */ /********************************************************************/ - case 38: - // get the new role page - include_once "header.inc.php"; - include_once "actions/mutate_role.dynamic.php"; - include_once "footer.inc.php"; - break; - case 35: - // get the edit role page - include_once "header.inc.php"; - include_once "actions/mutate_role.dynamic.php"; - include_once "footer.inc.php"; - break; - case 36: - // get the save role page - include_once "processors/save_role.processor.php"; - break; - case 37: - // get the delete role page - include_once "processors/delete_role.processor.php"; - break; + case 38: + // get the new role page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_role.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 35: + // get the edit role page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_role.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 36: + // get the save role page + include_once(includeFileProcessor("processors/save_role.processor.php",$manager_theme)); + break; + case 37: + // get the delete role page + include_once(includeFileProcessor("processors/delete_role.processor.php",$manager_theme)); + break; /********************************************************************/ /* template management */ /********************************************************************/ - case 16: - // get the edit template action - include_once "header.inc.php"; - include_once "actions/mutate_templates.dynamic.php"; - include_once "footer.inc.php"; - break; - case 19: - // get the new template action - include_once "header.inc.php"; - include_once "actions/mutate_templates.dynamic.php"; - include_once "footer.inc.php"; - break; - case 20: - // get the save processor - include_once "processors/save_template.processor.php"; - break; - case 21: - // get the delete processor - include_once "processors/delete_template.processor.php"; - break; - case 96: - // get the duplicate template processor - include_once "processors/duplicate_template.processor.php"; - break; - case 117: - // change the tv rank for selected template - //include_once "header.inc.php"; - in action file - include_once "actions/mutate_template_tv_rank.dynamic.php"; - include_once "footer.inc.php"; - break; + case 16: + // get the edit template action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_templates.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 19: + // get the new template action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_templates.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 20: + // get the save processor + include_once(includeFileProcessor("processors/save_template.processor.php",$manager_theme)); + break; + case 21: + // get the delete processor + include_once(includeFileProcessor("processors/delete_template.processor.php",$manager_theme)); + break; + case 96: + // get the duplicate template processor + include_once(includeFileProcessor("processors/duplicate_template.processor.php",$manager_theme)); + break; + case 117: + // change the tv rank for selected template + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_template_tv_rank.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* snippet management */ /********************************************************************/ - case 22: - // get the edit snippet action - include_once "header.inc.php"; - include_once "actions/mutate_snippet.dynamic.php"; - include_once "footer.inc.php"; - break; - case 23: - // get the new snippet action - include_once "header.inc.php"; - include_once "actions/mutate_snippet.dynamic.php"; - include_once "footer.inc.php"; - break; - case 24: - // get the save processor - include_once "processors/save_snippet.processor.php"; - break; - case 25: - // get the delete processor - include_once "processors/delete_snippet.processor.php"; - break; - case 98: - // get the duplicate processor - include_once "processors/duplicate_snippet.processor.php"; - break; + case 22: + // get the edit snippet action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_snippet.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 23: + // get the new snippet action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_snippet.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 24: + // get the save processor + include_once(includeFileProcessor("processors/save_snippet.processor.php",$manager_theme)); + break; + case 25: + // get the delete processor + include_once(includeFileProcessor("processors/delete_snippet.processor.php",$manager_theme)); + break; + case 98: + // get the duplicate processor + include_once(includeFileProcessor("processors/duplicate_snippet.processor.php",$manager_theme)); + break; /********************************************************************/ /* htmlsnippet management */ /********************************************************************/ - case 78: - // get the edit snippet action - include_once "header.inc.php"; - include_once "actions/mutate_htmlsnippet.dynamic.php"; - include_once "footer.inc.php"; - break; - case 77: - // get the new snippet action - include_once "header.inc.php"; - include_once "actions/mutate_htmlsnippet.dynamic.php"; - include_once "footer.inc.php"; - break; - case 79: - // get the save processor - include_once "processors/save_htmlsnippet.processor.php"; - break; - case 80: - // get the delete processor - include_once "processors/delete_htmlsnippet.processor.php"; - break; - case 97: - // get the duplicate processor - include_once "processors/duplicate_htmlsnippet.processor.php"; - break; + case 78: + // get the edit snippet action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_htmlsnippet.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 77: + // get the new snippet action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_htmlsnippet.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 79: + // get the save processor + include_once(includeFileProcessor("processors/save_htmlsnippet.processor.php",$manager_theme)); + break; + case 80: + // get the delete processor + include_once(includeFileProcessor("processors/delete_htmlsnippet.processor.php",$manager_theme)); + break; + case 97: + // get the duplicate processor + include_once(includeFileProcessor("processors/duplicate_htmlsnippet.processor.php",$manager_theme)); + break; /********************************************************************/ /* show the credits page */ /********************************************************************/ - case 18: - // get the credits page - include_once "header.inc.php"; - include_once "actions/credits.static.php"; - include_once "footer.inc.php"; - break; + case 18: + // get the credits page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/credits.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* empty cache & synchronisation */ /********************************************************************/ - case 26: - // get the cache emptying processor - include_once "header.inc.php"; - include_once "actions/refresh_site.dynamic.php"; - include_once "footer.inc.php"; - break; + case 26: + // get the cache emptying processor + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/refresh_site.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Module management */ /********************************************************************/ - case 106: - // get module management - include_once "header.inc.php"; - include_once "actions/modules.static.php"; - include_once "footer.inc.php"; - break; - case 107: - // get the new module action - include_once "header.inc.php"; - include_once "actions/mutate_module.dynamic.php"; - include_once "footer.inc.php"; - break; - case 108: - // get the edit module action - include_once "header.inc.php"; - include_once "actions/mutate_module.dynamic.php"; - include_once "footer.inc.php"; - break; - case 109: - // get the save processor - include_once "processors/save_module.processor.php"; - break; - case 110: - // get the delete processor - include_once "processors/delete_module.processor.php"; - break; - case 111: - // get the duplicate processor - include_once "processors/duplicate_module.processor.php"; - break; - case 112: - // execute/run the module - //include_once "header.inc.php"; - include_once "processors/execute_module.processor.php"; - //include_once "footer.inc.php"; - break; - case 113: - // get the module resources (dependencies) action - include_once "header.inc.php"; - include_once "actions/mutate_module_resources.dynamic.php"; - include_once "footer.inc.php"; - break; + case 106: + // get module management + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/modules.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 107: + // get the new module action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_module.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 108: + // get the edit module action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_module.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 109: + // get the save processor + include_once(includeFileProcessor("processors/save_module.processor.php",$manager_theme)); + break; + case 110: + // get the delete processor + include_once(includeFileProcessor("processors/delete_module.processor.php",$manager_theme)); + break; + case 111: + // get the duplicate processor + include_once(includeFileProcessor("processors/duplicate_module.processor.php",$manager_theme)); + break; + case 112: + // execute/run the module + //include_once "header.inc.php"; + include_once(includeFileProcessor("processors/execute_module.processor.php",$manager_theme)); + //include_once "footer.inc.php"; + break; + case 113: + // get the module resources (dependencies) action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_module_resources.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* plugin management */ /********************************************************************/ - case 100: - // change the plugin priority - //include_once "header.inc.php"; - in action file - include_once "actions/mutate_plugin_priority.dynamic.php"; - include_once "footer.inc.php"; - break; - case 101: - // get the new plugin action - include_once "header.inc.php"; - include_once "actions/mutate_plugin.dynamic.php"; - include_once "footer.inc.php"; - break; - case 102: - // get the edit plugin action - include_once "header.inc.php"; - include_once "actions/mutate_plugin.dynamic.php"; - include_once "footer.inc.php"; - break; - case 103: - // get the save processor - include_once "processors/save_plugin.processor.php"; - break; - case 104: - // get the delete processor - include_once "processors/delete_plugin.processor.php"; - break; - case 105: - // get the duplicate processor - include_once "processors/duplicate_plugin.processor.php"; - break; + case 100: + // change the plugin priority + //include_once "header.inc.php"; - in action file + include_once(includeFileProcessor("actions/mutate_plugin_priority.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 101: + // get the new plugin action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_plugin.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 102: + // get the edit plugin action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_plugin.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 103: + // get the save processor + include_once(includeFileProcessor("processors/save_plugin.processor.php",$manager_theme)); + break; + case 104: + // get the delete processor + include_once(includeFileProcessor("processors/delete_plugin.processor.php",$manager_theme)); + break; + case 105: + // get the duplicate processor + include_once(includeFileProcessor("processors/duplicate_plugin.processor.php",$manager_theme)); + break; + case 119: + // get the purge processor + include_once(includeFileProcessor("processors/purge_plugin.processor.php",$manager_theme)); + break; /********************************************************************/ /* view phpinfo */ /********************************************************************/ - case 200: - // show phpInfo - if($modx->hasPermission('logs')) { - include_once "header.inc.php"; - include_once "actions/phpinfo.static.php"; - include_once "footer.inc.php"; - } - break; + case 200: + // show phpInfo + if($modx->hasPermission('logs')) { + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/phpinfo.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + } + break; /********************************************************************/ /* errorpage */ /********************************************************************/ - case 29: - // get the error page - include_once "actions/error_dialog.static.php"; - break; + case 29: + // get the error page + include_once(includeFileProcessor("actions/error_dialog.static.php",$manager_theme)); + break; /********************************************************************/ /* file manager */ /********************************************************************/ - case 31: - // get the page to manage files - include_once "header.inc.php"; - include_once "actions/files.dynamic.php"; - include_once "footer.inc.php"; - break; + case 31: + // get the page to manage files + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/files.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* access permissions */ /********************************************************************/ - case 40: - include_once "header.inc.php"; - include_once "actions/access_permissions.dynamic.php"; - include_once "footer.inc.php"; - break; - case 91: - include_once "header.inc.php"; - include_once "actions/web_access_permissions.dynamic.php"; - include_once "footer.inc.php"; - break; + case 40: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/access_permissions.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 91: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/web_access_permissions.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* access groups processor */ /********************************************************************/ - case 41: - include_once "processors/access_groups.processor.php"; - break; - case 92: - include_once "processors/web_access_groups.processor.php"; - break; + case 41: + include_once(includeFileProcessor("processors/access_groups.processor.php",$manager_theme)); + break; + case 92: + include_once(includeFileProcessor("processors/web_access_groups.processor.php",$manager_theme)); + break; /********************************************************************/ /* settings editor */ /********************************************************************/ - case 17: - // get the settings editor - include_once "header.inc.php"; - include_once "actions/mutate_settings.dynamic.php"; - include_once "footer.inc.php"; - break; - case 118: - // call settings ajax include - ob_clean(); - include_once "includes/mutate_settings.ajax.php"; - break; + case 17: + // get the settings editor + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_settings.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 118: + // call settings ajax include + ob_clean(); + include_once(includeFileProcessor("includes/mutate_settings.ajax.php",$manager_theme)); + break; /********************************************************************/ /* save settings */ /********************************************************************/ - case 30: - // get the save settings processor - include_once "processors/save_settings.processor.php"; - break; + case 30: + // get the save settings processor + include_once(includeFileProcessor("processors/save_settings.processor.php",$manager_theme)); + break; /********************************************************************/ /* system information */ /********************************************************************/ - case 53: - // get the settings editor - include_once "header.inc.php"; - include_once "actions/sysinfo.static.php"; - include_once "footer.inc.php"; - break; + case 53: + // get the settings editor + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/sysinfo.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* optimise table */ /********************************************************************/ - case 54: - // get the table optimizer/truncate processor - include_once "processors/optimize_table.processor.php"; - break; + case 54: + // get the table optimizer/truncate processor + include_once(includeFileProcessor("processors/optimize_table.processor.php",$manager_theme)); + break; /********************************************************************/ /* view logging */ /********************************************************************/ - case 13: - // view logging - include_once "header.inc.php"; - include_once "actions/logging.static.php"; - include_once "footer.inc.php"; - break; + case 13: + // view logging + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/logging.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* empty logs */ /********************************************************************/ - case 55: - // get the settings editor - include_once "processors/empty_table.processor.php"; - break; + case 55: + // get the settings editor + include_once(includeFileProcessor("processors/empty_table.processor.php",$manager_theme)); + break; /********************************************************************/ /* calls test page */ /********************************************************************/ - case 999: - // get the test page - include_once "header.inc.php"; - include_once "test_page.php"; - include_once "footer.inc.php"; - break; + case 999: + // get the test page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("test_page.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Empty recycle bin */ /********************************************************************/ - case 64: - // get the Recycle bin emptier - include_once "processors/remove_content.processor.php"; - break; + case 64: + // get the Recycle bin emptier + include_once(includeFileProcessor("processors/remove_content.processor.php",$manager_theme)); + break; /********************************************************************/ /* Messages */ /********************************************************************/ - case 10: - // get the messages page - include_once "header.inc.php"; - include_once "actions/messages.static.php"; - include_once "footer.inc.php"; - break; + case 10: + // get the messages page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/messages.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Delete a message */ /********************************************************************/ - case 65: - // get the message deleter - include_once "processors/delete_message.processor.php"; - break; + case 65: + // get the message deleter + include_once(includeFileProcessor("processors/delete_message.processor.php",$manager_theme)); + break; /********************************************************************/ /* Send a message */ /********************************************************************/ - case 66: - // get the message deleter - include_once "processors/send_message.processor.php"; - break; + case 66: + // get the message deleter + include_once(includeFileProcessor("processors/send_message.processor.php",$manager_theme)); + break; /********************************************************************/ /* Remove locks */ /********************************************************************/ - case 67: - // get the lock remover - include_once "processors/remove_locks.processor.php"; - break; + case 67: + // get the lock remover + include_once(includeFileProcessor("processors/remove_locks.processor.php",$manager_theme)); + break; /********************************************************************/ /* Site schedule */ /********************************************************************/ - case 70: - // get the schedule page - include_once "header.inc.php"; - include_once "actions/site_schedule.static.php"; - include_once "footer.inc.php"; - break; + case 70: + // get the schedule page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/site_schedule.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Search */ /********************************************************************/ - case 71: - // get the search page - include_once "header.inc.php"; - include_once "actions/search.static.php"; - include_once "footer.inc.php"; - break; + case 71: + // get the search page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/search.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* About */ /********************************************************************/ - case 59: - // get the about page - include_once "header.inc.php"; - include_once "actions/about.static.php"; - include_once "footer.inc.php"; - break; + case 59: + // get the about page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/about.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Add weblink */ /********************************************************************/ - case 72: - // get the weblink page - include_once "header.inc.php"; - include_once "actions/mutate_content.dynamic.php"; - include_once "footer.inc.php"; - break; + case 72: + // get the weblink page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_content.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* User management */ /********************************************************************/ - case 75: - include_once "header.inc.php"; - include_once "actions/user_management.static.php"; - include_once "footer.inc.php"; - break; - case 99: - include_once "header.inc.php"; - include_once "actions/web_user_management.static.php"; - include_once "footer.inc.php"; - break; - case 86: - include_once "header.inc.php"; - include_once "actions/role_management.static.php"; - include_once "footer.inc.php"; - break; + case 75: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/user_management.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 99: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/web_user_management.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 86: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/role_management.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* template/ snippet management */ /********************************************************************/ - case 76: - include_once "header.inc.php"; - include_once "actions/resources.static.php"; - include_once "footer.inc.php"; - break; + case 76: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/resources.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* keywords management */ /********************************************************************/ - case 81: - include_once "header.inc.php"; - include_once "actions/manage_metatags.dynamic.php"; - include_once "footer.inc.php"; - break; - case 82: - include_once "processors/metatags.processor.php"; - break; + case 81: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/manage_metatags.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 82: + include_once(includeFileProcessor("processors/metatags.processor.php",$manager_theme)); + break; /********************************************************************/ /* Export to file */ /********************************************************************/ - case 83: - include_once "header.inc.php"; - include_once "actions/export_site.static.php"; - include_once "footer.inc.php"; - break; + case 83: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/export_site.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Resource Selector */ /********************************************************************/ - case 84: - include_once "actions/resource_selector.static.php"; - break; + case 84: + include_once(includeFileProcessor("actions/resource_selector.static.php",$manager_theme)); + break; /********************************************************************/ /* Backup Manager */ /********************************************************************/ - case 93: - # header and footer will be handled interally - include_once "actions/bkmanager.static.php"; - break; + case 93: + # header and footer will be handled interally + include_once(includeFileProcessor("actions/bkmanager.static.php",$manager_theme)); + break; /********************************************************************/ /* Duplicate Document */ /********************************************************************/ - case 94: - // get the duplicate processor - include_once "processors/duplicate_content.processor.php"; - break; + case 94: + // get the duplicate processor + include_once(includeFileProcessor("processors/duplicate_content.processor.php",$manager_theme)); + break; /********************************************************************/ /* Import Document from file */ /********************************************************************/ - case 95: - include_once "header.inc.php"; - include_once "actions/import_site.static.php"; - include_once "footer.inc.php"; - break; + case 95: + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/import_site.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Help */ /********************************************************************/ - case 9: - // get the help page - include_once "header.inc.php"; - include_once "actions/help.static.php"; - include_once "footer.inc.php"; - break; + case 9: + // get the help page + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/help.static.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Template Variables - Based on Apodigm's Docvars */ /********************************************************************/ - case 300: - // get the new document variable action - include_once "header.inc.php"; - include_once "actions/mutate_tmplvars.dynamic.php"; - include_once "footer.inc.php"; - break; - case 301: - // get the edit document variable action - include_once "header.inc.php"; - include_once "actions/mutate_tmplvars.dynamic.php"; - include_once "footer.inc.php"; - break; - case 302: - // get the save processor - include_once "processors/save_tmplvars.processor.php"; - break; - case 303: - // get the delete processor - include_once "processors/delete_tmplvars.processor.php"; - break; - case 304: - // get the duplicate processor - include_once "processors/duplicate_tmplvars.processor.php"; - break; - + case 300: + // get the new document variable action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_tmplvars.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 301: + // get the edit document variable action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_tmplvars.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 302: + // get the save processor + include_once(includeFileProcessor("processors/save_tmplvars.processor.php",$manager_theme)); + break; + case 303: + // get the delete processor + include_once(includeFileProcessor("processors/delete_tmplvars.processor.php",$manager_theme)); + break; + case 304: + // get the duplicate processor + include_once(includeFileProcessor("processors/duplicate_tmplvars.processor.php",$manager_theme)); + break; + case 305: + // get the tv-rank action + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/mutate_tv_rank.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; /********************************************************************/ /* Event viewer: show event message log */ /********************************************************************/ - case 114: - // get event logs - include_once "header.inc.php"; - include_once "actions/eventlog.dynamic.php"; - include_once "footer.inc.php"; - break; - case 115: - // get event log details viewer - include_once "header.inc.php"; - include_once "actions/eventlog_details.dynamic.php"; - include_once "footer.inc.php"; - break; - case 116: - // get the event log delete processor - include_once "processors/delete_eventlog.processor.php"; - break; - - case 501: - //delete category - include_once "processors/delete_category.processor.php"; - break; + case 114: + // get event logs + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/eventlog.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 115: + // get event log details viewer + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + include_once(includeFileProcessor("actions/eventlog_details.dynamic.php",$manager_theme)); + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); + break; + case 116: + // get the event log delete processor + include_once(includeFileProcessor("processors/delete_eventlog.processor.php",$manager_theme)); + break; + + case 501: + //delete category + include_once(includeFileProcessor("processors/delete_category.processor.php",$manager_theme)); + break; /********************************************************************/ /* default action: show not implemented message */ /********************************************************************/ - default : - // say that what was requested doesn't do anything yet - include_once "header.inc.php"; - echo " -
                      ".$_lang['functionnotimpl']."
                      + default : + // say that what was requested doesn't do anything yet + include_once(includeFileProcessor("includes/header.inc.php",$manager_theme)); + echo " +
                      ".$_lang['functionnotimpl']."
                      -

                      ".$_lang['functionnotimpl_message']."

                      -
                      - "; - include_once "footer.inc.php"; +

                      ".$_lang['functionnotimpl_message']."

                      +
                      + "; + include_once(includeFileProcessor("includes/footer.inc.php",$manager_theme)); } /********************************************************************/ // log action, unless it's a frame request if($action!=1 && $action!=7 && $action!=2) { - include_once "log.class.inc.php"; - $log = new logHandler; - $log->initAndWriteLog(); + include_once "log.class.inc.php"; + $log = new logHandler; + $log->initAndWriteLog(); } /********************************************************************/ // show debug diff --git a/manager/media/browser/mcpuk/browse.php b/manager/media/browser/mcpuk/browse.php index 2e77210155..81b98aec99 100644 --- a/manager/media/browser/mcpuk/browse.php +++ b/manager/media/browser/mcpuk/browse.php @@ -4,16 +4,26 @@ * * @desc Browser calling script * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com */ -require "core/autoload.php"; -$browser = new browser(); +require "core/autoload.php"; // Init MODX + +function returnNoPermissionsMessage($role) { + global $_lang; + echo sprintf($_lang['files_management_no_permission'], $role); + exit; +} + +if( $_GET['type'] == 'images' && !$modx->hasPermission('file_manager') && !$modx->hasPermission('assets_images')) returnNoPermissionsMessage('assets_images'); +if( $_GET['type'] == 'files' && !$modx->hasPermission('file_manager') && !$modx->hasPermission('assets_files')) returnNoPermissionsMessage('assets_files'); + +$browser = new browser($modx); $browser->action(); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/browser.php b/manager/media/browser/mcpuk/browser.php index 95aad02282..7ed522bbbf 100644 --- a/manager/media/browser/mcpuk/browser.php +++ b/manager/media/browser/mcpuk/browser.php @@ -10,13 +10,13 @@ } }; window.location.href = "browse.php?"; diff --git a/manager/media/browser/mcpuk/config.php b/manager/media/browser/mcpuk/config.php index 3e3042d482..31a1af773d 100644 --- a/manager/media/browser/mcpuk/config.php +++ b/manager/media/browser/mcpuk/config.php @@ -4,9 +4,9 @@ * * @desc Base configuration file * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -16,79 +16,25 @@ // you are using session configuration. // See http://kcfinder.sunhater.com/install for setting descriptions -if (file_exists(MODX_BASE_PATH . 'assets/plugins/transalias/transliterations/common.php')) { - $commonTransliterations = array_merge(include(MODX_BASE_PATH . 'assets/plugins/transalias/transliterations/common.php'), array(' ' => '-', ':' => '.')); -} else { - $commonTransliterations = array( - '&' => 'and', '%' => '', '\'' => '', - 'À' => 'A', 'Á' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'Å' => 'A', 'Æ' => 'E', 'Ā' => 'A', 'Ą' => 'A', 'Ă' => 'A', - 'Ç' => 'C', 'Ć' => 'C', 'Č' => 'C', 'Ĉ' => 'C', 'Ċ' => 'C', - 'Ď' => 'D', 'Đ' => 'D', - 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ē' => 'E', 'Ę' => 'E', 'Ě' => 'E', 'Ĕ' => 'E', 'Ė' => 'E', - 'Ĝ' => 'G', 'Ğ' => 'G', 'Ġ' => 'G', 'Ģ' => 'G', - 'Ĥ' => 'H', 'Ħ' => 'H', - 'Ì' => 'I', 'Í' => 'I', 'Î' => 'I', 'Ï' => 'I', 'Ī' => 'I', 'Ĩ' => 'I', 'Ĭ' => 'I', 'Į' => 'I', 'İ' => 'I', - 'IJ' => 'J', 'Ĵ' => 'J', - 'Ķ' => 'K', - 'Ľ' => 'L', 'Ĺ' => 'L', 'Ļ' => 'L', 'Ŀ' => 'L', 'Ł' => 'L', - 'Ñ' => 'N', 'Ń' => 'N', 'Ň' => 'N', 'Ņ' => 'N', 'Ŋ' => 'N', - 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ø' => 'O', 'Ō' => 'O', 'Ő' => 'O', 'Ŏ' => 'O', - 'Œ' => 'E', - 'Ŕ' => 'R', 'Ř' => 'R', 'Ŗ' => 'R', - 'Ś' => 'S', 'Ş' => 'S', 'Ŝ' => 'S', 'Ș' => 'S', - 'Ť' => 'T', 'Ţ' => 'T', 'Ŧ' => 'T', 'Ț' => 'T', - 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ū' => 'U', 'Ů' => 'U', 'Ű' => 'U', 'Ŭ' => 'U', 'Ũ' => 'U', 'Ų' => 'U', - 'Ŵ' => 'W', - 'Ŷ' => 'Y', 'Ÿ' => 'Y', - 'Ź' => 'Z', 'Ż' => 'Z', - 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'å' => 'a', 'æ' => 'e', 'ā' => 'a', 'ą' => 'a', 'ă' => 'a', - 'ç' => 'c', 'ć' => 'c', 'č' => 'c', 'ĉ' => 'c', 'ċ' => 'c', - 'ď' => 'd', 'đ' => 'd', - 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ē' => 'e', 'ę' => 'e', 'ě' => 'e', 'ĕ' => 'e', 'ė' => 'e', - 'ƒ' => 'f', - 'ĝ' => 'g', 'ğ' => 'g', 'ġ' => 'g', 'ģ' => 'g', - 'ĥ' => 'h', 'ħ' => 'h', - 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ī' => 'i', 'ĩ' => 'i', 'ĭ' => 'i', 'į' => 'i', 'ı' => 'i', - 'ij' => 'j', 'ĵ' => 'j', - 'ķ' => 'k', 'ĸ' => 'k', - 'ł' => 'l', 'ľ' => 'l', 'ĺ' => 'l', 'ļ' => 'l', 'ŀ' => 'l', - 'ñ' => 'n', 'ń' => 'n', 'ň' => 'n', 'ņ' => 'n', 'ʼn' => 'n', 'ŋ' => 'n', - 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ø' => 'o', 'ō' => 'o', 'ŏ' => 'o', - 'œ' => 'e', - 'ŕ' => 'r', 'ř' => 'r', 'ŗ' => 'r', - 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ū' => 'u', 'ů' => 'u', 'ű' => 'u', 'ŭ' => 'u', 'ũ' => 'u', 'ų' => 'u', - 'ŵ' => 'w', - 'ÿ' => 'y', 'ŷ' => 'y', - 'ż' => 'z', 'ź' => 'z', - 'ß' => 's', 'ſ' => 's', 'ś' => 's', - 'Α' => 'A', 'Ά' => 'A', 'Β' => 'B', 'Γ' => 'G', 'Δ' => 'D', 'Ε' => 'E', 'Έ' => 'E', 'Ζ' => 'Z', 'Η' => 'I', 'Ή' => 'I', - 'Θ' => 'TH', 'Ι' => 'I', 'Ί' => 'I', 'Ϊ' => 'I', 'Κ' => 'K', 'Λ' => 'L', 'Μ' => 'M', 'Ν' => 'N', 'Ξ' => 'KS', 'Ο' => 'O', - 'Ό' => 'O', 'Π' => 'P', 'Ρ' => 'R', 'Σ' => 'S', 'Τ' => 'T', 'Υ' => 'Y', 'Ύ' => 'Y', 'Ϋ' => 'Y', 'Φ' => 'F', 'Χ' => 'X', - 'Ψ' => 'PS', 'Ω' => 'O', 'Ώ' => 'O', 'α' => 'a', 'ά' => 'a', 'β' => 'b', 'γ' => 'g', 'δ' => 'd', 'ε' => 'e', 'έ' => 'e', - 'ζ' => 'z', 'η' => 'i', 'ή' => 'i', 'θ' => 'th', 'ι' => 'i', 'ί' => 'i', 'ϊ' => 'i', 'ΐ' => 'i', 'κ' => 'k', 'λ' => 'l', - 'μ' => 'm', 'ν' => 'n', 'ξ' => 'ks', 'ο' => 'o', 'ό' => 'o', 'π' => 'p', 'ρ' => 'r', 'σ' => 's', 'τ' => 't', 'υ' => 'y', - 'ύ' => 'y', 'ϋ' => 'y', 'ΰ' => 'y', 'φ' => 'f', 'χ' => 'x', 'ψ' => 'ps', 'ω' => 'o', 'ώ' => 'o', - ' ' => '-', ':' => '.' - ); -} - -global $settings,$site_url; +global $modx; $_CONFIG = array( 'disabled' => false, - 'denyZipDownload' => $settings['denyZipDownload'], - 'denyExtensionRename' => $settings['denyExtensionRename'], - 'showHiddenFiles' => $settings['showHiddenFiles'], + 'denyZipDownload' => $modx->config['denyZipDownload'], + 'denyExtensionRename' => $modx->config['denyExtensionRename'], + 'showHiddenFiles' => $modx->config['showHiddenFiles'], 'theme' => "oxygen", - 'uploadURL' => rtrim($settings['rb_base_url'],'/'), - 'uploadDir' => rtrim($settings['rb_base_dir'],'/'), - 'siteURL' => $site_url, - 'assetsURL' => rtrim($settings['rb_base_url'],'/'), - 'dirPerms' => intval($settings['new_folder_permissions'],8), - 'filePerms' => intval($settings['new_file_permissions'],8), + 'uploadURL' => rtrim($modx->config['rb_base_url'],'/'), + 'uploadDir' => rtrim($modx->config['rb_base_dir'],'/'), + 'siteURL' => $modx->config['site_url'], + 'assetsURL' => rtrim($modx->config['rb_base_url'],'/'), + 'dirPerms' => intval($modx->config['new_folder_permissions'],8), + 'filePerms' => intval($modx->config['new_file_permissions'],8), 'maxfilesize' => $settings['upload_maxsize'], + 'denyUpdateCheck' => true, + 'access' => array( @@ -112,31 +58,30 @@ 'types' => array( // CKEditor & FCKEditor types - 'files' => str_replace(',',' ',$settings['upload_files']), - 'flash' => str_replace(',',' ',$settings['upload_flash']), - 'images' => str_replace(',',' ',$settings['upload_images']), + 'files' => str_replace(',',' ',$modx->config['upload_files']), + 'flash' => str_replace(',',' ',$modx->config['upload_flash']), + 'images' => str_replace(',',' ',$modx->config['upload_images']), // TinyMCE types - 'file' => str_replace(',',' ',$settings['upload_files']), - 'media' => str_replace(',',' ',$settings['upload_media']), - 'image' => str_replace(',',' ',$settings['upload_images']), + 'file' => str_replace(',',' ',$modx->config['upload_files']), + 'media' => str_replace(',',' ',$modx->config['upload_media']), + 'image' => str_replace(',',' ',$modx->config['upload_images']), ), - - 'filenameChangeChars' => $commonTransliterations, - - 'dirnameChangeChars' => $commonTransliterations, - + 'dirnameChangeChars' => array( + ' ' => "_", + ':' => "." + ), 'mime_magic' => "", - 'maxImageWidth' => $settings['maxImageWidth'], - 'maxImageHeight' => $settings['maxImageHeight'], + 'maxImageWidth' => $modx->config['maxImageWidth'], + 'maxImageHeight' => $modx->config['maxImageHeight'], - 'thumbWidth' => $settings['thumbWidth'], - 'thumbHeight' => $settings['thumbHeight'], + 'thumbWidth' => $modx->config['thumbWidth'], + 'thumbHeight' => $modx->config['thumbHeight'], - 'thumbsDir' => $settings['thumbsDir'], + 'thumbsDir' => $modx->config['thumbsDir'], - 'jpegQuality' => $settings['jpegQuality'], + 'jpegQuality' => $modx->config['jpegQuality'], 'cookieDomain' => "", 'cookiePath' => "", @@ -154,4 +99,4 @@ //'_sessionPath' => "/my/path", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/core/autoload.php b/manager/media/browser/mcpuk/core/autoload.php index d6f4d25651..6dd59c7349 100644 --- a/manager/media/browser/mcpuk/core/autoload.php +++ b/manager/media/browser/mcpuk/core/autoload.php @@ -4,9 +4,9 @@ * * @desc This file is included first, before each other * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -30,31 +30,20 @@ die("INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); } define('IN_MANAGER_MODE', "true"); -// Get system settings and override them with managers' -include_once('../../../includes/settings.inc.php'); -include_once('../../../includes/user_settings.inc.php'); +$modx->getSettings(); +$manager_language = $modx->config['manager_language']; // Pass language code from MODX to KCFinder -if(!isset($manager_language) || !file_exists("../../../includes/lang/".$manager_language.".inc.php")) { +if(!file_exists("../../../includes/lang/".$manager_language.".inc.php")) { $manager_language = "english"; // if not set, get the english language file. } -$_lang = array(); -include_once "../../../includes/lang/english.inc.php"; -$length_eng_lang = count($_lang); - -if($manager_language!="english" && file_exists("../../../includes/lang/".$manager_language.".inc.php")) { - include_once "../../../includes/lang/".$manager_language.".inc.php"; -} +include_once "../../../includes/lang/".$manager_language.".inc.php"; $_GET['langCode'] = $modx_lang_attribute; // PHP VERSION CHECK if (substr(PHP_VERSION, 0, strpos(PHP_VERSION, '.')) < 5) die("You are using PHP " . PHP_VERSION . " when KCFinder require at least version 5! Some systems has an option to change the active PHP version. Please refer to your hosting provider or upgrade your PHP distribution."); -// GD EXTENSION CHECK -if (!function_exists("imagecopyresampled")) - die("The GD PHP extension is not available! It's required to run KCFinder."); - // SAFE MODE CHECK if (ini_get("safe_mode")) @@ -62,18 +51,34 @@ // MAGIC AUTOLOAD CLASSES FUNCTION -function __autoload($class) { - if ($class == "uploader") - require "core/uploader.php"; - elseif ($class == "browser") - require "core/browser.php"; - elseif (file_exists("core/types/$class.php")) - require "core/types/$class.php"; - elseif (file_exists("lib/class_$class.php")) - require "lib/class_$class.php"; - elseif (file_exists("lib/helper_$class.php")) - require "lib/helper_$class.php"; +function autoloadda9d06472ccb71b84928677ce2a6ca89($class) { + static $classes = null; + if ($classes === null) { + $classes = array( + 'browser' => '/browser.php', + 'dir' => '/../lib/helper_dir.php', + 'file' => '/../lib/helper_file.php', + 'gd' => '/../lib/class_gd.php', + 'httpCache' => '/../lib/helper_httpCache.php', + 'input' => '/../lib/class_input.php', + 'path' => '/../lib/helper_path.php', + 'text' => '/../lib/helper_text.php', + 'type_img' => '/types/type_img.php', + 'type_mime' => '/types/type_mime.php', + 'uploader' => '/uploader.php', + 'zipFolder' => '/../lib/class_zipFolder.php', + 'image' => '/../lib/class_image.php', + 'image_imagick' => '/../lib/class_image_imagick.php', + 'image_gmagick' => '/../lib/class_image_gmagick.php', + 'image_gd' => '/../lib/class_image_gd.php', + 'fastImage' => '/../lib/class_fastImage.php' + ); + } + if (isset($classes[$class])) { + require dirname(__FILE__) . $classes[$class]; + } } +spl_autoload_register('autoloadda9d06472ccb71b84928677ce2a6ca89', true); // json_encode() IMPLEMENTATION IF JSON EXTENSION IS MISSING diff --git a/manager/media/browser/mcpuk/core/browser.php b/manager/media/browser/mcpuk/core/browser.php index ab8010b145..ac49343d31 100644 --- a/manager/media/browser/mcpuk/core/browser.php +++ b/manager/media/browser/mcpuk/core/browser.php @@ -4,9 +4,9 @@ * * @desc Browser actions class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -17,8 +17,8 @@ class browser extends uploader { protected $thumbsDir; protected $thumbsTypeDir; - public function __construct() { - parent::__construct(); + public function __construct($modx) { + parent::__construct($modx); if (isset($this->post['dir'])) { $dir = $this->checkInputDir($this->post['dir'], true, false); @@ -152,19 +152,19 @@ protected function act_thumb() { $file = "{$this->config['uploadDir']}/{$this->type}/{$this->get['dir']}/" . basename($file); if (!is_file($file) || !is_readable($file)) $this->sendDefaultThumb($file); - $image = new gd($file); - if ($image->init_error) + $image = image::factory($this->imageDriver, $file); + if ($image->initError) $this->sendDefaultThumb($file); - $browsable = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG); - if (in_array($image->type, $browsable) && - ($image->get_width() <= $this->config['thumbWidth']) && - ($image->get_height() <= $this->config['thumbHeight']) + list($tmp, $tmp, $type) = getimagesize($file); + if (in_array($type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG)) && + ($image->width <= $this->config['thumbWidth']) && + ($image->height <= $this->config['thumbHeight']) ) { - $type = - ($image->type == IMAGETYPE_GIF) ? "gif" : ( - ($image->type == IMAGETYPE_PNG) ? "png" : "jpeg"); - $type = "image/$type"; - httpCache::file($file, $type); + $mime = + ($type == IMAGETYPE_GIF) ? "gif" : ( + ($type == IMAGETYPE_PNG) ? "png" : "jpeg"); + $mime = "image/$mime"; + httpCache::file($file, $mime); } else $this->sendDefaultThumb($file); } @@ -592,6 +592,80 @@ protected function act_downloadClipboard() { die; } + protected function act_check4Update() { + if ($this->config['denyUpdateCheck']) + return json_encode(array('version' => false)); + + // Caching HTTP request for 6 hours + if (isset($this->session['checkVersion']) && + isset($this->session['checkVersionTime']) && + ((time() - $this->session['checkVersionTime']) < 21600) + ) + return json_encode(array('version' => $this->session['checkVersion'])); + + $protocol = "http"; + $host = "kcfinder.sunhater.com"; + $port = 80; + $path = "/checkVersion.php"; + + $url = "$protocol://$host:$port$path"; + $pattern = '/^\d+\.\d+$/'; + $responsePattern = '/^[A-Z]+\/\d+\.\d+\s+\d+\s+OK\s*([a-zA-Z0-9\-]+\:\s*[^\n]*\n)*\s*(.*)\s*$/'; + + // file_get_contents() + if (ini_get("allow_url_fopen") && + (false !== ($ver = file_get_contents($url))) && + preg_match($pattern, $ver) + + // HTTP extension + ) {} elseif ( + function_exists("http_get") && + (false !== ($ver = @http_get($url))) && + ( + ( + preg_match($responsePattern, $ver, $match) && + false !== ($ver = $match[2]) + ) || true + ) && + preg_match($pattern, $ver) + + // Curl extension + ) {} elseif ( + function_exists("curl_init") && + (false !== ( $curl = @curl_init($url) )) && + ( @ob_start() || (@curl_close($curl) && false)) && + ( @curl_exec($curl) || (@curl_close($curl) && false)) && + ((false !== ( $ver = @ob_get_clean() )) || (@curl_close($curl) && false)) && + ( @curl_close($curl) || true ) && + preg_match($pattern, $ver) + + // Socket extension + ) {} elseif (function_exists('socket_create')) { + $cmd = + "GET $path " . strtoupper($protocol) . "/1.1\r\n" . + "Host: $host\r\n" . + "Connection: Close\r\n\r\n"; + + if ((false !== ( $socket = @socket_create(AF_INET, SOCK_STREAM, SOL_TCP) )) && + (false !== @socket_connect($socket, $host, $port) ) && + (false !== @socket_write($socket, $cmd, strlen($cmd)) ) && + (false !== ( $ver = @socket_read($socket, 2048) )) && + preg_match($responsePattern, $ver, $match) + ) + $ver = $match[2]; + + if (isset($socket) && is_resource($socket)) + @socket_close($socket); + } + + if (isset($ver) && preg_match($pattern, $ver)) { + $this->session['checkVersion'] = $ver; + $this->session['checkVersionTime'] = time(); + return json_encode(array('version' => $ver)); + } else + return json_encode(array('version' => false)); + } + protected function moveUploadFile($file, $dir) { $message = $this->checkUploadedFile($file); @@ -612,8 +686,14 @@ protected function moveUploadFile($file, $dir) { return "{$file['name']}: " . $this->label("Cannot move uploaded file to target folder."); } elseif (function_exists('chmod')) chmod($target, $this->config['filePerms']); - + + $this->modx->invokeEvent('OnFileBrowserUpload',array( + 'filepath'=>realpath($dir), + 'filename'=>str_replace("/","",str_replace($dir,"",realpath($target))) + )); + $this->makeThumb($target); + return "/" . basename($target); } @@ -629,54 +709,54 @@ protected function sendDefaultThumb($file=null) { die; } - protected function getFiles($dir) { - $thumbDir = "{$this->config['uploadDir']}/{$this->config['thumbsDir']}/$dir"; - $dir = "{$this->config['uploadDir']}/$dir"; - $return = array(); - $files = dir::content($dir, array('types' => "file")); - if ($files === false) - return $return; - - foreach ($files as $file) { - $ext = file::getExtension($file); - $smallThumb = false; - if (in_array(strtolower($ext), array('png', 'jpg', 'gif', 'jpeg' )) ) { + protected function getFiles($dir) { + $thumbDir = "{$this->config['uploadDir']}/{$this->config['thumbsDir']}/$dir"; + $dir = "{$this->config['uploadDir']}/$dir"; + $return = array(); + $files = dir::content($dir, array('types' => "file")); + if ($files === false) + return $return; + + foreach ($files as $file) { + $ext = file::getExtension($file); + $smallThumb = false; + if (in_array(strtolower($ext), array('png', 'jpg', 'gif', 'jpeg' )) ) { $size = @getimagesize($file); if (is_array($size) && count($size)) { $thumb_file = "$thumbDir/" . basename($file); - if (!is_file($thumb_file)) - $this->makeThumb($file, false); + if (!is_file($thumb_file) || filemtime($file) > filemtime($thumb_file)) + $this->makeThumb($file); $smallThumb = ($size[0] <= $this->config['thumbWidth']) && ($size[1] <= $this->config['thumbHeight']) && in_array($size[2], array(IMAGETYPE_GIF, IMAGETYPE_PNG, IMAGETYPE_JPEG)); } - } - $stat = stat($file); - if ($stat === false) continue; - $name = basename($file); - $types = $this->config['types']; - $types = explode(' ',$types['images'].' '.$types['image']); - if (substr($name,0,1) == '.' && !$this->config['showHiddenFiles']) continue; - if ($this->type == 'images' && !in_array(strtolower($ext),$types)) continue; - $bigIcon = file_exists("themes/{$this->config['theme']}/img/files/big/$ext.png"); - $smallIcon = file_exists("themes/{$this->config['theme']}/img/files/small/$ext.png"); - $thumb = file_exists("$thumbDir/$name"); - $return[] = array( - 'name' => stripcslashes($name), - 'size' => $stat['size'], - 'mtime' => $stat['mtime'], - 'date' => @strftime($this->dateTimeSmall, $stat['mtime']), - 'readable' => is_readable($file), - 'writable' => file::isWritable($file), - 'bigIcon' => $bigIcon, - 'smallIcon' => $smallIcon, - 'thumb' => $thumb, - 'smallThumb' => $smallThumb - ); - } - return $return; - } + } + $stat = stat($file); + if ($stat === false) continue; + $name = basename($file); + $types = $this->config['types']; + $types = explode(' ',$types['images'].' '.$types['image']); + if (substr($name,0,1) == '.' && !$this->config['showHiddenFiles']) continue; + if ($this->type == 'images' && !in_array(strtolower($ext),$types)) continue; + $bigIcon = file_exists("themes/{$this->config['theme']}/img/files/big/$ext.png"); + $smallIcon = file_exists("themes/{$this->config['theme']}/img/files/small/$ext.png"); + $thumb = file_exists("$thumbDir/$name"); + $return[] = array( + 'name' => stripcslashes($name), + 'size' => $stat['size'], + 'mtime' => $stat['mtime'], + 'date' => @strftime($this->dateTimeSmall, $stat['mtime']), + 'readable' => is_readable($file), + 'writable' => file::isWritable($file), + 'bigIcon' => $bigIcon, + 'smallIcon' => $smallIcon, + 'thumb' => $thumb, + 'smallThumb' => $smallThumb + ); + } + return $return; + } protected function getTree($dir, $index=0) { $path = explode("/", $dir); @@ -693,7 +773,6 @@ protected function getTree($dir, $index=0) { if (is_array($dirs) && count($dirs) && ($index <= count($path) - 1)) { - /* Теперь собирается только первый уровень. Остальные подгружаются по мере их просмотра. Спасибо Rekill foreach ($dirs as $i => $cdir) { if ($cdir['hasDirs'] && ( @@ -708,7 +787,6 @@ protected function getTree($dir, $index=0) { } } } - */ } else return false; diff --git a/manager/media/browser/mcpuk/core/types/type_img.php b/manager/media/browser/mcpuk/core/types/type_img.php index c019e35d9c..c788cfdb3d 100644 --- a/manager/media/browser/mcpuk/core/types/type_img.php +++ b/manager/media/browser/mcpuk/core/types/type_img.php @@ -2,11 +2,11 @@ /** This file is part of KCFinder project * - * @desc GD image detection class + * @desc Image detection class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -15,9 +15,15 @@ class type_img { public function checkFile($file, array $config) { - $gd = new gd($file); - if ($gd->init_error) + + $driver = isset($config['imageDriversPriority']) + ? image::getDriver(explode(" ", $config['imageDriversPriority'])) : "gd"; + + $img = image::factory($driver, $file); + + if ($img->initError) return "Unknown image format/encoding."; + return true; } } diff --git a/manager/media/browser/mcpuk/core/types/type_mime.php b/manager/media/browser/mcpuk/core/types/type_mime.php index 9c7895a78f..bf22d4f1a0 100644 --- a/manager/media/browser/mcpuk/core/types/type_mime.php +++ b/manager/media/browser/mcpuk/core/types/type_mime.php @@ -4,9 +4,9 @@ * * @desc MIME type detection class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/core/uploader.php b/manager/media/browser/mcpuk/core/uploader.php index 311fb05581..0093b91a6c 100644 --- a/manager/media/browser/mcpuk/core/uploader.php +++ b/manager/media/browser/mcpuk/core/uploader.php @@ -4,9 +4,9 @@ * * @desc Uploader class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -15,12 +15,16 @@ class uploader { /** Release version */ - const VERSION = "2.51"; + const VERSION = "2.54"; /** Config session-overrided settings * @var array */ protected $config = array(); +/** Default image driver + * @var string */ + protected $imageDriver = "gd"; + /** Opener applocation properties * $opener['name'] Got from $_GET['opener']; * $opener['CKEditor']['funcNum'] CKEditor function number (got from $_GET) @@ -48,7 +52,7 @@ class uploader { /** Settings which can override default settings if exists as keys in $config['types'][$type] array * @var array */ - protected $typeSettings = array('disabled', 'theme', 'dirPerms', 'filePerms', 'denyZipDownload', 'maxImageWidth', 'maxImageHeight', 'thumbWidth', 'thumbHeight', 'jpegQuality', 'access', 'filenameChangeChars', 'dirnameChangeChars', 'denyExtensionRename', 'deniedExts'); + protected $typeSettings = array('disabled', 'theme', 'dirPerms', 'filePerms', 'denyZipDownload', 'maxImageWidth', 'maxImageHeight', 'thumbWidth', 'thumbHeight', 'jpegQuality', 'access', 'filenameChangeChars', 'dirnameChangeChars', 'denyExtensionRename', 'deniedExts', 'watermark'); /** Got from language file * @var string */ @@ -96,6 +100,7 @@ class uploader { * @var string */ protected $cms = ""; + protected $modx = null; /** Magic method which allows read-only access to protected or private class properties * @param string $property * @return mixed */ @@ -103,13 +108,23 @@ public function __get($property) { return property_exists($this, $property) ? $this->$property : null; } - public function __construct() { + public function __construct($modx) { // DISABLE MAGIC QUOTES if (function_exists('set_magic_quotes_runtime')) @set_magic_quotes_runtime(false); + //MODX + try { + if ($modx instanceof DocumentParser) { + $this->modx = $modx; + } else throw new Exception('MODX should be instance of DocumentParser'); + } catch (Exception $e) { + die($e->getMessage()); + } + // INPUT INIT + $input = new input(); $this->get = &$input->get; $this->post = &$input->post; @@ -137,7 +152,7 @@ public function __construct() { ini_set('session.cookie_domain', $_CONFIG['_sessionDomain']); switch ($this->cms) { case "drupal": break; - default: session_start(); break; + default: if (!session_id()) session_start(); break; } // RELOAD DEFAULT CONFIGURATION @@ -157,6 +172,23 @@ public function __construct() { } else $this->session = &$_SESSION; + // IMAGE DRIVER INIT + if (isset($this->config['imageDriversPriority'])) { + $this->config['imageDriversPriority'] = + text::clearWhitespaces($this->config['imageDriversPriority']); + $driver = image::getDriver(explode(' ', $this->config['imageDriversPriority'])); + if ($driver !== false) + $this->imageDriver = $driver; + } + if ((!isset($driver) || ($driver === false)) && + (image::getDriver(array($this->imageDriver)) === false) + ) + die("Cannot find any of the supported PHP image extensions!"); + + // WATERMARK INIT + if (isset($this->config['watermark']) && is_string($this->config['watermark'])) + $this->config['watermark'] = array('file' => $this->config['watermark']); + // GET TYPE DIRECTORY $this->types = &$this->config['types']; $firstType = array_keys($this->types); @@ -183,17 +215,45 @@ public function __construct() { preg_match('/^[^\.]+$/', $_SERVER['HTTP_HOST']) ) $this->config['cookieDomain'] = ""; - elseif (!strlen($this->config['cookieDomain'])){ - $tmp = explode(":", $_SERVER['HTTP_HOST'], 2); - $this->config['cookieDomain'] = $tmp[0]; - } + elseif (!strlen($this->config['cookieDomain'])) + $this->config['cookieDomain'] = $_SERVER['HTTP_HOST']; if (!strlen($this->config['cookiePath'])) $this->config['cookiePath'] = "/"; // UPLOAD FOLDER INIT + + // FULL URL + if (preg_match('/^([a-z]+)\:\/\/([^\/^\:]+)(\:(\d+))?\/(.+)\/?$/', + $this->config['uploadURL'], $patt) + ) { + list($unused, $protocol, $domain, $unused, $port, $path) = $patt; + $path = path::normalize($path); + $this->config['uploadURL'] = "$protocol://$domain" . (strlen($port) ? ":$port" : "") . "/$path"; + $this->config['uploadDir'] = strlen($this->config['uploadDir']) + ? path::normalize($this->config['uploadDir']) + : path::url2fullPath("/$path"); $this->typeDir = "{$this->config['uploadDir']}/{$this->type}"; $this->typeURL = "{$this->config['siteURL']}/{$this->config['uploadURL']}/{$this->type}"; + // SITE ROOT + } elseif ($this->config['uploadURL'] == "/") { + $this->config['uploadDir'] = strlen($this->config['uploadDir']) + ? path::normalize($this->config['uploadDir']) + : path::normalize($_SERVER['DOCUMENT_ROOT']); + $this->typeDir = "{$this->config['uploadDir']}/{$this->type}"; + $this->typeURL = "/{$this->type}"; + + // ABSOLUTE & RELATIVE + } else { + $this->config['uploadURL'] = (substr($this->config['uploadURL'], 0, 1) === "/") + ? path::normalize($this->config['uploadURL']) + : path::rel2abs_url($this->config['uploadURL']); + $this->config['uploadDir'] = strlen($this->config['uploadDir']) + ? path::normalize($this->config['uploadDir']) + : path::url2fullPath($this->config['uploadURL']); + $this->typeDir = "{$this->config['uploadDir']}/{$this->type}"; + $this->typeURL = "{$this->config['uploadURL']}/{$this->type}"; + } if (!is_dir($this->config['uploadDir'])) @mkdir($this->config['uploadDir'], $this->config['dirPerms']); @@ -308,6 +368,7 @@ public function upload() { $this->callBack($url, $message); } + protected function getTransaliasSettings() { global $modx; @@ -317,7 +378,7 @@ protected function getTransaliasSettings() { // Transalias plugin active? $res = $modx->db->select('properties', $modx->getFullTableName('site_plugins'), 'name="TransAlias" AND disabled=0'); if ($properties = $modx->db->getValue($res)) { - $properties = $modx->parseProperties($properties); + $properties = $modx->parseProperties($properties, 'TransAlias', 'plugin'); } else { $properties = NULL; } @@ -327,36 +388,18 @@ protected function getTransaliasSettings() { return $properties; } + protected function normalizeFilename($filename) { - if ($transaliasSettings = $this->getTransaliasSettings()) { - if (!class_exists('TransAlias')) { - include MODX_BASE_PATH . 'assets/plugins/transalias/transalias.class.php'; - } - $trans = new TransAlias(); - $trans->loadTable($transaliasSettings['table_name']); - $filename = $trans->stripAlias($filename, $transaliasSettings['char_restrict'], $transaliasSettings['word_separator']); - } else { - if (isset($this->config['filenameChangeChars']) && is_array($this->config['filenameChangeChars'])) { - $filename = strtr($filename, $this->config['filenameChangeChars']); - } - } - return $filename; + if ($this->getTransaliasSettings()) { + $format = strrchr($filename, "."); + $filename = str_replace($format, "", $filename); + $filename = $this->modx->stripAlias($filename).$format; + } + return $filename; } protected function normalizeDirname($dirname) { - if ($transaliasSettings = $this->getTransaliasSettings()) { - if (!class_exists('TransAlias')) { - include MODX_BASE_PATH . 'assets/plugins/transalias/transalias.class.php'; - } - $trans = new TransAlias(); - $trans->loadTable($transaliasSettings['table_name']); - $dirname = $trans->stripAlias($dirname, $transaliasSettings['char_restrict'], $transaliasSettings['word_separator']); - } else { - if (isset($this->config['dirnameChangeChars']) && is_array($this->config['dirnameChangeChars'])) { - $dirname = strtr($dirname, $this->config['dirnameChangeChars']); - } - } - return $dirname; + return $this->modx->stripAlias($dirname); } protected function checkUploadedFile(array $aFile=null) { @@ -428,10 +471,11 @@ protected function checkUploadedFile(array $aFile=null) { } // IMAGE RESIZE - $gd = new gd($file['tmp_name']); - if (!$gd->init_error && !$this->imageResize($gd, $file['tmp_name'])) + $img = image::factory($this->imageDriver, $file['tmp_name']); + if (!$img->initError && !$this->imageResize($img, $file['tmp_name'])) return $this->label("The image is too big and/or cannot be resized."); + // CHECK FOR MODX MAX FILE SIZE $actualfilesize=filesize($file['tmp_name']); if (isset($this->config['maxfilesize']) && $actualfilesize > $this->config['maxfilesize']) @@ -502,57 +546,105 @@ protected function removeTypeFromPath($path) { } protected function imageResize($image, $file=null) { - if (!($image instanceof gd)) { - $gd = new gd($image); - if ($gd->init_error) return false; + + if (!($image instanceof image)) { + $img = image::factory($this->imageDriver, $image); + if ($img->initError) return false; $file = $image; } elseif ($file === null) return false; else - $gd = $image; + $img = $image; - if ((!$this->config['maxImageWidth'] && !$this->config['maxImageHeight']) || + $orientation = 1; + if (function_exists("exif_read_data")) { + $orientation = @exif_read_data($file); + $orientation = isset($orientation['Orientation']) ? $orientation['Orientation'] : 1; + } + + // IMAGE WILL NOT BE RESIZED WHEN NO WATERMARK AND SIZE IS ACCEPTABLE + if (( + !isset($this->config['watermark']['file']) || + (!strlen(trim($this->config['watermark']['file']))) + ) && ( ( - ($gd->get_width() <= $this->config['maxImageWidth']) && - ($gd->get_height() <= $this->config['maxImageHeight']) + !$this->config['maxImageWidth'] && + !$this->config['maxImageHeight'] + ) || ( + ($img->width <= $this->config['maxImageWidth']) && + ($img->height <= $this->config['maxImageHeight']) ) + ) && + ($orientation == 1) ) return true; + + // PROPORTIONAL RESIZE if ((!$this->config['maxImageWidth'] || !$this->config['maxImageHeight'])) { - if ($this->config['maxImageWidth']) { - if ($this->config['maxImageWidth'] >= $gd->get_width()) - return true; + + if ($this->config['maxImageWidth'] && + ($this->config['maxImageWidth'] < $img->width) + ) { $width = $this->config['maxImageWidth']; - $height = $gd->get_prop_height($width); - } else { - if ($this->config['maxImageHeight'] >= $gd->get_height()) - return true; + $height = $img->getPropHeight($width); + + } elseif ( + $this->config['maxImageHeight'] && + ($this->config['maxImageHeight'] < $img->height) + ) { $height = $this->config['maxImageHeight']; - $width = $gd->get_prop_width($height); + $width = $img->getPropWidth($height); } - if (!$gd->resize($width, $height)) + + if (isset($width) && isset($height) && !$img->resize($width, $height)) return false; - } elseif (!$gd->resize_fit( - $this->config['maxImageWidth'], $this->config['maxImageHeight'] - )) + // RESIZE TO FIT + } elseif ( + $this->config['maxImageWidth'] && $this->config['maxImageHeight'] && + !$img->resizeFit($this->config['maxImageWidth'], $this->config['maxImageHeight']) + ) return false; - switch ($gd->type) { - case IMAGETYPE_GIF: return $gd->imagegif($file); - case IMAGETYPE_PNG: return $gd->imagepng($file); - case IMAGETYPE_JPEG: return $gd->imagejpeg($file, $this->config['jpegQuality']); - default: return $gd->imagejpeg($file, $this->config['jpegQuality']); + // AUTO FLIP AND ROTATE FROM EXIF + if ((($orientation == 2) && !$img->flipHorizontal()) || + (($orientation == 3) && !$img->rotate(180)) || + (($orientation == 4) && !$img->flipVertical()) || + (($orientation == 5) && (!$img->flipVertical() || !$img->rotate(90))) || + (($orientation == 6) && !$img->rotate(90)) || + (($orientation == 7) && (!$img->flipHorizontal() || !$img->rotate(90))) || + (($orientation == 8) && !$img->rotate(270)) + ) + return false; + if (($orientation >= 2) && ($orientation <= 8) && ($this->imageDriver == "imagick")) + try { + $img->image->setImageProperty('exif:Orientation', "1"); + } catch (Exception $e) {} + // WATERMARK + if (isset($this->config['watermark']['file']) && + is_file($this->config['watermark']['file']) + ) { + $left = isset($this->config['watermark']['left']) + ? $this->config['watermark']['left'] : false; + $top = isset($this->config['watermark']['top']) + ? $this->config['watermark']['top'] : false; + $img->watermark($this->config['watermark']['file'], $left, $top); } + + // WRITE TO FILE + return $img->output("jpeg", array( + 'file' => $file, + 'quality' => $this->config['jpegQuality'] + )); } protected function makeThumb($file, $overwrite=true) { - $gd = new gd($file); + $img = image::factory($this->imageDriver, $file); - // Drop files which are not GD handled images - if ($gd->init_error) + // Drop files which are not images + if ($img->initError) return true; $thumb = substr($file, strlen($this->config['uploadDir'])); @@ -566,27 +658,24 @@ protected function makeThumb($file, $overwrite=true) { return true; // Images with smaller resolutions than thumbnails - if (($gd->get_width() <= $this->config['thumbWidth']) && - ($gd->get_height() <= $this->config['thumbHeight']) + /*if (($img->width <= $this->config['thumbWidth']) && + ($img->height <= $this->config['thumbHeight']) ) { - $browsable = array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG); + list($tmp, $tmp, $type) = @getimagesize($file); // Drop only browsable types - if (in_array($gd->type, $browsable)) + if (in_array($type, array(IMAGETYPE_GIF, IMAGETYPE_JPEG, IMAGETYPE_PNG))) return true; // Resize image - } elseif (!$gd->resize_fit($this->config['thumbWidth'], $this->config['thumbHeight'])) + } else */ + if (!$img->resizeFit($this->config['thumbWidth'], $this->config['thumbHeight'])) return false; // Save thumbnail - switch ($gd->type) { - case IMAGETYPE_GIF: return $gd->imagepng($thumb); - case IMAGETYPE_PNG: return $gd->imagepng($thumb); - case IMAGETYPE_JPEG: return $gd->imagejpeg($thumb, $this->config['jpegQuality']); - default: return $gd->imagejpeg($thumb, $this->config['jpegQuality']); - - } - //return $gd->imagejpeg($thumb, $this->config['jpegQuality']); + return $img->output("jpeg", array( + 'file' => $thumb, + 'quality' => $this->config['jpegQuality'] + )); } protected function localize($langCode) { diff --git a/manager/media/browser/mcpuk/css.php b/manager/media/browser/mcpuk/css.php index d0dc0d93f3..225f918e48 100644 --- a/manager/media/browser/mcpuk/css.php +++ b/manager/media/browser/mcpuk/css.php @@ -4,9 +4,9 @@ * * @desc Base CSS definitions * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -15,7 +15,7 @@ require "core/autoload.php"; $mtime = @filemtime(__FILE__); if ($mtime) httpCache::checkMTime($mtime); -$browser = new browser(); +$browser = new browser($modx); $config = $browser->config; ob_start(); diff --git a/manager/media/browser/mcpuk/doc/Changelog b/manager/media/browser/mcpuk/doc/Changelog index 4191861285..2944c78a95 100644 --- a/manager/media/browser/mcpuk/doc/Changelog +++ b/manager/media/browser/mcpuk/doc/Changelog @@ -1,3 +1,15 @@ +VERSION 2.53 - 2014-02-22 +------------------------- +* Session start fix +* TinyMCE 4 support + + +VERSION 2.52 - 2014-01-20 +------------------------- +* Various image drivers support (gd, imagemagick, graphicsmagic) +* Auto-rotate images based on EXIF data +* PNG watermark support + VERSION 2.51 - 2010-08-25 ------------------------- diff --git a/manager/media/browser/mcpuk/doc/README b/manager/media/browser/mcpuk/doc/README index 36b7829c1b..0fed9b4fea 100644 --- a/manager/media/browser/mcpuk/doc/README +++ b/manager/media/browser/mcpuk/doc/README @@ -1,78 +1,16 @@ -[===========================< KCFinder 2.51 >================================] +[===========================< KCFinder 2.54 >================================] [ ] -[ Copyright 2010, 2011 KCFinder Project ] +[ Copyright 2010-2014 KCFinder Project ] [ http://kcfinder.sunhater.com ] -[ Pavel Tzonkov ] +[ Pavel Tzonkov ] [ ] [============================================================================] -I. DESCRIPTION +KCFinder free open-source alternative to the CKFinder Web file manager. It can +be integrated into FCKeditor, CKEditor, and TinyMCE WYSIWYG web editors or +your custom web applications to upload and manage images, flash movies, and +other files that can be embedded in an editor's generated HTML content. Only +PHP server-side scripting is supported. - KCFinder free open-source alternative to the CKFinder Web file manager. It - can be integrated into FCKeditor, CKEditor, and TinyMCE WYSIWYG web - editors or your custom web applications to upload and manage images, flash - movies, and other files that can be embedded in an editor's generated HTML - content. Only PHP server-side scripting is supported. - - -II. FEATURES - - 1. Ajax engine with JSON responses. - - 2. Easy to integrate and configure in web applications. - - 3. Clipboard for copy and move multiple files - - 4. Select multiple files with Ctrl key - - 5. Download multiple files or a folder as ZIP file - - 6. Resize bigger uploaded images. Configurable maximum image resolution. - - 7. Configurable thumbnail resolution. - - 8. Visual themes. - - 9. Multilanguage system. - - 10. Slideshow. - - 11. Multiple files upload (ala Facebook) - - 12. Drag and drop uploading - - -III. REQUIREMENTS - - 1. Web server (only Apache 2 is well tested) - - 2. PHP 5.x.x. with GD extension. Safe mode should be disabled. To work - with client-side HTTP cache, the PHP must be installed as Apache - module. - - 3. PHP ZIP extension for multiple files download. If it's not available, - KCFinder will work but without this feature. - - 4. PHP Fileinfo extension if you want to check file's MIME type before - moving to upload directory. PHP versions lesser than 5.3 needs to - install Fileinfo PECL extension: http://pecl.php.net/package/Fileinfo - - 5. Modern browser (not IE6!). - - -IV. INSTALLATION - - See http://kcfinder.sunhater.com/install - - -V. USED 3RD PARTY SOFTWARE - - 1. jQuery JavaScript library v1.4.2 - http://www.jquery.com - - 2. jQuery Right-Click Plugin v1.01 - http://abeautifulsite.net/notebook/68 - - 3. jquery.event.drag Plugin v2.0.0 - http://threedubmedia.com/code/event/drag - - 4. In realization of "oxygen" theme were used icons and color schemes of - default KDE4 theme - http://www.kde.org +More information available at http://kcfinder.sunhater.com \ No newline at end of file diff --git a/manager/media/browser/mcpuk/js/browser/0bject.js b/manager/media/browser/mcpuk/js/browser/0bject.js index 22b8cf5b2c..312edfd023 100644 --- a/manager/media/browser/mcpuk/js/browser/0bject.js +++ b/manager/media/browser/mcpuk/js/browser/0bject.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ var browser = { opener: {}, @@ -22,120 +20,3 @@ var browser = { orders: [], cms: "" }; -var uploader = { - uploadQueue : [], - uploadInProgress : false, - already : false, - filesCount : 0, - errors : [], - boundary : '------multipartdropuploadboundary' + (new Date).getTime(), - currentFile : {}, - - updateProgress : function (evt) { - var progress = evt.lengthComputable - ? Math.round((evt.loaded * 100) / evt.total) + '%' - : Math.round(evt.loaded / 1024) + " KB"; - $('#loading').html(browser.label("Uploading file {number} of {count}... {progress}", { - number: uploader.filesCount - uploader.uploadQueue.length, - count: uploader.filesCount, - progress: progress - })); - }, - - processUploadQueue : function() { - if (this.uploadInProgress) - return false; - - if (this.uploadQueue && this.uploadQueue.length) { - var file = this.uploadQueue.shift(); - this.currentFile = file; - $('#loading').html(browser.label("Uploading file {number} of {count}... {progress}", { - number: this.filesCount - this.uploadQueue.length, - count: this.filesCount, - progress: "" - })); - $('#loading').css('display', 'inline'); - - var reader = new FileReader(); - reader.thisFileName = file.name; - reader.thisFileType = file.type; - reader.thisFileSize = file.size; - reader.thisTargetDir = file.thisTargetDir; - - reader.onload = function(evt) { - uploader.uploadInProgress = true; - if (!!FileReader.prototype['readAsBinaryString']) { - binary = evt.target.result; - } else { //ie10 sucks again - var binary = ""; - var bytes = new Uint8Array(evt.target.result); - var length = bytes.byteLength; - for (var i = 0; i < length; i++) - { - binary += String.fromCharCode(bytes[i]); - } - } - var postbody = '--' + uploader.boundary + '\r\nContent-Disposition: form-data; name="upload[]"'; - if (evt.target.thisFileName) - postbody += '; filename="' + _.utf8encode(evt.target.thisFileName) + '"'; - postbody += '\r\n'; - if (evt.target.thisFileSize) - postbody += 'Content-Length: ' + evt.target.thisFileSize + '\r\n'; - postbody += 'Content-Type: ' + evt.target.thisFileType + '\r\n\r\n' + binary + '\r\n--' + uploader.boundary + '\r\nContent-Disposition: form-data; name="dir"\r\n\r\n' + _.utf8encode(evt.target.thisTargetDir) + '\r\n--' + uploader.boundary + '\r\n--' + uploader.boundary + '--\r\n'; - - var xhr = new XMLHttpRequest(); - xhr.thisFileName = evt.target.thisFileName; - - if (xhr.upload) { - xhr.upload.thisFileName = evt.target.thisFileName; - xhr.upload.addEventListener("progress", uploader.updateProgress, false); - } - xhr.open('POST', browser.baseGetData('upload'), true); - xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + uploader.boundary); - xhr.setRequestHeader('Content-Length', postbody.length); - - xhr.onload = function(e) { - $('#loading').css('display', 'none'); - if (browser.dir == reader.thisTargetDir) - browser.fadeFiles(); - uploader.uploadInProgress = false; - uploader.already = true; - uploader.processUploadQueue(); - if (xhr.responseText.substr(0, 1) != '/') - uploader.errors[uploader.errors.length] = xhr.responseText; - } - - xhr.sendAsBinary(postbody); - }; - - reader.onerror = function(evt) { - $('#loading').css('display', 'none'); - uploader.uploadInProgress = false; - uploader.already = true; - uploader.processUploadQueue(); - uploader.errors[uploader.errors.length] = browser.label("Failed to upload {filename}!", { - filename: evt.target.thisFileName - }); - }; - if (!!FileReader.prototype['readAsBinaryString']) { - reader.readAsBinaryString(file); - } else { - reader.readAsArrayBuffer(file); //ie sucks - } - - } else { - var loop = setInterval(function() { - if (uploader.uploadInProgress) return; - clearInterval(loop); - if (uploader.currentFile.thisTargetDir == browser.dir) - browser.refresh(); - uploader.boundary = '------multipartdropuploadboundary' + (new Date).getTime(); - - if (uploader.errors.length) { - browser.alert(uploader.errors.join('\n')); - uploader.errors = []; - } - }, 333); - } - } -}; \ No newline at end of file diff --git a/manager/media/browser/mcpuk/js/browser/clipboard.js b/manager/media/browser/mcpuk/js/browser/clipboard.js index 0fabdd8ad2..18bfd2bbae 100644 --- a/manager/media/browser/mcpuk/js/browser/clipboard.js +++ b/manager/media/browser/mcpuk/js/browser/clipboard.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.initClipboard = function() { if (!this.clipboard || !this.clipboard.length) return; diff --git a/manager/media/browser/mcpuk/js/browser/dropUpload.js b/manager/media/browser/mcpuk/js/browser/dropUpload.js index c982028acc..e0922cc01f 100644 --- a/manager/media/browser/mcpuk/js/browser/dropUpload.js +++ b/manager/media/browser/mcpuk/js/browser/dropUpload.js @@ -1,22 +1,16 @@ - + */ browser.initDropUpload = function() { - if (uploader.already){ - return; - } - uploader.already = true; if ((typeof(XMLHttpRequest) == 'undefined') || (typeof(document.addEventListener) == 'undefined') || (typeof(File) == 'undefined') || @@ -33,12 +27,19 @@ browser.initDropUpload = function() { this.send(ui8a.buffer); } } - var files = $('#files'), + + var uploadQueue = [], + uploadInProgress = false, + filesCount = 0, + errors = [], + files = $('#files'), folders = $('div.folder > a'), + boundary = '------multipartdropuploadboundary' + (new Date).getTime(), + currentFile, filesDragOver = function(e) { if (e.preventDefault) e.preventDefault(); - files.addClass('drag'); + $('#files').addClass('drag'); return false; }, @@ -49,25 +50,25 @@ browser.initDropUpload = function() { filesDragLeave = function(e) { if (e.preventDefault) e.preventDefault(); - files.removeClass('drag'); + $('#files').removeClass('drag'); return false; }, filesDrop = function(e) { if (e.preventDefault) e.preventDefault(); if (e.stopPropagation) e.stopPropagation(); - files.removeClass('drag'); + $('#files').removeClass('drag'); if (!$('#folders span.current').first().parent().data('writable')) { browser.alert("Cannot write to upload folder."); return false; } - uploader.filesCount = e.dataTransfer.files.length; + filesCount += e.dataTransfer.files.length for (var i = 0; i < e.dataTransfer.files.length; i++) { var file = e.dataTransfer.files[i]; file.thisTargetDir = browser.dir; - uploader.uploadQueue.push(file); + uploadQueue.push(file); } - uploader.processUploadQueue(); + processUploadQueue(); return false; }, @@ -83,13 +84,13 @@ browser.initDropUpload = function() { browser.alert("Cannot write to upload folder."); return false; } - uploader.filesCount = e.dataTransfer.files.length + filesCount += e.dataTransfer.files.length for (var i = 0; i < e.dataTransfer.files.length; i++) { var file = e.dataTransfer.files[i]; file.thisTargetDir = $(dir).data('path'); - uploader.uploadQueue.push(file); + uploadQueue.push(file); } - uploader.processUploadQueue(); + processUploadQueue(); return false; }; @@ -131,4 +132,98 @@ browser.initDropUpload = function() { this.addEventListener('dragleave', dragLeave, false); this.addEventListener('drop', drop, false); }); + + function updateProgress(evt) { + var progress = evt.lengthComputable + ? Math.round((evt.loaded * 100) / evt.total) + '%' + : Math.round(evt.loaded / 1024) + " KB"; + $('#loading').html(browser.label("Uploading file {number} of {count}... {progress}", { + number: filesCount - uploadQueue.length, + count: filesCount, + progress: progress + })); + } + + function processUploadQueue() { + if (uploadInProgress) + return false; + + if (uploadQueue && uploadQueue.length) { + var file = uploadQueue.shift(); + currentFile = file; + $('#loading').html(browser.label("Uploading file {number} of {count}... {progress}", { + number: filesCount - uploadQueue.length, + count: filesCount, + progress: "" + })); + $('#loading').css('display', 'inline'); + + var reader = new FileReader(); + reader.thisFileName = file.name; + reader.thisFileType = file.type; + reader.thisFileSize = file.size; + reader.thisTargetDir = file.thisTargetDir; + + reader.onload = function(evt) { + uploadInProgress = true; + + var postbody = '--' + boundary + '\r\nContent-Disposition: form-data; name="upload[]"'; + if (evt.target.thisFileName) + postbody += '; filename="' + _.utf8encode(evt.target.thisFileName) + '"'; + postbody += '\r\n'; + if (evt.target.thisFileSize) + postbody += 'Content-Length: ' + evt.target.thisFileSize + '\r\n'; + postbody += 'Content-Type: ' + evt.target.thisFileType + '\r\n\r\n' + evt.target.result + '\r\n--' + boundary + '\r\nContent-Disposition: form-data; name="dir"\r\n\r\n' + _.utf8encode(evt.target.thisTargetDir) + '\r\n--' + boundary + '\r\n--' + boundary + '--\r\n'; + + var xhr = new XMLHttpRequest(); + xhr.thisFileName = evt.target.thisFileName; + + if (xhr.upload) { + xhr.upload.thisFileName = evt.target.thisFileName; + xhr.upload.addEventListener("progress", updateProgress, false); + } + xhr.open('POST', browser.baseGetData('upload'), true); + xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary); + xhr.setRequestHeader('Content-Length', postbody.length); + + xhr.onload = function(e) { + $('#loading').css('display', 'none'); + if (browser.dir == reader.thisTargetDir) + browser.fadeFiles(); + uploadInProgress = false; + processUploadQueue(); + if (xhr.responseText.substr(0, 1) != '/') + errors[errors.length] = xhr.responseText; + } + + xhr.sendAsBinary(postbody); + }; + + reader.onerror = function(evt) { + $('#loading').css('display', 'none'); + uploadInProgress = false; + processUploadQueue(); + errors[errors.length] = browser.label("Failed to upload {filename}!", { + filename: evt.target.thisFileName + }); + }; + + reader.readAsBinaryString(file); + + } else { + filesCount = 0; + var loop = setInterval(function() { + if (uploadInProgress) return; + boundary = '------multipartdropuploadboundary' + (new Date).getTime(); + uploadQueue = []; + clearInterval(loop); + if (currentFile.thisTargetDir == browser.dir) + browser.refresh(); + if (errors.length) { + browser.alert(errors.join('\n')); + errors = []; + } + }, 333); + } + } }; diff --git a/manager/media/browser/mcpuk/js/browser/files.js b/manager/media/browser/mcpuk/js/browser/files.js index e2c331df80..1158f19f3c 100644 --- a/manager/media/browser/mcpuk/js/browser/files.js +++ b/manager/media/browser/mcpuk/js/browser/files.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.initFiles = function() { $(document).unbind('keydown'); @@ -34,6 +32,10 @@ browser.initFiles = function() { _.unselect(); browser.returnFile($(this)); }); + $('.selectThis').click(function() { + _.unselect(); + browser.returnFile($(this).parent('.file')); + }); $('.file').mouseup(function() { _.unselect(); }); @@ -88,6 +90,7 @@ browser.showFiles = function(callBack, selected) { '
                      ' + _.htmlData(file.name) + '
                      ' + '
                      ' + file.date + '
                      ' + '
                      ' + browser.humanSize(file.size) + '
                      ' + + '
                      ' + "+" + '
                      ' + '
                      '; } }); @@ -158,13 +161,18 @@ browser.returnFile = function(file) { ? file : browser.assetsURL + '/' + browser.dir + '/' + file.data('name'); fileURL = _.escapeDirs(fileURL); - if (this.opener.CKEditor) { + if (this.opener.TinyMCE4) { + var win = window.opener ? window.opener : window.parent; + $(win.document).find('#' + this.opener.TinyMCE4).val(fileURL); + win.tinyMCE.activeEditor.windowManager.close(); + + } else if (this.opener.CKEditor) { this.opener.CKEditor.object.tools.callFunction(this.opener.CKEditor.funcNum, fileURL, ''); window.close(); } else if (this.opener.FCKeditor) { - window.close() ; window.opener.SetUrl(fileURL) ; + window.close() ; } else if (this.opener.TinyMCE) { var win = tinyMCEPopup.getWindowArg('window'); diff --git a/manager/media/browser/mcpuk/js/browser/folders.js b/manager/media/browser/mcpuk/js/browser/folders.js index 02a9b27b1b..822d962315 100644 --- a/manager/media/browser/mcpuk/js/browser/folders.js +++ b/manager/media/browser/mcpuk/js/browser/folders.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.initFolders = function() { $('#folders').scroll(function() { @@ -36,7 +34,7 @@ browser.initFolders = function() { }); if ($.browser.msie && $.browser.version && - (parseInt($.browser.version) < 8) + (parseInt($.browser.version.substr(0, 1)) < 8) ) { var fls = $('div.folder').get(); var body = $('body').get(0); diff --git a/manager/media/browser/mcpuk/js/browser/init.js b/manager/media/browser/mcpuk/js/browser/init.js index 2531de0593..43d5676017 100644 --- a/manager/media/browser/mcpuk/js/browser/init.js +++ b/manager/media/browser/mcpuk/js/browser/init.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.init = function() { if (!this.checkAgent()) return; @@ -30,6 +28,7 @@ browser.init = function() { return false; }); this.initOpeners(); + console.log(this.opener); this.initSettings(); this.initContent(); this.initToolbar(); @@ -77,6 +76,9 @@ browser.initOpeners = function() { this.opener.CKEditor = null; } + if (this.opener.name && (this.opener.name == "tinymce4")) + this.opener.callBack = true; + if (!this.opener.CKEditor && !this.opener.FCKEditor && !this.TinyMCE) { if ((window.opener && window.opener.KCFinder && window.opener.KCFinder.callBack) || (window.parent && window.parent.KCFinder && window.parent.KCFinder.callBack) @@ -173,7 +175,7 @@ browser.resize = function() { _('status').style.width = _.nopx(_('status').style.width) - 1 + 'px'; while ($('#status').outerWidth() < width) _('status').style.width = _.nopx(_('status').style.width) + 1 + 'px'; - if ($.browser.msie && (parseInt($.browser.version) < 8)) + if ($.browser.msie && ($.browser.version.substr(0, 1) < 8)) _('right').style.width = $(window).width() - $('#left').outerWidth() + 'px'; _('files').style.width = $('#right').innerWidth() - _.outerHSpace('#files') + 'px'; _('resizer').style.left = $('#left').outerWidth() - _.outerRightSpace('#folders', 'm') + 'px'; diff --git a/manager/media/browser/mcpuk/js/browser/joiner.php b/manager/media/browser/mcpuk/js/browser/joiner.php index 72a19a313d..805fff1ae5 100644 --- a/manager/media/browser/mcpuk/js/browser/joiner.php +++ b/manager/media/browser/mcpuk/js/browser/joiner.php @@ -4,15 +4,15 @@ * * @desc Join all JavaScript files in current directory * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com */ -chdir(".."); // For compatibality +chdir(".."); // For compatibility chdir(".."); require "lib/helper_httpCache.php"; require "lib/helper_dir.php"; diff --git a/manager/media/browser/mcpuk/js/browser/misc.js b/manager/media/browser/mcpuk/js/browser/misc.js index 61655e598f..2a7dddec80 100644 --- a/manager/media/browser/mcpuk/js/browser/misc.js +++ b/manager/media/browser/mcpuk/js/browser/misc.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.drag = function(ev, dd) { var top = dd.offsetY, diff --git a/manager/media/browser/mcpuk/js/browser/settings.js b/manager/media/browser/mcpuk/js/browser/settings.js index d7b423a3f4..231809f66a 100644 --- a/manager/media/browser/mcpuk/js/browser/settings.js +++ b/manager/media/browser/mcpuk/js/browser/settings.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.initSettings = function() { diff --git a/manager/media/browser/mcpuk/js/browser/toolbar.js b/manager/media/browser/mcpuk/js/browser/toolbar.js index 1909c8ff53..bee1e2ac64 100644 --- a/manager/media/browser/mcpuk/js/browser/toolbar.js +++ b/manager/media/browser/mcpuk/js/browser/toolbar.js @@ -1,16 +1,14 @@ - - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com - */?> + */ browser.initToolbar = function() { $('#toolbar a').click(function() { @@ -57,9 +55,11 @@ browser.initToolbar = function() { $('#toolbar a[href="kcact:about"]').click(function() { var html = '
                      ' + '
                      KCFinder ' + browser.version + '
                      '; + if (browser.support.check4Update) + html += '
                      ' + browser.label("Checking for new version...") + '
                      '; html += '
                      ' + browser.label("Licenses:") + ' GPLv2 & LGPLv2
                      ' + - '
                      Copyright ©2010, 2011 Pavel Tzonkov
                      ' + + '
                      Copyright ©2010-2014 Pavel Tzonkov
                      ' + '' + '
                      '; $('#dialog').html(html); @@ -70,6 +70,36 @@ browser.initToolbar = function() { browser.unshadow(); } $('#dialog button').click(close); + var span = $('#checkver > span'); + setTimeout(function() { + $.ajax({ + dataType: 'json', + url: browser.baseGetData('check4Update'), + async: true, + success: function(data) { + if (!$('#dialog').html().length) + return; + span.removeClass('loading'); + if (!data.version) { + span.html(browser.label("Unable to connect!")); + browser.showDialog(); + return; + } + if (browser.version < data.version) + span.html('' + browser.label("Download version {version} now!", {version: data.version}) + ''); + else + span.html(browser.label("KCFinder is up to date!")); + browser.showDialog(); + }, + error: function() { + if (!$('#dialog').html().length) + return; + span.removeClass('loading'); + span.html(browser.label("Unable to connect!")); + browser.showDialog(); + } + }); + }, 1000); $('#dialog').unbind(); return false; @@ -113,7 +143,6 @@ browser.uploadFile = function(form) { $('').prependTo(document.body); $('#loading').html(this.label("Uploading file...")); $('#loading').css('display', 'inline'); - if (window.FormData === undefined ) { form.submit(); $('#uploadResponse').load(function() { var response = $(this).contents().find('body').html(); @@ -129,7 +158,7 @@ browser.uploadFile = function(form) { if (errors.length) browser.alert(errors.join("\n")); if (!selected.length) - selected = null; + selected = null browser.refresh(selected); $('#upload').detach(); setTimeout(function() { @@ -137,16 +166,6 @@ browser.uploadFile = function(form) { }, 1); browser.initUploadButton(); }); - } else { - files = form.elements[0].files; - uploader.filesCount = files.length; - for (var i = 0; i < files.length; i++) { - var file = files[i]; - file.thisTargetDir = browser.dir; - uploader.uploadQueue.push(file); - } - uploader.processUploadQueue(); - } }; browser.maximize = function(button) { @@ -158,16 +177,26 @@ browser.maximize = function(button) { height -= 50; window.resizeTo(width, height); - } else if (browser.opener.TinyMCE) { + } else if (browser.opener.TinyMCE || browser.opener.TinyMCE4) { var win, ifr, id; - - $('iframe', window.parent.document).each(function() { - if (/^mce_\d+_ifr$/.test($(this).attr('id'))) { - id = parseInt($(this).attr('id').replace(/^mce_(\d+)_ifr$/, "$1")); - win = $('#mce_' + id, window.parent.document); - ifr = $('#mce_' + id + '_ifr', window.parent.document); - } - }); + + if(browser.opener.TinyMCE) { + $('iframe', window.parent.document).each(function() { + if (/^mce_\d+_ifr$/.test($(this).attr('id'))) { + id = parseInt($(this).attr('id').replace(/^mce_(\d+)_ifr$/, "$1")); + win = $('#mce_' + id, window.parent.document); + ifr = $('#mce_' + id + '_ifr', window.parent.document); + } + }); + } else { + $('.mce-window', window.parent.document).each(function() { + if (/^mceu_\d/.test($(this).attr('id'))) { + id = parseInt($(this).attr('id').replace(/^mceu_(\d+)/, "$1")); + win = $('#mceu_' + id, window.parent.document); + ifr = $('#mceu_' + id + '-body', window.parent.document); + } + }); + } if ($(button).hasClass('selected')) { $(button).removeClass('selected'); @@ -205,7 +234,6 @@ browser.maximize = function(button) { height: height - browser.maximizeMCE.Vspace + 'px' }); } - } else if ($('iframe', window.parent.document).get(0)) { var ifrm = $('iframe[name="' + window.name + '"]', window.parent.document); var parent = ifrm.parent(); diff --git a/manager/media/browser/mcpuk/js/helper.js b/manager/media/browser/mcpuk/js/helper.js index 29283000f7..4e6f8eec36 100644 --- a/manager/media/browser/mcpuk/js/helper.js +++ b/manager/media/browser/mcpuk/js/helper.js @@ -2,9 +2,9 @@ * * @desc Helper object * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/js_localize.php b/manager/media/browser/mcpuk/js_localize.php index 92ca7a8a7b..9e214de148 100644 --- a/manager/media/browser/mcpuk/js_localize.php +++ b/manager/media/browser/mcpuk/js_localize.php @@ -4,9 +4,9 @@ * * @desc Load language labels into JavaScript * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/lang/af.php b/manager/media/browser/mcpuk/lang/af.php new file mode 100755 index 0000000000..1eccc0add2 --- /dev/null +++ b/manager/media/browser/mcpuk/lang/af.php @@ -0,0 +1,245 @@ + "af-ZA.UTF-8", + '_charset' => "utf-8", + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%d %B %Y %H:%M", + '_dateTimeMid' => "%d %b %Y %H:%M", + '_dateTimeSmall' => "%d %b %Y %H:%M", + + "You don't have permissions to upload files." => + "Jy het nie toestemming om lêers op te laai nie oplaai nie.", + + "You don't have permissions to browse server." => + "Jy het nie toestemming tot die bediener nie.", + + "Cannot move uploaded file to target folder." => + "Jy kannie die lêer beweeg na die gids toe nie.", + + "Unknown error." => + "Onbekende fout.", + + "The uploaded file exceeds {size} bytes." => + "Die foto's lêer oorskry {size} grepe.", + + "The uploaded file was only partially uploaded." => + "Die foto's lêer is slegs gedeeltelik opgelaai.", + + "No file was uploaded." => + "Geen lêer is opgelaai.", + + "Missing a temporary folder." => + "'N tydelike gids ontbreek.", + + "Failed to write file." => + "Misluk om lêer te kryf.", + + "Denied file extension." => + "Lêer uitbreiding verloën.", + + "Unknown image format/encoding." => + "Onbekende prentjie-formaat / kodering.", + + "The image is too big and/or cannot be resized." => + "Die beeld is te groot en / of kan nie verander word nie.", + + "Cannot create {dir} folder." => + "Kan nie {dir} gids skep nie.", + + "Cannot write to upload folder." => + "Kan nie skryf na die oplaai gids nie.", + + "Cannot read .htaccess" => + "Kan nie .htaccess lees nie.", + + "Incorrect .htaccess file. Cannot rewrite it!" => + "Verkeerde .htaccess lêer. Kan nie herskryf dit!", + + "Cannot fetch content of {dir} folder." => + "Kan nie haal inhoud van {dir} gids nie.", + + "Cannot read upload folder." => + "Kan nie oplaai gids lees nie.", + + "Cannot access or create thumbnails folder." => + "Kan nie toegang tot of duimnaels gids skep.", + + "Cannot access or write to upload folder." => + "Kan nie toegang tot of skryf na oplaai gids nie.", + + "Please enter new folder name." => + "Gee die nuwe gidsnaam.", + + "Unallowed characters in folder name." => + "Ongeoorloofd karakters in gidsnaam.", + + "Folder name shouldn't begins with '.'" => + "Gidsnaam moet nie begin met '.'", + + "Please enter new file name." => + "Gee nuwe lêernaam.", + + "Unallowed characters in file name." => + "Ongeoorloofd karakters in die lêernaam.", + + "File name shouldn't begins with '.'" => + "Lêer naam moet nie begin met '.'", + + "Are you sure you want to delete this file?" => + "Is jy seker jy wil hierdie lêer te verwyder ?", + + "Are you sure you want to delete this folder and all its content?" => + "Is jy seker jy wil hierdie gids en al die inhoud daarin te verwyder ?", + + "Unexisting directory type." => + "Nie Bestaande gids tipe.", + + "Undefined MIME types." => + "Ongedefinieerd MIME-tipes.", + + "Fileinfo PECL extension is missing." => + "Fileinfo PECL uitbreiding is weg.", + + "Opening fileinfo database failed." => + "Opening van fileinfo databasis het misluk.", + + "You can't upload such files." => + "Jy kan nie sulke lêers oplaai.", + + "The file '{file}' does not exist." => + "Die lêer '{file}' bestaan ​​nie.", + + "Cannot read '{file}'." => + "Kan nie '{lêer}' lees nie.", + + "Cannot copy '{file}'." => + "Kan nie '{lêer}' kopieer nie.", + + "Cannot move '{file}'." => + "Kan nie '{lêer}' beweeg nie.", + + "Cannot delete '{file}'." => + "Kan nie '{lêer}' verwyder .", + + "Click to remove from the Clipboard" => + "Klik om te verwyder van die Klembord", + + "This file is already added to the Clipboard." => + "Hierdie lêer is reeds aan die Klembord bygevoeg.", + + "Copy files here" => + "Kopieer lêers hier", + + "Move files here" => + "Skuif lêers hier", + + "Delete files" => + "Verwyder lêers ", + + "Clear the Clipboard" => // + "Vee Klembord Skoon", + + "Are you sure you want to delete all files in the Clipboard?" => + "Is jy seker jy wil al die lêers in die Klembord te verwyder?", + + "Copy {count} files" => + "Kopieer {count} lêers", + + "Move {count} files" => + "Beweeg {count} lêers", + + "Add to Clipboard" => + "Voeg na klembord", + "New folder name:" => "Nuwe gids naam:", + "New file name:" => "Nuwe lêer naam:", + "Folders" => "Gidse", + + "Upload" => "Oplaai", + "Refresh" => "Herlaai", + "Settings" => "Stellings", + "Maximize" => "Maksimaliseer", + "About" => "About", + "files" => "lêers", + "View:" => "Bekyk:", + "Show:" => "Wys:", + "Order by:" => "Sorteer volgens:", + "Thumbnails" => "Duimnaels", + "List" => "Lys", + "Name" => "Naam", + "Size" => "Grootte", + "Date" => "Datum", + "Descending" => "Aflopend", + "Uploading file..." => "Lêer Besig Met Oplaai...", + "Loading image..." => "Besig om beeld te laai...", + "Loading folders..." => "Besig om Gidse te laai...", + "Loading files..." => "Besig om Lêers te laai...", + "New Subfolder..." => "Nuwe subgids...", + "Rename..." => "Naam verander...", + "Delete" => "Verwyder", + "OK" => "REG", + "Cancel" => "Kanselleer", + "Select" => "Kies", + "Select Thumbnail" => "Kies Duimnaelskets", + "View" => "Bekyk", + "Download" => "Aflaai", + 'Clipboard' => "Klembord", + + // VERSION 2 NEW LABELS + + "Cannot rename the folder." => + "Kan nie die gids naam vernader nie.", + + "Non-existing directory type." => + "Nie-bestaande gids tipe.", + + "Cannot delete the folder." => + "Kan nie die gids verwyder nie.", + + "The files in the Clipboard are not readable." => + "Die lêers in die Klembord is nie leesbaar is.", + + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => + "{count} lêers in die Klembord is nie leesbaar is. Wil jy die res te kopieer ?", + + "The files in the Clipboard are not movable." => + "Die lêers in die Klembord kan verskuif word nie.", + + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => + "{count} lêers in die Klembord kan nie verskuif word nie. Wil jy die res te beweeg ?", + + "The files in the Clipboard are not removable." => + "Die lêers in die Klembord kan nie verwyder word nie.", + + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => + "{count} lêers in die Klembord kan nie verwyder word nie. Wil jy die res te verwyder ?", + + "The selected files are not removable." => + "Die geselekteerde lêers kan nie verwyder word nie", + + "{count} selected files are not removable. Do you want to delete the rest?" => + "{count} geselekteerde lêers kan nie verwyder word nie. Wil jy die res te verwyder ?", + + "Are you sure you want to delete all selected files?" => + "Is jy seker jy wil all geselekteerde lêers te verwyder ?", + + "Failed to delete {count} files/folders." => + "Misluk {count} lêers/gidse te verwyder.", + + "A file or folder with that name already exists." => + "'N lêer of gids met daardie naam bestaan ​​reeds.", + + "Inexistant or inaccessible folder." => + "Nie-bestaande of ontoeganklik gids.", + + "selected files" => "geselekteerde lêers", + "Type" => "Tipe", + "Select Thumbnails" => "Kies duimnaels", + "Download files" => "Laai lêers af", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/bg.php b/manager/media/browser/mcpuk/lang/bg.php old mode 100644 new mode 100755 index 24376fbcb9..c1a3ee387d --- a/manager/media/browser/mcpuk/lang/bg.php +++ b/manager/media/browser/mcpuk/lang/bg.php @@ -1,7 +1,7 @@ + * author: Pavel Tzonkov */ $lang = array( @@ -236,6 +236,10 @@ // SINCE 2.4 + "Checking for new version..." => "Проверка за нова версия...", + "Unable to connect!" => "Не може да се свърже!", + "Download version {version} now!" => "Свалете версия {version} сега!", + "KCFinder is up to date!" => "KCFinder е актуален!", "Licenses:" => "Лицензи:", "Attention" => "Внимание", "Question" => "Въпрос", diff --git a/manager/media/browser/mcpuk/lang/ca.php b/manager/media/browser/mcpuk/lang/ca.php old mode 100644 new mode 100755 index 97ffdccb81..9e9c6c2f56 --- a/manager/media/browser/mcpuk/lang/ca.php +++ b/manager/media/browser/mcpuk/lang/ca.php @@ -15,162 +15,83 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "No té permissos per pujar arxius.", - - "You don't have permissions to browse server." => - "No té permissos per visualitzar arxius.", - - "Cannot move uploaded file to target folder." => - "No es pot moure el fitxer pujat al directori destí", - - "Unknown error." => - "Error desconegut.", - - "The uploaded file exceeds {size} bytes." => - "La mida del fitxer excedeix la mida màxima de pujada ( {size} bytes ).", - - "The uploaded file was only partially uploaded." => - "El fitxer només ha estat carregat parcialment.", - - "No file was uploaded." => - "Cap arxiu carregat", - - "Missing a temporary folder." => - "Directori Temporal perdut.", - - "Failed to write file." => - "Error en escriure el fitxer.", - - "Denied file extension." => - "Extensió de fitxer no permesa.", - - "Unknown image format/encoding." => - "Format d'imatge desconegut.", - - "The image is too big and/or cannot be resized." => - "La imatge és massa gran i/o no es pot redimensionar.", - - "Cannot create {dir} folder." => - "No s'ha pogut crear el directori {dir}", - - "Cannot write to upload folder." => - "No es pot escriure al directori de càrrega de fitxers.", - - "Cannot read .htaccess" => - "No s'ha pogut llegir .htaccess.", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Fitxer .htaccess incorrecte. No s'el pot reescriure!", - - "Cannot read upload folder." => - "No s'ha pogut llegir la carpeta de càrrega de fitxers.", - - "Cannot access or create thumbnails folder." => - "No s'ha pogut llegir o crear la carpeta de miniatures.", - - "Cannot access or write to upload folder." => - "No s'ha pogut llegir o escriure la carpeta de càrrega de fitxers.", - - "Please enter new folder name." => - "Si us plau, entri el nom del nou directori.", - - "Unallowable characters in folder name." => - "Caràcters no permesos en el nom d'una carpeta.", - - "Folder name shouldn't begins with '.'" => - "El nom d'un directori no hauria de començar amb punt '.'", - - "Please enter new file name." => - "Si us plau, introdueixi un nou nom pel fitxer ", - - "Unallowable characters in file name." => - "Caràcters no permesos en un nom de fitxer.", - - "File name shouldn't begins with '.'" => - "El nom de fitxer no hauria de començar amb punt '.'", - - "Are you sure you want to delete this file?" => - "Està segur que vol suprimir aquest fitxer?", - - "Are you sure you want to delete this folder and all its content?" => - "Està segur que vol suprimir aquest directori i el seu contingut?", - - "Inexistant or inaccessible folder." => - "Carpeta inexistent o inaccessible.", - - "Undefined MIME types." => - "Tipus MIME no definit.", - - "Fileinfo PECL extension is missing." => - "Fitxer PECL amb estructura incorrecta.", - - "Opening fileinfo database failed." => - "Error obrint el fitxer d'informació de la base de dades.", - - "You can't upload such files." => - "No pot carregar tants fitxers.", - - "The file '{file}' does not exist." => - "El fitxer '{file}' no existeix.", - - "Cannot read '{file}'." => - "No s'ha pogut llegir '{file}'.", - - "Cannot copy '{file}'." => - "No s'ha pogut copiar '{file}'.", - - "Cannot move '{file}'." => - "No s'ha pogut moure '{file}'.", - - "Cannot delete '{file}'." => - "No s'ha pogut esborrar '{file}'.", - - "Click to remove from the Clipboard" => - "Faci click per esborrar del portapapers", - - "This file is already added to the Clipboard." => - "Aquest arxiu ja havia estat afegit al portapapers.", - - "Copy files here" => - "Copiar fitxers aquí", - - "Move files here" => - "Moure fitxers aquí", - - "Delete files" => - "Esborrar fitxers", - - "Clear the Clipboard" => - "Buidar el portapapers", - - "Are you sure you want to delete all files in the Clipboard?" => - "Està convençut que vol esborrar tots els fitxers del portapapers?", - - "Copy {count} files" => - "Copiar {count} fitxers", - - "Move {count} files" => - "Moure {count} fitxers ", - - "Add to Clipboard" => - "Afegir al portapapers", - - "New folder name:" => "Nou nom del directori:", - "New file name:" => "Nou nom del fitxer:", - - "Upload" => "Carregar", - "Refresh" => "Refrescar", - "Settings" => "Preferències", - "Maximize" => "Maximitzar", - "About" => "En quant a...", + "You don't have permissions to upload files." => "No teniu permisos per pujar arxius.", + "You don't have permissions to browse server." => "No teniu permisos per visualitzar arxius.", + "Cannot move uploaded file to target folder." => "No es pot moure el fitxer pujat al directori destí", + "Unknown error." => "Error desconegut.", + "The uploaded file exceeds {size} bytes." => "El fitxer seleccionat excedeix el pes màxim permès ( {size} bytes ).", + "The uploaded file was only partially uploaded." => "El fitxer seleccionat només s'ha carregat parcialment.", + "No file was uploaded." => "No s'ha carregat cap fitxer.", + "Missing a temporary folder." => "Manca un directori temporal.", + "Failed to write file." => "No s'ha pogut escriure el fitxer.", + "Denied file extension." => "Extensió de fitxer no permesa.", + "Unknown image format/encoding." => "Format d'imatge desconegut.", + "The image is too big and/or cannot be resized." => "La imatge és massa gran i/o no es pot redimensionar.", + "Cannot create {dir} folder." => "No s'ha pogut crear el directori {dir}", + "Cannot rename the folder." => "No es pot reanomenar el directori.", + "Cannot write to upload folder." => "No es pot escriure al directori de càrrega de fitxers.", + "Cannot read .htaccess" => "No s'ha pogut llegir .htaccess.", + "Incorrect .htaccess file. Cannot rewrite it!" => "Fitxer .htaccess incorrecte. No es pot reescriure!", + "Cannot read upload folder." => "No s'ha pogut llegir la carpeta de càrrega de fitxers.", + "Cannot access or create thumbnails folder." => "No s'ha pogut accedir o crear la carpeta de miniatures.", + "Cannot access or write to upload folder." => "No s'ha pogut accedir o escriure la carpeta de càrrega de fitxers.", + "Please enter new folder name." => "Si us plau, introduïu el nom del nou directori.", + "Unallowable characters in folder name." => "Caràcters no permesos en el nom del directori.", + "Folder name shouldn't begins with '.'" => "El nom d'un directori no hauria de començar amb un punt '.'", + "Please enter new file name." => "Si us plau, introduïu el nom del nou fitxer.", + "Unallowable characters in file name." => "Caràcters no permesos en el nom del fitxer.", + "File name shouldn't begins with '.'" => "El nom d'un fitxer no hauria de començar amb un punt '.'", + "Are you sure you want to delete this file?" => "Esteu segur que voleu eliminar aquest fitxer?", + "Are you sure you want to delete this folder and all its content?" => "Esteu segur que voleu eliminar aquest directori i tot el seu contingut?", + "Non-existing directory type." => "Tipus de directori inexistent.", + "Undefined MIME types." => "Tipus MIME no definit.", + "Fileinfo PECL extension is missing." => "Manca arxiu d'informació de l'extensió PECL.", + "Opening fileinfo database failed." => "Error obrint el fitxer d'informació de la base de dades.", + "You can't upload such files." => "No podeu carregar tants fitxers.", + "The file '{file}' does not exist." => "El fitxer '{file}' no existeix.", + "Cannot read '{file}'." => "No s'ha pogut llegir '{file}'.", + "Cannot copy '{file}'." => "No s'ha pogut copiar '{file}'.", + "Cannot move '{file}'." => "No s'ha pogut moure '{file}'.", + "Cannot delete '{file}'." => "No s'ha pogut eliminar '{file}'.", + "Cannot delete the folder." => "No es pot eliminar el directori.", + "Click to remove from the Clipboard" => "Feu clic per eliminar del portapapers", + "This file is already added to the Clipboard." => "Aquest arxiu ja es troba al portapapers.", + "The files in the Clipboard are not readable." => "No es poden llegir els fitxers del portapapers.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fitxers del portapapers no es poden llegir. Voleu copiar la resta?", + "The files in the Clipboard are not movable." => "No es poden moure els fitxers del portapapers.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fitxers del portapapers no es poden moure. Voleu moure la resta?", + "The files in the Clipboard are not removable." => "Els fitxers del portapapers no es poden eliminar.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fitxers del portapapers no es poden eliminar. Voleu eliminar la resta?", + "The selected files are not removable." => "Els fitxers seleccionats no es poden eliminar.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} fitxers dels seleccionats no es poden eliminar. Voleu eliminar la resta?", + "Are you sure you want to delete all selected files?" => "Esteu segur que voleu eliminar els fitxers seleccionats?", + "Failed to delete {count} files/folders." => "Error al eliminar {count} fitxers/directoris.", + "A file or folder with that name already exists." => "Ja existeix un directori o fitxer amb aquest nom.", + "Copy files here" => "Copia els fitxers aquí", + "Move files here" => "Mou els fitxers aquí", + "Delete files" => "Elimina els fitxers", + "Clear the Clipboard" => "Buida el portapapers", + "Are you sure you want to delete all files in the Clipboard?" => "Esteu segur que voleu eliminar tots els fitxers del portapapers?", + "Copy {count} files" => "Copia els {count} fitxers aquí", + "Move {count} files" => "Mou els {count} fitxers aquí", + "Add to Clipboard" => "Afegeix al portapapers", + "Inexistant or inaccessible folder." => "Directori inexistent o inaccessible.", + "New folder name:" => "Nom del nou directori:", + "New file name:" => "Nom del nou fitxer:", + "Upload" => "Carrega arxius", + "Refresh" => "Refresca", + "Settings" => "Opcions", + "Maximize" => "Maximitza", + "About" => "Sobre...", "files" => "Fitxers", + "selected files" => "Fitxers seleccionats", "View:" => "Veure:", - "Show:" => "Mostrar:", - "Order by:" => "Ordenar per:", + "Show:" => "Mostra:", + "Order by:" => "Ordena per:", "Thumbnails" => "Miniatures", - "List" => "Llista", + "List" => "Llistat", "Name" => "Nom", + "Type" => "Tipus", "Size" => "Mida", "Date" => "Data", "Descending" => "Descendent", @@ -179,64 +100,29 @@ "Loading folders..." => "Carregant directoris...", "Loading files..." => "Carregant fitxers...", "New Subfolder..." => "Nou subdirectori...", - "Rename..." => "Canviar el nom...", - "Delete" => "Eliminar", - "OK" => "OK", - "Cancel" => "Cancel.lar", - "Select" => "Seleccionar", - "Select Thumbnail" => "Seleccionar miniatura", + "Rename..." => "Canvia el nom...", + "Delete" => "Elimina", + "OK" => "D'acord", + "Cancel" => "Cancel·la", + "Select" => "Selecciona", + "Select Thumbnail" => "Selecciona miniatura", + "Select Thumbnails" => "Selecciona miniatures", "View" => "Veure", - "Download" => "Descarregar", + "Download" => "Descarrega", + "Download files" => "Descarrega fitxers", "Clipboard" => "Portapapers", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "No es pot canviar el nom del directori.", - - "Non-existing directory type." => - "Tipus de directori inexistent.", - - "Cannot delete the folder." => - "No es pot esborrar el directori.", - - "The files in the Clipboard are not readable." => - "Els fitxers del portapapers són illegibles.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} fitxers no es poden llegir. Vol copiar la resta?", - - "The files in the Clipboard are not movable." => - "Els fitxers del portapapers no es poden moure.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} fitxers del portapapers no es poden moure. Vol moure la resta?", - - "The files in the Clipboard are not removable." => - "Els fitxers del portapapers no es poden eliminar.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} fitxers del portapapers no poden ser eliminats. Vol eliminar la resta?", - - "The selected files are not removable." => - "Els fitxers seleccionats no poden ser esborrats.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} fitxers dels seleccionats no poden ser esborrats. Vol esborrar la resta?", - - "Are you sure you want to delete all selected files?" => - "Està segur que vol eliminar els fitxers seleccionats?", - - "Failed to delete {count} files/folders." => - "Error en esborrar {count} fitxers/directoris.", - - "A file or folder with that name already exists." => - "Ja existeix un directori o un fitxer amb aquest nom.", - - "selected files" => "Fitxers seleccionats", - "Type" => "Tipus", - "Select Thumbnails" => "Seleccionar miniatures", - "Download files" => "Descarregar fitxers", + "Checking for new version..." => "Comprovant actualitzacions...", + "Unable to connect!" => "No es pot connectar!", + "Download version {version} now!" => "Descarregueu la versió {version}!", + "KCFinder is up to date!" => "KCFinder està actualitzat!", + "Licenses:" => "Llicències:", + "Attention" => "Atenció", + "Question" => "Pregunta", + "Yes" => "Sí", + "No" => "No", + "You cannot rename the extension of files!" => "No està permès canviar la extensió al fitxer.", + "Uploading file {number} of {count}... {progress}" => "Carregant arxiu {number} de {count}... {progress}", + "Failed to upload {filename}!" => "Error al carregar {filename}", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/cs.php b/manager/media/browser/mcpuk/lang/cs.php old mode 100644 new mode 100755 index 15ce61f026..8cd858cbe6 --- a/manager/media/browser/mcpuk/lang/cs.php +++ b/manager/media/browser/mcpuk/lang/cs.php @@ -14,162 +14,83 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "Nemáte práva pro nahrávání souborů.", - - "You don't have permissions to browse server." => - "Nemáte práva pro prohlížení serveru.", - - "Cannot move uploaded file to target folder." => - "Nelze přesunout soubor do určeného adresáře.", - - "Unknown error." => - "Neznámá chyba.", - - "The uploaded file exceeds {size} bytes." => - "Nahraný soubor přesahuje {size} bytů.", - - "The uploaded file was only partially uploaded." => - "Nahraný soubor byl nahrán pouze částečně.", - - "No file was uploaded." => - "Žádný soubor nebyl nahrán na server.", - - "Missing a temporary folder." => - "Chybí dočasný adresář.", - - "Failed to write file." => - "Soubor se nepodařilo se uložit.", - - "Denied file extension." => - "Nepodporovaný typ souboru.", - - "Unknown image format/encoding." => - "Neznámý formát obrázku/encoding.", - - "The image is too big and/or cannot be resized." => - "Obrázek je příliš velký/nebo nemohl být zmenšen.", - - "Cannot create {dir} folder." => - "Adresář {dir} nelze vytvořit.", - - "Cannot write to upload folder." => - "Nelze ukládat do adresáře pro nahrávání.", - - "Cannot read .htaccess" => - "Není možno číst soubor .htaccess", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Chybný soubor .htaccess. Soubor nelze přepsat!", - - "Cannot read upload folder." => - "Nelze číst z adresáře pro nahrávání souborů.", - - "Cannot access or create thumbnails folder." => - "Adresář pro náhledy nelze vytvořit nebo není přístupný.", - - "Cannot access or write to upload folder." => - "Nelze přistoupit, nebo zapisovat do adresáře pro nahrávání souborů.", - - "Please enter new folder name." => - "Vložte prosím nové jméno adresáře.", - - "Unallowable characters in folder name." => - "Nepovolené znaky v názvu adresáře.", - - "Folder name shouldn't begins with '.'" => - "Jméno adresáře nesmí začínat znakem '.'", - - "Please enter new file name." => - "Vložte prosím nové jméno souboru.", - - "Unallowable characters in file name." => - "Nepovolené znaky v názvu souboru.", - - "File name shouldn't begins with '.'" => - "Název soubor nesmí začínat znakem '.'", - - "Are you sure you want to delete this file?" => - "Jste si jistý že chcete smazat tento soubor?", - - "Are you sure you want to delete this folder and all its content?" => - "Jste si jistý že chcete smazat tento adresář a celý jeho obsah?", - - "Inexistant or inaccessible folder." => - "Neexistující nebo nepřístupný adresář.", - - "Undefined MIME types." => - "Nedefinovaný MIME typ souboru.", - - "Fileinfo PECL extension is missing." => - "Rozříření PECL pro zjištění informací o souboru chybí.", - - "Opening fileinfo database failed." => - "Načtení informací o souboru selhalo.", - - "You can't upload such files." => - "Tyto soubory nemůžete nahrát na server.", - - "The file '{file}' does not exist." => - "Tento soubor '{file}' neexistuje.", - - "Cannot read '{file}'." => - "Nelze načíst '{file}'.", - - "Cannot copy '{file}'." => - "Nelze kopírovat '{file}'.", - - "Cannot move '{file}'." => - "Nelze přesunout '{file}'.", - - "Cannot delete '{file}'." => - "Nelze smazat '{file}'.", - - "Click to remove from the Clipboard" => - "Klikněte pro odstranění ze schránky", - - "This file is already added to the Clipboard." => - "Tento soubor je již ve schránce vložen.", - - "Copy files here" => - "Kopírovat soubory na toto místo", - - "Move files here" => - "Přesunout soubory na toto místo", - - "Delete files" => - "Smazat soubory", - - "Clear the Clipboard" => - "Vyčistit schránku", - - "Are you sure you want to delete all files in the Clipboard?" => - "Jste si jistý že chcete vymazat všechny soubory ze schránky?", - - "Copy {count} files" => - "Kopírovat {count} souborů", - - "Move {count} files" => - "Přesunout {count} souborů", - - "Add to Clipboard" => - "Vložit do schránky", - + "You don't have permissions to upload files." => "Nemáte práva pro nahrávání souborů.", + "You don't have permissions to browse server." => "Nemáte práva pro prohlížení serveru.", + "Cannot move uploaded file to target folder." => "Nelze přesunout soubor do určeného adresáře.", + "Unknown error." => "Neznámá chyba.", + "The uploaded file exceeds {size} bytes." => "Nahraný soubor přesahuje {size} bytů.", + "The uploaded file was only partially uploaded." => "Nahraný soubor byl nahrán pouze částečně.", + "No file was uploaded." => "Žádný soubor nebyl nahrán na server.", + "Missing a temporary folder." => "Chybí dočasný adresář.", + "Failed to write file." => "Soubor se nepodařilo se uložit.", + "Denied file extension." => "Nepodporovaný typ souboru.", + "Unknown image format/encoding." => "Neznámý formát obrázku/encoding.", + "The image is too big and/or cannot be resized." => "Obrázek je příliš velký/nebo nemohl být zmenšen.", + "Cannot create {dir} folder." => "Adresář {dir} nelze vytvořit.", + "Cannot rename the folder." => "Adresář nelze přejmenovat.", + "Cannot write to upload folder." => "Nelze ukládat do adresáře pro nahrávání.", + "Cannot read .htaccess" => "Není možno číst soubor .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Chybný soubor .htaccess. Soubor nelze přepsat!", + "Cannot read upload folder." => "Nelze číst z adresáře pro nahrávání souborů.", + "Cannot access or create thumbnails folder." => "Adresář pro náhledy nelze vytvořit nebo není přístupný.", + "Cannot access or write to upload folder." => "Nelze přistoupit, nebo zapisovat do adresáře pro nahrávání souborů.", + "Please enter new folder name." => "Vložte prosím nové jméno adresáře.", + "Unallowable characters in folder name." => "Nepovolené znaky v názvu adresáře.", + "Folder name shouldn't begins with '.'" => "Jméno adresáře nesmí začínat znakem '.'", + "Please enter new file name." => "Vložte prosím nové jméno souboru.", + "Unallowable characters in file name." => "Nepovolené znaky v názvu souboru.", + "File name shouldn't begins with '.'" => "Název soubor nesmí začínat znakem '.'", + "Are you sure you want to delete this file?" => "Jste si jistý že chcete smazat tento soubor?", + "Are you sure you want to delete this folder and all its content?" => "Jste si jistý že chcete smazat tento adresář a celý jeho obsah?", + "Non-existing directory type." => "Neexistující typ adresáře.", + "Undefined MIME types." => "Nedefinovaný MIME typ souboru.", + "Fileinfo PECL extension is missing." => "Rozříření PECL pro zjištění informací o souboru chybí.", + "Opening fileinfo database failed." => "Načtení informací o souboru selhalo.", + "You can't upload such files." => "Tyto soubory nemůžete nahrát na server.", + "The file '{file}' does not exist." => "Tento soubor '{file}' neexistuje.", + "Cannot read '{file}'." => "Nelze načíst '{file}'.", + "Cannot copy '{file}'." => "Nelze kopírovat '{file}'.", + "Cannot move '{file}'." => "Nelze přesunout '{file}'.", + "Cannot delete '{file}'." => "Nelze smazat '{file}'.", + "Cannot delete the folder." => "Adresář nelze smazat.", + "Click to remove from the Clipboard" => "Klikněte pro odstranění ze schránky", + "This file is already added to the Clipboard." => "Tento soubor je již ve schránce vložen.", + "The files in the Clipboard are not readable." => "Soubory ve schránce nelze načíst.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} souborů ve schránce nelze načíst. Chcete zkopírovat zbylé soubory?", + "The files in the Clipboard are not movable." => "Soubory ve schránce nelze přesunout.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} souborů ve schránce nelze přesunout. Chcete přesunout zbylé soubory?", + "The files in the Clipboard are not removable." => "Soubory ve schránce nelze smazat.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} souborů ve schránce nelze smazat. Chcete smazat zbylé soubory?", + "The selected files are not removable." => "Označené soubory nelze smazat.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} označených souborů nelze smazat. Chcete smazat zbylé soubory?", + "Are you sure you want to delete all selected files?" => "Jste si jistý že chcete smazat vybrané soubory?", + "Failed to delete {count} files/folders." => "Nebylo smazáno {count} souborů/adresářů.", + "A file or folder with that name already exists." => "Soubor nebo adresář s takovým jménem již existuje.", + "Copy files here" => "Kopírovat soubory na toto místo", + "Move files here" => "Přesunout soubory na toto místo", + "Delete files" => "Smazat soubory", + "Clear the Clipboard" => "Vyčistit schránku", + "Are you sure you want to delete all files in the Clipboard?" => "Jste si jistý že chcete vymazat všechny soubory ze schránky?", + "Copy {count} files" => "Kopírovat {count} souborů", + "Move {count} files" => "Přesunout {count} souborů", + "Add to Clipboard" => "Vložit do schránky", + "Inexistant or inaccessible folder." => "Neexistující nebo nepřístupný adresář.", "New folder name:" => "Nový název adresáře:", "New file name:" => "Nový název souboru:", - "Upload" => "Nahrát", "Refresh" => "Obnovit", "Settings" => "Nastavení", "Maximize" => "Maxializovat", "About" => "O aplikaci", "files" => "soubory", + "selected files" => "vybrané soubory", "View:" => "Zobrazit:", "Show:" => "Ukázat:", "Order by:" => "Řadit podle:", "Thumbnails" => "Náhledy", "List" => "Seznam", "Name" => "Jméno", + "Type" => "Typ", "Size" => "Velikost", "Date" => "Datum", "Descending" => "Sestupně", @@ -184,66 +105,23 @@ "Cancel" => "Zrušit", "Select" => "Vybrat", "Select Thumbnail" => "Vybrat náhled", + "Select Thumbnails" => "Vybrat náhled", "View" => "Zobrazit", "Download" => "Stažení", - 'Clipboard' => "Schránka", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Adresář nelze přejmenovat.", - - "Non-existing directory type." => - "Neexistující typ adresáře.", - - "Cannot delete the folder." => - "Adresář nelze smazat.", - - "The files in the Clipboard are not readable." => - "Soubory ve schránce nelze načíst.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} souborů ve schránce nelze načíst. Chcete zkopírovat zbylé soubory?", - - "The files in the Clipboard are not movable." => - "Soubory ve schránce nelze přesunout.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} souborů ve schránce nelze přesunout. Chcete přesunout zbylé soubory?", - - "The files in the Clipboard are not removable." => - "Soubory ve schránce nelze smazat.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} souborů ve schránce nelze smazat. Chcete smazat zbylé soubory?", - - "The selected files are not removable." => - "Označené soubory nelze smazat.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} označených souborů nelze smazat. Chcete smazat zbylé soubory?", - - "Are you sure you want to delete all selected files?" => - "Jste si jistý že chcete smazat vybrané soubory?", - - "Failed to delete {count} files/folders." => - "Nebylo smazáno {count} souborů/adresářů.", - - "A file or folder with that name already exists." => - "Soubor nebo adresář s takovým jménem již existuje.", - - "selected files" => "vybrané soubory", - "Type" => "Typ", - "Select Thumbnails" => "Vybrat náhled", "Download files" => "Stáhnout soubory", - - // SINCE 2.4 - + "Clipboard" => "Schránka", + "Checking for new version..." => "Zkontrolovat novou verzi...", + "Unable to connect!" => "Nelze připojit!", + "Download version {version} now!" => "Stáhnout verzi {version} nyní!", + "KCFinder is up to date!" => "KCFinder je aktuální!", "Licenses:" => "Licence:", "Attention" => "Upozornění", "Question" => "Otázka", "Yes" => "Ano", "No" => "Ne", + "You cannot rename the extension of files!" => "Nemůžete přejmenovat příponu souborů!", + "Uploading file {number} of {count}... {progress}" => "Nahrávám soubor {number} z {count}... {progress}", + "Failed to upload {filename}!" => "Nepodařilo se nahrát soubor {filename}!", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/da.php b/manager/media/browser/mcpuk/lang/da.php old mode 100644 new mode 100755 diff --git a/manager/media/browser/mcpuk/lang/de.php b/manager/media/browser/mcpuk/lang/de.php old mode 100644 new mode 100755 index 6e3d40141d..7318de10a2 --- a/manager/media/browser/mcpuk/lang/de.php +++ b/manager/media/browser/mcpuk/lang/de.php @@ -14,162 +14,83 @@ '_dateTimeMid' => "%a %e %b %Y %I:%M %p", '_dateTimeSmall' => "%d/%m/%Y %I:%M %p", - "You don't have permissions to upload files." => - "Du hast keine Berechtigung Dateien hoch zu laden.", - - "You don't have permissions to browse server." => - "Fehlende Berechtigung.", - - "Cannot move uploaded file to target folder." => - "Kann hochgeladene Datei nicht in den Zielordner verschieben.", - - "Unknown error." => - "Unbekannter Fehler.", - - "The uploaded file exceeds {size} bytes." => - "Die hochgeladene Datei überschreitet die erlaubte Dateigröße von {size} bytes.", - - "The uploaded file was only partially uploaded." => - "Die Datei wurde nur teilweise hochgeladen.", - - "No file was uploaded." => - "Keine Datei hochgeladen.", - - "Missing a temporary folder." => - "Temporärer Ordner fehlt.", - - "Failed to write file." => - "Fehler beim schreiben der Datei.", - - "Denied file extension." => - "Die Dateiendung ist nicht erlaubt.", - - "Unknown image format/encoding." => - "Unbekanntes Bildformat/encoding.", - - "The image is too big and/or cannot be resized." => - "Das Bild ist zu groß und/oder kann nicht verkleinert werden.", - - "Cannot create {dir} folder." => - "Ordner {dir} kann nicht angelegt werden.", - - "Cannot write to upload folder." => - "Kann nicht in den upload Ordner schreiben.", - - "Cannot read .htaccess" => - "Kann .htaccess Datei nicht lesen", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Falsche .htaccess Datei. Die Datei kann nicht geschrieben werden", - - "Cannot read upload folder." => - "Upload Ordner kann nicht gelesen werden.", - - "Cannot access or create thumbnails folder." => - "Kann thumbnails Ordner nicht erstellen oder darauf zugreifen.", - - "Cannot access or write to upload folder." => - "Kann nicht auf den upload Ordner zugreifen oder darin schreiben.", - - "Please enter new folder name." => - "Bitte einen neuen Ordnernamen angeben.", - - "Unallowable characters in folder name." => - "Der Ordnername enthält unerlaubte Zeichen.", - - "Folder name shouldn't begins with '.'" => - "Ordnernamen sollten nicht mit '.' beginnen.", - - "Please enter new file name." => - "Bitte gib einen neuen Dateinamen an.", - - "Unallowable characters in file name." => - "Der Dateiname enthält unerlaubte Zeichen", - - "File name shouldn't begins with '.'" => - "Dateinamen sollten nicht mit '.' beginnen.", - - "Are you sure you want to delete this file?" => - "Willst Du die Datei wirklich löschen?", - - "Are you sure you want to delete this folder and all its content?" => - "Willst Du wirklich diesen Ordner und seinen gesamten Inhalt löschen?", - - "Inexistant or inaccessible folder." => - "Ordnertyp existiert nicht.", - - "Undefined MIME types." => - "Unbekannte MIME Typen.", - - "Fileinfo PECL extension is missing." => - "PECL extension für Dateiinformationen fehlt", - - "Opening fileinfo database failed." => - "Öffnen der Dateiinfo Datenbank fehlgeschlagen.", - - "You can't upload such files." => - "Du kannst solche Dateien nicht hochladen.", - - "The file '{file}' does not exist." => - "Die Datei '{file}' existiert nicht.", - - "Cannot read '{file}'." => - "Kann Datei '{file}' nicht lesen.", - - "Cannot copy '{file}'." => - "Kann Datei '{file}' nicht kopieren.", - - "Cannot move '{file}'." => - "Kann Datei '{file}' nicht verschieben.", - - "Cannot delete '{file}'." => - "Kann Datei '{file}' nicht löschen.", - - "Click to remove from the Clipboard" => - "Zum entfernen aus der Zwischenablage, hier klicken.", - - "This file is already added to the Clipboard." => - "Diese Datei wurde bereits der Zwischenablage hinzugefügt.", - - "Copy files here" => - "Kopiere Dateien hier hin.", - - "Move files here" => - "Verschiebe Dateien hier hin.", - - "Delete files" => - "Lösche Dateien.", - - "Clear the Clipboard" => - "Zwischenablage leeren", - - "Are you sure you want to delete all files in the Clipboard?" => - "Willst Du wirklich alle Dateien in der Zwischenablage löschen?", - - "Copy {count} files" => - "Kopiere {count} Dateien", - - "Move {count} files" => - "Verschiebe {count} Dateien", - - "Add to Clipboard" => - "Der Zwischenablage hinzufügen", - + "You don't have permissions to upload files." => "Du hast keine Berechtigung Dateien hoch zu laden.", + "You don't have permissions to browse server." => "Fehlende Berechtigung.", + "Cannot move uploaded file to target folder." => "Kann hochgeladene Datei nicht in den Zielordner verschieben.", + "Unknown error." => "Unbekannter Fehler.", + "The uploaded file exceeds {size} bytes." => "Die hochgeladene Datei überschreitet die erlaubte Dateigröße von {size} bytes.", + "The uploaded file was only partially uploaded." => "Die Datei wurde nur teilweise hochgeladen.", + "No file was uploaded." => "Keine Datei hochgeladen.", + "Missing a temporary folder." => "Temporärer Ordner fehlt.", + "Failed to write file." => "Fehler beim schreiben der Datei.", + "Denied file extension." => "Die Dateiendung ist nicht erlaubt.", + "Unknown image format/encoding." => "Unbekanntes Bildformat/encoding.", + "The image is too big and/or cannot be resized." => "Das Bild ist zu groß und/oder kann nicht verkleinert werden.", + "Cannot create {dir} folder." => "Ordner {dir} kann nicht angelegt werden.", + "Cannot rename the folder." => "Der Ordner kann nicht umbenannt werden.", + "Cannot write to upload folder." => "Kann nicht in den upload Ordner schreiben.", + "Cannot read .htaccess" => "Kann .htaccess Datei nicht lesen", + "Incorrect .htaccess file. Cannot rewrite it!" => "Falsche .htaccess Datei. Die Datei kann nicht geschrieben werden", + "Cannot read upload folder." => "Upload Ordner kann nicht gelesen werden.", + "Cannot access or create thumbnails folder." => "Kann thumbnails Ordner nicht erstellen oder darauf zugreifen.", + "Cannot access or write to upload folder." => "Kann nicht auf den upload Ordner zugreifen oder darin schreiben.", + "Please enter new folder name." => "Bitte einen neuen Ordnernamen angeben.", + "Unallowable characters in folder name." => "Der Ordnername enthält unerlaubte Zeichen.", + "Folder name shouldn't begins with '.'" => "Ordnernamen sollten nicht mit '.' beginnen.", + "Please enter new file name." => "Bitte gib einen neuen Dateinamen an.", + "Unallowable characters in file name." => "Der Dateiname enthält unerlaubte Zeichen", + "File name shouldn't begins with '.'" => "Dateinamen sollten nicht mit '.' beginnen.", + "Are you sure you want to delete this file?" => "Willst Du die Datei wirklich löschen?", + "Are you sure you want to delete this folder and all its content?" => "Willst Du wirklich diesen Ordner und seinen gesamten Inhalt löschen?", + "Non-existing directory type." => "Der Ordner Typ existiert nicht.", + "Undefined MIME types." => "Unbekannte MIME Typen.", + "Fileinfo PECL extension is missing." => "PECL extension für Dateiinformationen fehlt", + "Opening fileinfo database failed." => "Öffnen der Dateiinfo Datenbank fehlgeschlagen.", + "You can't upload such files." => "Du kannst solche Dateien nicht hochladen.", + "The file '{file}' does not exist." => "Die Datei '{file}' existiert nicht.", + "Cannot read '{file}'." => "Kann Datei '{file}' nicht lesen.", + "Cannot copy '{file}'." => "Kann Datei '{file}' nicht kopieren.", + "Cannot move '{file}'." => "Kann Datei '{file}' nicht verschieben.", + "Cannot delete '{file}'." => "Kann Datei '{file}' nicht löschen.", + "Cannot delete the folder." => "Der Ordner kann nicht gelöscht werden.", + "Click to remove from the Clipboard" => "Zum entfernen aus der Zwischenablage, hier klicken.", + "This file is already added to the Clipboard." => "Diese Datei wurde bereits der Zwischenablage hinzugefügt.", + "The files in the Clipboard are not readable." => "Die Dateien in der Zwischenablage können nicht gelesen werden.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} Dateien in der Zwischenablage sind nicht lesbar. Möchtest Du die übrigen trotzdem kopieren?", + "The files in the Clipboard are not movable." => "Die Dateien in der Zwischenablage können nicht verschoben werden.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} Dateien in der Zwischenablage sind nicht verschiebbar. Möchtest Du die übrigen trotzdem verschieben?", + "The files in the Clipboard are not removable." => "Die Dateien in der Zwischenablage können nicht gelöscht werden.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} Dateien in der Zwischenablage können nicht gelöscht werden. Möchtest Du die übrigen trotzdem löschen?", + "The selected files are not removable." => "Die ausgewählten Dateien können nicht gelöscht werden.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} der ausgewählten Dateien können nicht gelöscht werden. Möchtest Du die übrigen trotzdem löschen?", + "Are you sure you want to delete all selected files?" => "Möchtest Du wirklich alle ausgewählten Dateien löschen?", + "Failed to delete {count} files/folders." => "Konnte {count} Dateien/Ordner nicht löschen.", + "A file or folder with that name already exists." => "Eine Datei oder ein Ordner mit dem Namen existiert bereits.", + "Copy files here" => "Kopiere Dateien hier hin.", + "Move files here" => "Verschiebe Dateien hier hin.", + "Delete files" => "Lösche Dateien.", + "Clear the Clipboard" => "Zwischenablage leeren", + "Are you sure you want to delete all files in the Clipboard?" => "Willst Du wirklich alle Dateien in der Zwischenablage löschen?", + "Copy {count} files" => "Kopiere {count} Dateien", + "Move {count} files" => "Verschiebe {count} Dateien", + "Add to Clipboard" => "Der Zwischenablage hinzufügen", + "Inexistant or inaccessible folder." => "Ordnertyp existiert nicht.", "New folder name:" => "Neuer Ordnername:", "New file name:" => "Neuer Dateiname:", - "Upload" => "Hochladen", "Refresh" => "Aktualisieren", "Settings" => "Einstellungen", "Maximize" => "Maximieren", "About" => "Über", "files" => "Dateien", + "selected files" => "ausgewählte Dateien", "View:" => "Ansicht:", "Show:" => "Zeige:", "Order by:" => "Ordnen nach:", "Thumbnails" => "Miniaturansicht", "List" => "Liste", "Name" => "Name", + "Type" => "Typ", "Size" => "Größe", "Date" => "Datum", "Descending" => "Absteigend", @@ -184,58 +105,23 @@ "Cancel" => "Abbruch", "Select" => "Auswählen", "Select Thumbnail" => "Wähle Miniaturansicht", + "Select Thumbnails" => "Wähle Miniaturansicht", "View" => "Ansicht", "Download" => "Download", - 'Clipboard' => "Zwischenablage", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Der Ordner kann nicht umbenannt werden.", - - "Non-existing directory type." => - "Der Ordner Typ existiert nicht.", - - "Cannot delete the folder." => - "Der Ordner kann nicht gelöscht werden.", - - "The files in the Clipboard are not readable." => - "Die Dateien in der Zwischenablage können nicht gelesen werden.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} Dateien in der Zwischenablage sind nicht lesbar. Möchtest Du die Übrigen trotzdem kopieren?", - - "The files in the Clipboard are not movable." => - "Die Dateien in der Zwischenablage können nicht verschoben werden.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} Dateien in der Zwischenablage sind nicht verschiebbar. Möchtest Du die Übrigen trotzdem verschieben?", - - "The files in the Clipboard are not removable." => - "Die Dateien in der Zwischenablage können nicht gelöscht werden.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} Dateien in der Zwischenablage können nicht gelöscht werden. Möchtest Du die Übrigen trotzdem löschen?", - - "The selected files are not removable." => - "Die ausgewählten Dateien können nicht gelöscht werden.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} der ausgewählten Dateien können nicht gelöscht werden. Möchtest Du die Übrigen trotzdem löschen?", - - "Are you sure you want to delete all selected files?" => - "Möchtest Du wirklich alle ausgewählten Dateien löschen?", - - "Failed to delete {count} files/folders." => - "Konnte {count} Dateien/Ordner nicht löschen.", - - "A file or folder with that name already exists." => - "Eine Datei oder ein Ordner mit dem Namen existiert bereits.", - - "selected files" => "ausgewählte Dateien", - "Type" => "Typ", - "Select Thumbnails" => "Wähle Miniaturansicht", "Download files" => "Dateien herunterladen", + "Clipboard" => "Zwischenablage", + "Checking for new version..." => "Nach neuer Version suchen", + "Unable to connect!" => "Kann keine Verbindung herstellen!", + "Download version {version} now!" => "Version {version} herunterladen!", + "KCFinder is up to date!" => "KCFinder ist aktuell!", + "Licenses:" => "Lizenz", + "Attention" => "Achtung", + "Question" => "Frage", + "Yes" => "Ja", + "No" => "Nein", + "You cannot rename the extension of files!" => "Die Umbenennung von Datei-Erweiterungen ist nicht möglich!", + "Uploading file {number} of {count}... {progress}" => "Lade Datei {number} von {count} hinauf ... {progress}", + "Failed to upload {filename}!" => "Upload von {filename} fehlgeschlagen!", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/el.php b/manager/media/browser/mcpuk/lang/el.php old mode 100644 new mode 100755 index 8e7f5686be..c8eb9ab6ae --- a/manager/media/browser/mcpuk/lang/el.php +++ b/manager/media/browser/mcpuk/lang/el.php @@ -239,6 +239,10 @@ // SINCE 2.4 + "Checking for new version..." => "Ελεγχος για νέα έκδοση...", + "Unable to connect!" => "Αδύνατη η σύνδεση!", + "Download version {version} now!" => "Κατεβάστε την έκδοση {version} τώρα!", + "KCFinder is up to date!" => "Το KCFinder είναι ενημερωμένο με τη πιο πρόσφατη έκδοση!", "Licenses:" => "Άδειες:", "Attention" => "Προσοχή", "Question" => "Ερώτηση", diff --git a/manager/media/browser/mcpuk/lang/en.php b/manager/media/browser/mcpuk/lang/en.php old mode 100644 new mode 100755 index 83e196fac8..ba12dcf369 --- a/manager/media/browser/mcpuk/lang/en.php +++ b/manager/media/browser/mcpuk/lang/en.php @@ -4,9 +4,9 @@ * * @desc Default English localization * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/lang/es.php b/manager/media/browser/mcpuk/lang/es.php old mode 100644 new mode 100755 index 16edda511b..a86f22efc3 --- a/manager/media/browser/mcpuk/lang/es.php +++ b/manager/media/browser/mcpuk/lang/es.php @@ -110,6 +110,10 @@ "Download" => "Descargar", "Download files" => "Descargar archivos", "Clipboard" => "Portapapeles", + "Checking for new version..." => "Verificando nuevas versiones...", + "Unable to connect!" => "¡No se pudo realizar la conexión!", + "Download version {version} now!" => "¡Descarga la versión {version} ahora!", + "KCFinder is up to date!" => "¡KCFinder está actualizado!", "Licenses:" => "Licencias:", "Attention" => "Atención", "Question" => "Pregunta", diff --git a/manager/media/browser/mcpuk/lang/et.php b/manager/media/browser/mcpuk/lang/et.php new file mode 100755 index 0000000000..3553b16b7e --- /dev/null +++ b/manager/media/browser/mcpuk/lang/et.php @@ -0,0 +1,127 @@ + "et_EE.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%e. %B %Y %H:%M", + '_dateTimeMid' => "%e. %b %Y %H:%M", + '_dateTimeSmall' => "%d.%m.%Y %H:%M", + + "You don't have permissions to upload files." => "Sul pole failide üleslaadimiseks vajalikke õiguseid.", + "You don't have permissions to browse server." => "Sul ei ole serveri sirvimiseks vajalikke õiguseid.", + "Cannot move uploaded file to target folder." => "Üleslaetud faili liigutamine ebaõnnestus.", + "Unknown error." => "Tundmatu viga.", + "The uploaded file exceeds {size} bytes." => "Üleslaetud fail on suurem kui lubatud {size} baiti", + "The uploaded file was only partially uploaded." => "Fail laeti üles ainult osaliselt.", + "No file was uploaded." => "Faili ei õnnestunud üles laadida.", + "Missing a temporary folder." => "Failide ajutine kataloog on puudu.", + "Failed to write file." => "Faili loomine ebaõnnestus.", + "Denied file extension." => "Faili laiend ei ole lubatud.", + "Unknown image format/encoding." => "Tundmatu pildi formaat/kodeering.", + "The image is too big and/or cannot be resized." => "Pilt on liiga suur ja/või selle suurust ei saa muuta.", + "Cannot create {dir} folder." => "Kataloogi {dir} loomine ebaõnnestus.", + "Cannot rename the folder." => "Kataloogi ei saa ümber nimetada.", + "Cannot write to upload folder." => "Üleslaadimise kataloogi ei saa kirjutada.", + "Cannot read .htaccess" => ".htaccess faili ei saa lugeda.", + "Incorrect .htaccess file. Cannot rewrite it!" => "Vigane .htacess fail. Ümberkirjutamine ebaõnnestus.", + "Cannot read upload folder." => "Üleslaadimise kataloogi ei saa lugeda.", + "Cannot access or create thumbnails folder." => "Pisipiltide kataloogi ei saa lugeda või seda luua.", + "Cannot access or write to upload folder." => "Üleslaadimise kataloogi ei saa lugeda või seda luua.", + "Please enter new folder name." => "Sisesta uus kataloogi nimi.", + "Unallowable characters in folder name." => "Keelatud tähemärk kataloogi nimes.", + "Folder name shouldn't begins with '.'" => "Kataloogi nimi ei tohi alata punktiga.", + "Please enter new file name." => "Sisesta uus faili nimi.", + "Unallowable characters in file name." => "Keelatud tähemärgid faili nimes.", + "File name shouldn't begins with '.'" => "Failinimi ei tohi alata punktiga.", + "Are you sure you want to delete this file?" => "Oled sa kindel, et soovid selle faili kustutada?", + "Are you sure you want to delete this folder and all its content?" => "Oled sa kindel, et soovid selle kataloogi koos sisuga kustutada?", + "Non-existing directory type." => "Olematu kataloogi tüüp.", + "Undefined MIME types." => "Määramata MIME tüüp.", + "Fileinfo PECL extension is missing." => "Fileinfo PECL laiendus on puudu.", + "Opening fileinfo database failed." => "Failiinfo andmebaasi avamine ebaõnnestus.", + "You can't upload such files." => "Selliseid faile ei saa üles laadida.", + "The file '{file}' does not exist." => "Faili '{file}' ei ole olemas.", + "Cannot read '{file}'." => "Faili '{file}' ei õnnestunud lugeda.", + "Cannot copy '{file}'." => "Faili '{file}' ei õnnestunud kopeerida.", + "Cannot move '{file}'." => "Faili '{file}' ei õnnestunud liigutada.", + "Cannot delete '{file}'." => "Faili '{file}' ei õnnestunud kustutada.", + "Cannot delete the folder." => "Kataloogi ei saa kustutada.", + "Click to remove from the Clipboard" => "Kliki, et eemaldada lõikelaualt.", + "This file is already added to the Clipboard." => "Fail on juba lõikelauale lisatud.", + "The files in the Clipboard are not readable." => "Lõikelaual olevad failid ei ole loetavad.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} faili lõikelaual ei ole loetavad. Kas sa soovid ülejäänud kopeerida?", + "The files in the Clipboard are not movable." => "Lõikelaul olevad failid ei ole liigutatavad.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} faili lõikelaual ei ole liigutatavad. Kas sa soovid ülejäänud liigutada?", + "The files in the Clipboard are not removable." => "Lõikelaul olevad failid ei ole kustutatavad.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} faili lõikelaual ei ole kustutatavad. Kas sa soovid ülejäänud kustutada?", + "The selected files are not removable." => "Valitud faile ei saa kustutada.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} valitud faili ei saa kustutada. Kas sa soovid ülejäänud kustutada?", + "Are you sure you want to delete all selected files?" => "Oled sa kindel, et soovid kõik valitud failid kustutada?", + "Failed to delete {count} files/folders." => "{count} faili/kataloogi kustutamine ebaõnnestus.", + "A file or folder with that name already exists." => "Selle nimega fail/kataloog on juba olemas.", + "Copy files here" => "Kopeeri failid siia", + "Move files here" => "Liiguta failid siia", + "Delete files" => "Kustuta failid", + "Clear the Clipboard" => "Tühjenda lõikelaud", + "Are you sure you want to delete all files in the Clipboard?" => "Oled sa kindel, et soovid kustutada kõik lõikelaual olevad failid?", + "Copy {count} files" => "Kopeeri {count} faili", + "Move {count} files" => "Liiguta {count} faili", + "Add to Clipboard" => "Lisa lõikelauale", + "Inexistant or inaccessible folder." => "Olematu või ligipääsmatu kataloog.", + "New folder name:" => "Uus kataloogi nimi:", + "New file name:" => "Uus faili nimi:", + "Upload" => "Lae üles", + "Refresh" => "Värskenda", + "Settings" => "Seaded", + "Maximize" => "Täisekraan", + "About" => "Info", + "files" => "failid", + "selected files" => "valitud failid", + "View:" => "Vaade:", + "Show:" => "Näita:", + "Order by:" => "Sorteeri:", + "Thumbnails" => "Pisipildid", + "List" => "Nimekiri", + "Name" => "Nimi", + "Type" => "Tüüp", + "Size" => "Suurus", + "Date" => "Kuupäev", + "Descending" => "Kahanev", + "Uploading file..." => "Laen faili...", + "Loading image..." => "Laen pilti...", + "Loading folders..." => "Laen katalooge...", + "Loading files..." => "Laen faile...", + "New Subfolder..." => "Uus alamkataloog...", + "Rename..." => "Nimeta ümber...", + "Delete" => "Kustuta", + "OK" => "OK", + "Cancel" => "Loobu", + "Select" => "Vali", + "Select Thumbnail" => "Vali pisipilt", + "Select Thumbnails" => "Vali pisipildid", + "View" => "Vaata", + "Download" => "Lae alla", + "Download files" => "Lae failid alla", + "Clipboard" => "Lõikelaud", + "Checking for new version..." => "Kontrollin uut versiooni...", + "Unable to connect!" => "Ühendus ebaõnnestus!", + "Download version {version} now!" => "Lae versioon {version} alla!", + "KCFinder is up to date!" => "Uuendusi ei ole!", + "Licenses:" => "Litsentsid:", + "Attention" => "Tähelepanu", + "Question" => "Küsimus", + "Yes" => "Jah", + "No" => "Ei", + "You cannot rename the extension of files!" => "Failide laiendit ei saa muuta!", + "Uploading file {number} of {count}... {progress}" => "Laen üles faili {number} {count}-st... {progress}", + "Failed to upload {filename}!" => "{filename} üleslaadimine ebaõnnestus!", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/fa.php b/manager/media/browser/mcpuk/lang/fa.php old mode 100644 new mode 100755 index 852c26d5c2..09481e590b --- a/manager/media/browser/mcpuk/lang/fa.php +++ b/manager/media/browser/mcpuk/lang/fa.php @@ -246,6 +246,10 @@ // SINCE 2.4 + "Checking for new version..." => "...وجود نسخه جدید را بررسی کن", + "Unable to connect!" => "!مشکل در برقراری ارتباط", + "Download version {version} now!" => "!را دانلود کن {version} همسین حالا نسخه ", + "KCFinder is up to date!" => "!بروز است KCFinder", "Licenses:" => "مجوز", "Attention" => "توجه", "Question" => "پرسش", @@ -255,6 +259,9 @@ // SINCE 2.41 "You cannot rename the extension of files!" => "!شما نمی توانید پسوند فایلها را تغییر دهید", + "Uploading file {number} of {count}... {progress}" => "{progress} ...ارسال شد {count} فایل از {number}", + "Failed to upload {filename}!" => "! {filename} خطا در ارسال" + ); ?> diff --git a/manager/media/browser/mcpuk/lang/fi.php b/manager/media/browser/mcpuk/lang/fi.php new file mode 100755 index 0000000000..ab17048a50 --- /dev/null +++ b/manager/media/browser/mcpuk/lang/fi.php @@ -0,0 +1,127 @@ + "fi_FI.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%A, %e %B, %Y %H:%M", + '_dateTimeMid' => "%a %e %b %Y %H:%M", + '_dateTimeSmall' => "%d.%m.%Y %H:%M", + + "You don't have permissions to upload files." => "Sinulla ei ole oikeuksia ladata tiedostoja.", + "You don't have permissions to browse server." => "Sinulla ei ole riittäviä oikeuksia tiedostoselaimeen.", + "Cannot move uploaded file to target folder." => "Ladattua tiedostoa ei voi siirtää kohdekansioon. ", + "Unknown error." => "Tuntematon virhe.", + "The uploaded file exceeds {size} bytes." => "Tiedoston koko ylittää {size} tavua.", + "The uploaded file was only partially uploaded." => "Valitsemasi tiedosto latautui vain osittain.", + "No file was uploaded." => "Yhtään tiedostoja ei ladattu.", + "Missing a temporary folder." => "Puuttuu väliaikainen kansio.", + "Failed to write file." => "Tiedostoon kirjoitus epäonnistui.", + "Denied file extension." => "Kielletty tiedostopääte.", + "Unknown image format/encoding." => "Tuntematon kuvatiedosto/koodaus.", + "The image is too big and/or cannot be resized." => "Kuva on liian iso, koon muuttaminen ei onnistu.", + "Cannot create {dir} folder." => "Kansiota {dir} ei voi luoda.", + "Cannot rename the folder." => "Kansiota ei voi nimetä uudelleen.", + "Cannot write to upload folder." => "Latauskansioon ei voi kirjoittaa.", + "Cannot read .htaccess" => ".htaccess tiedostoa ei voi lukea.", + "Incorrect .htaccess file. Cannot rewrite it!" => "Virheellinen .htaccess tiedosto. Tiedostoon ei voi kirjoittaa.", + "Cannot read upload folder." => "Latauskansiota ei voi lukea.", + "Cannot access or create thumbnails folder." => "Esikatselukuvien kansiota ei voi lukea tai kirjoittaa.", + "Cannot access or write to upload folder." => "Latauskansiota ei voi lukea tai kirjoittaa.", + "Please enter new folder name." => "Kirjoita uuden kansion nimi.", + "Unallowable characters in folder name." => "Kiellettyjä merkkejä kansion nimessä.", + "Folder name shouldn't begins with '.'" => "Kansion nimi ei voi alkaa '.'", + "Please enter new file name." => "Kirjoita uusi tiedostonimi.", + "Unallowable characters in file name." => "Kiellettyjä merkkejä tiedoston nimessä.", + "File name shouldn't begins with '.'" => "Tiedoston nimi ei voi alkaa '.'", + "Are you sure you want to delete this file?" => "Haluatko varmasti poistaa tiedoston?", + "Are you sure you want to delete this folder and all its content?" => "Haluatko varmasti poistaa tiedoston sekä kaiken sen sisällön?", + "Non-existing directory type." => "Hakemisto tyyppi ei ole olemassa.", + "Undefined MIME types." => "Määrittämättömät MIME tyypit.", + "Fileinfo PECL extension is missing." => "Fileinfo PECL pääte puuttuu.", + "Opening fileinfo database failed." => "Opening fileinfo database failed.", + "You can't upload such files." => "Tiedostoja ei voi ladata.", + "The file '{file}' does not exist." => "Tiedostoa '{file}' ei ole luotu.", + "Cannot read '{file}'." => "Tiedostoa '{file}' ei voi lukea.", + "Cannot copy '{file}'." => "Tiedostoa '{file}' ei voi kopioda.", + "Cannot move '{file}'." => "Tiedostoa '{file}' ei voi siirtää.", + "Cannot delete '{file}'." => "Tiedostoa '{file}' ei voi poistaa.", + "Cannot delete the folder." => "Kansiota ei voi poistaa.", + "Click to remove from the Clipboard" => "Klikkaa poistaaksesi Leikepöydältä.", + "This file is already added to the Clipboard." => "Tiedosto on jo lisätty Leikepöydälle.", + "The files in the Clipboard are not readable." => "Leikepöydän tiedostot eivät ole luettavissa.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi lukea. Haluatko kopioida loput?", + "The files in the Clipboard are not movable." => "Leikepöydän tiedostoja ei voi siirtää.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi siirtää. Haluatko siirtää loput?", + "The files in the Clipboard are not removable." => "Leikepöydän tiedostoja ei voi poistaa.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi poistaa. Haluatko siirtää loput?", + "The selected files are not removable." => "Valittuja tiedostoja ei voi poistaa.", + "{count} selected files are not removable. Do you want to delete the rest?" => "Leikepöydällä on {count} tiedostoa joita ei voi poistaa. Haluatko poistaa loput?", + "Are you sure you want to delete all selected files?" => "Haluatko varmasti poistaa kaikki valitut tiedostot?", + "Failed to delete {count} files/folders." => "{count} tiedoston/kansion poistaminen epäonnistui.", + "A file or folder with that name already exists." => "Tiedosto tai kansio nimellä on jo luoto.", + "Copy files here" => "Kopio tähän", + "Move files here" => "Siirrä tähän", + "Delete files" => "Poista tiedostot", + "Clear the Clipboard" => "Pyyhi leikepöytä.", + "Are you sure you want to delete all files in the Clipboard?" => "Haluatko varmasti poistaa kaikki tiedostot Leikepöydältä?", + "Copy {count} files" => "Kopio {count} tiedostoa", + "Move {count} files" => "Siirrä {count} tiedostoa", + "Add to Clipboard" => "Lisää Leikepöydälle", + "Inexistant or inaccessible folder." => "Kansiota ei ole olemassa tai sitä ei voi avata.", + "New folder name:" => "Uusi kansion nimi:", + "New file name:" => "Uusi tiedostonimi:", + "Upload" => "Lataa", + "Refresh" => "Päivitä", + "Settings" => "Asetukset", + "Maximize" => "Koko ruutu", + "About" => "Lisätietoja", + "files" => "tiedostot", + "selected files" => "valitut tiedostot", + "View:" => "Näkymä:", + "Show:" => "Näytä:", + "Order by:" => "Järjestä:", + "Thumbnails" => "Esikatselukuvat", + "List" => "Lista", + "Name" => "Nimi", + "Type" => "Tyyppi", + "Size" => "Koko", + "Date" => "Päiväys", + "Descending" => "Laskeva", + "Uploading file..." => "Siirretään tiedostoa...", + "Loading image..." => "Ladataan tiedostoa...", + "Loading folders..." => "Ladataan kansioita...", + "Loading files..." => "Ladataan tiedostoja...", + "New Subfolder..." => "Uusi alikansio...", + "Rename..." => "Nimeä uudelleen...", + "Delete" => "Poista", + "OK" => "OK", + "Cancel" => "Peru", + "Select" => "Valitse", + "Select Thumbnail" => "Valitse esikatselukuva", + "Select Thumbnails" => "Valitse esikatselukuvat", + "View" => "Näytä", + "Download" => "Lataa", + "Download files" => "Lataa tiedostot", + "Clipboard" => "Leikepöytä", + "Checking for new version..." => "Tarkastetaan uusin versio...", + "Unable to connect!" => "Yhteys epäonnistui!", + "Download version {version} now!" => "Lataa versio {version} nyt!", + "KCFinder is up to date!" => "KCFinder uusin versio on käytössä!", + "Licenses:" => "Lisenssit:", + "Attention" => "Huomio", + "Question" => "Kysymys", + "Yes" => "Kyllä", + "No" => "Ei", + "You cannot rename the extension of files!" => "Et voi nimetä uudelleen tiedostopäätettä!", + "Uploading file {number} of {count}... {progress}" => "Siirretään tiedostoa {number}/{count} ... {progress}", + "Failed to upload {filename}!" => "Siirto epäonnistui {filename}!", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/fr.php b/manager/media/browser/mcpuk/lang/fr.php old mode 100644 new mode 100755 index f14a1f20c7..ac33d22d14 --- a/manager/media/browser/mcpuk/lang/fr.php +++ b/manager/media/browser/mcpuk/lang/fr.php @@ -2,6 +2,7 @@ /** French localization file for KCFinder * author: Damien Barrère + * update: Samuel Jobard */ $lang = array( @@ -10,171 +11,92 @@ '_charset' => "utf-8", // Browser charset // Date time formats. See http://www.php.net/manual/en/function.strftime.php - '_dateTimeFull' => "%A, %e %B, %Y %H:%M", + '_dateTimeFull' => "%A %e %B %Y %H:%M", '_dateTimeMid' => "%a %e %b %Y %H:%M", - '_dateTimeSmall' => "%d.%m.%Y %H:%M", - - "You don't have permissions to upload files." => - "Vous n'avez pas les droits nécessaires pour envoyer des fichiers.", - - "You don't have permissions to browse server." => - "Vous n'avez pas les droits nécessaires pour parcourir le serveur.", - - "Cannot move uploaded file to target folder." => - "Impossible de déplacer le fichier téléchargé vers le répertoire de destination.", - - "Unknown error." => - "Erreur inconnue.", - - "The uploaded file exceeds {size} bytes." => - "Le fichier envoyé dépasse la taille maximale de {size} octects.", - - "The uploaded file was only partially uploaded." => - "Le fichier envoyé ne l'a été que partiellement.", - - "No file was uploaded." => - "Aucun fichier n'a été envoyé", - - "Missing a temporary folder." => - "Il manque un répertoire temporaire.", - - "Failed to write file." => - "Impossible de créer le fichier.", - - "Denied file extension." => - "Type d'extension de fichier interdit.", - - "Unknown image format/encoding." => - "Format/encodage d'image inconnu.", - - "The image is too big and/or cannot be resized." => - "Image trop grande et/ou impossible de la redimensionner.", - - "Cannot create {dir} folder." => - "Impossible de créer le répertoire {dir}.", - - "Cannot write to upload folder." => - "Impossible d'écrire dans le répertoire de destination.", - - "Cannot read .htaccess" => - "Impossible de lire le fichier .htaccess", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Fichier .htaccess incorrect. Réécriture du fichier impossible!", - - "Cannot read upload folder." => - "Impossible de lire le répertoire d'envoi.", - - "Cannot access or create thumbnails folder." => - "Impossible d'accéder ou de créer le répertoire des miniatures.", - - "Cannot access or write to upload folder." => - "Impossible d'accèder ou d'écrire dans le répertoire d'envoi.", - - "Please enter new folder name." => - "Merci d'entrer le nouveau nom de dossier.", - - "Unallowable characters in folder name." => - "Caractères non autorisés dans le nom du dossier.", - - "Folder name shouldn't begins with '.'" => - "Le nom du dossier ne peut pas commencer par '.'", - - "Please enter new file name." => - "Merci d'entrer le nouveau nom de fichier", - - "Unallowable characters in file name." => - "Caractères non autorisés dans le nom du fichier.", - - "File name shouldn't begins with '.'" => - "Le nom du fichier ne peut pas commencer par '.'", - - "Are you sure you want to delete this file?" => - "Êtes vous sûr du vouloir supprimer ce fichier?", - - "Are you sure you want to delete this folder and all its content?" => - "Êtes vous sûr du vouloir supprimer ce répertoire et tous les fichiers qu'il contient?", - - "Non-existing directory type." => - "Type de répertoire inexistant.", - - "Undefined MIME types." => - "MIME types non déclarés.", - - "Fileinfo PECL extension is missing." => - "L'extension' Fileinfo PECL est manquante.", - - "Opening fileinfo database failed." => - "Ouverture de la base de données fileinfo echouée.", - - "You can't upload such files." => - "Vous ne pouvez pas envoyer de tels fichiers.", - - "The file '{file}' does not exist." => - "Le fichier '{file}' n'existe pas.", - - "Cannot read '{file}'." => - "Impossible de lire le fichier '{file}'.", - - "Cannot copy '{file}'." => - "Impossible de copier le fichier '{file}'.", - - "Cannot move '{file}'." => - "Impossible de déplacer le fichier '{file}'.", - - "Cannot delete '{file}'." => - "Impossible de supprimer le fichier '{file}'.", - - "Click to remove from the Clipboard" => - "Cliquez pour enlever du presse-papier", - - "This file is already added to the Clipboard." => - "Ce fihier a déja été ajouté au presse-papier.", - - "Copy files here" => - "Copier les fichier ici", - - "Move files here" => - "Déplacer le fichiers ici", - - "Delete files" => - "Supprimer les fichiers", - - "Clear the Clipboard" => - "Vider le presse-papier", - - "Are you sure you want to delete all files in the Clipboard?" => - "Êtes vous sûr de vouloir supprimer tous les fichiers du presse-papier?", - - "Copy {count} files" => - "Copie de {count} fichiers", - - "Move {count} files" => - "Déplacement de {count} fichiers", - - "Add to Clipboard" => - "Ajouter au presse-papier", - + '_dateTimeSmall' => "%d/%m/%Y %H:%M", + + "You don't have permissions to upload files." => "Vous n'avez pas les droits nécessaires pour télécharger des fichiers.", + "You don't have permissions to browse server." => "Vous n'avez pas les droits nécessaires pour parcourir le serveur.", + "Cannot move uploaded file to target folder." => "Impossible de déplacer le fichier téléchargé vers le dossier de destination.", + "Unknown error." => "Erreur inconnue.", + "The uploaded file exceeds {size} bytes." => "Le fichier envoyé dépasse la taille maximale de {size} octects.", + "The uploaded file was only partially uploaded." => "Le fichier n'a été que partiellement téléchargé.", + "No file was uploaded." => "Aucun fichier n'a été téléchargé.", + "Missing a temporary folder." => "Dossier temporaire absent.", + "Failed to write file." => "Impossible de créer le fichier.", + "Denied file extension." => "Extension non autorisée.", + "Unknown image format/encoding." => "Format/encodage d'image inconnu.", + "The image is too big and/or cannot be resized." => "L'image est trop grande et/ou ne peut être redimensionnée.", + "Cannot create {dir} folder." => "Impossible de créer le dossier {dir}.", + "Cannot rename the folder." => "Impossible de renommer le dossier.", + "Cannot write to upload folder." => "Impossible d'écrire dans le dossier de destination.", + "Cannot read .htaccess" => "Impossible de lire le fichier .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Fichier .htaccess incorrect. Réécriture du fichier impossible!", + "Cannot read upload folder." => "Impossible de lire le dossier de destination.", + "Cannot access or create thumbnails folder." => "Impossible d'accéder ou de créer le dossier des miniatures.", + "Cannot access or write to upload folder." => "Impossible d'accéder ou d'écrire dans le dossier de destination.", + "Please enter new folder name." => "Merci d'entrer le nouveau nom de dossier.", + "Unallowable characters in folder name." => "Caractères non autorisés dans le nom du dossier.", + "Folder name shouldn't begins with '.'" => "Le nom du dossier ne peut pas commencer par '.'", + "Please enter new file name." => "Merci d'entrer le nouveau nom de fichier", + "Unallowable characters in file name." => "Caractères non autorisés dans le nom du fichier.", + "File name shouldn't begins with '.'" => "Le nom du fichier ne peut pas commencer par '.'", + "Are you sure you want to delete this file?" => "Êtes vous sûr du vouloir supprimer ce fichier?", + "Are you sure you want to delete this folder and all its content?" => "Êtes vous sûr du vouloir supprimer ce dossier et tous les fichiers qu'il contient?", + "Non-existing directory type." => "Type de répertoire inexistant.", + "Undefined MIME types." => "Type MIME indéterminé.", + "Fileinfo PECL extension is missing." => "L'extension Fileinfo PECL est manquante.", + "Opening fileinfo database failed." => "Ouverture de la base de données fileinfo echouée.", + "You can't upload such files." => "Vous ne pouvez pas télécharger ce type de fichiers.", + "The file '{file}' does not exist." => "Le fichier '{file}' n'existe pas.", + "Cannot read '{file}'." => "Impossible de lire le fichier '{file}'.", + "Cannot copy '{file}'." => "Impossible de copier le fichier '{file}'.", + "Cannot move '{file}'." => "Impossible de déplacer le fichier '{file}'.", + "Cannot delete '{file}'." => "Impossible de supprimer le fichier '{file}'.", + "Cannot delete the folder." => "Impossible de supprimer le dossier.", + "Click to remove from the Clipboard" => "Cliquez pour enlever du presse-papier", + "This file is already added to the Clipboard." => "Ce fichier a déja été ajouté au presse-papier.", + "The files in the Clipboard are not readable." => "Les fichiers du presse-papier ne sont pas lisibles.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fichiers dans le presse-papier ne sont pas lisibles. Voulez vous copier le reste?", + "The files in the Clipboard are not movable." => "Les fichiers du presse-papier ne peuvent pas être déplacés.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fichiers du presse-papier ne peuvent pas être déplacées. Voulez vous déplacer le reste?", + "The files in the Clipboard are not removable." => "Les fichiers du presse-papier ne peuvent pas être enlevés.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fichiers du presse-papier ne peuvent pas être enlevés. Voulez vous supprimer le reste?", + "The selected files are not removable." => "Les fichiers sélectionnés ne peuvent pas être enlevés.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} fichier sélectionnés ne peuvent pas être enlevés. Voulez vous supprimer le reste?", + "Are you sure you want to delete all selected files?" => "Êtes vous sûr de vouloir supprimer tous les fichiers sélectionnés?", + "Failed to delete {count} files/folders." => "Echec de la suppression de {count} fichiers/dossiers.", + "A file or folder with that name already exists." => "Un fichier/dossier du même nom existe déja.", + "Copy files here" => "Copier les fichiers ici", + "Move files here" => "Déplacer les fichiers ici", + "Delete files" => "Supprimer les fichiers", + "Clear the Clipboard" => "Vider le presse-papier", + "Are you sure you want to delete all files in the Clipboard?" => "Êtes vous sûr de vouloir supprimer tous les fichiers du presse-papier?", + "Copy {count} files" => "Copie de {count} fichiers", + "Move {count} files" => "Déplacement de {count} fichiers", + "Add to Clipboard" => "Ajouter au presse-papier", + "Inexistant or inaccessible folder." => "Dossier inexistant ou innacessible.", "New folder name:" => "Nom du nouveau dossier:", "New file name:" => "Nom du nouveau fichier:", - "Upload" => "Envoyer", - "Refresh" => "Rafraîchir", + "Refresh" => "Actualiser", "Settings" => "Paramètres", "Maximize" => "Agrandir", "About" => "A propos", "files" => "fichiers", + "selected files" => "fichiers sélectionnés", "View:" => "Voir:", "Show:" => "Montrer:", "Order by:" => "Trier par:", "Thumbnails" => "Miniatures", "List" => "Liste", "Name" => "Nom", + "Type" => "Type", "Size" => "Taille", "Date" => "Date", "Descending" => "Décroissant", - "Uploading file..." => "Envoi en cours...", - "Loading image..." => "Chargement de l'image'...", + "Uploading file..." => "Téléchargement en cours...", + "Loading image..." => "Chargement de l'image...", "Loading folders..." => "Chargement des dossiers...", "Loading files..." => "Chargement des fichiers...", "New Subfolder..." => "Nouveau sous-dossier...", @@ -184,66 +106,23 @@ "Cancel" => "Annuler", "Select" => "Sélectionner", "Select Thumbnail" => "Sélectionner la miniature", + "Select Thumbnails" => "Sélectionner les miniatures", "View" => "Voir", "Download" => "Télécharger", - 'Clipboard' => "Presse-papier", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Impossible de renommer le dossier.", - - "Cannot delete the folder." => - "Impossible de supprimer le dossier.", - - "The files in the Clipboard are not readable." => - "Les fichiers du presse-papier ne sont pas lisibles.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} fichiers dans le presse-papier ne sont pas lisibles. Voulez vous copier le reste?", - - "The files in the Clipboard are not movable." => - "Les fichiers du presse-papier ne peuvent pas être déplacés.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} fichiers du presse-papier ne peuvent pas être déplacées. Voulez vous déplacer le reste?", - - "The files in the Clipboard are not removable." => - "Les fichiers du presse-papier ne peuvent pas être enlevés.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} fichiers du presse-papier ne peuvent pas être enlevés. Vouslez vous supprimer le reste?", - - "The selected files are not removable." => - "Les fichiers sélectionnés ne peuvent pas être enlevés.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} fichier sélectionnés ne peuvent pas être enlevés. Voulez vous supprimer le reste?", - - "Are you sure you want to delete all selected files?" => - "Êtes vous sûr de vouloir supprimer tous les fichiers sélectionnés?", - - "Failed to delete {count} files/folders." => - "Supression de {count} fichiers/dossiers impossible.", - - "A file or folder with that name already exists." => - "Un fichier ou dossier ayant ce nom existe déja.", - - "Inexistant or inaccessible folder." => - "Dossier inexistant ou innacessible.", - - "selected files" => "fichiers sélectionnés", - "Type" => "Type", - "Select Thumbnails" => "Sélectionner les miniatures", "Download files" => "Télécharger les fichiers", - - // SINCE 2.4 - + "Clipboard" => "Presse-papier", + "Checking for new version..." => "Vérifier les mises à jours...", + "Unable to connect!" => "Connexion impossible !", + "Download version {version} now!" => "Télécharger la version {version} maintenant !", + "KCFinder is up to date!" => "KCFinder est à jour !", "Licenses:" => "Licences:", "Attention" => "Alerte", "Question" => "Question", "Yes" => "Oui", "No" => "Non", + "You cannot rename the extension of files!" => "Vous ne pouvez modifier l'extension des fichiers !", + "Uploading file {number} of {count}... {progress}" => "Envoi du fichier {number} sur {count}... {progress}", + "Failed to upload {filename}!" => "Échec du téléchargement du fichier {filename} !", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/he.php b/manager/media/browser/mcpuk/lang/he.php new file mode 100755 index 0000000000..56b31a23d0 --- /dev/null +++ b/manager/media/browser/mcpuk/lang/he.php @@ -0,0 +1,127 @@ + "he_IL.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%H:%M %Y %B %e %A", + '_dateTimeMid' => "%H:%M %d/%m/%Y", + '_dateTimeSmall' => "%H:%M %d/%m/%Y", + + "You don't have permissions to upload files." => "אין לך הרשאות להעלות קבצים.", + "You don't have permissions to browse server." => "איך לך הרשאות לצפות בקבצים.", + "Cannot move uploaded file to target folder." => "לא ניתן להעביר את הקבצים שהועלו לתקייה שנבחרה.", + "Unknown error." => "שגיאה לא ידועה.", + "The uploaded file exceeds {size} bytes." => "הקובץ המועלה עובר את הגודל המקסימלי. ({size} בתים).", + "The uploaded file was only partially uploaded." => "הקובץ הועלה חלקית.", + "No file was uploaded." => "לא הועלו קבצים.", + "Missing a temporary folder." => "חסר תקייה זמנית.", + "Failed to write file." => "כתיבת הקובץ נכשלה.", + "Denied file extension." => "סיומת קובץ לא מורשית.", + "Unknown image format/encoding." => "סוג תמונה לא מוכר.", + "The image is too big and/or cannot be resized." => "התמונה גדולה מדי או שלא ניתן למזערה.", + "Cannot create {dir} folder." => "לא יכול ליצור את '{dir}'.", + "Cannot rename the folder." => "לא ניתן לשנות את שם התקיה", + "Cannot write to upload folder." => "לא ניתן לכתובת לתקיית ההעלאה", + "Cannot read .htaccess" => "לא ניתן לקרא את .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "קובץ .htaccess לא חוקי, לא ניתן לשכתב קובץ \\זה.", + "Cannot read upload folder." => "לא ניתן לקרא מתקיית ההעלאות.", + "Cannot access or create thumbnails folder." => "לא ניתן לגשת לתקייה התמונות הממוזערות.", + "Cannot access or write to upload folder." => "לא ניתן לגשת לתקיית ההעלאה.", + "Please enter new folder name." => "אנא בחר בשם לתקייה החדשה.", + "Unallowable characters in folder name." => "אותיות לא מורשות בשם התקיה.", + "Folder name shouldn't begins with '.'" => "שם תקיה אינו יכול להתחיל בנקודה.", + "Please enter new file name." => "אנא הכנס שם לקובץ החדש", + "Unallowable characters in file name." => "אותיות לא מורשות בשם הקובץ.", + "File name shouldn't begins with '.'" => "שם קובץ אינו יכול להתחיל בנקודה.", + "Are you sure you want to delete this file?" => "הנך בטוח שברצונך למחוק קבצים אילו?", + "Are you sure you want to delete this folder and all its content?" => "האם ברצונך למחוק תקיה זו וכל תוכנה?", + "Non-existing directory type." => "סוג תקייה לא קיימת.", + "Undefined MIME types." => "סוג MIME לא מוגדר.", + "Fileinfo PECL extension is missing." => "פרטי PECL חסרים.", + "Opening fileinfo database failed." => "פתיחת מסד פרטי הקבצים נכשלה.", + "You can't upload such files." => "לא ניתן להעלות קבצים מסוג זה.", + "The file '{file}' does not exist." => "הקובץ '{file}' לא קיים.", + "Cannot read '{file}'." => "לא יכול לפתוח '{file}'.", + "Cannot copy '{file}'." => "לא יכול להעתיק '{file}'.", + "Cannot move '{file}'." => "לא יכול להעביר '{file}'.", + "Cannot delete '{file}'." => "לא יכול למחוק '{file}'.", + "Cannot delete the folder." => "לא ניתן למחוק את התקייה", + "Click to remove from the Clipboard" => "לחץ להסיר מהלוח", + "This file is already added to the Clipboard." => "קובץ זה קיים בלוח.", + "The files in the Clipboard are not readable." => "הקבצים בלוח אינם קריאים.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} קבצים בלוח אינם קריאים. להעתיק את השאר?", + "The files in the Clipboard are not movable." => "הקבצים בלוח אינם ניתן להעברה.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} קבצים בלוח אינם ניתן להעברה. להעביר את השאר?", + "The files in the Clipboard are not removable." => "הקבצים בלוח אינם נתנים להסרה.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} קבצים בלוח אינם נתנים להסרה. להסיר את השאר?", + "The selected files are not removable." => "הקבצים הנבחרים אינם נתנים להסרה.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} קבצים בלוח אינם נתנים להסרה. למחוק את השאר?", + "Are you sure you want to delete all selected files?" => "האם ברצונך למחוק את הקבצים בנבחרים?", + "Failed to delete {count} files/folders." => "מחיקת {count} קבצים נכשלה.", + "A file or folder with that name already exists." => "תקייה/קובץ בשם זה כבר קיימים.", + "Copy files here" => "העתק קבצים לכאן", + "Move files here" => "העבר קבצים לכאן", + "Delete files" => "מחק קובץ", + "Clear the Clipboard" => "נקה לוח", + "Are you sure you want to delete all files in the Clipboard?" => "האם ברצונך לרוקן את הלוח?", + "Copy {count} files" => "העתק {count} קבצים.", + "Move {count} files" => "העבר {count} קבצים.", + "Add to Clipboard" => "הוסף ללוח", + "Inexistant or inaccessible folder." => "תקיה או קובץ לא קיימים.", + "New folder name:" => "שם תקיה חדשה:", + "New file name:" => "שם קובץ חדש:", + "Upload" => "העלה", + "Refresh" => "רענן", + "Settings" => "הגדרות", + "Maximize" => "הגדל", + "About" => "אודות", + "files" => "קבצים", + "selected files" => "קבצים מסומנים", + "View:" => "צפה:", + "Show:" => "הראה:", + "Order by:" => "מיין ע\"פ:", + "Thumbnails" => "תמונות ממוזערות", + "List" => "רשימה", + "Name" => "שם", + "Type" => "סוג", + "Size" => "גודל", + "Date" => "תאריך", + "Descending" => "יורד", + "Uploading file..." => "מעלה קבצים...", + "Loading image..." => "טוען תמונות...", + "Loading folders..." => "טוען תקיות...", + "Loading files..." => "טוען קבצים...", + "New Subfolder..." => "תת תקיה חדשה...", + "Rename..." => "שנה שם...", + "Delete" => "מחק", + "OK" => "אישור", + "Cancel" => "ביטול", + "Select" => "סמן", + "Select Thumbnail" => "סמן תמונות ממוזערות", + "Select Thumbnails" => "סמן תמונות ממוזערות", + "View" => "צפה", + "Download" => "הורד", + "Download files" => "הורד קובץ/ים", + "Clipboard" => "לוח", + "Checking for new version..." => "בודק גרסא עדכנית...", + "Unable to connect!" => "שגיאת התחברות!", + "Download version {version} now!" => "הורד גרסא {version} עכשיו!", + "KCFinder is up to date!" => "המערכת עדכנית!", + "Licenses:" => "רשיון", + "Attention" => "לתשומת לב", + "Question" => "שאלה", + "Yes" => "כן", + "No" => "לא", + "You cannot rename the extension of files!" => "לא ניתו לערוך סיומות קבצים!", + "Uploading file {number} of {count}... {progress}" => "מעלה קובץ {number} מתוך {count}... {progress}", + "Failed to upload {filename}!" => "העלאת הקובץ נכשלה!", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/hu.php b/manager/media/browser/mcpuk/lang/hu.php old mode 100644 new mode 100755 index 5528e16d3f..3539f4a5b4 --- a/manager/media/browser/mcpuk/lang/hu.php +++ b/manager/media/browser/mcpuk/lang/hu.php @@ -110,12 +110,18 @@ "Download" => "Letöltés", "Download files" => "Fájlok letöltése", "Clipboard" => "Vágólap", + "Checking for new version..." => "Új verzió keresése ...", + "Unable to connect!" => "Nem lehet csatlakozni!", + "Download version {version} now!" => "Töltse le a {version} verziót most!", + "KCFinder is up to date!" => "Ez a KCFinder verzió a legfrissebb", "Licenses:" => "Licenszek:", "Attention" => "Figyelem", "Question" => "Kérdés", "Yes" => "Igen", "No" => "Nem", "You cannot rename the extension of files!" => "Nem változtathatja meg a fájlok kiterjezstését", + "Uploading file {number} of {count}... {progress}" => "A(z) {number}. fájl feltöltése (összesen {count}) ... {progress}", + "Failed to upload {filename}!" => "Nem sikerült feltölteni a '{filename}' fájlt.", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/id.php b/manager/media/browser/mcpuk/lang/id.php new file mode 100755 index 0000000000..2eebd4726d --- /dev/null +++ b/manager/media/browser/mcpuk/lang/id.php @@ -0,0 +1,127 @@ + "id_ID.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%A, %e %B, %Y %H:%M", + '_dateTimeMid' => "%a %e %b %Y %H:%M", + '_dateTimeSmall' => "%d.%m.%Y %H:%M", + + "You don't have permissions to upload files." => "Anda tidak punya izin untuk mengunggah file.", + "You don't have permissions to browse server." => "Anda tidak punya izin untuk menelusuri server.", + "Cannot move uploaded file to target folder." => "Gagal memindahkan file yang di unggah ke target folder.", + "Unknown error." => "Error yang tidak diketahui.", + "The uploaded file exceeds {size} bytes." => "File yang anda unggah melebihi {ukuran} bytes.", + "The uploaded file was only partially uploaded." => "Hanya sebagian file yang anda unggah telah di upload.", + "No file was uploaded." => "Tidak ada file yang di unggah.", + "Missing a temporary folder." => "Temporary folder hilang.", + "Failed to write file." => "Gagal untuk menulis file.", + "Denied file extension." => "File extension ditolak.", + "Unknown image format/encoding." => "Format gambar/encoding tidak diketahui.", + "The image is too big and/or cannot be resized." => "Gambar terlalu besar dan/atau tidak bisa di ubah ukurannya.", + "Cannot create {dir} folder." => "Gagal membuat {direktori} folder", + "Cannot rename the folder." => "Gagal mengganti nama folder.", + "Cannot write to upload folder." => "Gagal menulis ke server unggah.", + "Cannot read .htaccess" => "Gagal membaca .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Salah .htaccess file. Tidak bisa menulis file itu kembali!", + "Cannot read upload folder." => "Gagal membaca folder unggah.", + "Cannot access or create thumbnails folder." => "Gagal mengakses atau membuat miniatur folder.", + "Cannot access or write to upload folder." => "Gagal mengakses atau menulis ke folder unggah.", + "Please enter new folder name." => "Tolong masukkan nama folder baru.", + "Unallowable characters in folder name." => "Ada karakter yang tidak di izinkan di nama folder.", + "Folder name shouldn't begins with '.'" => "Nama folder seharusnya tidak dimulai dengan '.'", + "Please enter new file name." => "Tolong masukkan nama file baru.", + "Unallowable characters in file name." => "Ada karakter yang tidak di izinkan di nama file.", + "File name shouldn't begins with '.'" => "Nama file seharusnya tidak dimulai dengan '.'", + "Are you sure you want to delete this file?" => "Yakin anda akan menghapus file ini?", + "Are you sure you want to delete this folder and all its content?" => "Yakin anda akan menghapus folder ini dan semua konten nya?", + "Non-existing directory type." => "Jenis direktory tidak ada.", + "Undefined MIME types." => "Jenis MIME tidak diketahui.", + "Fileinfo PECL extension is missing." => "extensi Fileinfo PECL hilang.", + "Opening fileinfo database failed." => "Membuka fileinfo database gagal.", + "You can't upload such files." => "Anda tidak bisa mengunggah file seperti ini.", + "The file '{file}' does not exist." => "File '{file}' tidak ada.", + "Cannot read '{file}'." => "Gagal membaca '{file}'", + "Cannot copy '{file}'." => "Gagal menyalin '{file}'", + "Cannot move '{file}'." => "Gagal pindahkan '{file}'", + "Cannot delete '{file}'." => "Gagal menghapus '{file}'", + "Cannot delete the folder." => "Gagal menghapus folder. ", + "Click to remove from the Clipboard" => "Klik untuk memusnahkan dari Clipboard.", + "This file is already added to the Clipboard." => "File ini memang sudah ditambahkan ke Clipboard.", + "The files in the Clipboard are not readable." => "File-File yang di Clipboard tidak bisa di baca.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{jumlah} file-file di Clipboard tidak bisa di baca. Apakah anda mau menyalin sisa-nya?", + "The files in the Clipboard are not movable." => "File-file yang di clipboard tidak memungkinkan untuk di pindah.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{jumlah} file-file yang di Clipboard tidak bisa di pindah. Apakan anda mau memindahkan sisa-nya?", + "The files in the Clipboard are not removable." => "File file yang di Clipboard tidak memungkinkan untuk di hapus.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{jumlah} file-file di Clipboard tidak memungkinkan untuk di hapus. Apakah anda mau menghapus sisa-nya?", + "The selected files are not removable." => "File-file yang anda pilih tidak memungkinkan untuk di hapus.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{jumlah] file-file yang terpilih tidak memungkinkan untuk di hapus. Apakah anda mau menghapus sisa-nya?", + "Are you sure you want to delete all selected files?" => "Yakin anda akan menghapus semua file-file yang di pilih?", + "Failed to delete {count} files/folders." => "Gagal menghapus {jumlah} file/folder.", + "A file or folder with that name already exists." => "File atau folder dengan nama itu sudah ada.", + "Copy files here" => "Salin file-file kesini", + "Move files here" => "Pindah file-file kesini", + "Delete files" => "Hapus file", + "Clear the Clipboard" => "Bersihkan Clipboard", + "Are you sure you want to delete all files in the Clipboard?" => "Yakin anda akan menghapus semua file-file yang ada di Clipboard?", + "Copy {count} files" => "Salin {jumlah} file-file", + "Move {count} files" => "Pindah {jumlah} file-file", + "Add to Clipboard" => "Tambahkan ke Clipboard", + "Inexistant or inaccessible folder." => "Folder tidak ada atau tidak bisa di akses.", + "New folder name:" => "Nama folder baru:", + "New file name:" => "Nama file baru:", + "Upload" => "Unggah", + "Refresh" => "Refresh", + "Settings" => "Pengaturan", + "Maximize" => "Maksimalkan", + "About" => "Tentang", + "files" => "File", + "selected files" => "File-file yang di pilih", + "View:" => "Lihat:", + "Show:" => "Tampilkan:", + "Order by:" => "Sortir dengan:", + "Thumbnails" => "Miniatur", + "List" => "Daftar", + "Name" => "Nama", + "Type" => "Jenis", + "Size" => "Ukuran", + "Date" => "Tanggal", + "Descending" => "Menurun", + "Uploading file..." => "Mengunggah file...", + "Loading image..." => "Memuat gambar...", + "Loading folders..." => "Memuat folder...", + "Loading files..." => "Memuat file...", + "New Subfolder..." => "Subfolder baru...", + "Rename..." => "Ganti nama...", + "Delete" => "Hapus...", + "OK" => "OK", + "Cancel" => "Batalkan", + "Select" => "Pilih", + "Select Thumbnail" => "Pilih Thumbnail", + "Select Thumbnails" => "Pilih Thumbnails", + "View" => "Lihat", + "Download" => "Unggah", + "Download files" => "Unggah file", + "Clipboard" => "Clipboard", + "Checking for new version..." => "Mengecek untuk versi baru...", + "Unable to connect!" => "Gagal untuk mengkoneksi!", + "Download version {version} now!" => "Unduh versi {versi} sekarang!", + "KCFinder is up to date!" => "KCFinder adalah versi terbaru!", + "Licenses:" => "Lisensi:", + "Attention" => "Perhatian", + "Question" => "Pertanyaan", + "Yes" => "Ya", + "No" => "Tidak", + "You cannot rename the extension of files!" => "Anda tidak bisa mengubah ekstensi file!", + "Uploading file {number} of {count}... {progress}" => "Mengunggah file {nomor} of {jumlah}... {progress)", + "Failed to upload {filename}!" => "Gagal untuk mengunggah {nama file}", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/it.php b/manager/media/browser/mcpuk/lang/it.php old mode 100644 new mode 100755 index a78090e015..557e5b9d02 --- a/manager/media/browser/mcpuk/lang/it.php +++ b/manager/media/browser/mcpuk/lang/it.php @@ -14,169 +14,90 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "Non hai il permesso di caricare files.", - - "You don't have permissions to browse server." => - "Non hai il permesso di elencare i files.", - - "Cannot move uploaded file to target folder." => - "Non puoi spostare il file caricato nella cartella di destinazione", - - "Unknown error." => - "Errore sconosciuto.", - - "The uploaded file exceeds {size} bytes." => - "Il file caricato eccede {size} bytes.", - - "The uploaded file was only partially uploaded." => - "Il file è stato caricato parzialmente.", - - "No file was uploaded." => - "Nessun file è stato caricato", - - "Missing a temporary folder." => - "Cartella temporanea non trovata.", - - "Failed to write file." => - "Fallita la scrittura del file.", - - "Denied file extension." => - "Estensione del file non consentita.", - - "Unknown image format/encoding." => - "Sconosciuto format/encoding immagine.", - - "The image is too big and/or cannot be resized." => - "Immagine troppo grande e/o non può essere rimpicciolita", - - "Cannot create {dir} folder." => - "La cartella {dir} non può essere creata.", - - "Cannot write to upload folder." => - "Cartella di destinazione protetta in scrittura.", - - "Cannot read .htaccess" => - "Impossibile leggere il file .htaccess.", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Il file .htaccess è corrotto. Impossibile riscriverlo!", - - "Cannot read upload folder." => - "Impossibile leggere il contenuto della cartella di destinazione.", - - "Cannot access or create thumbnails folder." => - "Impossibile creare o accedere alla cartella delle miniature.", - - "Cannot access or write to upload folder." => - "Impossibile accedere o scrivere nella cartella di destinazione.", - - "Please enter new folder name." => - "Scrivi il nome della nuova cartella.", - - "Unallowable characters in folder name." => - "Caratteri non permessi nel nome della cartella.", - - "Folder name shouldn't begins with '.'" => - "Il nome della cartella non può iniziare con'.'", - - "Please enter new file name." => - "Inserisci il nuovo nome del file", - - "Unallowable characters in file name." => - "Caratteri non permessi nel nome del file.", - - "File name shouldn't begins with '.'" => - "Il nome del file non può iniziare con '.'", - - "Are you sure you want to delete this file?" => - "Sei sicuro che vuoi cancellare questo file?", - - "Are you sure you want to delete this folder and all its content?" => - "Sei sicuro di voler cancellare questa cartella e il suo contenuto?", - - "Inexistant or inaccessible folder." => - "Tipo di cartella non esistente.", - - "Undefined MIME types." => - "Tipo MIME non definito.", - - "Fileinfo PECL extension is missing." => - "Manca estensione PECL del file.", - - "Opening fileinfo database failed." => - "Apertura del database delle informazioni del file fallita.", - - "You can't upload such files." => - "Non è possibile caricare questi files.", - - "The file '{file}' does not exist." => - "Il file '{file}' non esiste.", - - "Cannot read '{file}'." => - "Impossibile leggere il file '{file}'.", - - "Cannot copy '{file}'." => - "Impossibile copiare il file '{file}'.", - - "Cannot move '{file}'." => - "Impossibile spostare il file '{file}'.", - - "Cannot delete '{file}'." => - "Impossibile cancellare il file '{file}'.", - - "Click to remove from the Clipboard" => - "Click per rimuoverlo dalla Clipboard", - - "This file is already added to the Clipboard." => - "Questo file è già aggiunto alla Clipboard.", - - "Copy files here" => - "Copia i files qui", - - "Move files here" => - "Sposta i files qui", - - "Delete files" => - "Cancella i files", - - "Clear the Clipboard" => - "Pulisci la Clipboard", - - "Are you sure you want to delete all files in the Clipboard?" => - "Sei sicuro che vuoi cancellare tutti i files dalla Clipboard?", - - "Copy {count} files" => - "Copio {count} files", - - "Move {count} files" => - "Sposto {count} files", - - "Add to Clipboard" => - "Aggiungi alla Clipboard", - + "You don't have permissions to upload files." => "Non hai il permesso di caricare files.", + "You don't have permissions to browse server." => "Non hai il permesso di elencare i files.", + "Cannot move uploaded file to target folder." => "Non puoi spostare il file caricato nella cartella di destinazione.", + "Unknown error." => "Errore sconosciuto.", + "The uploaded file exceeds {size} bytes." => "Il file caricato eccede {size} bytes.", + "The uploaded file was only partially uploaded." => "Il file è stato caricato parzialmente.", + "No file was uploaded." => "Nessun file è stato caricato", + "Missing a temporary folder." => "Cartella temporanea non trovata.", + "Failed to write file." => "Scrittura del file fallita.", + "Denied file extension." => "Estensione del file non consentita.", + "Unknown image format/encoding." => "Il format/encoding dell'immagine è sconosciuto.", + "The image is too big and/or cannot be resized." => "L'immagine è troppo grande e/o non può essere rimpicciolita", + "Cannot create {dir} folder." => "La cartella {dir} non può essere creata.", + "Cannot rename the folder." => "Non è possibile rinominare la cartella.", + "Cannot write to upload folder." => "Cartella di destinazione protetta in scrittura.", + "Cannot read .htaccess" => "Impossibile leggere il file .htaccess.", + "Incorrect .htaccess file. Cannot rewrite it!" => "Il file .htaccess è corrotto. Impossibile riscriverlo!", + "Cannot read upload folder." => "Impossibile leggere il contenuto della cartella di destinazione.", + "Cannot access or create thumbnails folder." => "Impossibile creare o accedere alla cartella delle miniature.", + "Cannot access or write to upload folder." => "Impossibile accedere o scrivere nella cartella di destinazione.", + "Please enter new folder name." => "Scrivi il nome della nuova cartella.", + "Unallowable characters in folder name." => "Caratteri non permessi nel nome della cartella.", + "Folder name shouldn't begins with '.'" => "Il nome della cartella non può iniziare con'.'", + "Please enter new file name." => "Inserisci il nuovo nome del file", + "Unallowable characters in file name." => "Caratteri non permessi nel nome del file.", + "File name shouldn't begins with '.'" => "Il nome del file non può iniziare con '.'", + "Are you sure you want to delete this file?" => "Sei sicuro che vuoi cancellare questo file?", + "Are you sure you want to delete this folder and all its content?" => "Sei sicuro di voler cancellare questa cartella e il suo contenuto?", + "Non-existing directory type." => "Il tipo di cartella non esiste.", + "Undefined MIME types." => "Tipo MIME non definito.", + "Fileinfo PECL extension is missing." => "Manca estensione PECL del file.", + "Opening fileinfo database failed." => "Apertura del database delle informazioni del file fallita.", + "You can't upload such files." => "Non è possibile caricare questi files.", + "The file '{file}' does not exist." => "Il file '{file}' non esiste.", + "Cannot read '{file}'." => "Impossibile leggere il file '{file}'.", + "Cannot copy '{file}'." => "Impossibile copiare il file '{file}'.", + "Cannot move '{file}'." => "Impossibile spostare il file '{file}'.", + "Cannot delete '{file}'." => "Impossibile cancellare il file '{file}'.", + "Cannot delete the folder." => "Non è possibile cancellare la cartella.", + "Click to remove from the Clipboard" => "Click per rimuoverlo dalla Clipboard", + "This file is already added to the Clipboard." => "Questo file è già stato aggiunto alla Clipboard.", + "The files in the Clipboard are not readable." => "I files nella Clipboard non sono leggibili.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} files nella Clipboard non sono leggibili. Copiare il resto?", + "The files in the Clipboard are not movable." => "I files nella Clipboard non sono spostabili.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} files nella Clipboard non sono spostabili. Spostare il resto?", + "The files in the Clipboard are not removable." => "I files nella Clipboard non si possono rimuovere.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} files nella Clipboard non si possono rimuovere. Cancellare il resto?", + "The selected files are not removable." => "Il file selezionato non è rimovibile.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} files selezionati non sono rimovibili. Cancellare il resto?", + "Are you sure you want to delete all selected files?" => "Sei sicuro che vuoi cancellare tutti i files selezionati?", + "Failed to delete {count} files/folders." => "Cancellazione fallita {count} files/cartelle.", + "A file or folder with that name already exists." => "Un file o cartella con questo nome già esiste.", + "Copy files here" => "Copia i files qui", + "Move files here" => "Sposta i files qui", + "Delete files" => "Cancella i files", + "Clear the Clipboard" => "Pulisci la Clipboard", + "Are you sure you want to delete all files in the Clipboard?" => "Sei sicuro che vuoi cancellare tutti i files dalla Clipboard?", + "Copy {count} files" => "Copio {count} files", + "Move {count} files" => "Sposto {count} files", + "Add to Clipboard" => "Aggiungi alla Clipboard", + "Inexistant or inaccessible folder." => "La cartella non esiste o è inacessibile.", "New folder name:" => "Nuovo nome della cartella:", "New file name:" => "Nuovo nome del file:", - "Upload" => "Carica", "Refresh" => "Aggiorna", "Settings" => "Preferenze", "Maximize" => "Massimizza", "About" => "Chi siamo", "files" => "files", + "selected files" => "files selezionati", "View:" => "Vista:", "Show:" => "Mostra:", "Order by:" => "Ordina per:", "Thumbnails" => "Miniature", "List" => "Lista", "Name" => "Nome", + "Type" => "Tipo", "Size" => "Grandezza", "Date" => "Data", "Descending" => "Discendente", "Uploading file..." => "Carico file...", "Loading image..." => "Caricamento immagine...", "Loading folders..." => "Caricamento cartella...", - "Loading files..." => "caricamento files...", + "Loading files..." => "Caricamento files...", "New Subfolder..." => "Nuova sottocartella...", "Rename..." => "Rinomina...", "Delete" => "Elimina", @@ -184,67 +105,23 @@ "Cancel" => "Cancella", "Select" => "Seleziona", "Select Thumbnail" => "Seleziona miniatura", + "Select Thumbnails" => "Seleziona miniature", "View" => "Vista", "Download" => "Scarica", - "Clipboard" => "Clipboard", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Non è possibile rinominare la cartella.", - - "Non-existing directory type." => - "Il tipo di cartella non esiste.", - - "Cannot delete the folder." => - "Non è possibile cancellare la cartella.", - - "The files in the Clipboard are not readable." => - "I files nella clipboard non sono leggibili.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} files nella clipboard non sono leggibili. Copiare il resto?", - - "The files in the Clipboard are not movable." => - "I files nella clipboard non sono spoastabili.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} files nella clipboard non sono spoastabili. Spostare il resto?", - - "The files in the Clipboard are not removable." => - "files nella clipboard non si possono rimuovere.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} files nella clipboard non si possono rimuovere. Cancellare il resto?", - - "The selected files are not removable." => - "Il file selezionato non è rimovibile.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} i files selezionati non sono rimovibili. Cancellare il resto?", - - "Are you sure you want to delete all selected files?" => - "Sei sicuro che vuoi cancellare tutti i files selezionati?", - - "Failed to delete {count} files/folders." => - "Cancellazione fallita {count} files/cartelle.", - - "A file or folder with that name already exists." => - "Un file o cartella con questo nome già esiste.", - - "selected files" => "files selezionati", - "Type" => "Tipo", - "Select Thumbnails" => "Seleziona miniature", "Download files" => "Scarica files", - - // SINCE 2.34 - - "Licenses:" => "Licenze: ", - "Attention" => "Attensione", + "Clipboard" => "Clipboard", + "Checking for new version..." => "Controllo nuova versione...", + "Unable to connect!" => "Connessione impossibile", + "Download version {version} now!" => "Prelevo la versione {version} adesso!", + "KCFinder is up to date!" => "KCFinder è aggiornato!", + "Licenses:" => "Licenze:", + "Attention" => "Attenzione", "Question" => "Domanda", "Yes" => "Si", "No" => "No", - + "You cannot rename the extension of files!" => "Non puoi rinominare l'estensione del file!", + "Uploading file {number} of {count}... {progress}" => "Caricmento del file {number} di {count}... {progress}", + "Failed to upload {filename}!" => "Il caricamento del file {filename} è fallito ", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/ja.php b/manager/media/browser/mcpuk/lang/ja.php old mode 100644 new mode 100755 index c2aa5cd6ba..19b7d79535 --- a/manager/media/browser/mcpuk/lang/ja.php +++ b/manager/media/browser/mcpuk/lang/ja.php @@ -4,180 +4,98 @@ * * @desc Japanese localization * @package KCFinder - * @version 2.2 * @author yama yamamoto@kyms.ne.jp * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 */ $lang = array( - '_locale' => "ja_JP.UTF-8", - '_charset' => "utf-8", + + '_locale' => "ja_JP.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset // Date time formats. See http://www.php.net/manual/en/function.strftime.php '_dateTimeFull' => "%Y/%m/%d %H:%M", '_dateTimeMid' => "%Y/%m/%d %H:%M", '_dateTimeSmall' => "%Y/%m/%d %H:%M", - "You don't have permissions to upload files." => - "アップロード権限がありません。", - - "You don't have permissions to browse server." => - "サーバーを閲覧する権限がありません", - - "Cannot move uploaded file to target folder." => - "ファイルを移動できません。", - - "Unknown error." => - "原因不明のエラーです。", - - "The uploaded file exceeds {size} bytes." => - "アップロードしたファイルは {size} バイトを越えました。", - - "The uploaded file was only partially uploaded." => - "アップロードしたファイルは、一部のみ処理されました。", - - "No file was uploaded." => - "ファイルはありません。", - - "Missing a temporary folder." => - "一時フォルダが見付かりません。", - - "Failed to write file." => - "ファイルの書き込みに失敗しました。", - - "Denied file extension." => - "このファイルは扱えません。", - - "Unknown image format/encoding." => - "この画像ファイルの種別を判定できません。", - - "The image is too big and/or cannot be resized." => - "画像ファイルのサイズが大き過ぎます。", - - "Cannot create {dir} folder." => - "「{dir}」フォルダを作成できません。", - - "Cannot write to upload folder." => - "アップロードフォルダに書き込みできません。", - - "Cannot read .htaccess" => - ".htaccessが読み込めません。", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "不正な .htaccess ファイルです。再編集できません!", - - "Cannot fetch content of {dir} folder." => - "{dir} フォルダのコンテンツを読み込めません。", - - "Cannot read upload folder." => - "アップロードフォルダを読み取れません。", - - "Cannot access or create thumbnails folder." => - "サムネイルフォルダにアクセス、又はサムネイルフォルダを作成できません。", - - "Cannot access or write to upload folder." => - "アップロードフォルダにアクセス、又は書き込みできません。", - - "Please enter new folder name." => - "新しいフォルダ名を入力して下さい。", - - "Unallowed characters in folder name." => - "フォルダ名には利用できない文字です。", - - "Folder name shouldn't begins with '.'" => - "フォルダ名は、'.'で開始しないで下さい。", - - "Please enter new file name." => - "新しいファイル名を入力して下さい。", - - "Unallowed characters in file name." => - "ファイル名には利用できない文字です。", - - "File name shouldn't begins with '.'" => - "ファイル名は、'.'で開始しないで下さい。", - - "Are you sure you want to delete this file?" => - "このファイルを本当に削除してもよろしいですか?", - - "Are you sure you want to delete this folder and all its content?" => - "このフォルダとフォルダ内の全てのコンテンツを本当に削除してもよろしいですか?", - - "Unexisting directory type." => - "存在しないディレクトリの種類です。", - - "Undefined MIME types." => - "定義されていないMIMEタイプです。", - - "Fileinfo PECL extension is missing." => - "Fileinfo PECL 拡張モジュールが見付かりません。", - - "Opening fileinfo database failed." => - "fileinfo データベースを開くのに失敗しました。", - - "You can't upload such files." => - "このようなファイルをアップロードできません。", - - "The file '{file}' does not exist." => - "ファイル「'{file}'」は存在しません。", - - "Cannot read '{file}'." => - "「'{file}'」を読み取れません。", - - "Cannot copy '{file}'." => - "「{file}」をコピーできません。", - - "Cannot move '{file}'." => - "「{file}」を移動できません。", - - "Cannot delete '{file}'." => - "「'{file}'」を削除できません。", - - "Click to remove from the Clipboard" => - "クリップボードから削除する", - - "This file is already added to the Clipboard." => - "このファイルは既にクリップボードに追加されています。", - - "Copy files here" => - "ここにコピー", - - "Move files here" => - "ここに移動", - - "Delete files" => - "これらを全て削除", - - "Clear the Clipboard" => // - "クリップボードを初期化", - - "Are you sure you want to delete all files in the Clipboard?" => - "クリップボードに記憶した全てのファイルを実際に削除します。", - - "Copy {count} files" => - "ファイル({count}個)をここに複写", - - "Move {count} files" => - "ファイル({count}個)をここに移動", - - "Add to Clipboard" => - "クリップボードに記憶", + "You don't have permissions to upload files." => "アップロード権限がありません。", + "You don't have permissions to browse server." => "サーバーを閲覧する権限がありません", + "Cannot move uploaded file to target folder." => "ファイルを移動できません。", + "Unknown error." => "原因不明のエラーです。", + "The uploaded file exceeds {size} bytes." => "アップロードしたファイルは {size} バイトを越えました。", + "The uploaded file was only partially uploaded." => "アップロードしたファイルは、一部のみ処理されました。", + "No file was uploaded." => "ファイルはありません。", + "Missing a temporary folder." => "一時フォルダが見付かりません。", + "Failed to write file." => "ファイルの書き込みに失敗しました。", + "Denied file extension." => "このファイルは扱えません。", + "Unknown image format/encoding." => "この画像ファイルの種別を判定できません。", + "The image is too big and/or cannot be resized." => "画像ファイルのサイズが大き過ぎます。", + "Cannot create {dir} folder." => "「{dir}」フォルダを作成できません。", + "Cannot rename the folder." => "ディレクトリを名前を変更できません", + "Cannot write to upload folder." => "アップロードフォルダに書き込みできません。", + "Cannot read .htaccess" => ".htaccessが読み込めません。", + "Incorrect .htaccess file. Cannot rewrite it!" => "不正な .htaccess ファイルです。再編集できません!", + "Cannot read upload folder." => "アップロードフォルダを読み取れません。", + "Cannot access or create thumbnails folder." => "サムネイルフォルダにアクセス、又はサムネイルフォルダを作成できません。", + "Cannot access or write to upload folder." => "アップロードフォルダにアクセス、又は書き込みできません。", + "Please enter new folder name." => "新しいフォルダ名を入力して下さい。", + "Unallowable characters in folder name." => "フォルダ名に使用できない文字が含まれています。", + "Folder name shouldn't begins with '.'" => "フォルダ名は、'.'で開始しないで下さい。", + "Please enter new file name." => "新しいファイル名を入力して下さい。", + "Unallowable characters in file name." => "ファイル名に使用できない文字が含まれています。", + "File name shouldn't begins with '.'" => "ファイル名は、'.'で開始しないで下さい。", + "Are you sure you want to delete this file?" => "このファイルを本当に削除してもよろしいですか?", + "Are you sure you want to delete this folder and all its content?" => "このフォルダとフォルダ内の全てのコンテンツを本当に削除してもよろしいですか?", + "Non-existing directory type." => "存在しないディレクトリの種類です。", + "Undefined MIME types." => "定義されていないMIMEタイプです。", + "Fileinfo PECL extension is missing." => "Fileinfo PECL 拡張モジュールが見付かりません。", + "Opening fileinfo database failed." => "fileinfo データベースを開くのに失敗しました。", + "You can't upload such files." => "このようなファイルをアップロードできません。", + "The file '{file}' does not exist." => "ファイル「'{file}'」は存在しません。", + "Cannot read '{file}'." => "「'{file}'」を読み取れません。", + "Cannot copy '{file}'." => "「{file}」をコピーできません。", + "Cannot move '{file}'." => "「{file}」を移動できません。", + "Cannot delete '{file}'." => "「'{file}'」を削除できません。", + "Cannot delete the folder." => "ディレクトリを削除できません", + "Click to remove from the Clipboard" => "クリップボードから削除する", + "This file is already added to the Clipboard." => "このファイルは既にクリップボードに追加されています。", + "The files in the Clipboard are not readable." => "クリップボードからファイルを読み取れません", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "クリップボード内の {count} 個のファイルが読み取れません。残りをコピーしてもよろしいですか?", + "The files in the Clipboard are not movable." => "クリップボードからファイルを移動できません", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "クリップボード内の {count} 個のファイルが移動できません。残りを移動してもよろしいですか?", + "The files in the Clipboard are not removable." => "クリップボードを初期化できません", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "クリップボード内の {count} 個のファイルが削除出来ません。残りを削除してもよろしいですか?", + "The selected files are not removable." => "選択したファイルは削除できません。", + "{count} selected files are not removable. Do you want to delete the rest?" => "選択された {count} 個のファイルは削除できません。残りを削除してもよろしいですか?", + "Are you sure you want to delete all selected files?" => "選択された全てのファイルを本当に削除してもよろしいですか?", + "Failed to delete {count} files/folders." => "{count} 個のファイル / フォルダの削除に失敗しました。", + "A file or folder with that name already exists." => "その名前のファイル、又はフォルダは既に存在します。", + "Copy files here" => "ここにコピー", + "Move files here" => "ここに移動", + "Delete files" => "これらを全て削除", + "Clear the Clipboard" => "クリップボードを初期化", + "Are you sure you want to delete all files in the Clipboard?" => "クリップボードに記憶した全てのファイルを実際に削除します。", + "Copy {count} files" => "ファイル({count}個)をここに複写", + "Move {count} files" => "ファイル({count}個)をここに移動", + "Add to Clipboard" => "クリップボードに記憶", + "Inexistant or inaccessible folder." => "存在しない、又はアクセスできないフォルダです。", "New folder name:" => "フォルダ名(半角英数):", "New file name:" => "ファイル名(半角英数):", - "Folders" => "フォルダ", - "Upload" => "アップロード", "Refresh" => "再表示", "Settings" => "表示設定", "Maximize" => "最大化", "About" => "About", "files" => "ファイル", + "selected files" => "選択したファイル", "View:" => "表示スタイル:", "Show:" => "表示項目:", "Order by:" => "表示順:", "Thumbnails" => "サムネイル", "List" => "リスト", "Name" => "ファイル名", + "Type" => "タイプ", "Size" => "サイズ", "Date" => "日付", "Descending" => "順序を反転", @@ -192,61 +110,23 @@ "Cancel" => "キャンセル", "Select" => "このファイルを選択", "Select Thumbnail" => "サムネイルを選択", + "Select Thumbnails" => "サムネイルを選択", "View" => "プレビュー", "Download" => "ダウンロード", - 'Clipboard' => "クリップボード", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "ディレクトリを名前を変更できません", - - "Non-existing directory type." => - "存在しないディレクトリの種類です。", - - "Cannot delete the folder." => - "ディレクトリを削除できません", - - "The files in the Clipboard are not readable." => - "クリップボードからファイルを読み取れません", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "クリップボード内の {count} 個のファイルが読み取れません。残りをコピーしてもよろしいですか?", - - "The files in the Clipboard are not movable." => - "クリップボードからファイルを移動できません", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "クリップボード内の {count} 個のファイルが移動できません。残りを移動してもよろしいですか?", - - "The files in the Clipboard are not removable." => - "クリップボードを初期化できません", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "クリップボード内の {count} 個のファイルが削除出来ません。残りを削除してもよろしいですか?", - - "The selected files are not removable." => - "選択したファイルは削除できません。", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "選択された {count} 個のファイルは削除できません。残りを削除してもよろしいですか?", - - "Are you sure you want to delete all selected files?" => - "選択された全てのファイルを本当に削除してもよろしいですか?", - - "Failed to delete {count} files/folders." => - "{count} 個のファイル / フォルダの削除に失敗しました。", - - "A file or folder with that name already exists." => - "その名前のファイル、又はフォルダは既に存在します。", - - "Inexistant or inaccessible folder." => - "存在しない、又はアクセスできないフォルダです。", - - "selected files" => "選択したファイル", - "Type" => "タイプ", - "Select Thumbnails" => "サムネイルを選択", "Download files" => "ファイルをダウンロードする", + "Clipboard" => "クリップボード", + "Checking for new version..." => "新しいバージョンを確認しています...", + "Unable to connect!" => "接続できませんでした!", + "Download version {version} now!" => "新しいバージョン({version})を今すぐダウンロード!", + "KCFinder is up to date!" => "KCFinderは更新されました!", + "Licenses:" => "ライセンス", + "Attention" => "注意", + "Question" => "確認", + "Yes" => "はい", + "No" => "いいえ", + "You cannot rename the extension of files!" => "ファイルの拡張子を変更できませんでした!", + "Uploading file {number} of {count}... {progress}" => "ファイルをアップロード中({number}/{count})... {progress}", + "Failed to upload {filename}!" => "{filename}のアップロードに失敗しました!", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/lt.php b/manager/media/browser/mcpuk/lang/lt.php old mode 100644 new mode 100755 index c103a2d93c..22174d27a4 --- a/manager/media/browser/mcpuk/lang/lt.php +++ b/manager/media/browser/mcpuk/lang/lt.php @@ -14,162 +14,83 @@ '_dateTimeMid' => "%F %T", '_dateTimeSmall' => "%F %T", - "You don't have permissions to upload files." => - "Jūs neturite teisių įkelti failus", - - "You don't have permissions to browse server." => - "Jūs neturite teisių naršyti po failus", - - "Cannot move uploaded file to target folder." => - "Nepavyko įkelti failo į reikiamą katalogą.", - - "Unknown error." => - "Nežinoma klaida.", - - "The uploaded file exceeds {size} bytes." => - "Įkeliamas failas viršija {size} baitų(-us).", - - "The uploaded file was only partially uploaded." => - "Failas buvo tik dalinai įkeltas.", - - "No file was uploaded." => - "Failas nebuvo įkeltas.", - - "Missing a temporary folder." => - "Nėra laikino katalogo.", - - "Failed to write file." => - "Nepavyko įrašyti failo.", - - "Denied file extension." => - "Draudžiama įkelti šio tipo failus.", - - "Unknown image format/encoding." => - "Nežinomas paveikslėlio formatas/kodavimas.", - - "The image is too big and/or cannot be resized." => - "Paveikslėlis yra per didelis ir/arba negali būti sumažintas.", - - "Cannot create {dir} folder." => - "Nepavyko sukurti {dir} katalogo.", - - "Cannot write to upload folder." => - "Nepavyko įrašyti į įkeliamų failų katalogą.", - - "Cannot read .htaccess" => - "Nepavyko nuskaityti .htaccess failo", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Blogas .htaccess failas. Nepavyko jo perrašyti", - - "Cannot read upload folder." => - "Nepavyko atidaryti įkeliamų failų katalogo.", - - "Cannot access or create thumbnails folder." => - "Nepavyko atidaryti ar sukurti sumažintų paveikslėlių katalogo.", - - "Cannot access or write to upload folder." => - "Nepavyko atidaryti ar įrašyti į įkeliamų failų katalogą.", - - "Please enter new folder name." => - "Įveskite katalogo pavadinimą.", - - "Unallowable characters in folder name." => - "Katalogo pavadinime yra neleistinų simbolių.", - - "Folder name shouldn't begins with '.'" => - "Katalogo pavadinimas negali prasidėti '.'", - - "Please enter new file name." => - "Įveskite failo pavadinimą.", - - "Unallowable characters in file name." => - "Failo pavadinime yra neleistinų simbolių", - - "File name shouldn't begins with '.'" => - "Failo pavadinimas negali prasidėti '.'", - - "Are you sure you want to delete this file?" => - "Ar tikrai ištrinti šį failą?", - - "Are you sure you want to delete this folder and all its content?" => - "Ar tikrai ištrinti šį katalogą su visu jo turiniu?", - - "Inexistant or inaccessible folder." => - "Katalogas neegzistuoja arba yra neprieinamas.", - - "Undefined MIME types." => - "Nenurodytas MIME tipas.", - - "Fileinfo PECL extension is missing." => - "Trūksa PECL plėtinio Fileinfo", - - "Opening fileinfo database failed." => - "Nepavyko atidaryti Fileinfo duomenų bazės.", - - "You can't upload such files." => - "Negalima įkelti tokių failų.", - - "The file '{file}' does not exist." => - "Failas '{file}' neegzistuoja.", - - "Cannot read '{file}'." => - "Nepavyko atidaryti '{file}' failo.", - - "Cannot copy '{file}'." => - "Nepavyko nukopijuoti '{file}' failo.", - - "Cannot move '{file}'." => - "Nepavyko perkelti '{file}' failo.", - - "Cannot delete '{file}'." => - "Nepavyko ištrinti '{file}' failo.", - - "Click to remove from the Clipboard" => - "Zum entfernen aus der Zwischenablage, hier klicken.", - - "This file is already added to the Clipboard." => - "Šis failas jau įkeltas į laikinąją atmintį.", - - "Copy files here" => - "Kopijuoti failus čia.", - - "Move files here" => - "Perkelti failus čia.", - - "Delete files" => - "Ištrinti failus.", - - "Clear the Clipboard" => - "Išvalyti laikinąją atmintį", - - "Are you sure you want to delete all files in the Clipboard?" => - "Ar tikrai ištrinti visus failus, esančius laikinojoje atmintyje?", - - "Copy {count} files" => - "Kopijuoti {count} failų(-us)", - - "Move {count} files" => - "Perkelti {count} failų(-us)", - - "Add to Clipboard" => - "Įkelti į laikinąją atmintį", - + "You don't have permissions to upload files." => "Jūs neturite teisių įkelti failus", + "You don't have permissions to browse server." => "Jūs neturite teisių naršyti po failus", + "Cannot move uploaded file to target folder." => "Nepavyko įkelti failo į reikiamą katalogą.", + "Unknown error." => "Nežinoma klaida.", + "The uploaded file exceeds {size} bytes." => "Įkeliamas failas viršija {size} baitų(-us).", + "The uploaded file was only partially uploaded." => "Failas buvo tik dalinai įkeltas.", + "No file was uploaded." => "Failas nebuvo įkeltas.", + "Missing a temporary folder." => "Nėra laikino katalogo.", + "Failed to write file." => "Nepavyko įrašyti failo.", + "Denied file extension." => "Draudžiama įkelti šio tipo failus.", + "Unknown image format/encoding." => "Nežinomas paveikslėlio formatas/kodavimas.", + "The image is too big and/or cannot be resized." => "Paveikslėlis yra per didelis ir/arba negali būti sumažintas.", + "Cannot create {dir} folder." => "Nepavyko sukurti {dir} katalogo.", + "Cannot rename the folder." => "Nepavyko pervadinti katalogo.", + "Cannot write to upload folder." => "Nepavyko įrašyti į įkeliamų failų katalogą.", + "Cannot read .htaccess" => "Nepavyko nuskaityti .htaccess failo", + "Incorrect .htaccess file. Cannot rewrite it!" => "Blogas .htaccess failas. Nepavyko jo perrašyti", + "Cannot read upload folder." => "Nepavyko atidaryti įkeliamų failų katalogo.", + "Cannot access or create thumbnails folder." => "Nepavyko atidaryti ar sukurti sumažintų paveikslėlių katalogo.", + "Cannot access or write to upload folder." => "Nepavyko atidaryti ar įrašyti į įkeliamų failų katalogą.", + "Please enter new folder name." => "Įveskite katalogo pavadinimą.", + "Unallowable characters in folder name." => "Katalogo pavadinime yra neleistinų simbolių.", + "Folder name shouldn't begins with '.'" => "Katalogo pavadinimas negali prasidėti '.'", + "Please enter new file name." => "Įveskite failo pavadinimą.", + "Unallowable characters in file name." => "Failo pavadinime yra neleistinų simbolių", + "File name shouldn't begins with '.'" => "Failo pavadinimas negali prasidėti '.'", + "Are you sure you want to delete this file?" => "Ar tikrai ištrinti šį failą?", + "Are you sure you want to delete this folder and all its content?" => "Ar tikrai ištrinti šį katalogą su visu jo turiniu?", + "Non-existing directory type." => "Neegzistuojantis katalogo tipas.", + "Undefined MIME types." => "Nenurodytas MIME tipas.", + "Fileinfo PECL extension is missing." => "Trūksa PECL plėtinio Fileinfo", + "Opening fileinfo database failed." => "Nepavyko atidaryti Fileinfo duomenų bazės.", + "You can't upload such files." => "Negalima įkelti tokių failų.", + "The file '{file}' does not exist." => "Failas '{file}' neegzistuoja.", + "Cannot read '{file}'." => "Nepavyko atidaryti '{file}' failo.", + "Cannot copy '{file}'." => "Nepavyko nukopijuoti '{file}' failo.", + "Cannot move '{file}'." => "Nepavyko perkelti '{file}' failo.", + "Cannot delete '{file}'." => "Nepavyko ištrinti '{file}' failo.", + "Cannot delete the folder." => "Nepavyko ištrinti katalogo.", + "Click to remove from the Clipboard" => "Zum entfernen aus der Zwischenablage, hier klicken.", + "This file is already added to the Clipboard." => "Šis failas jau įkeltas į laikinąją atmintį.", + "The files in the Clipboard are not readable." => "Nepavyko nuskaityti failų iš laikinosios atminties.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Nepavyko atidaryti {count} failų(-ai) iš laikinosios atminties. Ar kopijuoti likusius?", + "The files in the Clipboard are not movable." => "Nepavyko perkelti failų iš laikinosios atminties.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Nepavyko perkelti {count} failų(-ai) iš laikinosios atminties. Ar perkelti likusius?", + "The files in the Clipboard are not removable." => "Nepavyko perkelti failų iš laikinosios atminties.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Nepavyko ištrinti {count} failų(-ai) iš laikinosios atminties. Ar ištrinti likusius?", + "The selected files are not removable." => "Nepavyko perkelti pažymėtų failų.", + "{count} selected files are not removable. Do you want to delete the rest?" => "Nepavyko ištrinti {count} failų(-ai) iš laikinosios atminties. Ar ištrinti likusius?", + "Are you sure you want to delete all selected files?" => "Ar tikrai ištrinti visus pažymėtus failus?", + "Failed to delete {count} files/folders." => "Nepavyko ištrinti {count} failų/katalogų.", + "A file or folder with that name already exists." => "Failas arba katalogas tokiu pavadinimu jau egzistuoja.", + "Copy files here" => "Kopijuoti failus čia.", + "Move files here" => "Perkelti failus čia.", + "Delete files" => "Ištrinti failus.", + "Clear the Clipboard" => "Išvalyti laikinąją atmintį", + "Are you sure you want to delete all files in the Clipboard?" => "Ar tikrai ištrinti visus failus, esančius laikinojoje atmintyje?", + "Copy {count} files" => "Kopijuoti {count} failų(-us)", + "Move {count} files" => "Perkelti {count} failų(-us)", + "Add to Clipboard" => "Įkelti į laikinąją atmintį", + "Inexistant or inaccessible folder." => "Katalogas neegzistuoja arba yra neprieinamas.", "New folder name:" => "Naujo katalogo pavadinimas:", "New file name:" => "Naujo failo pavadinimas:", - "Upload" => "Įkelti", "Refresh" => "Atnaujinti", "Settings" => "Nustatymai", "Maximize" => "Padidinti", "About" => "Apie", "files" => "Failai", + "selected files" => "Pasirinkti failus", "View:" => "Peržiūra:", "Show:" => "Rodyti:", "Order by:" => "Rikiuoti:", "Thumbnails" => "Sumažintos iliustracijos", "List" => "Sąrašas", "Name" => "Pavadinimas", + "Type" => "Tipas", "Size" => "Dydis", "Date" => "Data", "Descending" => "Mažejančia tvarka", @@ -184,58 +105,23 @@ "Cancel" => "Atšaukti", "Select" => "Pažymėti", "Select Thumbnail" => "Pasirinkti sumažintą paveikslėlį", + "Select Thumbnails" => "Pasirinkti sumažintus paveikslėlius", "View" => "Peržiūra", "Download" => "Atsisiųsti", - 'Clipboard' => "Laikinoji atmintis", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Nepavyko pervadinti katalogo.", - - "Non-existing directory type." => - "Neegzistuojantis katalogo tipas.", - - "Cannot delete the folder." => - "Nepavyko ištrinti katalogo.", - - "The files in the Clipboard are not readable." => - "Nepavyko nuskaityti failų iš laikinosios atminties.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "Nepavyko atidaryti {count} failų(-ai) iš laikinosios atminties. Ar kopijuoti likusius?", - - "The files in the Clipboard are not movable." => - "Nepavyko perkelti failų iš laikinosios atminties.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "Nepavyko perkelti {count} failų(-ai) iš laikinosios atminties. Ar perkelti likusius?", - - "The files in the Clipboard are not removable." => - "Nepavyko perkelti failų iš laikinosios atminties.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "Nepavyko ištrinti {count} failų(-ai) iš laikinosios atminties. Ar ištrinti likusius?", - - "The selected files are not removable." => - "Nepavyko perkelti pažymėtų failų.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "Nepavyko ištrinti {count} failų(-ai) iš laikinosios atminties. Ar ištrinti likusius?", - - "Are you sure you want to delete all selected files?" => - "Ar tikrai ištrinti visus pažymėtus failus?", - - "Failed to delete {count} files/folders." => - "Nepavyko ištrinti {count} failų/katalogų.", - - "A file or folder with that name already exists." => - "Failas arba katalogas tokiu pavadinimu jau egzistuoja.", - - "selected files" => "Pasirinkti failus", - "Type" => "Tipas", - "Select Thumbnails" => "Pasirinkti sumažintus paveikslėlius", "Download files" => "Atsisiųsti failus", + "Clipboard" => "Laikinoji atmintis", + "Checking for new version..." => "Tikrinama nauja versija...", + "Unable to connect!" => "Nepavyko prisijungti!", + "Download version {version} now!" => "Siųsti versiją {version} dabar!", + "KCFinder is up to date!" => "KCFinder yra naujausios versijos!", + "Licenses:" => "Licenzijos:", + "Attention" => "Dėmesio", + "Question" => "Klausimas", + "Yes" => "Taip", + "No" => "Ne", + "You cannot rename the extension of files!" => "Negalima keisti failų plėtinių!", + "Uploading file {number} of {count}... {progress}" => "Įkeliamas {number} failas iš {count}... {progress}", + "Failed to upload {filename}!" => "Nepavyko įkelti {filename}!", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/nl.php b/manager/media/browser/mcpuk/lang/nl.php old mode 100644 new mode 100755 index a1690c824c..37d2f0854d --- a/manager/media/browser/mcpuk/lang/nl.php +++ b/manager/media/browser/mcpuk/lang/nl.php @@ -2,7 +2,6 @@ /** Dutch localization file for KCFinder * author: Lars Anderson - * update: Richard Leurs */ $lang = array( @@ -17,43 +16,43 @@ "You don't have permissions to upload files." => "U heeft geen toestemming om bestanden te uploaden.", "You don't have permissions to browse server." => "U heeft geen toegang tot de server.", - "Cannot move uploaded file to target folder." => "Het te uploaden bestand kon niet naar de doelmap verplaatst worden.", + "Cannot move uploaded file to target folder." => "Het te uploaden bestand kon niet naar de doel folder verplaatst worden.", "Unknown error." => "Onbekende foutmelding.", - "The uploaded file exceeds {size} bytes." => "De bestandsgrootte van het bestand overschrijdt de limiet {size} bytes.", + "The uploaded file exceeds {size} bytes." => "De bestandsgrootte van het bestand gaat de limiet ({size}) voorbij.", "The uploaded file was only partially uploaded." => "Het te uploaden bestand is slechts gedeeltelijk geupload.", "No file was uploaded." => "Er is geen bestand geupload.", - "Missing a temporary folder." => "Een tijdelijke map ontbreekt.", + "Missing a temporary folder." => "Een tijdelijke folder ontbreekt.", "Failed to write file." => "Poging tot schrijven van bestand is mislukt.", "Denied file extension." => "De extensie van dit bestand is niet toegestaan.", "Unknown image format/encoding." => "Onbekende afbeeldingsformaats/-codering.", "The image is too big and/or cannot be resized." => "De afbeelding is te groot en/of de grootte kan niet aangepast worden.", "Cannot create {dir} folder." => "Kan de map {dir} niet aanmaken.", - "Cannot rename the folder." => "De map kan niet hernoemd worden.", - "Cannot write to upload folder." => "Kan niet naar de uploadmap schrijven.", + "Cannot rename the folder." => "De folder kan niet hernoemd worden.", + "Cannot write to upload folder." => "Kan niet naar de upload folder schrijven.", "Cannot read .htaccess" => "Kan .htaccess niet lezen.", - "Incorrect .htaccess file. Cannot rewrite it!" => "Verkeerd .htaccess bestand. Bestand kan niet herschreven worden!", - "Cannot read upload folder." => "Uploadmap kan niet uitgelezen worden.", - "Cannot access or create thumbnails folder." => "Het is niet mogelijk om een miniatuurweergaven map aan te maken of te benaderen.", - "Cannot access or write to upload folder." => "Het is niet mogelijk om in de uploadmap te schrijven of deze te benaderen.", - "Please enter new folder name." => "Vul a.u.b. een nieuwe mapnaam in.", - "Unallowable characters in folder name." => "Er zijn niet toegestane karakters gebruikt in de mapnaam.", - "Folder name shouldn't begins with '.'" => "Een mapnaam mag niet met '.' beginnen.", + "Incorrect .htaccess file. Cannot rewrite it!" => "Incorrect .htaccess bestand. Bestand kan niet herschreven worden!", + "Cannot read upload folder." => "Upload folder kan niet uitgelezen worden.", + "Cannot access or create thumbnails folder." => "Het is niet mogelijk om een miniatuurweergaven folder aan te maken of te benaderen.", + "Cannot access or write to upload folder." => "Het is niet mogelijk om in de upload folder te schrijven of deze te benaderen.", + "Please enter new folder name." => "Vul a.u.b. een nieuwe foldernaam in.", + "Unallowable characters in folder name." => "Er zijn niet toegestane karakters gebruikt in de foldernaam.", + "Folder name shouldn't begins with '.'" => "Een foldernaam mag niet met '.' beginnen.", "Please enter new file name." => "Vul a.u.b. een nieuwe bestandsnaam in.", "Unallowable characters in file name." => "Er zijn niet toegestane karakters gebruikt in de bestandsnaam.", "File name shouldn't begins with '.'" => "Een bestandsnaam mag niet met '.' beginnen.", "Are you sure you want to delete this file?" => "Weet u zeker dat u dit bestand wilt verwijderen?", - "Are you sure you want to delete this folder and all its content?" => "Weet u zeker dat u deze map en alle inhoud ervan wilt verwijderen?", - "Non-existing directory type." => "Het maptype bestaat niet.", + "Are you sure you want to delete this folder and all its content?" => "Weet u zeker dat u deze folder en alle inhoud ervan wilt verwijderen?", + "Non-existing directory type." => "Het folder type bestaat niet.", "Undefined MIME types." => "Onbekend MIME type.", "Fileinfo PECL extension is missing." => "Bestandsinformatie PECL extensie ontbreekt.", "Opening fileinfo database failed." => "Openen van bestandsinformatie database is mislukt.", "You can't upload such files." => "Uploaden van dergelijke bestanden is niet mogelijk.", "The file '{file}' does not exist." => "Het bestand '{file}' bestaat niet.", "Cannot read '{file}'." => "Kan bestand '{file}' niet lezen.", - "Cannot copy '{file}'." => "Kan bestand '{file}' niet kopiëren.", + "Cannot copy '{file}'." => "Kan bestand '{file}' niet kopieren.", "Cannot move '{file}'." => "Kan bestand '{file}' niet verplaatsen.", "Cannot delete '{file}'." => "Kan bestand '{file}' niet verwijderen.", - "Cannot delete the folder." => "De map kan niet verwijderd worden.", + "Cannot delete the folder." => "De folder kan niet verwijderd worden.", "Click to remove from the Clipboard" => "Klik om te verwijderen van het klembord.", "This file is already added to the Clipboard." => "Dit bestand was reeds toegevoegd aan het klembord.", "The files in the Clipboard are not readable." => "De bestanden op het klembord kunnen niet gelezen worden.", @@ -65,18 +64,18 @@ "The selected files are not removable." => "De geselecteerde bestanden kunnen niet verwijderd worden.", "{count} selected files are not removable. Do you want to delete the rest?" => "{count} geselecteerde bestanden kunnen niet verwijderd worden. Wilt u de rest toch verwijderen?", "Are you sure you want to delete all selected files?" => "Weet u zeker dat u alle geselcteerde bestanden wilt verwijderen?", - "Failed to delete {count} files/folders." => "{count} bestanden/mappen konden niet verwijderd worden.", - "A file or folder with that name already exists." => "Er bestaat reeds een bestand of map met die naam.", + "Failed to delete {count} files/folders." => "{count} bestanden/folders konden niet verwijderd worden.", + "A file or folder with that name already exists." => "Er bestaat reeds een bestand of folder met die naam.", "Copy files here" => "Kopieer bestanden hierheen", "Move files here" => "Verplaats bestanden hierheen", "Delete files" => "Verwijder bestanden", - "Clear the Clipboard" => "Klembord leegmaken", + "Clear the Clipboard" => "Klemborg leegmaken", "Are you sure you want to delete all files in the Clipboard?" => "Weet u zeker dat u alle bestanden op het klembord wilt verwijderen?", "Copy {count} files" => "Kopieer {count} bestanden", "Move {count} files" => "Verplaats {count} bestanden", "Add to Clipboard" => "Voeg toe aan klembord", - "Inexistant or inaccessible folder." => "Map bestaat niet of kon niet worden benaderd.", - "New folder name:" => "Nieuwe mapnaam:", + "Inexistant or inaccessible folder." => "Folder bestaat niet of kon niet benaderd worden.", + "New folder name:" => "Nieuwe foldernaam:", "New file name:" => "Nieuwe bestandsnaam:", "Upload" => "Upload", "Refresh" => "Verversen", @@ -97,9 +96,9 @@ "Descending" => "Aflopend", "Uploading file..." => "Bestand uploaden...", "Loading image..." => "Afbeelding wordt geladen...", - "Loading folders..." => "Mappen worden geladen...", + "Loading folders..." => "Folders worden geladen...", "Loading files..." => "Bestanden worden geladen ...", - "New Subfolder..." => "Nieuwe submap...", + "New Subfolder..." => "Nieuwe subfolder...", "Rename..." => "Hernoemen...", "Delete" => "Verwijderen", "OK" => "OK", @@ -125,4 +124,4 @@ "Failed to upload {filename}!" => "Uploaden van {filename} mislukt!", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/no.php b/manager/media/browser/mcpuk/lang/no.php old mode 100644 new mode 100755 diff --git a/manager/media/browser/mcpuk/lang/pl.php b/manager/media/browser/mcpuk/lang/pl.php old mode 100644 new mode 100755 index cf79e8521b..413b5f92c6 --- a/manager/media/browser/mcpuk/lang/pl.php +++ b/manager/media/browser/mcpuk/lang/pl.php @@ -1,6 +1,6 @@ "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "Nie masz zezwolenia na wysyłanie plików.", - - "You don't have permissions to browse server." => - "Nie masz zezwolenia na przeglądanie serwera.", - - "Cannot move uploaded file to target folder." => - "Nie można przenieść wysłanego pliku do folderu plików wysłanych.", - - "Unknown error." => - "Nieokreślony błąd.", - - "The uploaded file exceeds {size} bytes." => - "Wysyłany plik przekroczył rozmiar {size} bajtów", - - "The uploaded file was only partially uploaded." => - "Wysyłany plik nie został przesłany w całości.", - - "No file was uploaded." => - "Żaden plik nie został przesłany", - - "Missing a temporary folder." => - "Brak katalogu domyślnego.", - - "Failed to write file." => - "Błąd zapisu pliku.", - - "Denied file extension." => - "Niedozwolone rozszerzenie pliku.", - - "Unknown image format/encoding." => - "Nie znany format/kodowanie pliku.", - - "The image is too big and/or cannot be resized." => - "Obraz jest zbyt duży i/lub nie może zostać zmieniony jego rozmiar.", - - "Cannot create {dir} folder." => - "Nie można utworzyć katalogu {dir}.", - - "Cannot write to upload folder." => - "Nie można zapisywać do katalogu plików wysłanych.", - - "Cannot read .htaccess" => - "Nie można odczytać pliku .htaccess", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Nie prawidłowy plik .htaccess. Nie można go zapisać!", - - "Cannot read upload folder." => - "Nie można odczytać katalogu plików wysłanych.", - - "Cannot access or create thumbnails folder." => - "Nie ma dostępu lub nie można utworzyć katalogu miniatur.", - - "Cannot access or write to upload folder." => - "Nie ma dostępu lub nie można zapisywać do katalogu plików wysłanych.", - - "Please enter new folder name." => - "Proszę podać nową nazwę katalogu.", - - "Unallowable characters in folder name." => - "Niedozwolony znak w nazwie folderu.", - - "Folder name shouldn't begins with '.'" => - "Nazwa katalogu nie może zaczynać się od '.'", - - "Please enter new file name." => - "Proszę podać nową nazwę pliku", - - "Unallowable characters in file name." => - "Nie dozwolony znak w nazwie pliku.", - - "File name shouldn't begins with '.'" => - "Nazwa pliku nie powinna zaczynać się od '.'", - - "Are you sure you want to delete this file?" => - "Czy jesteś pewien, że chcesz skasować ten plik?", - - "Are you sure you want to delete this folder and all its content?" => - "Czy jesteś pewien, że chcesz skasować ten katalog i jego zawartość?", - - "Non-existing directory type." => - "Nie istniejący katalog.", - - "Undefined MIME types." => - "Niezidentyfikowany typ MIME.", - - "Fileinfo PECL extension is missing." => - "Brak rozszerzenia Fileinfo PECL.", - - "Opening fileinfo database failed." => - "Otwieranie bazy danych fileinfo nie udane.", - - "You can't upload such files." => - "Nie możesz wysyłać plików tego typu.", - - "The file '{file}' does not exist." => - "Plik {file} nie istnieje.", - - "Cannot read '{file}'." => - "Nie można odczytać pliku '{file}'.", - - "Cannot copy '{file}'." => - "Nie można skopiować pliku '{file}'.", - - "Cannot move '{file}'." => - "Nie można przenieść pliku '{file}'.", - - "Cannot delete '{file}'." => - "Nie można usunąć pliku '{file}'.", - - "Click to remove from the Clipboard" => - "Kliknij aby usunąć ze Schowka", - - "This file is already added to the Clipboard." => - "Ten plik już został dodany do Schowka.", - - "Copy files here" => - "Kopiuj pliki tutaj", - - "Move files here" => - "Przenieś pliki tutaj", - - "Delete files" => - "Usuń pliki", - - "Clear the Clipboard" => - "Wyczyść Schowek", - - "Are you sure you want to delete all files in the Clipboard?" => - "Czy jesteś pewien, że chcesz usunąć wszystkie pliki ze schowka?", - - "Copy {count} files" => - "Kopiowanie {count} plików", - - "Move {count} files" => - "Przenoszenie {count} plików", - - "Add to Clipboard" => - "Dodaj do Schowka", - + "You don't have permissions to upload files." => "Nie masz zezwolenia na wysyłanie plików.", + "You don't have permissions to browse server." => "Nie masz zezwolenia na przeglądanie serwera.", + "Cannot move uploaded file to target folder." => "Nie można przenieść wysłanego pliku do folderu plików wysłanych.", + "Unknown error." => "Nieokreślony błąd.", + "The uploaded file exceeds {size} bytes." => "Wysyłany plik przekroczył rozmiar {size} bajtów", + "The uploaded file was only partially uploaded." => "Wysyłany plik nie został przesłany w całości.", + "No file was uploaded." => "Żaden plik nie został przesłany", + "Missing a temporary folder." => "Brak katalogu domyślnego.", + "Failed to write file." => "Błąd zapisu pliku.", + "Denied file extension." => "Niedozwolone rozszerzenie pliku.", + "Unknown image format/encoding." => "Nie znany format/kodowanie pliku.", + "The image is too big and/or cannot be resized." => "Obraz jest zbyt duży i/lub nie może zostać zmieniony jego rozmiar.", + "Cannot create {dir} folder." => "Nie można utworzyć katalogu {dir}.", + "Cannot rename the folder." => "Nie można zmienić nazwy katalogu.", + "Cannot write to upload folder." => "Nie można zapisywać do katalogu plików wysłanych.", + "Cannot read .htaccess" => "Nie można odczytać pliku .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Nie prawidłowy plik .htaccess. Nie można go zapisać!", + "Cannot read upload folder." => "Nie można odczytać katalogu plików wysłanych.", + "Cannot access or create thumbnails folder." => "Nie ma dostępu lub nie można utworzyć katalogu miniatur.", + "Cannot access or write to upload folder." => "Nie ma dostępu lub nie można zapisywać do katalogu plików wysłanych.", + "Please enter new folder name." => "Proszę podać nową nazwę katalogu.", + "Unallowable characters in folder name." => "Niedozwolony znak w nazwie folderu.", + "Folder name shouldn't begins with '.'" => "Nazwa katalogu nie może zaczynać się od '.'", + "Please enter new file name." => "Proszę podać nową nazwę pliku", + "Unallowable characters in file name." => "Nie dozwolony znak w nazwie pliku.", + "File name shouldn't begins with '.'" => "Nazwa pliku nie powinna zaczynać się od '.'", + "Are you sure you want to delete this file?" => "Czy jesteś pewien, że chcesz skasować ten plik?", + "Are you sure you want to delete this folder and all its content?" => "Czy jesteś pewien, że chcesz skasować ten katalog i jego zawartość?", + "Non-existing directory type." => "Nie istniejący katalog.", + "Undefined MIME types." => "Niezidentyfikowany typ MIME.", + "Fileinfo PECL extension is missing." => "Brak rozszerzenia Fileinfo PECL.", + "Opening fileinfo database failed." => "Otwieranie bazy danych fileinfo nie udane.", + "You can't upload such files." => "Nie możesz wysyłać plików tego typu.", + "The file '{file}' does not exist." => "Plik {file} nie istnieje.", + "Cannot read '{file}'." => "Nie można odczytać pliku '{file}'.", + "Cannot copy '{file}'." => "Nie można skopiować pliku '{file}'.", + "Cannot move '{file}'." => "Nie można przenieść pliku '{file}'.", + "Cannot delete '{file}'." => "Nie można usunąć pliku '{file}'.", + "Cannot delete the folder." => "Nie można usunąć katalogu.", + "Click to remove from the Clipboard" => "Kliknij aby usunąć ze Schowka", + "This file is already added to the Clipboard." => "Ten plik już został dodany do Schowka.", + "The files in the Clipboard are not readable." => "Pliki w Schowku nie mogą zostać odczytane.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} plik(i/ów) ze Schowka nie może zostać odczytanych. Czy chcesz skopiować pozostałe?", + "The files in the Clipboard are not movable." => "Pliki w Schowku nie mogą zostać przeniesione.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} plik(i/ów) ze Schowka nie może zostać przeniesionych. Czy chcesz przenieść pozostałe?", + "The files in the Clipboard are not removable." => "Nie można usunąć plików ze Schowka.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} plik(i/ów) ze Schowka nie może zostać usunięty(ch). Czy usunąć pozostałe?", + "The selected files are not removable." => "Wybrane pliki nie mogą zostać usunięte.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} wybrany(ch) plików nie może zostać usunięte. Czy usunąć pozostałe?", + "Are you sure you want to delete all selected files?" => "Czy jesteś pewien że, chcesz usunąć wszystkie wybrane pliki?", + "Failed to delete {count} files/folders." => "Nie udało się usunąć {count} plik(i/ów) / folder(u/ów).", + "A file or folder with that name already exists." => "Plik lub katalog o tej nazwie już istnieje.", + "Copy files here" => "Kopiuj pliki tutaj", + "Move files here" => "Przenieś pliki tutaj", + "Delete files" => "Usuń pliki", + "Clear the Clipboard" => "Wyczyść Schowek", + "Are you sure you want to delete all files in the Clipboard?" => "Czy jesteś pewien, że chcesz usunąć wszystkie pliki ze schowka?", + "Copy {count} files" => "Kopiowanie {count} plików", + "Move {count} files" => "Przenoszenie {count} plików", + "Add to Clipboard" => "Dodaj do Schowka", + "Inexistant or inaccessible folder." => "Nieistniejący lub niedostępny folder.", "New folder name:" => "Nazwa nowego katalogu:", "New file name:" => "Nowa nazwa pliku:", - "Upload" => "Wyślij", "Refresh" => "Odśwież", "Settings" => "Ustawienia", "Maximize" => "Maksymalizuj", "About" => "O...", "files" => "pliki", + "selected files" => "wybrane pliki", "View:" => "Widok:", "Show:" => "Pokaż:", "Order by:" => "Sortuj według:", "Thumbnails" => "Miniatury", "List" => "Lista", "Name" => "Nazwa", + "Type" => "Typ", "Size" => "Rozmiar", "Date" => "Data", "Descending" => "Malejąco", @@ -184,58 +105,23 @@ "Cancel" => "Anuluj", "Select" => "Wybierz", "Select Thumbnail" => "Wybierz miniaturę", + "Select Thumbnails" => "Wybierz miniatury", "View" => "Podgląd", "Download" => "Pobierz", - 'Clipboard' => "Schowek", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Nie można zmienić nazwy katalogu.", - - "Cannot delete the folder." => - "Nie można usunąć katalogu.", - - "The files in the Clipboard are not readable." => - "Pliki w Schowku nie mogą zostać odczytane.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} plik(i/ów) ze Schowka nie może zostać odczytanych. Czy chcesz skopiować pozostałe?", - - "The files in the Clipboard are not movable." => - "Pliki w Schowku nie mogą zostać przeniesione.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} plik(i/ów) ze Schowka nie może zostać przeniesionych. Czy chcesz przenieść pozostałe?", - - "The files in the Clipboard are not removable." => - "Nie można usunąć plików ze Schowka.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} plik(i/ów) ze Schowka nie może zostać usunięty(ch). Czy usunąć pozostałe?", - - "The selected files are not removable." => - "Wybrane pliki nie mogą zostać usunięte.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} wybrany(ch) plików nie może zostać usunięte. Czy usunąć pozostałe?", - - "Are you sure you want to delete all selected files?" => - "Czy jesteś pewien że, chcesz usunąć wszystkie wybrane pliki?", - - "Failed to delete {count} files/folders." => - "Nie udało się usunąć {count} plik(i/ów) / folder(u/ów).", - - "A file or folder with that name already exists." => - "Plik lub katalog o tej nazwie już istnieje.", - - "Inexistant or inaccessible folder." => - "Nieistniejący lub niedostępny folder.", - - "selected files" => "wybrane pliki", - "Type" => "Typ", - "Select Thumbnails" => "Wybierz miniatury", "Download files" => "Pobierz pliki", + "Clipboard" => "Schowek", + "Checking for new version..." => "Sprawdzanie najnowszej dostępnej wersji ...", + "Unable to connect!" => "Nie udało się nawiązać połączenia!", + "Download version {version} now!" => "Pobierz wersję {version}.", + "KCFinder is up to date!" => "Korzystasz z najnowszej wersji KCFinder!", + "Licenses:" => "Licencja:", + "Attention" => "Uwaga", + "Question" => "Pytanie", + "Yes" => "Tak", + "No" => "Nie", + "You cannot rename the extension of files!" => "Nie możesz zmienić rozszerzeń plików!", + "Uploading file {number} of {count}... {progress}" => "Wysyłanie pliku nr {number} spośród {count} ... {progress}", + "Failed to upload {filename}!" => "Wysyłanie pliku {filename} nie powiodło się!", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/pt-br.php b/manager/media/browser/mcpuk/lang/pt-br.php old mode 100644 new mode 100755 index ded7c0fb72..8d6095353e --- a/manager/media/browser/mcpuk/lang/pt-br.php +++ b/manager/media/browser/mcpuk/lang/pt-br.php @@ -17,165 +17,86 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "Você não tem permissões para fazer upload de arquivos.", - - "You don't have permissions to browse server." => - "Você não tem permissões para procurar no servidor.", - - "Cannot move uploaded file to target folder." => - "Não é possível mover o arquivo enviado para a pasta de destino.", - - "Unknown error." => - "Erro desconhecido.", - - "The uploaded file exceeds {size} bytes." => - "O arquivo enviado excede {size} bytes.", - - "The uploaded file was only partially uploaded." => - "O arquivo enviado foi apenas parcialmente carregado.", - - "No file was uploaded." => - "Nenhum arquivo foi transferido.", - - "Missing a temporary folder." => - "Faltando uma pasta temporária.", - - "Failed to write file." => - "Falha ao gravar arquivo.", - - "Denied file extension." => - "Extensão de arquivo não permitida.", - - "Unknown image format/encoding." => - "Formato de imagem desconhecido/codificação.", - - "The image is too big and/or cannot be resized." => - "A imagem é muito grande e/ou não pode ser redimensionada.", - - "Cannot create {dir} folder." => - "Não é possível criar pasta em '{dir}'.", - - "Cannot write to upload folder." => - "Não é possível salvar na pasta.", - - "Cannot read .htaccess" => - "Não é possível ler '.htaccess'.", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Arquivo '.htaccess' incorreto. Não é possível alterar.", - - "Cannot read upload folder." => - "Não é possível ler a pasta de upload.", - - "Cannot access or create thumbnails folder." => - "Não é possível acessar ou criar pasta de miniaturas.", - - "Cannot access or write to upload folder." => - "Não é possível acessar ou salvar para a pasta.", - - "Please enter new folder name." => - "Por favor, digite o nome da nova pasta.", - - "Unallowable characters in folder name." => - "Caracteres no nome da pasta não Autorizado.", - - "Folder name shouldn't begins with '.'" => - "Nome da pasta não deve começar com '.'.", - - "Please enter new file name." => - "Por favor, digite o novo nome de arquivo.", - - "Unallowable characters in file name." => - "Caracteres no nome do arquivo não Autorizado.", - - "File name shouldn't begins with '.'" => - "O nome da pasta não deve começar por '.'.", - - "Are you sure you want to delete this file?" => - "Tem a certeza de que deseja excluir este arquivo?", - - "Are you sure you want to delete this folder and all its content?" => - "Tem a certeza de que deseja excluir esta pasta e todo o seu conte�do?", - - "Inexistant or inaccessible folder." => - "Pasta inacessível ou inexistente.", - - "Undefined MIME types." => - "Tipos MIME indefinidos.", - - "Fileinfo PECL extension is missing." => - "Está faltando Informações do arquivo extensão PECL.", - - "Opening fileinfo database failed." => - "Abrir banco de dados de fileinfo falhou.", - - "You can't upload such files." => - "Você não pode enviar esses arquivos.", - - "The file '{file}' does not exist." => - "O arquivo '{file}' não existe.", - - "Cannot read '{file}'." => - "Não é possível ler '{file}'.", - - "Cannot copy '{file}'." => - "Não é possível copiar '{file}'.", - - "Cannot move '{file}'." => - "Não é possível mover '{file}'.", - - "Cannot delete '{file}'." => - "Não é possível deletar '{file}'.", - - "Click to remove from the Clipboard" => - "Clique para remover da área de transferência", - - "This file is already added to the Clipboard." => - "Este arquivo já foi adicionado à área de transferência.", - - "Copy files here" => - "Copiar arquivos aqui", - - "Move files here" => - "Mover arquivos aqui", - - "Delete files" => - "Deletar arquivos", - - "Clear the Clipboard" => - "Limpar a área de transferência", - - "Are you sure you want to delete all files in the Clipboard?" => - "Tem a certeza de que deseja excluir todos os arquivos da área de transferência?", - - "Copy {count} files" => - "Copiar {count} arquivos", - - "Move {count} files" => - "Mover {count} arquivos", - - "Add to Clipboard" => - "Adicionar à área de transferência", - + "You don't have permissions to upload files." => "Você não tem permissões para fazer upload de arquivos.", + "You don't have permissions to browse server." => "Você não tem permissões para procurar no servidor.", + "Cannot move uploaded file to target folder." => "Não é possível mover o arquivo enviado para a pasta de destino.", + "Unknown error." => "Erro desconhecido.", + "The uploaded file exceeds {size} bytes." => "O arquivo enviado excede {size} bytes.", + "The uploaded file was only partially uploaded." => "O arquivo enviado foi apenas parcialmente carregado.", + "No file was uploaded." => "Nenhum arquivo foi transferido.", + "Missing a temporary folder." => "Faltando uma pasta temporária.", + "Failed to write file." => "Falha ao gravar arquivo.", + "Denied file extension." => "Extensão de arquivo não permitida.", + "Unknown image format/encoding." => "Formato de imagem desconhecido/codificação.", + "The image is too big and/or cannot be resized." => "A imagem é muito grande e/ou não pode ser redimensionada.", + "Cannot create {dir} folder." => "Não é possível criar pasta em '{dir}'.", + "Cannot rename the folder." => "Não é possível renomear a pasta.", + "Cannot write to upload folder." => "Não é possível salvar na pasta.", + "Cannot read .htaccess" => "Não é possível ler '.htaccess'.", + "Incorrect .htaccess file. Cannot rewrite it!" => "Arquivo '.htaccess' incorreto. Não é possível alterar.", + "Cannot read upload folder." => "Não é possível ler a pasta de upload.", + "Cannot access or create thumbnails folder." => "Não é possível acessar ou criar pasta de miniaturas.", + "Cannot access or write to upload folder." => "Não é possível acessar ou salvar para a pasta.", + "Please enter new folder name." => "Por favor, digite o nome da nova pasta.", + "Unallowable characters in folder name." => "Caracteres no nome da pasta não Autorizado.", + "Folder name shouldn't begins with '.'" => "Nome da pasta não deve começar com '.'.", + "Please enter new file name." => "Por favor, digite o novo nome de arquivo.", + "Unallowable characters in file name." => "Caracteres no nome do arquivo não Autorizado.", + "File name shouldn't begins with '.'" => "O nome da pasta não deve começar por '.'.", + "Are you sure you want to delete this file?" => "Tem a certeza de que deseja excluir este arquivo?", + "Are you sure you want to delete this folder and all its content?" => "Tem a certeza de que deseja excluir esta pasta e todo o seu conte�do?", + "Non-existing directory type." => "Tipo de diretório não existente.", + "Undefined MIME types." => "Tipos MIME indefinidos.", + "Fileinfo PECL extension is missing." => "Está faltando Informações do arquivo extensão PECL.", + "Opening fileinfo database failed." => "Abrir banco de dados de fileinfo falhou.", + "You can't upload such files." => "Você não pode enviar esses arquivos.", + "The file '{file}' does not exist." => "O arquivo '{file}' não existe.", + "Cannot read '{file}'." => "Não é possível ler '{file}'.", + "Cannot copy '{file}'." => "Não é possível copiar '{file}'.", + "Cannot move '{file}'." => "Não é possível mover '{file}'.", + "Cannot delete '{file}'." => "Não é possível deletar '{file}'.", + "Cannot delete the folder." => "Não é possível excluir a pasta.", + "Click to remove from the Clipboard" => "Clique para remover da área de transferência", + "This file is already added to the Clipboard." => "Este arquivo já foi adicionado à área de transferência.", + "The files in the Clipboard are not readable." => "Os arquivos da área de transferência não podem ser lidos.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} arquivos da área de transferência não podem ser lidos. Você deseja copiar o resto?", + "The files in the Clipboard are not movable." => "Os arquivos da área de transferência não podem ser removidos.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} arquivos da área de transferência não podem ser movidos. Você deseja mover o resto?", + "The files in the Clipboard are not removable." => "Os arquivos da área de transferência não podem ser removidos.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} arquivos da área de transferência não são removíveis. Você deseja excluir o restante?", + "The selected files are not removable." => "Os arquivos selecionados não são removíveis.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} arquivos selecionados não são removíveis. Você deseja excluir o restante?", + "Are you sure you want to delete all selected files?" => "Tem a certeza de que deseja excluir todos os arquivos selecionados?", + "Failed to delete {count} files/folders." => "Não conseguiu excluir {count} arquivos/pastas.", + "A file or folder with that name already exists." => "Já existe um arquivo ou pasta com esse nome.", + "Copy files here" => "Copiar arquivos aqui", + "Move files here" => "Mover arquivos aqui", + "Delete files" => "Deletar arquivos", + "Clear the Clipboard" => "Limpar a área de transferência", + "Are you sure you want to delete all files in the Clipboard?" => "Tem a certeza de que deseja excluir todos os arquivos da área de transferência?", + "Copy {count} files" => "Copiar {count} arquivos", + "Move {count} files" => "Mover {count} arquivos", + "Add to Clipboard" => "Adicionar à área de transferência", + "Inexistant or inaccessible folder." => "Pasta inacessível ou inexistente.", "New folder name:" => "Nome da nova pasta:", "New file name:" => "Novo nome do arquivo:", - "Upload" => "Enviar arquivo", "Refresh" => "Atualizar", - "Settings" => "Configurações", + "Settings" => "Configurações", "Maximize" => "Maximizar", "About" => "Sobre", "files" => "Arquivos", + "selected files" => "arquivos selecionados", "View:" => "Exibir:", "Show:" => "Mostrar:", "Order by:" => "Ordenar por:", "Thumbnails" => "Miniaturas", "List" => "Lista", "Name" => "Nome", + "Type" => "Tipo", "Size" => "Tamanho", "Date" => "Data", - "Descending" => "", + "Descending" => "Descendente", "Uploading file..." => "Carregando arquivo...", "Loading image..." => "Carregando imagem...", "Loading folders..." => "Carregando pastas...", @@ -187,58 +108,23 @@ "Cancel" => "Cancelar", "Select" => "Selecionar", "Select Thumbnail" => "Selecionar miniatura", + "Select Thumbnails" => "Selecionar miniaturas", "View" => "Exibir", "Download" => "Download", - "Clipboard" => "área de transferência", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Não é possível renomear a pasta.", - - "Non-existing directory type." => - "Tipo de diretório não existente.", - - "Cannot delete the folder." => - "Não é possível excluir a pasta.", - - "The files in the Clipboard are not readable." => - "Os arquivos da área de transferência não podem ser lidos.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} arquivos da área de transferência não podem ser lidos. Você deseja copiar o resto?", - - "The files in the Clipboard are not movable." => - "Os arquivos da área de transferência não podem ser removidos.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} arquivos da área de transferência não podem ser movidos. Você deseja mover o resto?", - - "The files in the Clipboard are not removable." => - "Os arquivos da área de transferência não podem ser removidos.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} arquivos da área de transferência não são removíveis. Você deseja excluir o restante?", - - "The selected files are not removable." => - "Os arquivos selecionados não são removíveis.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} arquivos selecionados não são removíveis. Você deseja excluir o restante?", - - "Are you sure you want to delete all selected files?" => - "Tem a certeza de que deseja excluir todos os arquivos selecionados?", - - "Failed to delete {count} files/folders." => - "Não conseguiu excluir {count} arquivos/pastas.", - - "A file or folder with that name already exists." => - "Já existe um arquivo ou pasta com esse nome.", - - "selected files" => "arquivos selecionados", - "Type" => "Tipo", - "Select Thumbnails" => "Selecionar miniaturas", "Download files" => "Baixar arquivos", + "Clipboard" => "área de transferência", + "Checking for new version..." => "Checando por nova versão...", + "Unable to connect!" => "Não foi possível conectar!", + "Download version {version} now!" => "Baixe a versão {version} agora!", + "KCFinder is up to date!" => "KCFinder está atualizado!", + "Licenses:" => "Licenças", + "Attention" => "Atenção", + "Question" => "Pergunta", + "Yes" => "Sim", + "No" => "Não", + "You cannot rename the extension of files!" => "Você não pode renomear a extensão de arquivos!", + "Uploading file {number} of {count}... {progress}" => "Enviando arquivo {number} de {count}... {progress}", + "Failed to upload {filename}!" => "Falha no envio do arquivo {filename}!", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/pt.php b/manager/media/browser/mcpuk/lang/pt.php old mode 100644 new mode 100755 index f0c7f04f44..dfcd2dd677 --- a/manager/media/browser/mcpuk/lang/pt.php +++ b/manager/media/browser/mcpuk/lang/pt.php @@ -41,7 +41,7 @@ "Falta a pasta temporária.", "Failed to write file." => - "Não foi possvel guardar o ficheiro.", + "Não foi poss�vel guardar o ficheiro.", "Denied file extension." => "Extensão do ficheiro inválida.", @@ -53,25 +53,25 @@ "A imagem é muito grande e não pode ser redimensionada.", "Cannot create {dir} folder." => - "Não foi possvel criar a pasta '{dir}'.", + "Não foi poss�vel criar a pasta '{dir}'.", "Cannot write to upload folder." => - "Não foi possvel guardar o ficheiro.", + "Não foi poss�vel guardar o ficheiro.", "Cannot read .htaccess" => - "Não foi possvel ler o ficheiro '.htaccess'.", + "Não foi poss�vel ler o ficheiro '.htaccess'.", "Incorrect .htaccess file. Cannot rewrite it!" => - "Ficheiro '.htaccess' incorrecto. Não foi possvel altera-lo.", + "Ficheiro '.htaccess' incorrecto. Não foi poss�vel altera-lo.", "Cannot read upload folder." => - "Não foi possvel ler a pasta de upload.", + "Não foi poss�vel ler a pasta de upload.", "Cannot access or create thumbnails folder." => - "Não foi possvel aceder ou criar a pasta de miniaturas.", + "Não foi poss�vel aceder ou criar a pasta de miniaturas.", "Cannot access or write to upload folder." => - "Não foi possvel aceder ou criar a pasta de upload.", + "Não foi poss�vel aceder ou criar a pasta de upload.", "Please enter new folder name." => "Por favor insira o nome da pasta.", @@ -80,7 +80,7 @@ "Caracteres não autorizados no nome da pasta.", "Folder name shouldn't begins with '.'" => - "O nome da pasta não deve comear por '.'.", + "O nome da pasta não deve come�ar por '.'.", "Please enter new file name." => "Por favor defina o nome do ficheiro.", @@ -89,7 +89,7 @@ "Caracteres não autorizados no nome do ficheiro.", "File name shouldn't begins with '.'" => - "O nome do ficheiro não deve comear por '.'.", + "O nome do ficheiro não deve come�ar por '.'.", "Are you sure you want to delete this file?" => "Tem a certeza que deseja apagar este ficheiro?", @@ -98,7 +98,7 @@ "Tem a certeza que deseja apagar esta pasta e todos os seus conteúdos?", "Inexistant or inaccessible folder." => - "Pasta inexistente ou inacessvel.", + "Pasta inexistente ou inacess�vel.", "Undefined MIME types." => "Tipos MIME indefinidos.", diff --git a/manager/media/browser/mcpuk/lang/ro.php b/manager/media/browser/mcpuk/lang/ro.php new file mode 100755 index 0000000000..ecbe6ac2a0 --- /dev/null +++ b/manager/media/browser/mcpuk/lang/ro.php @@ -0,0 +1,126 @@ + "ro_RO.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%A, %e %B, %Y %H:%M", + '_dateTimeMid' => "%a %e %b %Y %H:%M", + '_dateTimeSmall' => "%d.%m.%Y %H:%M", + + "You don't have permissions to upload files." => "Nu aveți permisiunea de a încărca fișiere.", + "You don't have permissions to browse server." => "Nu aveți permisiunea de a naviga pe server.", + "Cannot move uploaded file to target folder." => "Fișierul încărcat nu poate fi mutat în dosarul țintă.", + "Unknown error." => "Eroare necunoscută.", + "The uploaded file exceeds {size} bytes." => "Fișierul încărcat depășește {size} biți.", + "The uploaded file was only partially uploaded." => "Fișierul încărcat a fost încărcat doar parțial.", + "No file was uploaded." => "Nu a fost încărcat niciun fișier.", + "Missing a temporary folder." => "Nu există un dosar de fișiere temporare.", + "Failed to write file." => "Fișierul nu a fost scris.", + "Denied file extension." => "Extensie de fișier respinsă.", + "Unknown image format/encoding." => "Format/Codificare imagine necunoscut/ă.", + "The image is too big and/or cannot be resized." => "Imaginea este prea mare și/sau nu poate fi redimensionată.", + "Cannot create {dir} folder." => "Dosarul {dir} nu poate fi creat.", + "Cannot rename the folder." => "Dosarul nu poate fi numit din nou.", + "Cannot write to upload folder." => "Nu se poate scrie la dosarul de încărcare.", + "Cannot read .htaccess" => "Nu se poate citi .htacces", + "Incorrect .htaccess file. Cannot rewrite it!" => "Fișier .htacces incorect. Nu poate fi rescris!", + "Cannot read upload folder." => "Dosarul de încărcare nu poate fi citit.", + "Cannot access or create thumbnails folder." => "Dosarul de imagini în miniatură nu poate fi accesat sau creat.", + "Cannot access or write to upload folder." => "Dosarul de încărcare nu poate fi accesat sau creat.", + "Please enter new folder name." => "Vă rugăm să introduceți un nume de dosar nou.", + "Unallowable characters in folder name." => "Caractere nepermise în numele dosarului.", + "Folder name shouldn't begins with '.'" => "Numele dosarului nu trebuie să înceapă cu '.' ", + "Please enter new file name." => "Vă rugăm să introduceți un nou nume al fișierului.", + "Unallowable characters in file name." => "Caractere nepermise în numele fișierului.", + "File name shouldn't begins with '.'" => "Numele fișierului nu ar trebui să înceapă cu '.' ", + "Are you sure you want to delete this file?" => "Sigur doriți să ștergeți acest fișier?", + "Are you sure you want to delete this folder and all its content?" => "Sigur doriți să ștergeți acest dosar și toate conținuturile sale?", + "Non-existing directory type." => "Tip director non-existent.", + "Undefined MIME types." => "Tipuri MIME nefedinite.", + "Fileinfo PECL extension is missing." => "Extensia PECL lipsește.", + "Opening fileinfo database failed." => "Deschiderea bazei de date fileinfo a eșuat.", + "You can't upload such files." => "Nu puteți încărca asemenea fișiere.", + "The file '{file}' does not exist." => "Fișierul '{file}' nu există.", + "Cannot read '{file}'." => "Fișierul '{file}' nu poate fi citit.", + "Cannot copy '{file}'." => "Fișierul '{file}' nu poate fi copiat.", + "Cannot move '{file}'." => "Fișierul '{file}' nu poate fi mutat.", + "Cannot delete '{file}'." => "Fișierul '{file}' nu poate fi șters.", + "Cannot delete the folder." => "Dosarul nu poate fi șters.", + "Click to remove from the Clipboard" => "Faceți clic pentru a elimina de pe clipboard.", + "This file is already added to the Clipboard." => "Acest fișier este adăugat deja pe clipboard.", + "The files in the Clipboard are not readable." => "Fișierele de pe clipboard nu pot fi citite.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} fișiere de pe clipboard nu pot fi citite. Doriți să copiați restul fișierelor?", + "The files in the Clipboard are not movable." => "Fișierele de pe clipboard nu pot fi mutate.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} fișiere de pe clipboard nu pot fi mutate. Doriți să mutați restul fișierelor?", + "The files in the Clipboard are not removable." => "Fișierele de pe clipboard nu pot fi fi mutate.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} fișiere de pe clipboard nu pot fi înlăturate. Doriți să înlăturați restul fișierelor?", + "The selected files are not removable." => "Fișierele selectate nu pot fi mutate.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} fișiere selectate nu pot fi înlăturate. Doriți să ștergeți restul fișierelor?", + "Are you sure you want to delete all selected files?" => "Sigur doriți să ștergeți toate fișierele selectate?", + "Failed to delete {count} files/folders." => "{count} fișiere/dosare nu au putut fi șterse.", + "A file or folder with that name already exists." => "Există deja un fișier sau dosar cu acest nume.", + "Copy files here" => "Copiați fișierele aici", + "Move files here" => "Mutați fișierele aici", + "Delete files" => "Ștergeți fișierele", + "Clear the Clipboard" => "Eliberare clipboard", + "Are you sure you want to delete all files in the Clipboard?" => "Sigur doriți să ștergeți fișierele de pe clipboard?", + "Copy {count} files" => "Copiați {count} fișiere", + "Move {count} files" => "Mutați {count} fișiere", + "Add to Clipboard" => "Adăugați pe clipboard", + "Inexistant or inaccessible folder." => "Dosar inexistent sau inaccesibil.", + "New folder name:" => "Nume nou dosar:", + "New file name:" => "Nume nou fișier:", + "Upload" => "Încărcare", + "Refresh" => "Reîmprospătare", + "Settings" => "Setări", + "Maximize" => "Maximizare", + "About" => "Despre", + "files" => "fișiere", + "selected files" => "fișiere selectate", + "View:" => "Vizualizare:", + "Show:" => "Afișare:", + "Order by:" => "Ordonare după:", + "Thumbnails" => "Imagini în miniatură", + "List" => "Listă", + "Name" => "Nume", + "Type" => "Tip", + "Size" => "Mărime", + "Date" => "Dată", + "Descending" => "Ordine descrescătoare", + "Uploading file..." => "Încărcare fișier...", + "Loading image..." => "Încărcare imagine...", + "Loading folders..." => "Încărcare dosare...", + "Loading files..." => "Încărcare fișiere...", + "New Subfolder..." => "Sub-dosar nou...", + "Rename..." => "Redenumire...", + "Delete" => "Ștergere", + "OK" => "OK", + "Cancel" => "Anulare", + "Select" => "Selectare", + "Select Thumbnail" => "Selectare imagine în miniatură", + "Select Thumbnails" => "Selectare imagini în miniatură", + "View" => "Vizualizare", + "Download" => "Descărcare", + "Download files" => "Descărcare fișiere", + "Clipboard" => "Clipboard", + "Checking for new version..." => "Verificare versiune nouă...", + "Unable to connect!" => "Conectare imposibilă!", + "Download version {version} now!" => "Descărcați acum versiunea {version}!", + "KCFinder is up to date!" => "KCFinder este actualizat!", + "Licenses:" => "Licențe:", + "Attention" => "Atenție", + "Question" => "Întrebare", + "Yes" => "Da", + "No" => "Nu", + "You cannot rename the extension of files!" => "Nu puteți redenumi extensia fișierelor!", + "Uploading file {number} of {count}... {progress}" => "Încărcare fișier {number} din {count}... {progress}", + "Failed to upload {filename}!" => "Încărcare {filename} eșuată!", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/ru.php b/manager/media/browser/mcpuk/lang/ru.php old mode 100644 new mode 100755 index fa532b795d..13c6a55865 --- a/manager/media/browser/mcpuk/lang/ru.php +++ b/manager/media/browser/mcpuk/lang/ru.php @@ -1,8 +1,8 @@ "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "У вас нет прав для загрузки файлов.", - - "You don't have permissions to browse server." => - "У вас нет прав для просмотра содержимого на сервере.", - - "Cannot move uploaded file to target folder." => - "Невозможно переместить загруженный файл в папку назначения.", - - "Unknown error." => - "Неизвестная ошибка.", - - "The uploaded file exceeds {size} bytes." => - "Загруженный файл превышает размер {size} байт.", - - "The uploaded file was only partially uploaded." => - "Загруженный файл был загружен только частично.", - - "No file was uploaded." => - "Файл не был загружен", - - "Missing a temporary folder." => - "Временная папка не существует.", - - "Failed to write file." => - "Невозможно записать файл.", - - "Denied file extension." => - "Файлы этого типа запрещены для загрузки.", - - "Unknown image format/encoding." => - "Неизвестный формат изображения.", - - "The image is too big and/or cannot be resized." => - "Изображение слишком большое и/или не может быть уменьшено.", - - "Cannot create {dir} folder." => - "Невозможно создать папку {dir}.", - - "Cannot write to upload folder." => - "Невозможно записать в папку загрузки.", - - "Cannot read .htaccess" => - "Невозможно прочитать файл .htaccess", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Неправильный файл .htaccess. Невозможно перезаписать!", - - "Cannot read upload folder." => - "Невозможно прочитать папку загрузки.", - - "Cannot access or create thumbnails folder." => - "Нет доступа или невозможно создать папку миниатюр.", - - "Cannot access or write to upload folder." => - "Нет доступа или невозможно записать в папку загрузки.", - - "Please enter new folder name." => - "Укажите имя новой папки.", - - "Unallowable characters in folder name." => - "Недопустимые символы в имени папки.", - - "Folder name shouldn't begins with '.'" => - "Имя папки не может начинаться с '.'", - - "Please enter new file name." => - "Укажите новое имя файла", - - "Unallowable characters in file name." => - "Недопустимые символны в имени файла.", - - "File name shouldn't begins with '.'" => - "Имя файла не может начинаться с '.'", - - "Are you sure you want to delete this file?" => - "Вы уверены, что хотите удалить этот файл?", - - "Are you sure you want to delete this folder and all its content?" => - "Вы уверены, что хотите удалить эту папку и всё её содержимое?", - - "Non-existing directory type." => - "Несуществующий тип папки.", - - "Undefined MIME types." => - "Неопределённые типы MIME.", - - "Fileinfo PECL extension is missing." => - "Расширение Fileinfo PECL отсутствует.", - - "Opening fileinfo database failed." => - "Невозможно открыть базу данных fileinfo.", - - "You can't upload such files." => - "Вы не можете загружать файлы этого типа.", - - "The file '{file}' does not exist." => - "Файл '{file}' не существует.", - - "Cannot read '{file}'." => - "Невозможно прочитать файл '{file}'.", - - "Cannot copy '{file}'." => - "Невозможно скопировать файл '{file}'.", - - "Cannot move '{file}'." => - "Невозможно переместить файл '{file}'.", - - "Cannot delete '{file}'." => - "Невозможно удалить файл '{file}'.", - - "Click to remove from the Clipboard" => - "Нажмите для удаления из буфера обмена", - - "This file is already added to the Clipboard." => - "Этот файл уже добавлен в буфер обмена.", - - "Copy files here" => - "Скопировать файлы сюда", - - "Move files here" => - "Переместить файлы сюда", - - "Delete files" => - "Удалить файлы", - - "Clear the Clipboard" => - "Очистить буфер обмена", - - "Are you sure you want to delete all files in the Clipboard?" => - "Вы уверены, что хотите удалить все файлы в буфере обмена?", - - "Copy {count} files" => - "Скопировать {count} файл(ов)", - - "Move {count} files" => - "Переместить {count} файл(ов)", - - "Add to Clipboard" => - "Добавить в буфер обмена", - + "You don't have permissions to upload files." => "У вас нет прав для загрузки файлов.", + "You don't have permissions to browse server." => "У вас нет прав для просмотра содержимого на сервере.", + "Cannot move uploaded file to target folder." => "Невозможно переместить загруженный файл в папку назначения.", + "Unknown error." => "Неизвестная ошибка.", + "The uploaded file exceeds {size} bytes." => "Загруженный файл превышает размер {size} байт.", + "The uploaded file was only partially uploaded." => "Загруженный файл был загружен только частично.", + "No file was uploaded." => "Файл не был загружен", + "Missing a temporary folder." => "Временная папка не существует.", + "Failed to write file." => "Невозможно записать файл.", + "Denied file extension." => "Файлы этого типа запрещены для загрузки.", + "Unknown image format/encoding." => "Неизвестный формат изображения.", + "The image is too big and/or cannot be resized." => "Изображение слишком большое и/или не может быть уменьшено.", + "Cannot create {dir} folder." => "Невозможно создать папку {dir}.", + "Cannot rename the folder." => "Невозможно переименовать папку.", + "Cannot write to upload folder." => "Невозможно записать в папку загрузки.", + "Cannot read .htaccess" => "Невозможно прочитать файл .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Неправильный файл .htaccess. Невозможно перезаписать!", + "Cannot read upload folder." => "Невозможно прочитать папку загрузки.", + "Cannot access or create thumbnails folder." => "Нет доступа или невозможно создать папку миниатюр.", + "Cannot access or write to upload folder." => "Нет доступа или невозможно записать в папку загрузки.", + "Please enter new folder name." => "Укажите имя новой папки.", + "Unallowable characters in folder name." => "Недопустимые символы в имени папки.", + "Folder name shouldn't begins with '.'" => "Имя папки не может начинаться с '.'", + "Please enter new file name." => "Укажите новое имя файла", + "Unallowable characters in file name." => "Недопустимые символны в имени файла.", + "File name shouldn't begins with '.'" => "Имя файла не может начинаться с '.'", + "Are you sure you want to delete this file?" => "Вы уверены, что хотите удалить этот файл?", + "Are you sure you want to delete this folder and all its content?" => "Вы уверены, что хотите удалить эту папку и всё её содержимое?", + "Non-existing directory type." => "Несуществующий тип папки.", + "Undefined MIME types." => "Неопределённые типы MIME.", + "Fileinfo PECL extension is missing." => "Расширение Fileinfo PECL отсутствует.", + "Opening fileinfo database failed." => "Невозможно открыть базу данных fileinfo.", + "You can't upload such files." => "Вы не можете загружать файлы этого типа.", + "The file '{file}' does not exist." => "Файл '{file}' не существует.", + "Cannot read '{file}'." => "Невозможно прочитать файл '{file}'.", + "Cannot copy '{file}'." => "Невозможно скопировать файл '{file}'.", + "Cannot move '{file}'." => "Невозможно переместить файл '{file}'.", + "Cannot delete '{file}'." => "Невозможно удалить файл '{file}'.", + "Cannot delete the folder." => "Невозможно удалить папку.", + "Click to remove from the Clipboard" => "Нажмите для удаления из буфера обмена", + "This file is already added to the Clipboard." => "Этот файл уже добавлен в буфер обмена.", + "The files in the Clipboard are not readable." => "Невозможно прочитать файлы в буфере обмена.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Невозможно прочитать {count} файл(ов) в буфере обмена. Вы хотите скопировать оставшиеся?", + "The files in the Clipboard are not movable." => "Невозможно переместить файлы в буфере обмена.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Невозможно переместить {count} файл(ов) в буфере обмена. Вы хотите переместить оставшиеся?", + "The files in the Clipboard are not removable." => "Невозможно удалить файлы в буфере обмена.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Невозможно удалить {count} файл(ов) в буфере обмена. Вы хотите удалить оставшиеся?", + "The selected files are not removable." => "Невозможно удалить выбранные файлы.", + "{count} selected files are not removable. Do you want to delete the rest?" => "Невозможно удалить выбранный(е) {count} файл(ы). Вы хотите удалить оставшиеся?", + "Are you sure you want to delete all selected files?" => "Вы уверены, что хотите удалить все выбранные файлы?", + "Failed to delete {count} files/folders." => "Невозможно удалить {count} файлов/папок.", + "A file or folder with that name already exists." => "Файл или папка с таким именем уже существуют.", + "Copy files here" => "Скопировать файлы сюда", + "Move files here" => "Переместить файлы сюда", + "Delete files" => "Удалить файлы", + "Clear the Clipboard" => "Очистить буфер обмена", + "Are you sure you want to delete all files in the Clipboard?" => "Вы уверены, что хотите удалить все файлы в буфере обмена?", + "Copy {count} files" => "Скопировать {count} файл(ов)", + "Move {count} files" => "Переместить {count} файл(ов)", + "Add to Clipboard" => "Добавить в буфер обмена", + "Inexistant or inaccessible folder." => "Несуществующая или недоступная папка.", "New folder name:" => "Новое имя папки:", "New file name:" => "Новое имя файла:", - "Upload" => "Загрузить", "Refresh" => "Обновить", "Settings" => "Установки", "Maximize" => "Развернуть", "About" => "О скрипте", "files" => "файлы", + "selected files" => "выбранные файлы", "View:" => "Просмотр:", "Show:" => "Показывать:", "Order by:" => "Упорядочить по:", "Thumbnails" => "Миниатюры", "List" => "Список", "Name" => "Имя", + "Type" => "Тип", "Size" => "Размер", "Date" => "Дата", "Descending" => "По убыванию", @@ -185,70 +106,23 @@ "Cancel" => "Отмена", "Select" => "Выбрать", "Select Thumbnail" => "Выбрать миниатюру", + "Select Thumbnails" => "Выбрать миниатюры", "View" => "Просмотр", "Download" => "Скачать", - 'Clipboard' => "Буфер обмена", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Невозможно переименовать папку.", - - "Cannot delete the folder." => - "Невозможно удалить папку.", - - "The files in the Clipboard are not readable." => - "Невозможно прочитать файлы в буфере обмена.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "Невозможно прочитать {count} файл(ов) в буфере обмена. Вы хотите скопировать оставшиеся?", - - "The files in the Clipboard are not movable." => - "Невозможно переместить файлы в буфере обмена.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "Невозможно переместить {count} файл(ов) в буфере обмена. Вы хотите переместить оставшиеся?", - - "The files in the Clipboard are not removable." => - "Невозможно удалить файлы в буфере обмена.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "Невозможно удалить {count} файл(ов) в буфере обмена. Вы хотите удалить оставшиеся?", - - "The selected files are not removable." => - "Невозможно удалить выбранные файлы.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "Невозможно удалить выбранный(е) {count} файл(ы). Вы хотите удалить оставшиеся?", - - "Are you sure you want to delete all selected files?" => - "Вы уверены, что хотите удалить все выбранные файлы?", - - "Failed to delete {count} files/folders." => - "Невозможно удалить {count} файлов/папок.", - - "A file or folder with that name already exists." => - "Файл или папка с таким именем уже существуют.", - - "Inexistant or inaccessible folder." => - "Несуществующая или недоступная папка.", - - "selected files" => "выбранные файлы", - "Type" => "Тип", - "Select Thumbnails" => "Выбрать миниатюры", "Download files" => "Скачать файлы", - - // SINCE 2.4 - + "Clipboard" => "Буфер обмена", + "Checking for new version..." => "Проверяем наличие обновлений...", + "Unable to connect!" => "Невозможно подключиться!", + "Download version {version} now!" => "Скачать версию {version} сейчас!", + "KCFinder is up to date!" => "Вы используете последнюю версию KCFinder'а!", "Licenses:" => "Лицензии:", "Attention" => "Внимание", "Question" => "Вопрос", "Yes" => "Да", "No" => "Нет", - - // SINCE 2.41 - "You cannot rename the extension of files!" => "Вы не можете изменять расширения файлов!", + "Uploading file {number} of {count}... {progress}" => "Загрузка {number} файла из {count}... {progress}", + "Failed to upload {filename}!" => "Неудачная попытка загрузки {filename}!", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/sk.php b/manager/media/browser/mcpuk/lang/sk.php old mode 100644 new mode 100755 index 34c4a4f0f3..330fb7fc35 --- a/manager/media/browser/mcpuk/lang/sk.php +++ b/manager/media/browser/mcpuk/lang/sk.php @@ -14,162 +14,83 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d.%m.%Y %H:%M", - "You don't have permissions to upload files." => - "Nemáte právo nahrávať súbory.", - - "You don't have permissions to browse server." => - "Nemáte právo prehliadať súbory na servery.", - - "Cannot move uploaded file to target folder." => - "Nie je možné presunúť súbor do yvoleného adresára.", - - "Unknown error." => - "Neznáma chyba.", - - "The uploaded file exceeds {size} bytes." => - "Nahratý súbor presahuje {size} bytov.", - - "The uploaded file was only partially uploaded." => - "Nahratý súbor bol nahraný len čiastočne.", - - "No file was uploaded." => - "Žiadný súbor alebol nahraný na server.", - - "Missing a temporary folder." => - "Chyba dočasný adresár.", - - "Failed to write file." => - "Súbor se nepodarilo se uložiť.", - - "Denied file extension." => - "Nepodporovaný typ súboru.", - - "Unknown image format/encoding." => - "Neznamý formát obrázku/encoding.", - - "The image is too big and/or cannot be resized." => - "Obrázok je príliš veľký/alebo nemohol byť zmenšený.", - - "Cannot create {dir} folder." => - "Adresár {dir} nie je možné vytvoriť.", - - "Cannot write to upload folder." => - "Nie je možné ukladať do adresáru pre nahrávánie.", - - "Cannot read .htaccess" => - "Nie je možné čítať súbor .htaccess", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Chybný súbor .htaccess. Súbor nemožno prepísať!", - - "Cannot read upload folder." => - "Nie je možné čítať z adresáru pre nahrávánie súborov.", - - "Cannot access or create thumbnails folder." => - "Adresár pre náhľady nie je možné vytvoriť alebo nie je prístupný.", - - "Cannot access or write to upload folder." => - "Nie je možné pristupova alebo zapisovať do adresáru pre nahrávanie súborov.", - - "Please enter new folder name." => - "Zadajte prosím nové meno adresáru.", - - "Unallowable characters in folder name." => - "Nepovolené znaky v názve adresáru.", - - "Folder name shouldn't begins with '.'" => - "Meno adresára nesmie začínať znakom '.'", - - "Please enter new file name." => - "Vložte prosím nové meno súboru.", - - "Unallowable characters in file name." => - "Nepovolené znaky v názve súboru.", - - "File name shouldn't begins with '.'" => - "Názov súboru nesmie začínať znakom '.'", - - "Are you sure you want to delete this file?" => - "Ste si istý že chcete vymazať tento súbor?", - - "Are you sure you want to delete this folder and all its content?" => - "Ste si istý že chcete vymazať tento adresár a celý jeho obsah?", - - "Inexistant or inaccessible folder." => - "Neexistujúci alebo neprístupný adresár.", - - "Undefined MIME types." => - "Nedefinovaný MIME typ súboru.", - - "Fileinfo PECL extension is missing." => - "Rozšírenie PECL pre zistenie informácií o súbore chýba.", - - "Opening fileinfo database failed." => - "Načítanie informácií o súbore zlyhalo.", - - "You can't upload such files." => - "Tieto súbory nemôžete nahrať na server.", - - "The file '{file}' does not exist." => - "Tento súbor '{file}' neexistuje.", - - "Cannot read '{file}'." => - "Nie je možné načítať '{file}'.", - - "Cannot copy '{file}'." => - "Nie je možné kopírovať '{file}'.", - - "Cannot move '{file}'." => - "Nie je možné presunúť '{file}'.", - - "Cannot delete '{file}'." => - "Nie je možné vymazať '{file}'.", - - "Click to remove from the Clipboard" => - "Kliknite pre odstránenie zo schránky", - - "This file is already added to the Clipboard." => - "Tento súbor je už v schránke uložený.", - - "Copy files here" => - "Kopírovať súbory na toto miesto", - - "Move files here" => - "Presunúť súbory na toto miesto", - - "Delete files" => - "Zmazať súbory", - - "Clear the Clipboard" => - "Vyčistiť schránku", - - "Are you sure you want to delete all files in the Clipboard?" => - "Ste si istý že chcete vymazať všetky súbory zo schránky?", - - "Copy {count} files" => - "Kopírovať {count} súborov", - - "Move {count} files" => - "Presunúť {count} súborov", - - "Add to Clipboard" => - "Vložiť do schránky", - + "You don't have permissions to upload files." => "Nemáte právo nahrávať súbory.", + "You don't have permissions to browse server." => "Nemáte právo prehliadať súbory na serveri.", + "Cannot move uploaded file to target folder." => "Nie je možné presunúť súbor do zvoleného adresára.", + "Unknown error." => "Neznáma chyba.", + "The uploaded file exceeds {size} bytes." => "Nahratý súbor presahuje {size} bytov.", + "The uploaded file was only partially uploaded." => "Nahratý súbor bol nahraný len čiastočne.", + "No file was uploaded." => "Žiadný súbor nebol nahraný na server.", + "Missing a temporary folder." => "Chyba dočasný adresár.", + "Failed to write file." => "Súbor sa nepodarilo uložiť.", + "Denied file extension." => "Nepodporovaný typ súboru.", + "Unknown image format/encoding." => "Neznamý formát obrázku/encoding.", + "The image is too big and/or cannot be resized." => "Obrázok je príliš veľký/alebo nemohol byť zmenšený.", + "Cannot create {dir} folder." => "Adresár {dir} nie je možné vytvoriť.", + "Cannot rename the folder." => "Adresár nie je možné premenovať.", + "Cannot write to upload folder." => "Nie je možné ukladať do adresára pre nahrávánie.", + "Cannot read .htaccess" => "Nie je možné čítať súbor .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Chybný súbor .htaccess. Súbor nemožno prepísať!", + "Cannot read upload folder." => "Nie je možné čítať z adresára pre nahrávánie súborov.", + "Cannot access or create thumbnails folder." => "Adresár pre náhľady nie je možné vytvoriť alebo nie je prístupný.", + "Cannot access or write to upload folder." => "Nie je možné pristupovať alebo zapisovať do adresára pre nahrávanie súborov.", + "Please enter new folder name." => "Zadajte prosím nové meno adresára.", + "Unallowable characters in folder name." => "Nepovolené znaky v názve adresára.", + "Folder name shouldn't begins with '.'" => "Meno adresára nesmie začínať znakom '.'", + "Please enter new file name." => "Vložte prosím nové meno súboru.", + "Unallowable characters in file name." => "Nepovolené znaky v názve súboru.", + "File name shouldn't begins with '.'" => "Názov súboru nesmie začínať znakom '.'", + "Are you sure you want to delete this file?" => "Ste si istý že chcete vymazať tento súbor?", + "Are you sure you want to delete this folder and all its content?" => "Ste si istý že chcete vymazať tento adresár a celý jeho obsah?", + "Non-existing directory type." => "Neexistujúci typ adresára.", + "Undefined MIME types." => "Nedefinovaný MIME typ súboru.", + "Fileinfo PECL extension is missing." => "Rozšírenie PECL pre zistenie informácií o súbore chýba.", + "Opening fileinfo database failed." => "Načítanie informácií o súbore zlyhalo.", + "You can't upload such files." => "Tieto súbory nemôžete nahrať na server.", + "The file '{file}' does not exist." => "Tento súbor '{file}' neexistuje.", + "Cannot read '{file}'." => "Nie je možné načítať '{file}'.", + "Cannot copy '{file}'." => "Nie je možné kopírovať '{file}'.", + "Cannot move '{file}'." => "Nie je možné presunúť '{file}'.", + "Cannot delete '{file}'." => "Nie je možné vymazať '{file}'.", + "Cannot delete the folder." => "Adresár nie je možné vymazať.", + "Click to remove from the Clipboard" => "Kliknite pre odstránenie zo schránky", + "This file is already added to the Clipboard." => "Tento súbor je už v schránke uložený.", + "The files in the Clipboard are not readable." => "Súbory v schránke nie je možné načítať.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} súborov v schránke nie je možné načítať. Chcete skopírovať ostatné súbory?", + "The files in the Clipboard are not movable." => "Súbory v schránke nie je možné presunúť.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} súborov v schránke nie je možné presunúť. Chcete presunúť ostatné súbory?", + "The files in the Clipboard are not removable." => "Súbory v schránke nie je možné vymazať.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} súborov v schránke nie je možné vymazať. Chcete vymazať ostatné súbory?", + "The selected files are not removable." => "Vybrané súbory nie je možné vymazať.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} vybraných súborov nie je možné vymazať. Chcete vymazať ostatné súbory?", + "Are you sure you want to delete all selected files?" => "Ste si istý že chcete vymazať vybrané súbory?", + "Failed to delete {count} files/folders." => "Nebolo vymazaných {count} súborov/adresárov.", + "A file or folder with that name already exists." => "Soubor alebo adresár s takovým menom už existuje.", + "Copy files here" => "Kopírovať súbory na toto miesto", + "Move files here" => "Presunúť súbory na toto miesto", + "Delete files" => "Vymazať súbory", + "Clear the Clipboard" => "Vyčistiť schránku", + "Are you sure you want to delete all files in the Clipboard?" => "Ste si istý že chcete vymazať všetky súbory zo schránky?", + "Copy {count} files" => "Kopírovať {count} súborov", + "Move {count} files" => "Presunúť {count} súborov", + "Add to Clipboard" => "Vložiť do schránky", + "Inexistant or inaccessible folder." => "Neexistujúci alebo neprístupný adresár.", "New folder name:" => "Nový názov adresára:", "New file name:" => "Nový názov súboru:", - "Upload" => "Nahrať", "Refresh" => "Obnoviť", "Settings" => "Nastavenia", "Maximize" => "Maxializovať", "About" => "O aplikácii", "files" => "súbory", + "selected files" => "vybrané súbory", "View:" => "Zobraziť:", "Show:" => "Ukázať:", "Order by:" => "Zoradiť podľa:", "Thumbnails" => "Náhľady", "List" => "Zoznam", "Name" => "Meno", + "Type" => "Typ", "Size" => "Veľkosť", "Date" => "Dátum", "Descending" => "Zostupne", @@ -184,58 +105,23 @@ "Cancel" => "Zrušit", "Select" => "Vybrať", "Select Thumbnail" => "Vybrať náhľad", + "Select Thumbnails" => "Vybrať náhľad", "View" => "Zobraziť", "Download" => "Stahnuť", - 'Clipboard' => "Schránka", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Adresár nie je možné premenovať.", - - "Non-existing directory type." => - "Neexistujúci typ adresára.", - - "Cannot delete the folder." => - "Adresár nie je možné vymazať.", - - "The files in the Clipboard are not readable." => - "Súbory v schránke nie je možné načítať.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "{count} súborov v schránke nie je možné načítať. Chcete skopírovať ostatné súbory?", - - "The files in the Clipboard are not movable." => - "Súbory v schránke nie je možné presunúť.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "{count} súborov v schránke nie je možné presunúť. Chcete presunúť ostatné súbory?", - - "The files in the Clipboard are not removable." => - "Súbory v schránke nie je možné vymazať.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} súborov v schránke nie je možné vymazať. Chcete vymazať ostatné súbory?", - - "The selected files are not removable." => - "Označené súbory nie je možné vymazať.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "{count} označených súborov nie je možné vymazať. Chcete vymazať ostatné súbory?", - - "Are you sure you want to delete all selected files?" => - "Ste si istý že chcete vymazať vybrané súbory?", - - "Failed to delete {count} files/folders." => - "Nebolo vymazaných {count} súborov/adresárov.", - - "A file or folder with that name already exists." => - "Soubor alebo adresár s takovým menom už existuje.", - - "selected files" => "vybrané súbory", - "Type" => "Typ", - "Select Thumbnails" => "Vybrať náhľad", "Download files" => "Stiahnuť súbory", + "Clipboard" => "Schránka", + "Checking for new version..." => "Kontrolujem novú verziu...", + "Unable to connect!" => "Pripojenie zlyhalo!", + "Download version {version} now!" => "Stiahnuť verziu {version} teraz!", + "KCFinder is up to date!" => "KCFinder je aktuálny!", + "Licenses:" => "Licencie:", + "Attention" => "Upozornenie", + "Question" => "Otázka", + "Yes" => "Áno", + "No" => "Nie", + "You cannot rename the extension of files!" => "Nemôžete premenovať príponu súborov", + "Uploading file {number} of {count}... {progress}" => "Nahrávam súbor {number} z {count}... {progress}", + "Failed to upload {filename}!" => "Nepodarilo sa nahrať súbor {filename}!", ); ?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/sv.php b/manager/media/browser/mcpuk/lang/sv.php new file mode 100755 index 0000000000..7a5f806a0d --- /dev/null +++ b/manager/media/browser/mcpuk/lang/sv.php @@ -0,0 +1,127 @@ + "sv_SE.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "den %e %B %Y", + '_dateTimeMid' => "%e %b %Y", + '_dateTimeSmall' => "%Y-%m-%d %H:%M", + + "You don't have permissions to upload files." => "Du har inte behörighet att ladda upp filer. Kontakta vår support.", + "You don't have permissions to browse server." => "Du har inte behörighet att bläddra server.", + "Cannot move uploaded file to target folder." => "Kan inte flytta upp filen till målmappen.", + "Unknown error." => "Okänt fel.", + "The uploaded file exceeds {size} bytes." => "Den uppladdade filen överstiger {size} byte.", + "The uploaded file was only partially uploaded." => "Den uppladdade filen var endast delvis uppladdat.", + "No file was uploaded." => "Inga filer laddades upp.", + "Missing a temporary folder." => "Saknade en temporär mapp.", + "Failed to write file." => "Misslyckades att skriva fil.", + "Denied file extension." => "Nekad filtillägg.", + "Unknown image format/encoding." => "Okänt bildformat / kodning.", + "The image is too big and/or cannot be resized." => "Bilden är för stor och / eller kan inte ändras.", + "Cannot create {dir} folder." => "Kan inte skapa {dir} mapp.", + "Cannot rename the folder." => "Kan inte byta namn på mappen.", + "Cannot write to upload folder." => "Kan inte laddaup till mappen.", + "Cannot read .htaccess" => "Fel läser inte htacess filen", + "Incorrect .htaccess file. Cannot rewrite it!" => "Fel . htaccess fil. Inte skrivvänlig", + "Cannot read upload folder." => "Kan inte läsa upp mappen.", + "Cannot access or create thumbnails folder." => "Kan inte komma åt eller skapa thumbnails mapp.", + "Cannot access or write to upload folder." => "Kan inte komma åt eller skriva för att ladda upp mappen.", + "Please enter new folder name." => "Vänligen skriv in ny mapp-namn", + "Unallowable characters in folder name." => "Otillåtna tecken i mappnamnet.", + "Folder name shouldn't begins with '.'" => "Mappnamn bör inte börjar med '. \"", + "Please enter new file name." => "Ange nytt filnamn.", + "Unallowable characters in file name." => "Otillåtna tecken i filnamnet.", + "File name shouldn't begins with '.'" => "Filnamn bör inte börjar med '. \"", + "Are you sure you want to delete this file?" => "Är du säker du vill radera filen?", + "Are you sure you want to delete this folder and all its content?" => "Är du säker du vill radera denna mappen ink innehåll?", + "Non-existing directory type." => "Icke-existerande katalog typ.", + "Undefined MIME types." => "Odefinierat MIME-typer.", + "Fileinfo PECL extension is missing." => "Fileinfo PECL förlängning saknas.", + "Opening fileinfo database failed." => "databas öppning misslyckad.", + "You can't upload such files." => "Kan inte ladda upp sådan fil.", + "The file '{file}' does not exist." => "Filen '{file}' finns inte.", + "Cannot read '{file}'." => "Ej läsbar fil : '{file}'. ", + "Cannot copy '{file}'." => "Kan inte kopiera '{file}'.", + "Cannot move '{file}'." => "Kan inte flytta '{file}'.", + "Cannot delete '{file}'." => "Kan inte radera'{file}'.", + "Cannot delete the folder." => "Kan inte radera mappen.", + "Click to remove from the Clipboard" => "Tryck för att radera från Urklipp", + "This file is already added to the Clipboard." => "Den här filen är redan lagts till i Urklipp.", + "The files in the Clipboard are not readable." => "Filerna i Urklipp är inte läsbar.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "{count} filer i Urklipp är inte läsbar. Vill du kopiera resten?", + "The files in the Clipboard are not movable." => "Filerna i Urklipp är inte flyttbara.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "{count} filer i Urklipp är inte rörliga. Vill du flytta resten?", + "The files in the Clipboard are not removable." => "Filerna i Urklipp är inte avtagbara.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} filer i Urklipp är inte avtagbara. Vill du ta bort resten?", + "The selected files are not removable." => "De valda filerna inte tas bort.", + "{count} selected files are not removable. Do you want to delete the rest?" => "{count} valda filerna inte tas bort. Vill du ta bort resten?", + "Are you sure you want to delete all selected files?" => "Är du säker på att du vill ta bort alla markerade filer?", + "Failed to delete {count} files/folders." => "Misslyckades att radera {count} filer/mappar.", + "A file or folder with that name already exists." => "En fil eller mapp med det namnet finns redan.", + "Copy files here" => "Kopiera filerna här", + "Move files here" => "Flytta filerna här", + "Delete files" => "Radera filer", + "Clear the Clipboard" => "Rensa Urklipp", + "Are you sure you want to delete all files in the Clipboard?" => "Är du säker på att du vill ta bort alla filer i Urklipp?", + "Copy {count} files" => "Kopiera {count} filer", + "Move {count} files" => "Flytta {count} filer", + "Add to Clipboard" => "Lägg till i Urklipp", + "Inexistant or inaccessible folder." => "Inexistant eller otillgängliga mapp.", + "New folder name:" => "Ny mappnamn:", + "New file name:" => "Nytt filnamn:", + "Upload" => "Ladda upp", + "Refresh" => "Uppdatera", + "Settings" => "Inställningar", + "Maximize" => "Maximera", + "About" => "Om", + "files" => "Filer", + "selected files" => "Välj filer", + "View:" => "Se", + "Show:" => "Visa:", + "Order by:" => "Sortera efter:", + "Thumbnails" => "Miniatyr", + "List" => "Lista", + "Name" => "Namn", + "Type" => "Typ", + "Size" => "Storlek", + "Date" => "Datum", + "Descending" => "Fallande", + "Uploading file..." => "Laddar upp fil", + "Loading image..." => "Laddar bilder...", + "Loading folders..." => "Laddar mappar...", + "Loading files..." => "Laddar filer...", + "New Subfolder..." => "Ny undermapp...", + "Rename..." => "Byt namn", + "Delete" => "Radera", + "OK" => "Ok", + "Cancel" => "Avbryt", + "Select" => "Välj", + "Select Thumbnail" => "Välj miniatyr", + "Select Thumbnails" => "Välj miniatyrer", + "View" => "Se", + "Download" => "Ladda ner", + "Download files" => "Ladda ner fil", + "Clipboard" => "Urklipp", + "Checking for new version..." => "Söka efter ny version ...", + "Unable to connect!" => "Kunde inte ansluta! ", + "Download version {version} now!" => "Ladda ner version {version} nu!", + "KCFinder is up to date!" => "KCFinder är uppdaterad!", + "Licenses:" => "Licenser:", + "Attention" => "Uppmärksamhet", + "Question" => "Fråga", + "Yes" => "Ja", + "No" => "Nä", + "You cannot rename the extension of files!" => "Du kan inte byta namn på en förlängning av filer!", + "Uploading file {number} of {count}... {progress}" => "Ladda upp fil {number} av {count} ... {progress}", + "Failed to upload {filename}!" => "Uppladdning misslyckad {filename}!", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/tr.php b/manager/media/browser/mcpuk/lang/tr.php old mode 100644 new mode 100755 index b5ffb5ecc5..b36345d6a7 --- a/manager/media/browser/mcpuk/lang/tr.php +++ b/manager/media/browser/mcpuk/lang/tr.php @@ -1,8 +1,8 @@ -**/ + * translation by: Kursad Olmez + */ $lang = array( @@ -14,162 +14,83 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%d/%m/%Y %H:%M", - "You don't have permissions to upload files." => - "Dosya yüklemek için yetkiniz yok.", - - "You don't have permissions to browse server." => - "Sunucuyu gezmek için yetkiniz yok.", - - "Cannot move uploaded file to target folder." => - "Yüklenilen dosyalar hedef klasöre taşınamıyor.", - - "Unknown error." => - "Bilinmeyen hata.", - - "The uploaded file exceeds {size} bytes." => - "Gönderilen dosya boyutu, maksimum dosya boyutu limitini ({size} byte) aşıyor.", - - "The uploaded file was only partially uploaded." => - "Dosyanın sadece bir kısmı yüklendi. Yüklemeyi tekrar deneyin.", - - "No file was uploaded." => - "Dosya yüklenmedi.", - - "Missing a temporary folder." => - "Geçici dosya klasörü bulunamıyor. Klasörü kontrol edin.", - - "Failed to write file." => - "Dosya yazılamıyor. Klasör yetkilerini kontrol edin.", - - "Denied file extension." => - "Yasaklanmış dosya türü.", - - "Unknown image format/encoding." => - "Bilinmeyen resim formatı.", - - "The image is too big and/or cannot be resized." => - "Resim çok büyük ve/veya yeniden boyutlandırılamıyor.", - - "Cannot create {dir} folder." => - "{dir} klasörü oluşturulamıyor.", - - "Cannot write to upload folder." => - "Dosya yükleme klasörüne yazılamıyor. Klasör yetkisini kontrol edin.", - - "Cannot read .htaccess" => - ".htaccess dosyası okunamıyor", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "Hatalı .htaccess dosyası. Dosyaya yeniden yazılamıyor.", - - "Cannot read upload folder." => - "Dosya yükleme klasörü okunamıyor. Klasör yetkilerini kontrol edin.", - - "Cannot access or create thumbnails folder." => - "Önizleme dosyaları klasörüne erişilemiyor yada oluşturulamıyor.", - - "Cannot access or write to upload folder." => - "Dosya yükleme klasörüne ulaşılamıyor yada oluşturulamıyor.", - - "Please enter new folder name." => - "Lütfen yeni klasör adını girin.", - - "Unallowable characters in folder name." => - "Klasör adında izin verilmeyen karakter kullandınız.", - - "Folder name shouldn't begins with '.'" => - "Klasör adı '.' ile başlayamaz.", - - "Please enter new file name." => - "Lütfen yeni dosya adını girin.", - - "Unallowable characters in file name." => - "Dosya adında izin verilmeyen karakter kullandınız.", - - "File name shouldn't begins with '.'" => - "Dosya adı '.' ile başlayamaz.", - - "Are you sure you want to delete this file?" => - "Dosyayı silmek istediğinizden emin misiniz?", - - "Are you sure you want to delete this folder and all its content?" => - "Bu klasörü ve tüm içeriğini silmek istediğinizden emin misiniz?", - - "Inexistant or inaccessible folder." => - "Klasör yok yada ulaşılamıyor.", - - "Undefined MIME types." => - "Tanımsız MIME türü.", - - "Fileinfo PECL extension is missing." => - "Dosya Bilgisi PECL uzantısı eksik.", - - "Opening fileinfo database failed." => - "Dosya Bilgisi veritabanı açılırken hata oluştu.", - - "You can't upload such files." => - "Bu tür dosyaları yükleyemezsiniz.", - - "The file '{file}' does not exist." => - "'{file}' dosyası yok.", - - "Cannot read '{file}'." => - "'{file}' dosyası okunamıyor.", - - "Cannot copy '{file}'." => - "'{file}' dosyası kopyalanamıyor.", - - "Cannot move '{file}'." => - "'{file}' dosyası taşınamıyor.", - - "Cannot delete '{file}'." => - "'{file}' dosyası silinemiyor.", - - "Click to remove from the Clipboard" => - "Panodan çıkarmak için tıklayın", - - "This file is already added to the Clipboard." => - "Bu dosya zaten panoya eklenmiş.", - - "Copy files here" => - "Dosyaları Buraya Kopyala", - - "Move files here" => - "Dosyaları Buraya Taşı", - - "Delete files" => - "Dosyaları Sil", - - "Clear the Clipboard" => - "Panoyu Temizle", - - "Are you sure you want to delete all files in the Clipboard?" => - "Panodaki tüm dosyaları silmek istediğinizden emin misiniz?", - - "Copy {count} files" => - "{count} adet dosyayı kopyala", - - "Move {count} files" => - "{count} adet dosyayı taşı", - - "Add to Clipboard" => - "Panoya Ekle", - + "You don't have permissions to upload files." => "Dosya yüklemek için yetkiniz yok.", + "You don't have permissions to browse server." => "Sunucuyu gezmek için yetkiniz yok.", + "Cannot move uploaded file to target folder." => "Yüklenilen dosyalar hedef klasöre taşınamıyor.", + "Unknown error." => "Bilinmeyen hata.", + "The uploaded file exceeds {size} bytes." => "Gönderilen dosya boyutu, maksimum dosya boyutu limitini ({size} byte) aşıyor.", + "The uploaded file was only partially uploaded." => "Dosyanın sadece bir kısmı yüklendi. Yüklemeyi tekrar deneyin.", + "No file was uploaded." => "Dosya yüklenmedi.", + "Missing a temporary folder." => "Geçici dosya klasörü bulunamıyor. Klasörü kontrol edin.", + "Failed to write file." => "Dosya yazılamıyor. Klasör yetkilerini kontrol edin.", + "Denied file extension." => "Yasaklanmış dosya türü.", + "Unknown image format/encoding." => "Bilinmeyen resim formatı.", + "The image is too big and/or cannot be resized." => "Resim çok büyük ve/veya yeniden boyutlandırılamıyor.", + "Cannot create {dir} folder." => "{dir} klasörü oluşturulamıyor.", + "Cannot rename the folder." => "Klasör adı değiştirilemiyor.", + "Cannot write to upload folder." => "Dosya yükleme klasörüne yazılamıyor. Klasör yetkisini kontrol edin.", + "Cannot read .htaccess" => ".htaccess dosyası okunamıyor", + "Incorrect .htaccess file. Cannot rewrite it!" => "Hatalı .htaccess dosyası. Dosyaya yeniden yazılamıyor.", + "Cannot read upload folder." => "Dosya yükleme klasörü okunamıyor. Klasör yetkilerini kontrol edin.", + "Cannot access or create thumbnails folder." => "Önizleme dosyaları klasörüne erişilemiyor yada oluşturulamıyor.", + "Cannot access or write to upload folder." => "Dosya yükleme klasörüne ulaşılamıyor yada oluşturulamıyor.", + "Please enter new folder name." => "Lütfen yeni klasör adını girin.", + "Unallowable characters in folder name." => "Klasör adında izin verilmeyen karakter kullandınız.", + "Folder name shouldn't begins with '.'" => "Klasör adı '.' ile başlayamaz.", + "Please enter new file name." => "Lütfen yeni dosya adını girin.", + "Unallowable characters in file name." => "Dosya adında izin verilmeyen karakter kullandınız.", + "File name shouldn't begins with '.'" => "Dosya adı '.' ile başlayamaz.", + "Are you sure you want to delete this file?" => "Dosyayı silmek istediğinizden emin misiniz?", + "Are you sure you want to delete this folder and all its content?" => "Bu klasörü ve tüm içeriğini silmek istediğinizden emin misiniz?", + "Non-existing directory type." => "Geçersiz klasör türü.", + "Undefined MIME types." => "Tanımsız MIME türü.", + "Fileinfo PECL extension is missing." => "Dosya Bilgisi PECL uzantısı eksik.", + "Opening fileinfo database failed." => "Dosya Bilgisi veritabanı açılırken hata oluştu.", + "You can't upload such files." => "Bu tür dosyaları yükleyemezsiniz.", + "The file '{file}' does not exist." => "'{file}' dosyası yok.", + "Cannot read '{file}'." => "'{file}' dosyası okunamıyor.", + "Cannot copy '{file}'." => "'{file}' dosyası kopyalanamıyor.", + "Cannot move '{file}'." => "'{file}' dosyası taşınamıyor.", + "Cannot delete '{file}'." => "'{file}' dosyası silinemiyor.", + "Cannot delete the folder." => "Klasör silinemiyor.", + "Click to remove from the Clipboard" => "Panodan çıkarmak için tıklayın", + "This file is already added to the Clipboard." => "Bu dosya zaten panoya eklenmiş.", + "The files in the Clipboard are not readable." => "Panodaki dosyalar okunamıyor.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Panodaki {count} adet dosya okunamıyor. Geri kalanlarını kopyalamak istiyor musunuz?", + "The files in the Clipboard are not movable." => "Panodaki dosyalar taşınamıyor.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Panodaki {count} adet dosya taşınamıyor. Geri kalanlarını taşımak istiyor musunuz?", + "The files in the Clipboard are not removable." => "Dosyalar panodan çıkartılamıyor.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "{count} adet dosya panodan çıkartılamıyor. Geri kalanları silmek istiyor musunuz?", + "The selected files are not removable." => "Seçilen dosyalar panodan çıkartılamıyor.", + "{count} selected files are not removable. Do you want to delete the rest?" => "Seçilen dosyaların {count} adedi panodan çıkartılamıyor. Geri kalanları silmek istiyor musunuz?", + "Are you sure you want to delete all selected files?" => "Seçilen tüm dosyaları silmek istediğinizden emin misiniz?", + "Failed to delete {count} files/folders." => "{count} adet dosya/klasör silinemedi.", + "A file or folder with that name already exists." => "Bu isimde bir klasör yada dosya zaten var.", + "Copy files here" => "Dosyaları Buraya Kopyala", + "Move files here" => "Dosyaları Buraya Taşı", + "Delete files" => "Dosyaları Sil", + "Clear the Clipboard" => "Panoyu Temizle", + "Are you sure you want to delete all files in the Clipboard?" => "Panodaki tüm dosyaları silmek istediğinizden emin misiniz?", + "Copy {count} files" => "{count} adet dosyayı kopyala", + "Move {count} files" => "{count} adet dosyayı taşı", + "Add to Clipboard" => "Panoya Ekle", + "Inexistant or inaccessible folder." => "Klasör yok yada ulaşılamıyor.", "New folder name:" => "Yeni Klasör Adı:", "New file name:" => "Yeni Dosya Adı:", - "Upload" => "Yükle", "Refresh" => "Yenile", "Settings" => "Ayarlar", "Maximize" => "Pencereyi Büyüt", "About" => "Hakkında", "files" => "dosya", + "selected files" => "dosya seçildi", "View:" => "Görüntüleme:", "Show:" => "Göster:", "Order by:" => "Sıralama:", "Thumbnails" => "Önizleme", "List" => "Liste", "Name" => "Ad", + "Type" => "Tür", "Size" => "Boyut", "Date" => "Tarih", "Descending" => "Azalarak", @@ -184,70 +105,23 @@ "Cancel" => "İptal", "Select" => "Seç", "Select Thumbnail" => "Önizleme Resmini Seç", + "Select Thumbnails" => "Önizleme Resimlerini Seç", "View" => "Göster", "Download" => "İndir", - "Clipboard" => "Pano", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "Klasör adı değiştirilemiyor.", - - "Non-existing directory type." => - "Geçersiz klasör türü.", - - "Cannot delete the folder." => - "Klasör silinemiyor.", - - "The files in the Clipboard are not readable." => - "Panodaki dosyalar okunamıyor.", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "Panodaki {count} adet dosya okunamıyor. Geri kalanlarını kopyalamak istiyor musunuz?", - - "The files in the Clipboard are not movable." => - "Panodaki dosyalar taşınamıyor.", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "Panodaki {count} adet dosya taşınamıyor. Geri kalanlarını taşımak istiyor musunuz?", - - "The files in the Clipboard are not removable." => - "Dosyalar panodan çıkartılamıyor.", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "{count} adet dosya panodan çıkartılamıyor. Geri kalanları silmek istiyor musunuz?", - - "The selected files are not removable." => - "Seçilen dosyalar panodan çıkartılamıyor.", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "Seçilen dosyaların {count} adedi panodan çıkartılamıyor. Geri kalanları silmek istiyor musunuz?", - - "Are you sure you want to delete all selected files?" => - "Seçilen tüm dosyaları silmek istediğinizden emin misiniz?", - - "Failed to delete {count} files/folders." => - "{count} adet dosya/klasör silinemedi.", - - "A file or folder with that name already exists." => - "Bu isimde bir klasör yada dosya zaten var.", - - "selected files" => "dosya seçildi", - "Type" => "Tür", - "Select Thumbnails" => "Önizleme Resimlerini Seç", "Download files" => "Dosyaları İndir", - - // SINCE 2.4 - + "Clipboard" => "Pano", + "Checking for new version..." => "Yeni versiyon kontrol ediliyor...", + "Unable to connect!" => "Bağlantı yapılamıyor!", + "Download version {version} now!" => " {version} versiyonunu hemen indir!", + "KCFinder is up to date!" => "KCFinder güncel durumda!", "Licenses:" => "Lisanslar:", "Attention" => "Dikkat", "Question" => "Soru", "Yes" => "Evet", "No" => "Hayır", - - // SINCE 2.41 - "You cannot rename the extension of files!" => "Dosya uzantılarını değiştiremezsiniz!", + "Uploading file {number} of {count}... {progress}" => "{number} / {count} dosya yükleniyor... {progress}", + "Failed to upload {filename}!" => "{filename} dosyası yüklenemedi!", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/uk.php b/manager/media/browser/mcpuk/lang/uk.php new file mode 100755 index 0000000000..5caa120c6e --- /dev/null +++ b/manager/media/browser/mcpuk/lang/uk.php @@ -0,0 +1,128 @@ + "uk_UA.UTF-8", // UNIX localization code + '_charset' => "utf-8", // Browser charset + + // Date time formats. See http://www.php.net/manual/en/function.strftime.php + '_dateTimeFull' => "%A, %e %B, %Y %H:%M", + '_dateTimeMid' => "%a %e %b %Y %H:%M", + '_dateTimeSmall' => "%d.%m.%Y %H:%M", + + "You don't have permissions to upload files." => "У вас нема прав для завантаження файлів.", + "You don't have permissions to browse server." => "У вас нема прав для перегляду вмісту на сервері.", + "Cannot move uploaded file to target folder." => "Неможливо перемістити завантажений файл в папку призначення.", + "Unknown error." => "Невідома помилка.", + "The uploaded file exceeds {size} bytes." => "Завантажений файл перевищує розмір {size} байтів.", + "The uploaded file was only partially uploaded." => "Завантажений файл було завантажено лише частково.", + "No file was uploaded." => "Файл не було завантажено", + "Missing a temporary folder." => "Тимчасова папка не існує.", + "Failed to write file." => "Неможливо записати файл.", + "Denied file extension." => "Файли цього типу заборонені для завантаження.", + "Unknown image format/encoding." => "Невідомий формат зображення.", + "The image is too big and/or cannot be resized." => "Зображення занадто велике і/або не може бути зменшене.", + "Cannot create {dir} folder." => "Неможливо створити папку {dir}.", + "Cannot rename the folder." => "Неможливо перейменувати папку.", + "Cannot write to upload folder." => "Неможливо записати в папку завантаження.", + "Cannot read .htaccess" => "Неможливо прочитати файл .htaccess", + "Incorrect .htaccess file. Cannot rewrite it!" => "Неправильний файл .htaccess. Неможливо перезаписати!", + "Cannot read upload folder." => "Неможливо прочитати папку завантаження.", + "Cannot access or create thumbnails folder." => "Нема доступу або неможливо створити папку мініатюр.", + "Cannot access or write to upload folder." => "Нма доступу або неможливо записати в папку завантаження.", + "Please enter new folder name." => "Вкажіть назву нової папки.", + "Unallowable characters in folder name." => "Недопустимі символи в назві папки.", + "Folder name shouldn't begins with '.'" => "Назва папки не может починатися з '.'", + "Please enter new file name." => "Вкажіть нову назву файла", + "Unallowable characters in file name." => "Недопустимі символи в назві файлу.", + "File name shouldn't begins with '.'" => "Назва файла не може починатися з '.'", + "Are you sure you want to delete this file?" => "Ви впевнені що хочете вилучити цей файл?", + "Are you sure you want to delete this folder and all its content?" => "Ви впевнені що хочете вилучити цю папку і весь її вміст?", + "Non-existing directory type." => "Неіснуючий тип папки.", + "Undefined MIME types." => "Невизначені MIME-типи.", + "Fileinfo PECL extension is missing." => "Розширення Fileinfo PECL відсутнє.", + "Opening fileinfo database failed." => "Неможливо відкрити базу даних fileinfo.", + "You can't upload such files." => "Ви не можете завантажувати файли цього типу.", + "The file '{file}' does not exist." => "Файл '{file}' не існує.", + "Cannot read '{file}'." => "Неможливо прочитати файл '{file}'.", + "Cannot copy '{file}'." => "Неможливо копіювати файл '{file}'.", + "Cannot move '{file}'." => "Неможливо перемістити файл '{file}'.", + "Cannot delete '{file}'." => "Неможливо вилучити файл '{file}'.", + "Cannot delete the folder." => "Неможливо вилучити папку.", + "Click to remove from the Clipboard" => "Натисніть для вилучення з буфера обміну", + "This file is already added to the Clipboard." => "Цей файл вже додано в буфер обміну.", + "The files in the Clipboard are not readable." => "Неможливо прочитати файли в буфері обміну.", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "Неможливо прочитати {count} файл(ів) в буфері обміну. Ви хочете копіювати ті які залишилися?", + "The files in the Clipboard are not movable." => "Неможливо перемістити файли в буфері обміну.", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "Неможливо перемістити {count} файл(ів) в буфері обміну. Ви хчете перемістити ті які залишилися?", + "The files in the Clipboard are not removable." => "Неможливо вилучити файли в буфері обміну.", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "Неможливо вилучити {count} файл(ів) в буфері обміну. Ви хочете вилучити ті які залишилися?", + "The selected files are not removable." => "Неможливо вилучити вибрані файли.", + "{count} selected files are not removable. Do you want to delete the rest?" => "Неможливо вилучити вибраний(ні) {count} файл(и). Ви хочете вилучити ті які залишилися?", + "Are you sure you want to delete all selected files?" => "Ви впевнені що хочете вилучити всі вибрані файли?", + "Failed to delete {count} files/folders." => "Неможливо вилучити {count} файлів/папок.", + "A file or folder with that name already exists." => "Файл або папка з таким іменем вже існують.", + "Copy files here" => "Копіювати файли сюди", + "Move files here" => "Перемістити файли сюда", + "Delete files" => "Вилучити файли", + "Clear the Clipboard" => "Очистити буфер обміну", + "Are you sure you want to delete all files in the Clipboard?" => "Ви впевнені що хочете вилучити всі файли в буфері обміну?", + "Copy {count} files" => "Копіювати {count} файл(ів)", + "Move {count} files" => "Перемістити {count} файл(ів)", + "Add to Clipboard" => "Додати в буфер обміну", + "Inexistant or inaccessible folder." => "Неіснуюча або недоступна папка.", + "New folder name:" => "Нова назва папки:", + "New file name:" => "Нова назва файлу:", + "Upload" => "Завантажити", + "Refresh" => "Оновити", + "Settings" => "Налаштування", + "Maximize" => "Максимізувати", + "About" => "Про скрипт", + "files" => "файли", + "selected files" => "вибрані файли", + "View:" => "Перегляд:", + "Show:" => "Показувати:", + "Order by:" => "Впорядкувати за:", + "Thumbnails" => "Мініатюри", + "List" => "Список", + "Name" => "Назва", + "Type" => "Тип", + "Size" => "Розмір", + "Date" => "Дата", + "Descending" => "По спаданню", + "Uploading file..." => "Завантаження файлу...", + "Loading image..." => "Завантаження зображення...", + "Loading folders..." => "Завантаження папок...", + "Loading files..." => "Завантаження файлів...", + "New Subfolder..." => "Створити папку...", + "Rename..." => "Перейменувати...", + "Delete" => "Вилучити", + "OK" => "OK", + "Cancel" => "Скасувати", + "Select" => "Вибрати", + "Select Thumbnail" => "Вибрати мініатюру", + "Select Thumbnails" => "Вибрати мініатюри", + "View" => "Перегляд", + "Download" => "Зкачати", + "Download files" => "Зкачати файли", + "Clipboard" => "Буфер обміну", + "Checking for new version..." => "Перевіряємо наявність оновлень...", + "Unable to connect!" => "Неможливо підключитися!", + "Download version {version} now!" => "Скачати версію {version} зараз!", + "KCFinder is up to date!" => "Ви використовуєте останню версію KCFinder'а!", + "Licenses:" => "Ліцензії:", + "Attention" => "Увага", + "Question" => "Питання", + "Yes" => "Так", + "No" => "Ні", + "You cannot rename the extension of files!" => "Ви не можете змінювати розширення файлів!", + "Uploading file {number} of {count}... {progress}" => "Завантаження файлу {number} з {count}... {progress}", + "Failed to upload {filename}!" => "Помилка завантаження {filename}!", +); + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lang/vi.php b/manager/media/browser/mcpuk/lang/vi.php old mode 100644 new mode 100755 index 6ba40b2b4f..0119121cf5 --- a/manager/media/browser/mcpuk/lang/vi.php +++ b/manager/media/browser/mcpuk/lang/vi.php @@ -110,6 +110,10 @@ "Download" => "Tải xuống", "Download files" => "Tải xuống tập tin", "Clipboard" => "Bộ nhớ", + "Checking for new version..." => "Kiểm tra phiên bản mới", + "Unable to connect!" => "Không thể kết nối", + "Download version {version} now!" => "Có phiên bản mới {version}, tải về ngay!", + "KCFinder is up to date!" => "Không có cập nhật", "Licenses:" => "Bản quyền", "Attention" => "Cảnh báo", "Question" => "Câu hỏi", diff --git a/manager/media/browser/mcpuk/lang/zh-cn.php b/manager/media/browser/mcpuk/lang/zh-cn.php old mode 100644 new mode 100755 index 129596da33..ac68e2ea13 --- a/manager/media/browser/mcpuk/lang/zh-cn.php +++ b/manager/media/browser/mcpuk/lang/zh-cn.php @@ -17,162 +17,83 @@ '_dateTimeMid' => "%a %e %b %Y %H:%M", '_dateTimeSmall' => "%Y-%m-%d %H:%M", - "You don't have permissions to upload files." => - "您没有权限上传文件。", - - "You don't have permissions to browse server." => - "您没有权限查看服务器文件。", - - "Cannot move uploaded file to target folder." => - "无法移动上传文件到指定文件夹。", - - "Unknown error." => - "发生不可预知异常。", - - "The uploaded file exceeds {size} bytes." => - "文件大小超过{size}字节。", - - "The uploaded file was only partially uploaded." => - "文件未完全上传。", - - "No file was uploaded." => - "文件未上传。", - - "Missing a temporary folder." => - "临时文件夹不存在。", - - "Failed to write file." => - "写入文件失败。", - - "Denied file extension." => - "禁止的文件扩展名。", - - "Unknown image format/encoding." => - "无法确认图片格式。", - - "The image is too big and/or cannot be resized." => - "图片大太,且(或)无法更改大小。", - - "Cannot create {dir} folder." => - "无法创建{dir}文件夹。", - - "Cannot write to upload folder." => - "无法写入上传文件夹。", - - "Cannot read .htaccess" => - "文件.htaccess无法读取。", - - "Incorrect .htaccess file. Cannot rewrite it!" => - "文件.htaccess错误,无法重写。", - - "Cannot read upload folder." => - "无法读取上传目录。", - - "Cannot access or create thumbnails folder." => - "无法访问或创建缩略图文件夹。", - - "Cannot access or write to upload folder." => - "无法访问或写入上传文件夹。", - - "Please enter new folder name." => - "请输入文件夹名。", - - "Unallowable characters in folder name." => - "文件夹名含有禁止字符。", - - "Folder name shouldn't begins with '.'" => - "文件夹名不能以点(.)为首字符。", - - "Please enter new file name." => - "请输入新文件名。", - - "Unallowable characters in file name." => - "文件名含有禁止字符。", - - "File name shouldn't begins with '.'" => - "文件名不能以点(.)为首字符。", - - "Are you sure you want to delete this file?" => - "是否确认删除该文件?", - - "Are you sure you want to delete this folder and all its content?" => - "是否确认删除该文件夹以及其子文件和子目录?", - - "Inexistant or inaccessible folder." => - "不存在或不可访问的文件夹。", - - "Undefined MIME types." => - "未定义的MIME类型。", - - "Fileinfo PECL extension is missing." => - "文件PECL属性不存在。", - - "Opening fileinfo database failed." => - "打开文件属性数据库出错。", - - "You can't upload such files." => - "你无法上传该文件。", - - "The file '{file}' does not exist." => - "文件{file}不存在。", - - "Cannot read '{file}'." => - "无法读取文件{file}。", - - "Cannot copy '{file}'." => - "无法复制文件{file}。", - - "Cannot move '{file}'." => - "无法移动文件{file}。", - - "Cannot delete '{file}'." => - "无法删除文件{file}。", - - "Click to remove from the Clipboard" => - "点击从剪贴板删除", - - "This file is already added to the Clipboard." => - "文件已复制到剪贴板。", - - "Copy files here" => - "复制到这里", - - "Move files here" => - "移动到这里", - - "Delete files" => - "删除这些文件", - - "Clear the Clipboard" => - "清除剪贴板", - - "Are you sure you want to delete all files in the Clipboard?" => - "是否确认删除所有在剪贴板的文件?", - - "Copy {count} files" => - "复制 {count} 个文件", - - "Move {count} files" => - "移动 {count} 个文件 ", - - "Add to Clipboard" => - "添加到剪贴板", - + "You don't have permissions to upload files." => "您没有权限上传文件。", + "You don't have permissions to browse server." => "您没有权限查看服务器文件。", + "Cannot move uploaded file to target folder." => "无法移动上传文件到指定文件夹。", + "Unknown error." => "发生不可预知异常。", + "The uploaded file exceeds {size} bytes." => "文件大小超过{size}字节。", + "The uploaded file was only partially uploaded." => "文件未完全上传。", + "No file was uploaded." => "文件未上传。", + "Missing a temporary folder." => "临时文件夹不存在。", + "Failed to write file." => "写入文件失败。", + "Denied file extension." => "禁止的文件扩展名。", + "Unknown image format/encoding." => "无法确认图片格式。", + "The image is too big and/or cannot be resized." => "图片大太,且(或)无法更改大小。", + "Cannot create {dir} folder." => "无法创建{dir}文件夹。", + "Cannot rename the folder." => "无法重命名该文件夹。", + "Cannot write to upload folder." => "无法写入上传文件夹。", + "Cannot read .htaccess" => "文件.htaccess无法读取。", + "Incorrect .htaccess file. Cannot rewrite it!" => "文件.htaccess错误,无法重写。", + "Cannot read upload folder." => "无法读取上传目录。", + "Cannot access or create thumbnails folder." => "无法访问或创建缩略图文件夹。", + "Cannot access or write to upload folder." => "无法访问或写入上传文件夹。", + "Please enter new folder name." => "请输入文件夹名。", + "Unallowable characters in folder name." => "文件夹名含有禁止字符。", + "Folder name shouldn't begins with '.'" => "文件夹名不能以点(.)为首字符。", + "Please enter new file name." => "请输入新文件名。", + "Unallowable characters in file name." => "文件名含有禁止字符。", + "File name shouldn't begins with '.'" => "文件名不能以点(.)为首字符。", + "Are you sure you want to delete this file?" => "是否确认删除该文件?", + "Are you sure you want to delete this folder and all its content?" => "是否确认删除该文件夹以及其子文件和子目录?", + "Non-existing directory type." => "不存在的目录类型。", + "Undefined MIME types." => "未定义的MIME类型。", + "Fileinfo PECL extension is missing." => "文件PECL属性不存在。", + "Opening fileinfo database failed." => "打开文件属性数据库出错。", + "You can't upload such files." => "你无法上传该文件。", + "The file '{file}' does not exist." => "文件{file}不存在。", + "Cannot read '{file}'." => "无法读取文件{file}。", + "Cannot copy '{file}'." => "无法复制文件{file}。", + "Cannot move '{file}'." => "无法移动文件{file}。", + "Cannot delete '{file}'." => "无法删除文件{file}。", + "Cannot delete the folder." => "无法删除该文件夹。", + "Click to remove from the Clipboard" => "点击从剪贴板删除", + "This file is already added to the Clipboard." => "文件已复制到剪贴板。", + "The files in the Clipboard are not readable." => "剪贴板上该文件无法读取。", + "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => "剪贴板{count}个文件无法读取。 是否复制静态文件?", + "The files in the Clipboard are not movable." => "剪贴板上该文件无法移动。", + "{count} files in the Clipboard are not movable. Do you want to move the rest?" => "剪贴板{count}个文件无法移动。 是否移动静态文件?", + "The files in the Clipboard are not removable." => "剪贴板上该文件无法删除。", + "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => "剪贴板{count}个文件无法删除。 是否删除静态文件?", + "The selected files are not removable." => "选中文件未删除。", + "{count} selected files are not removable. Do you want to delete the rest?" => "选中的{count}个文件未删除。是否删除静态文件?", + "Are you sure you want to delete all selected files?" => "是否确认删除选中文件?", + "Failed to delete {count} files/folders." => "{count}个文件或文件夹无法删除。", + "A file or folder with that name already exists." => "文件或文件夹已存在。", + "Copy files here" => "复制到这里", + "Move files here" => "移动到这里", + "Delete files" => "删除这些文件", + "Clear the Clipboard" => "清除剪贴板", + "Are you sure you want to delete all files in the Clipboard?" => "是否确认删除所有在剪贴板的文件?", + "Copy {count} files" => "复制 {count} 个文件", + "Move {count} files" => "移动 {count} 个文件 ", + "Add to Clipboard" => "添加到剪贴板", + "Inexistant or inaccessible folder." => "不存在或不可访问的文件夹。", "New folder name:" => "新文件夹名:", "New file name:" => "新文件夹:", - "Upload" => "上传", "Refresh" => "刷新", "Settings" => "设置", "Maximize" => "最大化", "About" => "关于", "files" => "文件", + "selected files" => "选中的文件", "View:" => "视图:", "Show:" => "显示:", "Order by:" => "排序:", "Thumbnails" => "图标", "List" => "列表", "Name" => "文件名", + "Type" => "种类", "Size" => "大小", "Date" => "日期", "Descending" => "降序", @@ -187,58 +108,23 @@ "Cancel" => "取消", "Select" => "选择", "Select Thumbnail" => "选择缩略图", + "Select Thumbnails" => "选择缩略图", "View" => "查看", "Download" => "下载", - "Clipboard" => "剪贴板", - - // VERSION 2 NEW LABELS - - "Cannot rename the folder." => - "无法重命名该文件夹。", - - "Non-existing directory type." => - "不存在的目录类型。", - - "Cannot delete the folder." => - "无法删除该文件夹。", - - "The files in the Clipboard are not readable." => - "剪贴板上该文件无法读取。", - - "{count} files in the Clipboard are not readable. Do you want to copy the rest?" => - "剪贴板{count}个文件无法读取。 是否复制静态文件?", - - "The files in the Clipboard are not movable." => - "剪贴板上该文件无法移动。", - - "{count} files in the Clipboard are not movable. Do you want to move the rest?" => - "剪贴板{count}个文件无法移动。 是否移动静态文件?", - - "The files in the Clipboard are not removable." => - "剪贴板上该文件无法删除。", - - "{count} files in the Clipboard are not removable. Do you want to delete the rest?" => - "剪贴板{count}个文件无法删除。 是否删除静态文件?", - - "The selected files are not removable." => - "选中文件未删除。", - - "{count} selected files are not removable. Do you want to delete the rest?" => - "选中的{count}个文件未删除。是否删除静态文件?", - - "Are you sure you want to delete all selected files?" => - "是否确认删除选中文件?", - - "Failed to delete {count} files/folders." => - "{count}个文件或文件夹无法删除。", - - "A file or folder with that name already exists." => - "文件或文件夹已存在。", - - "selected files" => "选中的文件", - "Type" => "种类", - "Select Thumbnails" => "选择缩略图", "Download files" => "下载文件", + "Clipboard" => "剪贴板", + "Checking for new version..." => "正在检查新版本...", + "Unable to connect!" => "无法链接!", + "Download version {version} now!" => "马上下载{version}版本!", + "KCFinder is up to date!" => "KCFinder已经是最新的!", + "Licenses:" => "许可证", + "Attention" => "注意", + "Question" => "问题", + "Yes" => "是", + "No" => "否", + "You cannot rename the extension of files!" => "禁止修改文件后缀", + "Uploading file {number} of {count}... {progress}" => "正在上传文件{number} / {count}... {progress}", + "Failed to upload {filename}!" => "上传失败{filename}!", ); -?> +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lib/class_fastImage.php b/manager/media/browser/mcpuk/lib/class_fastImage.php new file mode 100755 index 0000000000..a42093af37 --- /dev/null +++ b/manager/media/browser/mcpuk/lib/class_fastImage.php @@ -0,0 +1,240 @@ +load($uri); + } + + + public function load($uri) + { + if ($this->handle) $this->close(); + + $this->uri = $uri; + $this->handle = fopen($uri, 'r'); + } + + + public function close() + { + if (is_resource($this->handle)) fclose($this->handle); + } + + + public function getSize() + { + $this->strpos = 0; + if ($this->getType()) + { + return array_values($this->parseSize()); + } + + return false; + } + + + public function getType() + { + $this->strpos = 0; + + if (!$this->type) + { + switch ($this->getChars(2)) + { + case "BM": + return $this->type = 'bmp'; + case "GI": + return $this->type = 'gif'; + case chr(0xFF).chr(0xd8): + return $this->type = 'jpeg'; + case chr(0x89).'P': + return $this->type = 'png'; + default: + return false; + } + } + + return $this->type; + } + + + private function parseSize() + { + $this->strpos = 0; + + switch ($this->type) + { + case 'png': + return $this->parseSizeForPNG(); + case 'gif': + return $this->parseSizeForGIF(); + case 'bmp': + return $this->parseSizeForBMP(); + case 'jpeg': + return $this->parseSizeForJPEG(); + } + + return null; + } + + + private function parseSizeForPNG() + { + $chars = $this->getChars(25); + + return unpack("N*", substr($chars, 16, 8)); + } + + + private function parseSizeForGIF() + { + $chars = $this->getChars(11); + + return unpack("S*", substr($chars, 6, 4)); + } + + + private function parseSizeForBMP() + { + $chars = $this->getChars(29); + $chars = substr($chars, 14, 14); + $type = unpack('C', $chars); + + return (reset($type) == 40) ? unpack('L*', substr($chars, 4)) : unpack('L*', substr($chars, 4, 8)); + } + + + private function parseSizeForJPEG() + { + $state = null; + $i = 0; + + while (true) + { + switch ($state) + { + default: + $this->getChars(2); + $state = 'started'; + break; + + case 'started': + $b = $this->getByte(); + if ($b === false) return false; + + $state = $b == 0xFF ? 'sof' : 'started'; + break; + + case 'sof': + $b = $this->getByte(); + if (in_array($b, range(0xe0, 0xef))) + { + $state = 'skipframe'; + } + elseif (in_array($b, array_merge(range(0xC0,0xC3), range(0xC5,0xC7), range(0xC9,0xCB), range(0xCD,0xCF)))) + { + $state = 'readsize'; + } + elseif ($b == 0xFF) + { + $state = 'sof'; + } + else + { + $state = 'skipframe'; + } + break; + + case 'skipframe': + $skip = $this->readInt($this->getChars(2)) - 2; + $state = 'doskip'; + break; + + case 'doskip': + $this->getChars($skip); + $state = 'started'; + break; + + case 'readsize': + $c = $this->getChars(7); + + return array($this->readInt(substr($c, 5, 2)), $this->readInt(substr($c, 3, 2))); + } + } + } + + + private function getChars($n) + { + $response = null; + + // do we need more data? + if ($this->strpos + $n -1 >= strlen($this->str)) + { + $end = ($this->strpos + $n); + + while (strlen($this->str) < $end && $response !== false) + { + // read more from the file handle + $need = $end - ftell($this->handle); + + if ($response = fread($this->handle, $need)) + { + $this->str .= $response; + } + else + { + return false; + } + } + } + + $result = substr($this->str, $this->strpos, $n); + $this->strpos += $n; + + // we are dealing with bytes here, so force the encoding + return mb_convert_encoding($result, "8BIT"); + } + + + private function getByte() + { + $c = $this->getChars(1); + $b = unpack("C", $c); + + return reset($b); + } + + + private function readInt($str) + { + $size = unpack("C*", $str); + + return ($size[1] << 8) + $size[2]; + } + + + public function __destruct() + { + $this->close(); + } +} \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lib/class_image.php b/manager/media/browser/mcpuk/lib/class_image.php new file mode 100755 index 0000000000..b270eabb73 --- /dev/null +++ b/manager/media/browser/mcpuk/lib/class_image.php @@ -0,0 +1,241 @@ + + * @copyright 2010-2014 KCFinder Project + * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 + * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 + * @link http://kcfinder.sunhater.com + */ + +abstract class image { + const DEFAULT_JPEG_QUALITY = 75; + +/** Image resource or object + * @var mixed */ + protected $image; + +/** Image width in pixels + * @var integer */ + protected $width; + +/** Image height in pixels + * @var integer */ + protected $height; + +/** Init error + * @var bool */ + protected $initError = false; + +/** Driver specific options + * @var array */ + protected $options = array(); + + +/** Magic method which allows read-only access to all protected or private + * class properties + * @param string $property + * @return mixed */ + + final public function __get($property) { + return property_exists($this, $property) ? $this->$property : null; + } + + +/** Constructor. Parameter $image should be: + * 1. An instance of image driver class (copy instance). + * 2. An image represented by the type of the $image property + * (resource or object). + * 3. An array with two elements. First - width, second - height. + * Creates a blank image. + * 4. A filename string. Get image form file. + * Second paramaeter is used by pass some specific image driver options + * @param mixed $image + * @param array $options */ + + public function __construct($image, array $options=array()) { + $this->image = $this->width = $this->height = null; + $imageDetails = $this->buildImage($image); + + if ($imageDetails !== false) + list($this->image, $this->width, $this->height) = $imageDetails; + else + $this->initError = true; + $this->options = $options; + } + + +/** Factory pattern to load selected driver. $image and $options are passed + * to the constructor of the image driver + * @param string $driver + * @param mixed $image + * @return object */ + + final static function factory($driver, $image, array $options=array()) { + $class = "image_$driver"; + return new $class($image, $options); + } + + +/** Checks if the drivers in the array parameter could be used. Returns first + * found one + * @param array $drivers + * @return string */ + + final static function getDriver(array $drivers=array('gd')) { + foreach ($drivers as $driver) { + if (!preg_match('/^[a-z0-9\_]+$/i', $driver)) + continue; + $class = "image_$driver"; + if (class_exists($class) && method_exists($class, "available")) { + eval("\$avail = $class::available();"); + if ($avail) return $driver; + } + } + return false; + } + + +/** Returns an array. Element 0 - image resource. Element 1 - width. Element 2 - height. + * Returns FALSE on failure. + * @param mixed $image + * @return array */ + + final protected function buildImage($image) { + $class = get_class($this); + + if ($image instanceof $class) { + $width = $image->width; + $height = $image->height; + $img = $image->image; + + } elseif (is_array($image)) { + list($key, $width) = each($image); + list($key, $height) = each($image); + $img = $this->getBlankImage($width, $height); + + } else + $img = $this->getImage($image, $width, $height); + + return ($img !== false) + ? array($img, $width, $height) + : false; + } + + +/** Returns calculated proportional width from the given height + * @param integer $resizedHeight + * @return integer */ + + final public function getPropWidth($resizedHeight) { + $width = round(($this->width * $resizedHeight) / $this->height); + if (!$width) $width = 1; + return $width; + } + + +/** Returns calculated proportional height from the given width + * @param integer $resizedWidth + * @return integer */ + + final public function getPropHeight($resizedWidth) { + $height = round(($this->height * $resizedWidth) / $this->width); + if (!$height) $height = 1; + return $height; + } + + +/** Checks if PHP needs some extra extensions to use the image driver. This + * static method should be implemented into driver classes like abstract + * methods + * @return bool */ + static function available() { return false; } + +/** Checks if file is an image. This static method should be implemented into + * driver classes like abstract methods + * @param string $file + * @return bool */ + static function checkImage($file) { return false; } + +/** Resize image. Should return TRUE on success or FALSE on failure + * @param integer $width + * @param integer $height + * @return bool */ + abstract public function resize($width, $height); + +/** Resize image to fit in given resolution. Should returns TRUE on success + * or FALSE on failure. If $background is set, the image size will be + * $width x $height and the empty spaces (if any) will be filled with defined + * color. Background color examples: "#5f5", "#ff67ca", array(255, 255, 255) + * @param integer $width + * @param integer $height + * @param mixed $background + * @return bool */ + abstract public function resizeFit($width, $height, $background=false); + +/** Resize and crop the image to fit in given resolution. Returns TRUE on + * success or FALSE on failure + * @param mixed $src + * @param integer $offset + * @return bool */ + abstract public function resizeCrop($width, $height, $offset=false); + + +/** Rotate image + * @param integer $angle + * @param string $background + * @return bool */ + abstract public function rotate($angle, $background="#000000"); + + abstract public function flipHorizontal(); + + abstract public function flipVertical(); + +/** Apply a PNG or GIF watermark to the image. $top and $left parameters sets + * the offset of the watermark in pixels. Boolean and NULL values are possible + * too. In default case (FALSE, FALSE) the watermark should be applyed to + * the bottom right corner. NULL values means center aligning. If the + * watermark is bigger than the image or it's partialy or fully outside the + * image, it shoudn't be applied + * @param string $file + * @param mixed $top + * @param mixed $left + * @return bool */ + abstract public function watermark($file, $left=false, $top=false); + +/** Should output the image. Second parameter is used to pass some options like + * 'file' - if is set, the output will be written to a file + * 'quality' - compression quality + * It's possible to use extra specific options required by image type ($type) + * @param string $type + * @param array $options + * @return bool */ + abstract public function output($type='jpeg', array $options=array()); + +/** This method should create a blank image with selected size. Should returns + * resource or object related to the created image, which will be passed to + * $image property + * @param integer $width + * @param integer $height + * @return mixed */ + abstract protected function getBlankImage($width, $height); + +/** This method should create an image from source image. Only first parameter + * ($image) is input. Its type should be filename string or a type of the + * $image property. See the constructor reference for details. The + * parametters $width and $height are output only. Should returns resource or + * object related to the created image, which will be passed to $image + * property + * @param mixed $image + * @param integer $width + * @param integer $height + * @return mixed */ + abstract protected function getImage($image, &$width, &$height); + +} + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lib/class_image_gd.php b/manager/media/browser/mcpuk/lib/class_image_gd.php new file mode 100755 index 0000000000..2a107f46be --- /dev/null +++ b/manager/media/browser/mcpuk/lib/class_image_gd.php @@ -0,0 +1,351 @@ + + * @copyright 2010-2014 KCFinder Project + * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 + * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 + * @link http://kcfinder.sunhater.com + */ + +class image_gd extends image { + + + // ABSTRACT PUBLIC METHODS + + public function resize($width, $height) { + if (!$width) $width = 1; + if (!$height) $height = 1; + return ( + (false !== ($img = new image_gd(array($width, $height)))) && + $img->imageCopyResampled($this) && + (false !== ($this->image = $img->image)) && + (false !== ($this->width = $img->width)) && + (false !== ($this->height = $img->height)) + ); + } + + public function resizeFit($width, $height, $background=false) { + if ((!$width && !$height) || (($width == $this->width) && ($height == $this->height))) + return true; + if (!$width || (($height / $width) < ($this->height / $this->width))) { + $h = $height; + $w = round(($this->width * $h) / $this->height); + } elseif (!$height || (($width / $height) < ($this->width / $this->height))) { + $w = $width; + $h = round(($this->height * $w) / $this->width); + } else { + $w = $width; + $h = $height; + } + if (!$w) $w = 1; + if (!$h) $h = 1; + + if ($background === false) + return $this->resize($w, $h); + + else { + $img = new image_gd(array($width, $height)); + $x = round(($width - $w) / 2); + $y = round(($height - $h) / 2); + + if ((false === $this->resize($w, $h)) || + (false === $img->imageFilledRectangle(0, 0, $width, $height, $background)) || + (false === $img->imageCopyResampled($this->image, $x, $y, 0, 0, $w, $h)) + ) + return false; + + $this->image = $img->image; + $this->width = $width; + $this->height = $height; + + return true; + } + } + + public function resizeCrop($width, $height, $offset=false) { + + if (($this->width / $this->height) > ($width / $height)) { + $h = $height; + $w = ($this->width * $h) / $this->height; + $y = 0; + if ($offset !== false) { + if ($offset > 0) + $offset = -$offset; + if (($w + $offset) <= $width) + $offset = $width - $w; + $x = $offset; + } else + $x = ($width - $w) / 2; + + } else { + $w = $width; + $h = ($this->height * $w) / $this->width; + $x = 0; + if ($offset !== false) { + if ($offset > 0) + $offset = -$offset; + if (($h + $offset) <= $height) + $offset = $height - $h; + $y = $offset; + } else + $y = ($height - $h) / 2; + } + + $x = round($x); + $y = round($y); + $w = round($w); + $h = round($h); + if (!$w) $w = 1; + if (!$h) $h = 1; + + $return = ( + (false !== ($img = new image_gd(array($width, $height))))) && + (false !== ($img->imageCopyResampled($this->image, $x, $y, 0, 0, $w, $h)) + ); + + if ($return) { + $this->image = $img->image; + $this->width = $w; + $this->height = $h; + } + + return $return; + } + + public function rotate($angle, $background="#000000") { + $angle = -$angle; + $img = @imagerotate($this->image, $angle, $this->gdColor($background)); + if ($img === false) + return false; + $this->width = imagesx($img); + $this->height = imagesy($img); + $this->image = $img; + return true; + } + + public function flipHorizontal() { + $img = imagecreatetruecolor($this->width, $this->height); + imagealphablending($img, false); + imagesavealpha($img, true); + if (imagecopyresampled($img, $this->image, 0, 0, ($this->width - 1), 0, $this->width, $this->height, -$this->width, $this->height)) + $this->image = $img; + else + return false; + return true; + } + + public function flipVertical() { + $img = imagecreatetruecolor($this->width, $this->height); + imagealphablending($img, false); + imagesavealpha($img, true); + if (imagecopyresampled($img, $this->image, 0, 0, 0, ($this->height - 1), $this->width, $this->height, $this->width, -$this->height)) + $this->image = $img; + else + return false; + return true; + } + + public function watermark($file, $left=false, $top=false) { + $info = getimagesize($file); + list($w, $h, $t) = $info; + if (!in_array($t, array(IMAGETYPE_PNG, IMAGETYPE_GIF))) + return false; + $imagecreate = ($t == IMAGETYPE_PNG) ? "imagecreatefrompng" : "imagecreatefromgif"; + + if (!@imagealphablending($this->image, true) || + (false === ($wm = @$imagecreate($file))) + ) + return false; + + $w = imagesx($wm); + $h = imagesy($wm); + $x = + ($left === true) ? 0 : ( + ($left === null) ? round(($this->width - $w) / 2) : ( + (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left)); + $y = + ($top === true) ? 0 : ( + ($top === null) ? round(($this->height - $h) / 2) : ( + (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top)); + + if ((($x + $w) > $this->width) || + (($y + $h) > $this->height) || + ($x < 0) || ($y < 0) + ) + return false; + + if (($wm === false) || !@imagecopy($this->image, $wm, $x, $y, 0, 0, $w, $h)) + return false; + + @imagealphablending($this->image, false); + @imagesavealpha($this->image, true); + return true; + } + + public function output($type='jpeg', array $options=array()) { + $method = "output_$type"; + if (!method_exists($this, $method)) + return false; + return $this->$method($options); + } + + + // ABSTRACT PROTECTED METHODS + + protected function getBlankImage($width, $height) { + $img = @imagecreatetruecolor($width, $height); + imagealphablending($img, false); + imagesavealpha($img, true); + return $img; + } + + protected function getImage($image, &$width, &$height) { + + if (is_resource($image) && (get_resource_type($image) == "gd")) { + $width = @imagesx($image); + $height = @imagesy($image); + return $image; + + } elseif (is_string($image) && + (false !== (list($width, $height, $t) = @getimagesize($image))) + ) { + $image = + ($t == IMAGETYPE_GIF) ? @imagecreatefromgif($image) : ( + ($t == IMAGETYPE_WBMP) ? @imagecreatefromwbmp($image) : ( + ($t == IMAGETYPE_JPEG) ? @imagecreatefromjpeg($image) : ( + ($t == IMAGETYPE_PNG) ? @imagecreatefrompng($image) : ( + ($t == IMAGETYPE_XBM) ? @imagecreatefromxbm($image) : false + )))); + + return $image; + + } else + return false; + } + + + // PSEUDO-ABSTRACT STATIC METHODS + + static function available() { + return function_exists("imagecreatefromjpeg"); + } + + static function checkImage($file) { + if (!is_string($file) || + ((false === (list($width, $height, $t) = @getimagesize($file)))) + ) + return false; + + $img = + ($t == IMAGETYPE_GIF) ? @imagecreatefromgif($file) : ( + ($t == IMAGETYPE_WBMP) ? @imagecreatefromwbmp($file) : ( + ($t == IMAGETYPE_JPEG) ? @imagecreatefromjpeg($file) : ( + ($t == IMAGETYPE_PNG) ? @imagecreatefrompng($file) : ( + ($t == IMAGETYPE_XBM) ? @imagecreatefromxbm($file) : false + )))); + + return ($img !== false); + } + + + // OWN METHODS + + protected function output_png(array $options=array()) { + $file = isset($options['file']) ? $options['file'] : null; + $quality = isset($options['quality']) ? $options['quality'] : null; + $filters = isset($options['filters']) ? $options['filters'] : null; + if (($file === null) && !headers_sent()) + header("Content-Type: image/png"); + @imagesavealpha($this->image, true); + return imagepng($this->image, $file, $quality, $filters); + } + + protected function output_jpeg(array $options=array()) { + $file = isset($options['file']) ? $options['file'] : null; + $quality = isset($options['quality']) + ? $options['quality'] + : self::DEFAULT_JPEG_QUALITY; + if (($file === null) && !headers_sent()) + header("Content-Type: image/jpeg"); + return imagejpeg($this->image, $file, $quality); + } + + protected function output_gif(array $options=array()) { + $file = isset($options['file']) ? $options['file'] : null; + if (isset($options['file']) && !headers_sent()) + header("Content-Type: image/gif"); + return imagegif($this->image, $file); + } + + protected function gdColor() { + $args = func_get_args(); + + $exprRGB = '/^rgb\(\s*(\d{1,3})\s*\,\s*(\d{1,3})\s*\,\s*(\d{1,3})\s*\)$/i'; + $exprHex1 = '/^\#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i'; + $exprHex2 = '/^\#?([0-9a-f])([0-9a-f])([0-9a-f])$/i'; + $exprByte = '/^([01]?\d?\d|2[0-4]\d|25[0-5])$/'; + + if (!isset($args[0])) + return false; + + if (count($args[0]) == 3) { + list($r, $g, $b) = $args[0]; + + } elseif (preg_match($exprRGB, $args[0], $match)) { + list($tmp, $r, $g, $b) = $match; + + } elseif (preg_match($exprHex1, $args[0], $match)) { + list($tmp, $r, $g, $b) = $match; + $r = hexdec($r); + $g = hexdec($g); + $b = hexdec($b); + + } elseif (preg_match($exprHex2, $args[0], $match)) { + list($tmp, $r, $g, $b) = $match; + $r = hexdec("$r$r"); + $g = hexdec("$g$g"); + $b = hexdec("$b$b"); + + } elseif ((count($args) == 3) && + preg_match($exprByte, $args[0]) && + preg_match($exprByte, $args[1]) && + preg_match($exprByte, $args[2]) + ) { + list($r, $g, $b) = $args; + + } else + return false; + + return imagecolorallocate($this->image, $r, $g, $b); + } + + protected function imageFilledRectangle($x1, $y1, $x2, $y2, $color) { + $color = $this->gdColor($color); + if ($color === false) return false; + return imageFilledRectangle($this->image, $x1, $y1, $x2, $y2, $color); + } + + protected function imageCopyResampled( + $src, $dstX=0, $dstY=0, $srcX=0, $srcY=0, $dstW=null, $dstH=null, $srcW=null, $srcH=null + ) { + $imageDetails = $this->buildImage($src); + + if ($imageDetails === false) + return false; + + list($src, $srcWidth, $srcHeight) = $imageDetails; + + if (is_null($dstW)) $dstW = $this->width - $dstW; + if (is_null($dstH)) $dstH = $this->height - $dstY; + if (is_null($srcW)) $srcW = $srcWidth - $srcX; + if (is_null($srcH)) $srcH = $srcHeight - $srcY; + return imageCopyResampled($this->image, $src, $dstX, $dstY, $srcX, $srcY, $dstW, $dstH, $srcW, $srcH); + } +} + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lib/class_image_gmagick.php b/manager/media/browser/mcpuk/lib/class_image_gmagick.php new file mode 100755 index 0000000000..a53b528b07 --- /dev/null +++ b/manager/media/browser/mcpuk/lib/class_image_gmagick.php @@ -0,0 +1,302 @@ + + * @copyright 2010-2014 KCFinder Project + * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 + * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 + * @link http://kcfinder.sunhater.com + */ + +class image_gmagick extends image { + + static $MIMES = array( + //'tif' => "image/tiff" + ); + + + // ABSTRACT PUBLIC METHODS + + public function resize($width, $height) {// + if (!$width) $width = 1; + if (!$height) $height = 1; + try { + $this->image->scaleImage($width, $height); + } catch (Exception $e) { + return false; + } + $this->width = $width; + $this->height = $height; + return true; + } + + public function resizeFit($width, $height, $background=false) {// + if (!$width) $width = 1; + if (!$height) $height = 1; + + try { + $this->image->scaleImage($width, $height, true); + $w = $this->image->getImageWidth(); + $h = $this->image->getImageHeight(); + } catch (Exception $e) { + return false; + } + + if ($background === false) { + $this->width = $w; + $this->height = $h; + return true; + + } else { + try { + $this->image->setImageBackgroundColor($background); + $x = round(($width - $w) / 2); + $y = round(($height - $h) / 2); + $img = new Gmagick(); + $img->newImage($width, $height, $background); + $img->compositeImage($this->image, 1, $x, $y); + } catch (Exception $e) { + return false; + } + $this->image = $img; + $this->width = $width; + $this->height = $height; + return true; + } + } + + public function resizeCrop($width, $height, $offset=false) { + if (!$width) $width = 1; + if (!$height) $height = 1; + + if (($this->width / $this->height) > ($width / $height)) { + $h = $height; + $w = ($this->width * $h) / $this->height; + $y = 0; + if ($offset !== false) { + if ($offset > 0) + $offset = -$offset; + if (($w + $offset) <= $width) + $offset = $width - $w; + $x = $offset; + } else + $x = ($width - $w) / 2; + + } else { + $w = $width; + $h = ($this->height * $w) / $this->width; + $x = 0; + if ($offset !== false) { + if ($offset > 0) + $offset = -$offset; + if (($h + $offset) <= $height) + $offset = $height - $h; + $y = $offset; + } else + $y = ($height - $h) / 2; + } + + $x = round($x); + $y = round($y); + $w = round($w); + $h = round($h); + if (!$w) $w = 1; + if (!$h) $h = 1; + + try { + $this->image->scaleImage($w, $h); + $this->image->cropImage($width, $height, -$x, -$y); + } catch (Exception $e) { + return false; + } + + $this->width = $width; + $this->height = $height; + return true; + } + + public function rotate($angle, $background="#000000") { + try { + $this->image->rotateImage($background, $angle); + $w = $this->image->getImageWidth(); + $h = $this->image->getImageHeight(); + } catch (Exception $e) { + return false; + } + $this->width = $w; + $this->height = $h; + return true; + } + + public function flipHorizontal() { + try { + $this->image->flopImage(); + } catch (Exception $e) { + return false; + } + return true; + } + + public function flipVertical() { + try { + $this->image->flipImage(); + } catch (Exception $e) { + return false; + } + return true; + } + + public function watermark($file, $left=false, $top=false) { + try { + $wm = new Gmagick($file); + $w = $wm->getImageWidth(); + $h = $wm->getImageHeight(); + } catch (Exception $e) { + return false; + } + + $x = + ($left === true) ? 0 : ( + ($left === null) ? round(($this->width - $w) / 2) : ( + (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left)); + $y = + ($top === true) ? 0 : ( + ($top === null) ? round(($this->height - $h) / 2) : ( + (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top)); + + if ((($x + $w) > $this->width) || + (($y + $h) > $this->height) || + ($x < 0) || ($y < 0) + ) + return false; + + try { + $this->image->compositeImage($wm, 1, $x, $y); + } catch (Exception $e) { + return false; + } + return true; + } + + + // ABSTRACT PROTECTED METHODS + + protected function getBlankImage($width, $height) { + try { + $img = new Gmagick(); + $img->newImage($width, $height, "none"); + } catch (Exception $e) { + return false; + } + return $img; + } + + protected function getImage($image, &$width, &$height) { + + if (is_object($image) && ($image instanceof image_gmagick)) { + $width = $image->width; + $height = $image->height; + return $image->image; + + } elseif (is_object($image) && ($image instanceof Gmagick)) { + try { + $w = $image->getImageWidth(); + $h = $image->getImageHeight(); + } catch (Exception $e) { + return false; + } + $width = $w; + $height = $h; + return $image; + + } elseif (is_string($image)) { + try { + $image = new Gmagick($image); + $w = $image->getImageWidth(); + $h = $image->getImageHeight(); + } catch (Exception $e) { + return false; + } + $width = $w; + $height = $h; + return $image; + + } else + return false; + } + + + // PSEUDO-ABSTRACT STATIC METHODS + + static function available() { + return class_exists("Gmagick"); + } + + static function checkImage($file) { + try { + $img = new Gmagic($file); + } catch (Exception $e) { + return false; + } + return true; + } + + + // INHERIT METHODS + + public function output($type="jpeg", array $options=array()) { + $type = strtolower($type); + try { + $this->image->setImageFormat($type); + } catch (Exception $e) { + return false; + } + $method = "optimize_$type"; + if (method_exists($this, $method) && !$this->$method($options)) + return false; + + if (!isset($options['file'])) { + if (!headers_sent()) { + $mime = isset(self::$MIMES[$type]) ? self::$MIMES[$type] : "image/$type"; + header("Content-Type: $mime"); + } + echo $this->image; + + } else { + $file = $options['file'] . ".$type"; + try { + $this->image->writeImage($file); + } catch (Exception $e) { + @unlink($file); + return false; + } + + if (!@rename($file, $options['file'])) { + @unlink($file); + return false; + } + } + + return true; + } + + + // OWN METHODS + + protected function optimize_jpeg(array $options=array()) { + $quality = isset($options['quality']) ? $options['quality'] : self::DEFAULT_JPEG_QUALITY; + try { + $this->image->setCompressionQuality($quality); + } catch (Exception $e) { + return false; + } + return true; + } + +} + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lib/class_image_imagick.php b/manager/media/browser/mcpuk/lib/class_image_imagick.php new file mode 100755 index 0000000000..4f4d7b8cfc --- /dev/null +++ b/manager/media/browser/mcpuk/lib/class_image_imagick.php @@ -0,0 +1,305 @@ + + * @copyright 2010-2014 KCFinder Project + * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 + * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 + * @link http://kcfinder.sunhater.com + */ + +class image_imagick extends image { + + static $MIMES = array( + //'tif' => "image/tiff" + ); + + + // ABSTRACT PUBLIC METHODS + + public function resize($width, $height) {// + if (!$width) $width = 1; + if (!$height) $height = 1; + try { + $this->image->scaleImage($width, $height); + } catch (Exception $e) { + return false; + } + $this->width = $width; + $this->height = $height; + return true; + } + + public function resizeFit($width, $height, $background=false) {// + if (!$width) $width = 1; + if (!$height) $height = 1; + + try { + $this->image->scaleImage($width, $height, true); + $size = $this->image->getImageGeometry(); + } catch (Exception $e) { + return false; + } + + if ($background === false) { + $this->width = $size['width']; + $this->height = $size['height']; + return true; + + } else { + try { + $this->image->setImageBackgroundColor($background); + $x = -round(($width - $size['width']) / 2); + $y = -round(($height - $size['height']) / 2); + $this->image->extentImage($width, $height, $x, $y); + } catch (Exception $e) { + return false; + } + $this->width = $width; + $this->height = $height; + return true; + } + } + + public function resizeCrop($width, $height, $offset=false) { + if (!$width) $width = 1; + if (!$height) $height = 1; + + if (($this->width / $this->height) > ($width / $height)) { + $h = $height; + $w = ($this->width * $h) / $this->height; + $y = 0; + if ($offset !== false) { + if ($offset > 0) + $offset = -$offset; + if (($w + $offset) <= $width) + $offset = $width - $w; + $x = $offset; + } else + $x = ($width - $w) / 2; + + } else { + $w = $width; + $h = ($this->height * $w) / $this->width; + $x = 0; + if ($offset !== false) { + if ($offset > 0) + $offset = -$offset; + if (($h + $offset) <= $height) + $offset = $height - $h; + $y = $offset; + } else + $y = ($height - $h) / 2; + } + + $x = round($x); + $y = round($y); + $w = round($w); + $h = round($h); + if (!$w) $w = 1; + if (!$h) $h = 1; + + try { + $this->image->scaleImage($w, $h); + $this->image->cropImage($width, $height, -$x, -$y); + } catch (Exception $e) { + return false; + } + + $this->width = $width; + $this->height = $height; + return true; + } + + public function rotate($angle, $background="#000000") { + try { + $this->image->rotateImage(new ImagickPixel($background), $angle); + $size = $this->image->getImageGeometry(); + } catch (Exception $e) { + return false; + } + $this->width = $size['width']; + $this->height = $size['height']; + return true; + } + + public function flipHorizontal() { + try { + $this->image->flopImage(); + } catch (Exception $e) { + return false; + } + return true; + } + + public function flipVertical() { + try { + $this->image->flipImage(); + } catch (Exception $e) { + return false; + } + return true; + } + + public function watermark($file, $left=false, $top=false) { + try { + $wm = new Imagick($file); + $size = $wm->getImageGeometry(); + } catch (Exception $e) { + return false; + } + + $w = $size['width']; + $h = $size['height']; + $x = + ($left === true) ? 0 : ( + ($left === null) ? round(($this->width - $w) / 2) : ( + (($left === false) || !preg_match('/^\d+$/', $left)) ? ($this->width - $w) : $left)); + $y = + ($top === true) ? 0 : ( + ($top === null) ? round(($this->height - $h) / 2) : ( + (($top === false) || !preg_match('/^\d+$/', $top)) ? ($this->height - $h) : $top)); + + if ((($x + $w) > $this->width) || + (($y + $h) > $this->height) || + ($x < 0) || ($y < 0) + ) + return false; + + try { + $this->image->compositeImage($wm, Imagick::COMPOSITE_DEFAULT, $x, $y); + } catch (Exception $e) { + return false; + } + return true; + } + + + // ABSTRACT PROTECTED METHODS + + protected function getBlankImage($width, $height) { + try { + $img = new Imagick(); + $img->newImage($width, $height, "none"); + $img->setImageCompressionQuality(100); + } catch (Exception $e) { + return false; + } + return $img; + } + + protected function getImage($image, &$width, &$height) { + + if (is_object($image) && ($image instanceof image_imagick)) { + try { + $image->image->setImageCompressionQuality(100); + } catch (Exception $e) { + return false; + } + $width = $image->width; + $height = $image->height; + return $image->image; + + } elseif (is_object($image) && ($image instanceof Imagick)) { + try { + $image->setImageCompressionQuality(100); + $size = $image->getImageGeometry(); + } catch (Exception $e) { + return false; + } + $width = $size['width']; + $height = $size['height']; + return $image; + + } elseif (is_string($image)) { + try { + $image = new Imagick($image); + $image->setImageCompressionQuality(100); + $size = $image->getImageGeometry(); + } catch (Exception $e) { + return false; + } + $width = $size['width']; + $height = $size['height']; + return $image; + + } else + return false; + } + + + // PSEUDO-ABSTRACT STATIC METHODS + + static function available() { + return class_exists("Imagick"); + } + + static function checkImage($file) { + try { + $img = new Imagic($file); + } catch (Exception $e) { + return false; + } + return true; + } + + + // INHERIT METHODS + + public function output($type="jpeg", array $options=array()) { + $type = strtolower($type); + try { + $this->image->setImageFormat($type); + } catch (Exception $e) { + return false; + } + $method = "optimize_$type"; + if (method_exists($this, $method) && !$this->$method($options)) + return false; + + if (!isset($options['file'])) { + if (!headers_sent()) { + $mime = isset(self::$MIMES[$type]) ? self::$MIMES[$type] : "image/$type"; + header("Content-Type: $mime"); + } + echo $this->image; + + } else { + $file = $options['file'] . ".$type"; + try { + $this->image->writeImage($file); + } catch (Exception $e) { + @unlink($file); + return false; + } + + if (!@rename($file, $options['file'])) { + @unlink($file); + return false; + } + } + + return true; + } + + + // OWN METHODS + + protected function optimize_jpeg(array $options=array()) { + $quality = isset($options['quality']) ? $options['quality'] : self::DEFAULT_JPEG_QUALITY; + try { + $this->image->setImageCompression(Imagick::COMPRESSION_JPEG); + $this->image->setImageCompressionQuality($quality); + } catch (Exception $e) { + return false; + } + return true; + } + +} + +?> \ No newline at end of file diff --git a/manager/media/browser/mcpuk/lib/class_input.php b/manager/media/browser/mcpuk/lib/class_input.php old mode 100644 new mode 100755 index ef98b8f7d4..40879c22b3 --- a/manager/media/browser/mcpuk/lib/class_input.php +++ b/manager/media/browser/mcpuk/lib/class_input.php @@ -4,9 +4,9 @@ * * @desc Input class for GET, POST and COOKIE requests * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/lib/class_zipFolder.php b/manager/media/browser/mcpuk/lib/class_zipFolder.php old mode 100644 new mode 100755 index bbdd1fca25..3885a9e45a --- a/manager/media/browser/mcpuk/lib/class_zipFolder.php +++ b/manager/media/browser/mcpuk/lib/class_zipFolder.php @@ -5,9 +5,9 @@ * * @desc Directory to ZIP file archivator * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/lib/helper_dir.php b/manager/media/browser/mcpuk/lib/helper_dir.php old mode 100644 new mode 100755 index 156ee1ecb1..2ddfc54113 --- a/manager/media/browser/mcpuk/lib/helper_dir.php +++ b/manager/media/browser/mcpuk/lib/helper_dir.php @@ -4,9 +4,9 @@ * * @desc Directory helper class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -141,7 +141,7 @@ static function content($dir, array $options=null) { $files[] = $options['addPath'] ? "$dir/$file" : $file; } closedir($dh); - usort($files, "dir::fileSort"); + usort($files, array("dir", "fileSort")); return $files; } diff --git a/manager/media/browser/mcpuk/lib/helper_file.php b/manager/media/browser/mcpuk/lib/helper_file.php old mode 100644 new mode 100755 index efb7011646..4221268c7c --- a/manager/media/browser/mcpuk/lib/helper_file.php +++ b/manager/media/browser/mcpuk/lib/helper_file.php @@ -4,9 +4,9 @@ * * @desc File helper class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/lib/helper_httpCache.php b/manager/media/browser/mcpuk/lib/helper_httpCache.php old mode 100644 new mode 100755 index f4ddbd4a8d..e2c2c2c417 --- a/manager/media/browser/mcpuk/lib/helper_httpCache.php +++ b/manager/media/browser/mcpuk/lib/helper_httpCache.php @@ -4,9 +4,9 @@ * * @desc HTTP cache helper class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com @@ -51,7 +51,7 @@ static function content($content, $mtime, $type=null, $expire=null, array $heade if ($checkMTime) self::checkMTime($mtime); if ($type === null) $type = self::DEFAULT_TYPE; if ($expire === null) $expire = self::DEFAULT_EXPIRE; - $size = function_exists('mb_strlen') ? mb_strlen($content,'ASCII') : strlen($content); + $size = strlen($content); $expires = gmdate("D, d M Y H:i:s", time() + $expire) . " GMT"; header("Content-Type: $type"); header("Expires: $expires"); diff --git a/manager/media/browser/mcpuk/lib/helper_path.php b/manager/media/browser/mcpuk/lib/helper_path.php old mode 100644 new mode 100755 index 50d542414a..20886eeb60 --- a/manager/media/browser/mcpuk/lib/helper_path.php +++ b/manager/media/browser/mcpuk/lib/helper_path.php @@ -4,9 +4,9 @@ * * @desc Path helper class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/lib/helper_text.php b/manager/media/browser/mcpuk/lib/helper_text.php old mode 100644 new mode 100755 index dd571b9a3d..abd92d3eeb --- a/manager/media/browser/mcpuk/lib/helper_text.php +++ b/manager/media/browser/mcpuk/lib/helper_text.php @@ -4,9 +4,9 @@ * * @desc Text processing helper class * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com diff --git a/manager/media/browser/mcpuk/themes/oxygen/about.txt b/manager/media/browser/mcpuk/themes/oxygen/about.txt index 8139418710..ecebc5dddc 100644 --- a/manager/media/browser/mcpuk/themes/oxygen/about.txt +++ b/manager/media/browser/mcpuk/themes/oxygen/about.txt @@ -5,7 +5,7 @@ http://www.kde.org Theme Details: Project: KCFinder - http://kcfinder.sunhater.com -Version: 2.51 -Author: Pavel Tzonkov +Version: 2.54 +Author: Pavel Tzonkov Licenses: GPLv2 - http://www.opensource.org/licenses/gpl-2.0.php LGPLv2 - http://www.opensource.org/licenses/lgpl-2.1.php diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/..png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/..png index aaff48419a..3ce6fb0f1a 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/..png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/..png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/.image.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/.image.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/.image.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/.image.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/avi.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/avi.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/avi.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/avi.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bat.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bat.png index eaa3dc9386..8c9e717dea 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bat.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bat.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bmp.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bmp.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bmp.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bmp.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bz2.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bz2.png index 84eaa19aa6..8d5447927d 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bz2.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/bz2.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ccd.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ccd.png index aa9f4a206e..4eaafeeaec 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ccd.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ccd.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cgi.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cgi.png index eaa3dc9386..8c9e717dea 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cgi.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cgi.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/com.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/com.png index 427a328ba6..d4ec17bae4 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/com.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/com.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/csh.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/csh.png index eaa3dc9386..8c9e717dea 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/csh.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/csh.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cue.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cue.png index aa9f4a206e..4eaafeeaec 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cue.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/cue.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/deb.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/deb.png index 14ce82ff47..6b20addca4 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/deb.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/deb.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/dll.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/dll.png index 9e03a48d99..de365e73ca 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/dll.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/dll.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/doc.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/doc.png index b544dcc896..ee6439a65f 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/doc.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/doc.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/docx.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/docx.png index b544dcc896..ee6439a65f 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/docx.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/docx.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/exe.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/exe.png index 427a328ba6..d4ec17bae4 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/exe.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/exe.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fla.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fla.png index 5e7c751b68..fea31d1608 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fla.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fla.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/flv.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/flv.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/flv.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/flv.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fon.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fon.png index 3815dac6a8..0d02efc021 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fon.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/fon.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gif.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gif.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gif.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gif.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gz.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gz.png index 84eaa19aa6..8d5447927d 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gz.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/gz.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/htm.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/htm.png index 4995b6b26a..b5a88b5576 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/htm.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/htm.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/html.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/html.png index 4995b6b26a..b5a88b5576 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/html.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/html.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/image.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/image.png new file mode 100644 index 0000000000..5ca1333d0e Binary files /dev/null and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/image.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ini.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ini.png index 02489bd824..8b9c0b1471 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ini.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ini.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/iso.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/iso.png index aa9f4a206e..4eaafeeaec 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/iso.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/iso.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jar.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jar.png index cef54cd173..3c5ed76c25 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jar.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jar.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/java.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/java.png index 351b5db9fb..fc5e85fde6 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/java.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/java.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpeg.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpeg.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpeg.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpeg.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpg.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpg.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpg.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/jpg.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/js.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/js.png index fcb1f8f48b..fb160a1ae3 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/js.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/js.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mds.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mds.png index aa9f4a206e..4eaafeeaec 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mds.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mds.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mdx.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mdx.png index aa9f4a206e..4eaafeeaec 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mdx.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mdx.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mid.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mid.png index 6187bc5059..10d2a69af7 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mid.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mid.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/midi.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/midi.png index 6187bc5059..10d2a69af7 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/midi.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/midi.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mkv.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mkv.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mkv.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mkv.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mov.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mov.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mov.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mov.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mp3.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mp3.png index 5f4c206521..dacc8eb8d8 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mp3.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mp3.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpeg.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpeg.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpeg.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpeg.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpg.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpg.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpg.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/mpg.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nfo.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nfo.png index 02489bd824..8b9c0b1471 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nfo.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nfo.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nrg.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nrg.png index aa9f4a206e..4eaafeeaec 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nrg.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/nrg.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ogg.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ogg.png index 5f4c206521..dacc8eb8d8 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ogg.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ogg.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pdf.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pdf.png index 49cf5e3340..3e46e74a6f 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pdf.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pdf.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/php.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/php.png index 588bef8903..544cd2bbb7 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/php.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/php.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/phps.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/phps.png index 588bef8903..544cd2bbb7 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/phps.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/phps.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pl.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pl.png index d3468a561c..89b9960fe3 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pl.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pl.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pm.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pm.png index d3468a561c..89b9960fe3 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pm.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pm.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/png.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/png.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/png.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/png.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ppt.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ppt.png index ae13c8a488..6fc3affde0 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ppt.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ppt.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pptx.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pptx.png index ae13c8a488..6fc3affde0 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pptx.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/pptx.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/psd.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/psd.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/psd.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/psd.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/qt.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/qt.png index 28f9700f4f..28f8a62403 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/qt.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/qt.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rar.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rar.png index 84eaa19aa6..8d5447927d 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rar.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rar.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rpm.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rpm.png index 0708eef4ee..f647b1968c 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rpm.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rpm.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rtf.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rtf.png index 02489bd824..8b9c0b1471 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rtf.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/rtf.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sh.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sh.png index eaa3dc9386..8c9e717dea 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sh.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sh.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/srt.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/srt.png index 02489bd824..8b9c0b1471 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/srt.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/srt.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sub.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sub.png index 02489bd824..8b9c0b1471 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sub.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/sub.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/swf.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/swf.png index 45a8208d76..679b7a884b 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/swf.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/swf.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tgz.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tgz.png index d7e7b5b17f..15340cf32e 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tgz.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tgz.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tif.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tif.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tif.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tif.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tiff.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tiff.png index bbe1180e18..785cd39fcc 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tiff.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/tiff.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/torrent.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/torrent.png index 0bffac4b6f..87afd11b44 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/torrent.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/torrent.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ttf.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ttf.png index 4f43e196fb..cb99d03853 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ttf.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/ttf.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/txt.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/txt.png index 02489bd824..8b9c0b1471 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/txt.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/txt.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wav.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wav.png index 5f4c206521..dacc8eb8d8 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wav.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wav.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wma.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wma.png index 5f4c206521..dacc8eb8d8 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wma.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/wma.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xls.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xls.png index ddf069fe6c..bdecb30eb9 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xls.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xls.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xlsx.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xlsx.png index ddf069fe6c..bdecb30eb9 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xlsx.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/xlsx.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/zip.png b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/zip.png index 84eaa19aa6..8d5447927d 100644 Binary files a/manager/media/browser/mcpuk/themes/oxygen/img/files/big/zip.png and b/manager/media/browser/mcpuk/themes/oxygen/img/files/big/zip.png differ diff --git a/manager/media/browser/mcpuk/themes/oxygen/style.css b/manager/media/browser/mcpuk/themes/oxygen/style.css index ce2af715f0..723145bcca 100644 --- a/manager/media/browser/mcpuk/themes/oxygen/style.css +++ b/manager/media/browser/mcpuk/themes/oxygen/style.css @@ -63,7 +63,7 @@ input[type="button"]:focus, input[type="submit"]:focus, input[type="reset"]:focu } fieldset { - margin: 0 5px 5px 0; + margin: 0 5px 5px 0px; padding: 5px; border: 1px solid #afadaa; border-radius: 4px; @@ -564,4 +564,15 @@ span.close:hover { span.clicked:hover { background: url(img/icons/close-clicked.png); +} +.selectThis { + padding: 6px 0; + border-radius: 2px; + background: #EEE; + color: #4EA94E; + cursor: pointer; + text-transform: uppercase; +} +.selectThis:hover { + background-color: #fff; } \ No newline at end of file diff --git a/manager/media/browser/mcpuk/tpl/tpl_css.php b/manager/media/browser/mcpuk/tpl/tpl_css.php index 6ad453dccb..dbf5d58e97 100644 --- a/manager/media/browser/mcpuk/tpl/tpl_css.php +++ b/manager/media/browser/mcpuk/tpl/tpl_css.php @@ -1,2 +1,2 @@ - +cms}" : "" ) ?>" rel="stylesheet" type="text/css" /> diff --git a/manager/media/browser/mcpuk/tpl/tpl_javascript.php b/manager/media/browser/mcpuk/tpl/tpl_javascript.php index 8c6d78ac9f..d43aa8f8b7 100644 --- a/manager/media/browser/mcpuk/tpl/tpl_javascript.php +++ b/manager/media/browser/mcpuk/tpl/tpl_javascript.php @@ -14,6 +14,7 @@ browser.version = ""; browser.support.chromeFrame = ; browser.support.zip = config['denyZipDownload']) ? "true" : "false" ?>; +browser.support.check4Update = config['denyUpdateCheck']) || !$this->config['denyUpdateCheck']) && (ini_get("allow_url_fopen") || function_exists("http_get") || function_exists("curl_init") || function_exists('socket_create'))) ? "true" : "false" ?>; browser.lang = "lang) ?>"; browser.type = "type) ?>"; browser.theme = "config['theme']) ?>"; @@ -32,6 +33,9 @@ opener['TinyMCE']) && $this->opener['TinyMCE']): ?> browser.opener.TinyMCE = true; +get['opener']) && ($this->get['opener'] == "tinymce4") && isset($this->get['field'])): ?> +browser.opener.TinyMCE4 = "get['field']) ?>"; + browser.cms = "cms) ?>"; _.kuki.domain = "config['cookieDomain']) ?>"; _.kuki.path = "config['cookiePath']) ?>"; diff --git a/manager/media/browser/mcpuk/upload.php b/manager/media/browser/mcpuk/upload.php index 2bdcbcdfc7..d57696c30d 100644 --- a/manager/media/browser/mcpuk/upload.php +++ b/manager/media/browser/mcpuk/upload.php @@ -4,16 +4,16 @@ * * @desc Upload calling script * @package KCFinder - * @version 2.51 - * @author Pavel Tzonkov - * @copyright 2010, 2011 KCFinder Project + * @version 2.54 + * @author Pavel Tzonkov + * @copyright 2010-2014 KCFinder Project * @license http://www.opensource.org/licenses/gpl-2.0.php GPLv2 * @license http://www.opensource.org/licenses/lgpl-2.1.php LGPLv2 * @link http://kcfinder.sunhater.com */ require "core/autoload.php"; -$uploader = new uploader(); +$uploader = new uploader($modx); $uploader->upload(); ?> \ No newline at end of file diff --git a/manager/media/calendar/calendar.html b/manager/media/calendar/calendar.html deleted file mode 100755 index 16148cc0cc..0000000000 --- a/manager/media/calendar/calendar.html +++ /dev/null @@ -1,158 +0,0 @@ - - - -Select datetime - - - - - - -
                      - - - - -
                      - - - -
                      - - - diff --git a/manager/media/calendar/datepicker.css b/manager/media/calendar/datepicker.css deleted file mode 100644 index 966845b155..0000000000 --- a/manager/media/calendar/datepicker.css +++ /dev/null @@ -1,81 +0,0 @@ -input.DatePicker{ - width: 150px; - padding: 3px 3px 3px 24px; - border: 1px solid #0070bf; - font-size: 13px; - cursor: pointer; -} -input:focus.DatePicker{ -} -.dp_container{ - position: relative; - padding: 0; - z-index: 500; -} -.dp_cal{ - background-color: #fff; - border: 1px solid #0070bf; - position: absolute; - width: 177px; - top: 24px; - left: 0; - margin: 0px 0px 3px 0px; -} -.dp_cal table{ - width: 100%; - border-collapse: collapse; - border-spacing: 0; -} - -.dp_cal table tr td input.cal_timeTextBox { - margin-top: 3px; - text-align: center; - width: 60px; - margin: 0 auto; -} - -.dp_cal select{ - margin: 2px 3px; - font-size: 11px; -} -.dp_cal select option{ - padding: 1px 3px; -} -.dp_cal th, -.dp_cal td{ - width: 14.2857%; - text-align: center; - font-size: 11px; - padding: 2px 0; -} -.dp_cal th{ - border: solid #aad4f2; - border-width: 1px 0; - color: #797774; - background: #daf2e6; - font-weight: bold; -} -.dp_cal td{ - cursor: pointer; -} -.dp_cal thead th{ - background: #d9eefc; -} -.dp_cal td.dp_roll{ - color: #000; - background: #fff6bf; -} -/* must have this for the IE6 select box hiding */ -.dp_hide{ - visibility: hidden; -} -.dp_empty{ - background: #eee; -} -.dp_today{ - background: #daf2e6; -} -.dp_selected{ - color: #fff; - background: #328dcf; -} \ No newline at end of file diff --git a/manager/media/calendar/datepicker.inc.php b/manager/media/calendar/datepicker.inc.php new file mode 100644 index 0000000000..efb87d5fd4 --- /dev/null +++ b/manager/media/calendar/datepicker.inc.php @@ -0,0 +1,11 @@ +parseText($tpl,$_lang,'[%','%]'); + } +} diff --git a/manager/media/calendar/datepicker.js b/manager/media/calendar/datepicker.js index 0a1ee76976..d9758e5508 100644 --- a/manager/media/calendar/datepicker.js +++ b/manager/media/calendar/datepicker.js @@ -49,23 +49,10 @@ var DatePicker = new Class({ yearOrder: options.yearOrder || this.yearOrder, yearOffset: options.yearOffset || this.yearOffset }; - + // Finds the entered date, or uses the current date - if(dp.value != '') { - // handle dd-mm-YYYY date format as that is invalid for Date() - if (dp.options.format == 'dd-mm-YYYY hh:mm:00' || dp.options.format == 'dd-mm-YYYY') { - var dateVals = dp.value.split(' '); - var dateParts = dateVals[0].split('-'); - dp.thenvalue = dateParts[1] + '/' + dateParts[0] + '/' + dateParts[2]; - if (dateVals[1]) dp.thenvalue = dp.thenvalue + ' ' + dateVals[1]; - } else { - dp.thenvalue = dp.value; - } - dp.then = new Date(dp.thenvalue); - dp.today = new Date(); - } else { - dp.then = dp.today = new Date(); - } + dp = this.getValue(dp); + // Set beginning time and today, remember the original dp.oldYear = dp.year = dp.then.getFullYear(); dp.oldMonth = dp.month = dp.then.getMonth(); @@ -73,7 +60,7 @@ var DatePicker = new Class({ dp.nowYear = dp.today.getFullYear(); dp.nowMonth = dp.today.getMonth(); dp.nowDay = dp.today.getDate(); - + dp.setProperties({'id':dp.getProperty('name'), 'autocomplete': 'off'}); dp.container = false; dp.calendar = false; @@ -81,6 +68,35 @@ var DatePicker = new Class({ dp.active = false; dp.onclick = dp.onfocus = this.create.pass(dp, this); }, + + getValue: function(dp) { + if(dp.value != '') { + // handle dd-mm-YYYY date format as that is invalid for Date() + if (dp.options.format == 'dd-mm-YYYY hh:mm:00' || dp.options.format == 'dd-mm-YYYY') { + var dateVals = dp.value.split(' '); + var dateParts = dateVals[0].split('-'); + dp.thenvalue = dateParts[1] + '/' + dateParts[0] + '/' + dateParts[2]; + if (dateVals[1]) dp.thenvalue = dp.thenvalue + ' ' + dateVals[1]; + } else { + dp.thenvalue = dp.value; + } + dp.then = new Date(dp.thenvalue); + dp.today = new Date(); + } else { + dp.then = dp.today = new Date(); + dp.thenvalue = dp.then; + } + return dp; + }, + + updateValue: function(dp) { + el = $(document.body).getElement('td.dp_selected'); + if(el) { + ds = el.axis.split('|'); + dp.value = this.formatValue(dp, ds[0], ds[1], ds[2]); + this.dp.dirty = true; + } + }, close: function(e) { if (!$(this.dp.id + 'dp_container')) return; @@ -88,19 +104,22 @@ var DatePicker = new Class({ var clickOutside = ($chk(e) && e.target != this.dp && e.target != this.dp.container && !$(this.dp.id + 'dp_container').hasChild(e.target)); if (clickOutside) { + if(this.dp.dirty) this.updateValue(this.dp); this.remove(this.dp); } }, /* create the calendar */ create: function(dp){ + + // Finds the entered date, or uses the current date + dp = this.getValue(dp); + this.dp = dp; if (dp.calendar) return false; - // Hide select boxes while calendar is up - if(window.ie6){ - $$('select').addClass('dp_hide'); - } - + + this.dp.dirty = false; + /* create the outer container */ dp.container = new Element('div', {'class':'dp_container', 'id': dp.id + 'dp_container'}).injectBefore(dp); @@ -133,9 +152,7 @@ var DatePicker = new Class({ /* set the day to first of the month */ var firstDay = (1-(7+date.getDay()-dp.options.startDay)%7); - - - + /* create the month select box */ monthSel = new Element('select', {'id':dp.id + '_monthSelect'}); for (var m = 0; m < dp.options.monthNames.length; m++){ @@ -160,10 +177,10 @@ var DatePicker = new Class({ i++; } } - + /* create time textbox */ if (!dp.time) { - var d = new Date(); + var d = new Date(dp.thenvalue); var minutes = d.getMinutes(); if (minutes < 10) { minutes = '0' + minutes; @@ -246,9 +263,18 @@ var DatePicker = new Class({ /* set the onclick events for all calendar days */ $$('td.' + dp.id + '_calDay').each(function(el){ el.onclick = function(){ - ds = el.axis.split('|'); - dp.value = this.formatValue(dp, ds[0], ds[1], ds[2]); - this.remove(dp); + if( $(document.body).getElement('td.dp_selected') ) + $(document.body).getElement('td.dp_selected').removeClass('dp_selected'); // Remove old selected + el.addClass('dp_selected'); // Set new selected + this.updateValue(this.dp); + // this.remove(dp); // Stay after date is picked + }.bind(this); + el.ondblclick = function(){ + if( $(document.body).getElement('td.dp_selected') ) + $(document.body).getElement('td.dp_selected').removeClass('dp_selected'); // Remove old selected + el.addClass('dp_selected'); // Set new selected + this.updateValue(this.dp); + this.remove(dp); // Close for double click }.bind(this); }.bind(this)); @@ -275,14 +301,17 @@ var DatePicker = new Class({ this.create(dp); }.bind(this); - /* set the onchange event for the month & year select boxes */ - timeTextBox.onfocus = function(){ dp.active = true; }; + /* set the onchange event for the timeTextBox */ + timeTextBox.onfocus = function(){ dp.active = true; }; + timeTextBox.onblur = function() { + this.updateValue(this.dp); + }.bind(this); timeTextBox.onkeypress = function(e) { + this.dp.dirty = true; e = new Event(e); - if (e.code == 13) { - this.dp.value = this.formatValue(this.dp, this.dp.nowYear, parseInt(this.dp.nowMonth) + 1, this.dp.nowDay); - this.remove(this.dp); - return false; + if (e.code == 13) { + this.updateValue(this.dp); + return false; } }.bind(this); }, @@ -313,7 +342,9 @@ var DatePicker = new Class({ dp.month = dp.oldMonth = '' + (month - 1) + ''; dp.year = dp.oldYear = year; dp.oldDay = day; - + + this.dp.thenvalue = month+'/'+day+'/'+year+' '+time[0]+':'+time[1]+':00'; + /* return the date string value */ return dateStr; }, diff --git a/manager/media/calendar/datepicker.tpl b/manager/media/calendar/datepicker.tpl new file mode 100644 index 0000000000..a9e9dea9b8 --- /dev/null +++ b/manager/media/calendar/datepicker.tpl @@ -0,0 +1,12 @@ + + diff --git a/manager/media/calendar/img/cal.gif b/manager/media/calendar/img/cal.gif deleted file mode 100755 index 8526cf5d19..0000000000 Binary files a/manager/media/calendar/img/cal.gif and /dev/null differ diff --git a/manager/media/calendar/img/logo.gif b/manager/media/calendar/img/logo.gif deleted file mode 100755 index 6b5397dd31..0000000000 Binary files a/manager/media/calendar/img/logo.gif and /dev/null differ diff --git a/manager/media/calendar/img/next.gif b/manager/media/calendar/img/next.gif deleted file mode 100755 index bf02152774..0000000000 Binary files a/manager/media/calendar/img/next.gif and /dev/null differ diff --git a/manager/media/calendar/img/next_year.gif b/manager/media/calendar/img/next_year.gif deleted file mode 100755 index ac12ea1307..0000000000 Binary files a/manager/media/calendar/img/next_year.gif and /dev/null differ diff --git a/manager/media/calendar/img/pixel.gif b/manager/media/calendar/img/pixel.gif deleted file mode 100755 index 46a2cf086c..0000000000 Binary files a/manager/media/calendar/img/pixel.gif and /dev/null differ diff --git a/manager/media/calendar/img/prev.gif b/manager/media/calendar/img/prev.gif deleted file mode 100755 index 211e1faba1..0000000000 Binary files a/manager/media/calendar/img/prev.gif and /dev/null differ diff --git a/manager/media/calendar/img/prev_year.gif b/manager/media/calendar/img/prev_year.gif deleted file mode 100755 index d8145d598f..0000000000 Binary files a/manager/media/calendar/img/prev_year.gif and /dev/null differ diff --git a/manager/media/calendar/img/tc.gif b/manager/media/calendar/img/tc.gif deleted file mode 100755 index 576e14879b..0000000000 Binary files a/manager/media/calendar/img/tc.gif and /dev/null differ diff --git a/manager/media/rss/rss_cache.inc b/manager/media/rss/rss_cache.inc index 7966242fc1..9984dc7a67 100644 --- a/manager/media/rss/rss_cache.inc +++ b/manager/media/rss/rss_cache.inc @@ -21,7 +21,7 @@ class RSSCache { var $MAX_AGE = 3600; // when are files stale, default one hour var $ERROR = ""; // accumulate error messages - function RSSCache ($base='', $age='') { + function __construct($base='', $age='') { if ( $base ) { $this->BASE_CACHE = $base; } diff --git a/manager/media/rss/rss_parse.inc b/manager/media/rss/rss_parse.inc index 8685025b19..3d8feeb17a 100644 --- a/manager/media/rss/rss_parse.inc +++ b/manager/media/rss/rss_parse.inc @@ -91,7 +91,7 @@ class MagpieRSS { * source encoding. (caveat emptor) * */ - function MagpieRSS ($source, $output_encoding='ISO-8859-1', + function __construct($source, $output_encoding='ISO-8859-1', $input_encoding=null, $detect_encoding=true) { # if PHP xml isn't compiled in, die diff --git a/manager/media/script/air-datepicker/css/datepicker.min.css b/manager/media/script/air-datepicker/css/datepicker.min.css new file mode 100644 index 0000000000..156dc1f5b1 --- /dev/null +++ b/manager/media/script/air-datepicker/css/datepicker.min.css @@ -0,0 +1 @@ +.datepicker--cells{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap}.datepicker--cell{border-radius:4px;box-sizing:border-box;cursor:pointer;display:-webkit-flex;display:-ms-flexbox;display:flex;position:relative;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;height:32px;z-index:1}.datepicker--cell.-focus-{background:#f0f0f0}.datepicker--cell.-current-{color:#4EB5E6}.datepicker--cell.-current-.-focus-{color:#4a4a4a}.datepicker--cell.-current-.-in-range-{color:#4EB5E6}.datepicker--cell.-in-range-{background:rgba(92,196,239,.1);color:#4a4a4a;border-radius:0}.datepicker--cell.-in-range-.-focus-{background-color:rgba(92,196,239,.2)}.datepicker--cell.-disabled-{cursor:default;color:#aeaeae}.datepicker--cell.-disabled-.-focus-{color:#aeaeae}.datepicker--cell.-disabled-.-in-range-{color:#a1a1a1}.datepicker--cell.-disabled-.-current-.-focus-{color:#aeaeae}.datepicker--cell.-range-from-{border:1px solid rgba(92,196,239,.5);background-color:rgba(92,196,239,.1);border-radius:4px 0 0 4px}.datepicker--cell.-range-to-{border:1px solid rgba(92,196,239,.5);background-color:rgba(92,196,239,.1);border-radius:0 4px 4px 0}.datepicker--cell.-selected-,.datepicker--cell.-selected-.-current-{color:#fff;background:#5cc4ef}.datepicker--cell.-range-from-.-range-to-{border-radius:4px}.datepicker--cell.-selected-{border:none}.datepicker--cell.-selected-.-focus-{background:#45bced}.datepicker--cell:empty{cursor:default}.datepicker--days-names{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;margin:8px 0 3px}.datepicker--day-name{color:#FF9A19;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-flex:1;-ms-flex:1;flex:1;text-align:center;text-transform:uppercase;font-size:.8em}.datepicker--body,.datepicker-inline .datepicker--pointer{display:none}.datepicker--cell-day{width:14.28571%}.datepicker--cells-months{height:170px}.datepicker--cell-month{width:33.33%;height:25%}.datepicker--cells-years,.datepicker--years{height:170px}.datepicker--cell-year{width:25%;height:33.33%}.datepickers-container{position:absolute;left:0;top:0}@media print{.datepickers-container{display:none}}.datepicker{background:#fff;border:1px solid #dbdbdb;box-shadow:0 4px 12px rgba(0,0,0,.15);border-radius:4px;box-sizing:content-box;font-family:Meiryo,"Hiragino Kaku Gothic Pro",Arial,"Helvetica Neue",Helvetica,sans-serif;font-size:14px;color:#4a4a4a;width:250px;position:absolute;left:-100000px;opacity:0;transition:opacity .3s ease,left 0s .3s,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease,left 0s .3s;transition:opacity .3s ease,transform .3s ease,left 0s .3s,-webkit-transform .3s ease;z-index:100}.datepicker.-from-top-{-webkit-transform:translateY(-8px);transform:translateY(-8px)}.datepicker.-from-right-{-webkit-transform:translateX(8px);transform:translateX(8px)}.datepicker.-from-bottom-{-webkit-transform:translateY(8px);transform:translateY(8px)}.datepicker.-from-left-{-webkit-transform:translateX(-8px);transform:translateX(-8px)}.datepicker.active{opacity:1;-webkit-transform:translate(0);transform:translate(0);transition:opacity .3s ease,left 0s 0s,-webkit-transform .3s ease;transition:opacity .3s ease,transform .3s ease,left 0s 0s;transition:opacity .3s ease,transform .3s ease,left 0s 0s,-webkit-transform .3s ease}.datepicker-inline .datepicker{border-color:#d7d7d7;box-shadow:none;position:static;left:auto;right:auto;opacity:1;-webkit-transform:none;transform:none}.datepicker--content{box-sizing:content-box;padding:4px}.datepicker--pointer{position:absolute;background:#fff;border-top:1px solid #dbdbdb;border-right:1px solid #dbdbdb;width:10px;height:10px;z-index:-1}.datepicker--nav-action:hover,.datepicker--nav-title:hover{background:#f0f0f0}.-top-center- .datepicker--pointer,.-top-left- .datepicker--pointer,.-top-right- .datepicker--pointer{top:calc(100% - 4px);-webkit-transform:rotate(135deg);transform:rotate(135deg)}.-right-bottom- .datepicker--pointer,.-right-center- .datepicker--pointer,.-right-top- .datepicker--pointer{right:calc(100% - 4px);-webkit-transform:rotate(225deg);transform:rotate(225deg)}.-bottom-center- .datepicker--pointer,.-bottom-left- .datepicker--pointer,.-bottom-right- .datepicker--pointer{bottom:calc(100% - 4px);-webkit-transform:rotate(315deg);transform:rotate(315deg)}.-left-bottom- .datepicker--pointer,.-left-center- .datepicker--pointer,.-left-top- .datepicker--pointer{left:calc(100% - 4px);-webkit-transform:rotate(45deg);transform:rotate(45deg)}.-bottom-left- .datepicker--pointer,.-top-left- .datepicker--pointer{left:10px}.-bottom-right- .datepicker--pointer,.-top-right- .datepicker--pointer{right:10px}.-bottom-center- .datepicker--pointer,.-top-center- .datepicker--pointer{left:calc(50% - 10px / 2)}.-left-top- .datepicker--pointer,.-right-top- .datepicker--pointer{top:10px}.-left-bottom- .datepicker--pointer,.-right-bottom- .datepicker--pointer{bottom:10px}.-left-center- .datepicker--pointer,.-right-center- .datepicker--pointer{top:calc(50% - 10px / 2)}.datepicker--body.active{display:block}.datepicker--nav{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;border-bottom:1px solid #efefef;min-height:32px;padding:4px}.datepicker--nav-action,.datepicker--nav-title{display:-webkit-flex;display:-ms-flexbox;display:flex;cursor:pointer;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center}.datepicker--nav-action{width:32px;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.datepicker--nav-action.-disabled-{visibility:hidden}.datepicker--nav-action svg{width:32px;height:32px}.datepicker--nav-action path{fill:none;stroke:#9c9c9c;stroke-width:2px}.datepicker--nav-title{border-radius:4px;padding:0 8px}.datepicker--buttons,.datepicker--time{border-top:1px solid #efefef;padding:4px}.datepicker--nav-title i{font-style:normal;color:#9c9c9c;margin-left:5px}.datepicker--nav-title.-disabled-{cursor:default;background:0 0}.datepicker--buttons{display:-webkit-flex;display:-ms-flexbox;display:flex}.datepicker--button{color:#4EB5E6;cursor:pointer;border-radius:4px;-webkit-flex:1;-ms-flex:1;flex:1;display:-webkit-inline-flex;display:-ms-inline-flexbox;display:inline-flex;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:32px}.datepicker--button:hover{color:#4a4a4a;background:#f0f0f0}.datepicker--time{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;position:relative}.datepicker--time.-am-pm- .datepicker--time-sliders{-webkit-flex:0 1 138px;-ms-flex:0 1 138px;flex:0 1 138px;max-width:138px}.datepicker--time-sliders{-webkit-flex:0 1 153px;-ms-flex:0 1 153px;flex:0 1 153px;margin-right:10px;max-width:153px}.datepicker--time-label{display:none;font-size:12px}.datepicker--time-current{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;-webkit-flex:1;-ms-flex:1;flex:1;font-size:14px;text-align:center;margin:0 0 0 10px}.datepicker--time-current-colon{margin:0 2px 3px;line-height:1}.datepicker--time-current-hours,.datepicker--time-current-minutes{line-height:1;font-size:19px;font-family:"Century Gothic",CenturyGothic,AppleGothic,sans-serif;position:relative;z-index:1}.datepicker--time-current-hours:after,.datepicker--time-current-minutes:after{content:'';background:#f0f0f0;border-radius:4px;position:absolute;left:-2px;top:-3px;right:-2px;bottom:-2px;z-index:-1;opacity:0}.datepicker--time-current-hours.-focus-:after,.datepicker--time-current-minutes.-focus-:after{opacity:1}.datepicker--time-current-ampm{text-transform:uppercase;-webkit-align-self:flex-end;-ms-flex-item-align:end;align-self:flex-end;color:#9c9c9c;margin-left:6px;font-size:11px;margin-bottom:1px}.datepicker--time-row{display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-align-items:center;-ms-flex-align:center;align-items:center;font-size:11px;height:17px;background:linear-gradient(to right,#dedede,#dedede) left 50%/100% 1px no-repeat}.datepicker--time-row:first-child{margin-bottom:4px}.datepicker--time-row input[type=range]{background:0 0;cursor:pointer;-webkit-flex:1;-ms-flex:1;flex:1;height:100%;padding:0;margin:0;-webkit-appearance:none}.datepicker--time-row input[type=range]::-ms-tooltip{display:none}.datepicker--time-row input[type=range]:hover::-webkit-slider-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:hover::-moz-range-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:hover::-ms-thumb{border-color:#b8b8b8}.datepicker--time-row input[type=range]:focus{outline:0}.datepicker--time-row input[type=range]:focus::-webkit-slider-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]:focus::-moz-range-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]:focus::-ms-thumb{background:#5cc4ef;border-color:#5cc4ef}.datepicker--time-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s;margin-top:-6px}.datepicker--time-row input[type=range]::-moz-range-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s}.datepicker--time-row input[type=range]::-ms-thumb{box-sizing:border-box;height:12px;width:12px;border-radius:3px;border:1px solid #dedede;background:#fff;cursor:pointer;transition:background .2s}.datepicker--time-row input[type=range]::-webkit-slider-runnable-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-moz-range-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-ms-track{border:none;height:1px;cursor:pointer;color:transparent;background:0 0}.datepicker--time-row input[type=range]::-ms-fill-lower{background:0 0}.datepicker--time-row input[type=range]::-ms-fill-upper{background:0 0}.datepicker--time-row span{padding:0 12px}.datepicker--time-icon{color:#9c9c9c;border:1px solid;border-radius:50%;font-size:16px;position:relative;margin:0 5px -1px 0;width:1em;height:1em}.datepicker--time-icon:after,.datepicker--time-icon:before{content:'';background:currentColor;position:absolute}.datepicker--time-icon:after{height:.4em;width:1px;left:calc(50% - 1px);top:calc(50% + 1px);-webkit-transform:translateY(-100%);transform:translateY(-100%)}.datepicker--time-icon:before{width:.4em;height:1px;top:calc(50% + 1px);left:calc(50% - 1px)}.datepicker--cell-day.-other-month-,.datepicker--cell-year.-other-decade-{color:#dedede}.datepicker--cell-day.-other-month-:hover,.datepicker--cell-year.-other-decade-:hover{color:#c5c5c5}.-disabled-.-focus-.datepicker--cell-day.-other-month-,.-disabled-.-focus-.datepicker--cell-year.-other-decade-{color:#dedede}.-selected-.datepicker--cell-day.-other-month-,.-selected-.datepicker--cell-year.-other-decade-{color:#fff;background:#a2ddf6}.-selected-.-focus-.datepicker--cell-day.-other-month-,.-selected-.-focus-.datepicker--cell-year.-other-decade-{background:#8ad5f4}.-in-range-.datepicker--cell-day.-other-month-,.-in-range-.datepicker--cell-year.-other-decade-{background-color:rgba(92,196,239,.1);color:#ccc}.-in-range-.-focus-.datepicker--cell-day.-other-month-,.-in-range-.-focus-.datepicker--cell-year.-other-decade-{background-color:rgba(92,196,239,.2)}.datepicker--cell-day.-other-month-:empty,.datepicker--cell-year.-other-decade-:empty{background:0 0;border:none} \ No newline at end of file diff --git a/manager/media/script/air-datepicker/datepicker.inc.php b/manager/media/script/air-datepicker/datepicker.inc.php new file mode 100644 index 0000000000..7b26850998 --- /dev/null +++ b/manager/media/script/air-datepicker/datepicker.inc.php @@ -0,0 +1,24 @@ +config['lang_code'])) $modx->config['lang_code'] = $this->getLangCode(); + $modx->config['datetime_format_lc'] = isset($modx->config['datetime_format']) ? strtolower($modx->config['datetime_format']) : 'dd-mm-yyyy'; + return $modx->mergeSettingsContent($load_script); + } + function getLangCode() { + global $modx, $modx_lang_attribute; + + if(!$modx_lang_attribute) return 'en'; + + $lc = $modx_lang_attribute; + if($lc=='uk') return 'ru'; + $dp_path = str_replace('\\','/',dirname(__FILE__)); + if(is_file("{$dp_path}/i18n/datepicker.{$lc}.js")) return $modx_lang_attribute; + else return 'en'; + } +} diff --git a/manager/media/script/air-datepicker/datepicker.min.js b/manager/media/script/air-datepicker/datepicker.min.js new file mode 100644 index 0000000000..551002e1a3 --- /dev/null +++ b/manager/media/script/air-datepicker/datepicker.min.js @@ -0,0 +1,2 @@ +!function(t,e,i){!function(){var s,a,n,h="datepicker",r=".datepicker-here",o=!1,c='
                      ',d={classes:"",inline:!1,language:"ru",startDate:new Date,firstDay:"",weekends:[6,0],dateFormat:"",altField:"",altFieldDateFormat:"@",toggleSelected:!0,keyboardNav:!0,position:"bottom left",offset:12,view:"days",minView:"days",showOtherMonths:!0,selectOtherMonths:!0,moveToOtherMonthsOnSelect:!0,showOtherYears:!0,selectOtherYears:!0,moveToOtherYearsOnSelect:!0,minDate:"",maxDate:"",disableNavWhenOutOfRange:!0,multipleDates:!1,multipleDatesSeparator:",",range:!1,todayButton:!1,clearButton:!1,showEvent:"focus",autoClose:!1,monthsField:"monthsShort",prevHtml:'',nextHtml:'',navTitles:{days:"MM, yyyy",months:"yyyy",years:"yyyy1 - yyyy2"},timepicker:!1,dateTimeSeparator:" ",timeFormat:"",minHours:0,maxHours:24,minMinutes:0,maxMinutes:59,hoursStep:1,minutesStep:1,onSelect:"",onChangeMonth:"",onChangeYear:"",onChangeDecade:"",onChangeView:"",onRenderCell:""},l={ctrlRight:[17,39],ctrlUp:[17,38],ctrlLeft:[17,37],ctrlDown:[17,40],shiftRight:[16,39],shiftUp:[16,38],shiftLeft:[16,37],shiftDown:[16,40],altUp:[18,38],altRight:[18,39],altLeft:[18,37],altDown:[18,40],ctrlShiftUp:[16,17,38]},u=function(t,a){this.el=t,this.$el=e(t),this.opts=e.extend(!0,{},d,a,this.$el.data()),s==i&&(s=e("body")),this.opts.startDate||(this.opts.startDate=new Date),"INPUT"==this.el.nodeName&&(this.elIsInput=!0),this.opts.altField&&(this.$altField="string"==typeof this.opts.altField?e(this.opts.altField):this.opts.altField),this.inited=!1,this.visible=!1,this.silent=!1,this.currentDate=this.opts.startDate,this.currentView=this.opts.view,this._createShortCuts(),this.selectedDates=[],this.views={},this.keys=[],this.minRange="",this.maxRange="",this._prevOnSelectValue="",this.init()};n=u,n.prototype={viewIndexes:["days","months","years"],init:function(){o||this.opts.inline||!this.elIsInput||this._buildDatepickersContainer(),this._buildBaseHtml(),this._defineLocale(this.opts.language),this._syncWithMinMaxDates(),this.elIsInput&&(this.opts.inline||(this._setPositionClasses(this.opts.position),this._bindEvents()),this.opts.keyboardNav&&this._bindKeyboardEvents(),this.$datepicker.on("mousedown",this._onMouseDownDatepicker.bind(this)),this.$datepicker.on("mouseup",this._onMouseUpDatepicker.bind(this))),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.timepicker&&(this.timepicker=new e.fn.datepicker.Timepicker(this,this.opts),this._bindTimepickerEvents()),this.views[this.currentView]=new e.fn.datepicker.Body(this,this.currentView,this.opts),this.views[this.currentView].show(),this.nav=new e.fn.datepicker.Navigation(this,this.opts),this.view=this.currentView,this.$el.on("clickCell.adp",this._onClickCell.bind(this)),this.$datepicker.on("mouseenter",".datepicker--cell",this._onMouseEnterCell.bind(this)),this.$datepicker.on("mouseleave",".datepicker--cell",this._onMouseLeaveCell.bind(this)),this.inited=!0},_createShortCuts:function(){this.minDate=this.opts.minDate?this.opts.minDate:new Date(-86399999136e5),this.maxDate=this.opts.maxDate?this.opts.maxDate:new Date(86399999136e5)},_bindEvents:function(){this.$el.on(this.opts.showEvent+".adp",this._onShowEvent.bind(this)),this.$el.on("mouseup.adp",this._onMouseUpEl.bind(this)),this.$el.on("blur.adp",this._onBlur.bind(this)),this.$el.on("keyup.adp",this._onKeyUpGeneral.bind(this)),e(t).on("resize.adp",this._onResize.bind(this)),e("body").on("mouseup.adp",this._onMouseUpBody.bind(this))},_bindKeyboardEvents:function(){this.$el.on("keydown.adp",this._onKeyDown.bind(this)),this.$el.on("keyup.adp",this._onKeyUp.bind(this)),this.$el.on("hotKey.adp",this._onHotKey.bind(this))},_bindTimepickerEvents:function(){this.$el.on("timeChange.adp",this._onTimeChange.bind(this))},isWeekend:function(t){return-1!==this.opts.weekends.indexOf(t)},_defineLocale:function(t){"string"==typeof t?(this.loc=e.fn.datepicker.language[t],this.loc||(console.warn("Can't find language \""+t+'" in Datepicker.language, will use "ru" instead'),this.loc=e.extend(!0,{},e.fn.datepicker.language.ru)),this.loc=e.extend(!0,{},e.fn.datepicker.language.ru,e.fn.datepicker.language[t])):this.loc=e.extend(!0,{},e.fn.datepicker.language.ru,t),this.opts.dateFormat&&(this.loc.dateFormat=this.opts.dateFormat),this.opts.timeFormat&&(this.loc.timeFormat=this.opts.timeFormat),""!==this.opts.firstDay&&(this.loc.firstDay=this.opts.firstDay),this.opts.timepicker&&(this.loc.dateFormat=[this.loc.dateFormat,this.loc.timeFormat].join(this.opts.dateTimeSeparator));var i=this._getWordBoundaryRegExp;(this.loc.timeFormat.match(i("aa"))||this.loc.timeFormat.match(i("AA")))&&(this.ampm=!0)},_buildDatepickersContainer:function(){o=!0,s.append('
                      '),a=e("#datepickers-container")},_buildBaseHtml:function(){var t,i=e('
                      ');t="INPUT"==this.el.nodeName?this.opts.inline?i.insertAfter(this.$el):a:i.appendTo(this.$el),this.$datepicker=e(c).appendTo(t),this.$content=e(".datepicker--content",this.$datepicker),this.$nav=e(".datepicker--nav",this.$datepicker)},_triggerOnChange:function(){if(!this.selectedDates.length){if(""===this._prevOnSelectValue)return;return this._prevOnSelectValue="",this.opts.onSelect("","",this)}var t,e=this.selectedDates,i=n.getParsedDate(e[0]),s=this,a=new Date(i.year,i.month,i.date,i.hours,i.minutes);t=e.map(function(t){return s.formatDate(s.loc.dateFormat,t)}).join(this.opts.multipleDatesSeparator),(this.opts.multipleDates||this.opts.range)&&(a=e.map(function(t){var e=n.getParsedDate(t);return new Date(e.year,e.month,e.date,e.hours,e.minutes)})),this._prevOnSelectValue=t,this.opts.onSelect(t,a,this)},next:function(){var t=this.parsedDate,e=this.opts;switch(this.view){case"days":this.date=new Date(t.year,t.month+1,1),e.onChangeMonth&&e.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(t.year+1,t.month,1),e.onChangeYear&&e.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(t.year+10,0,1),e.onChangeDecade&&e.onChangeDecade(this.curDecade)}},prev:function(){var t=this.parsedDate,e=this.opts;switch(this.view){case"days":this.date=new Date(t.year,t.month-1,1),e.onChangeMonth&&e.onChangeMonth(this.parsedDate.month,this.parsedDate.year);break;case"months":this.date=new Date(t.year-1,t.month,1),e.onChangeYear&&e.onChangeYear(this.parsedDate.year);break;case"years":this.date=new Date(t.year-10,0,1),e.onChangeDecade&&e.onChangeDecade(this.curDecade)}},formatDate:function(t,e){e=e||this.date;var i,s=t,a=this._getWordBoundaryRegExp,h=this.loc,r=n.getLeadingZeroNum,o=n.getDecade(e),c=n.getParsedDate(e),d=c.fullHours,l=c.hours,u=t.match(a("aa"))||t.match(a("AA")),m="am";switch(this.opts.timepicker&&this.timepicker&&u&&(i=this.timepicker._getValidHoursFromDate(e,u),d=r(i.hours),l=i.hours,m=i.dayPeriod),!0){case/@/.test(s):s=s.replace(/@/,e.getTime());case/aa/.test(s):s=s.replace(a("aa"),m);case/AA/.test(s):s=s.replace(a("AA"),m.toUpperCase());case/dd/.test(s):s=s.replace(a("dd"),c.fullDate);case/d/.test(s):s=s.replace(a("d"),c.date);case/DD/.test(s):s=s.replace(a("DD"),h.days[c.day]);case/D/.test(s):s=s.replace(a("D"),h.daysShort[c.day]);case/mm/.test(s):s=s.replace(a("mm"),c.fullMonth);case/m/.test(s):s=s.replace(a("m"),c.month+1);case/MM/.test(s):s=s.replace(a("MM"),this.loc.months[c.month]);case/M/.test(s):s=s.replace(a("M"),h.monthsShort[c.month]);case/ii/.test(s):s=s.replace(a("ii"),c.fullMinutes);case/i/.test(s):s=s.replace(a("i"),c.minutes);case/hh/.test(s):s=s.replace(a("hh"),d);case/h/.test(s):s=s.replace(a("h"),l);case/yyyy/.test(s):s=s.replace(a("yyyy"),c.year);case/yyyy1/.test(s):s=s.replace(a("yyyy1"),o[0]);case/yyyy2/.test(s):s=s.replace(a("yyyy2"),o[1]);case/yy/.test(s):s=s.replace(a("yy"),c.year.toString().slice(-2))}return s},_getWordBoundaryRegExp:function(t){return new RegExp("\\b(?=[a-zA-Z0-9äöüßÄÖÜ<])"+t+"(?![>a-zA-Z0-9äöüßÄÖÜ])")},selectDate:function(t){var e=this,i=e.opts,s=e.parsedDate,a=e.selectedDates,h=a.length,r="";if(Array.isArray(t))return void t.forEach(function(t){e.selectDate(t)});if(t instanceof Date){if(this.lastSelectedDate=t,this.timepicker&&this.timepicker._setTime(t),e._trigger("selectDate",t),this.timepicker&&(t.setHours(this.timepicker.hours),t.setMinutes(this.timepicker.minutes)),"days"==e.view&&t.getMonth()!=s.month&&i.moveToOtherMonthsOnSelect&&(r=new Date(t.getFullYear(),t.getMonth(),1)),"years"==e.view&&t.getFullYear()!=s.year&&i.moveToOtherYearsOnSelect&&(r=new Date(t.getFullYear(),0,1)),r&&(e.silent=!0,e.date=r,e.silent=!1,e.nav._render()),i.multipleDates&&!i.range){if(h===i.multipleDates)return;e._isSelected(t)||e.selectedDates.push(t)}else i.range?2==h?(e.selectedDates=[t],e.minRange=t,e.maxRange=""):1==h?(e.selectedDates.push(t),e.maxRange?e.minRange=t:e.maxRange=t,n.bigger(e.maxRange,e.minRange)&&(e.maxRange=e.minRange,e.minRange=t),e.selectedDates=[e.minRange,e.maxRange]):(e.selectedDates=[t],e.minRange=t):e.selectedDates=[t];e._setInputValue(),i.onSelect&&e._triggerOnChange(),i.autoClose&&!this.timepickerIsActive&&(i.multipleDates||i.range?i.range&&2==e.selectedDates.length&&e.hide():e.hide()),e.views[this.currentView]._render()}},removeDate:function(t){var e=this.selectedDates,i=this;if(t instanceof Date)return e.some(function(s,a){return n.isSame(s,t)?(e.splice(a,1),i.selectedDates.length?i.lastSelectedDate=i.selectedDates[i.selectedDates.length-1]:(i.minRange="",i.maxRange="",i.lastSelectedDate=""),i.views[i.currentView]._render(),i._setInputValue(),i.opts.onSelect&&i._triggerOnChange(),!0):void 0})},today:function(){this.silent=!0,this.view=this.opts.minView,this.silent=!1,this.date=new Date,this.opts.todayButton instanceof Date&&this.selectDate(this.opts.todayButton)},clear:function(){this.selectedDates=[],this.minRange="",this.maxRange="",this.views[this.currentView]._render(),this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()},update:function(t,i){var s=arguments.length,a=this.lastSelectedDate;return 2==s?this.opts[t]=i:1==s&&"object"==typeof t&&(this.opts=e.extend(!0,this.opts,t)),this._createShortCuts(),this._syncWithMinMaxDates(),this._defineLocale(this.opts.language),this.nav._addButtonsIfNeed(),this.nav._render(),this.views[this.currentView]._render(),this.elIsInput&&!this.opts.inline&&(this._setPositionClasses(this.opts.position),this.visible&&this.setPosition(this.opts.position)),this.opts.classes&&this.$datepicker.addClass(this.opts.classes),this.opts.timepicker&&(a&&this.timepicker._handleDate(a),this.timepicker._updateRanges(),this.timepicker._updateCurrentTime(),a&&(a.setHours(this.timepicker.hours),a.setMinutes(this.timepicker.minutes))),this._setInputValue(),this},_syncWithMinMaxDates:function(){var t=this.date.getTime();this.silent=!0,this.minTime>t&&(this.date=this.minDate),this.maxTime=this.minTime&&i<=this.maxTime,month:r>=this.minTime&&o<=this.maxTime,year:s.year>=a.year&&s.year<=h.year};return e?c[e]:c.day},_getDimensions:function(t){var e=t.offset();return{width:t.outerWidth(),height:t.outerHeight(),left:e.left,top:e.top}},_getDateFromCell:function(t){var e=this.parsedDate,s=t.data("year")||e.year,a=t.data("month")==i?e.month:t.data("month"),n=t.data("date")||1;return new Date(s,a,n)},_setPositionClasses:function(t){t=t.split(" ");var e=t[0],i=t[1],s="datepicker -"+e+"-"+i+"- -from-"+e+"-";this.visible&&(s+=" active"),this.$datepicker.removeAttr("class").addClass(s)},setPosition:function(t){t=t||this.opts.position;var e,i,s=this._getDimensions(this.$el),a=this._getDimensions(this.$datepicker),n=t.split(" "),h=this.opts.offset,r=n[0],o=n[1];switch(r){case"top":e=s.top-a.height-h;break;case"right":i=s.left+s.width+h;break;case"bottom":e=s.top+s.height+h;break;case"left":i=s.left-a.width-h}switch(o){case"top":e=s.top;break;case"right":i=s.left+s.width-a.width;break;case"bottom":e=s.top+s.height-a.height;break;case"left":i=s.left;break;case"center":/left|right/.test(r)?e=s.top+s.height/2-a.height/2:i=s.left+s.width/2-a.width/2}this.$datepicker.css({left:i,top:e})},show:function(){this.setPosition(this.opts.position),this.$datepicker.addClass("active"),this.visible=!0},hide:function(){this.$datepicker.removeClass("active").css({left:"-100000px"}),this.focused="",this.keys=[],this.inFocus=!1,this.visible=!1,this.$el.blur()},down:function(t){this._changeView(t,"down")},up:function(t){this._changeView(t,"up")},_changeView:function(t,e){t=t||this.focused||this.date;var i="up"==e?this.viewIndex+1:this.viewIndex-1;i>2&&(i=2),0>i&&(i=0),this.silent=!0,this.date=new Date(t.getFullYear(),t.getMonth(),1),this.silent=!1,this.view=this.viewIndexes[i]},_handleHotKey:function(t){var e,i,s,a=n.getParsedDate(this._getFocusedDate()),h=this.opts,r=!1,o=!1,c=!1,d=a.year,l=a.month,u=a.date;switch(t){case"ctrlRight":case"ctrlUp":l+=1,r=!0;break;case"ctrlLeft":case"ctrlDown":l-=1,r=!0;break;case"shiftRight":case"shiftUp":o=!0,d+=1;break;case"shiftLeft":case"shiftDown":o=!0,d-=1;break;case"altRight":case"altUp":c=!0,d+=10;break;case"altLeft":case"altDown":c=!0,d-=10;break;case"ctrlShiftUp":this.up()}s=n.getDaysCount(new Date(d,l)),i=new Date(d,l,u),u>s&&(u=s),i.getTime()this.maxTime&&(i=this.maxDate),this.focused=i,e=n.getParsedDate(i),r&&h.onChangeMonth&&h.onChangeMonth(e.month,e.year),o&&h.onChangeYear&&h.onChangeYear(e.year),c&&h.onChangeDecade&&h.onChangeDecade(this.curDecade)},_registerKey:function(t){var e=this.keys.some(function(e){return e==t});e||this.keys.push(t)},_unRegisterKey:function(t){var e=this.keys.indexOf(t);this.keys.splice(e,1)},_isHotKeyPressed:function(){var t,e=!1,i=this,s=this.keys.sort();for(var a in l)t=l[a],s.length==t.length&&t.every(function(t,e){return t==s[e]})&&(i._trigger("hotKey",a),e=!0);return e},_trigger:function(t,e){this.$el.trigger(t,e)},_focusNextCell:function(t,e){e=e||this.cellType;var i=n.getParsedDate(this._getFocusedDate()),s=i.year,a=i.month,h=i.date;if(!this._isHotKeyPressed()){switch(t){case 37:"day"==e?h-=1:"","month"==e?a-=1:"","year"==e?s-=1:"";break;case 38:"day"==e?h-=7:"","month"==e?a-=3:"","year"==e?s-=4:"";break;case 39:"day"==e?h+=1:"","month"==e?a+=1:"","year"==e?s+=1:"";break;case 40:"day"==e?h+=7:"","month"==e?a+=3:"","year"==e?s+=4:""}var r=new Date(s,a,h);r.getTime()this.maxTime&&(r=this.maxDate),this.focused=r}},_getFocusedDate:function(){var t=this.focused||this.selectedDates[this.selectedDates.length-1],e=this.parsedDate;if(!t)switch(this.view){case"days":t=new Date(e.year,e.month,(new Date).getDate());break;case"months":t=new Date(e.year,e.month,1);break;case"years":t=new Date(e.year,0,1)}return t},_getCell:function(t,e){e=e||this.cellType;var i,s=n.getParsedDate(t),a='.datepicker--cell[data-year="'+s.year+'"]';switch(e){case"month":a='[data-month="'+s.month+'"]';break;case"day":a+='[data-month="'+s.month+'"][data-date="'+s.date+'"]'}return i=this.views[this.currentView].$el.find(a),i.length?i:""},destroy:function(){var t=this;t.$el.off(".adp").data("datepicker",""),t.selectedDates=[],t.focused="",t.views={},t.keys=[],t.minRange="",t.maxRange="",t.opts.inline||!t.elIsInput?t.$datepicker.closest(".datepicker-inline").remove():t.$datepicker.remove()},_onShowEvent:function(t){this.visible||this.show()},_onBlur:function(){!this.inFocus&&this.visible&&this.hide()},_onMouseDownDatepicker:function(t){this.inFocus=!0},_onMouseUpDatepicker:function(t){this.inFocus=!1,t.originalEvent.inFocus=!0,t.originalEvent.timepickerFocus||this.$el.focus()},_onKeyUpGeneral:function(t){var e=this.$el.val();e||this.clear()},_onResize:function(){this.visible&&this.setPosition()},_onMouseUpBody:function(t){t.originalEvent.inFocus||this.visible&&!this.inFocus&&this.hide()},_onMouseUpEl:function(t){t.originalEvent.inFocus=!0,setTimeout(this._onKeyUpGeneral.bind(this),4)},_onKeyDown:function(t){var e=t.which;if(this._registerKey(e),e>=37&&40>=e&&(t.preventDefault(),this._focusNextCell(e)),13==e&&this.focused){if(this._getCell(this.focused).hasClass("-disabled-"))return;if(this.view!=this.opts.minView)this.down();else{var i=this._isSelected(this.focused,this.cellType);i?i&&this.opts.toggleSelected&&this.removeDate(this.focused):(this.timepicker&&(this.focused.setHours(this.timepicker.hours),this.focused.setMinutes(this.timepicker.minutes)),this.selectDate(this.focused))}}27==e&&this.hide()},_onKeyUp:function(t){var e=t.which;this._unRegisterKey(e)},_onHotKey:function(t,e){this._handleHotKey(e)},_onMouseEnterCell:function(t){var i=e(t.target).closest(".datepicker--cell"),s=this._getDateFromCell(i);this.silent=!0,this.focused&&(this.focused=""),i.addClass("-focus-"),this.focused=s,this.silent=!1,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",n.less(this.minRange,this.focused)&&(this.maxRange=this.minRange,this.minRange=""),this.views[this.currentView]._update())},_onMouseLeaveCell:function(t){var i=e(t.target).closest(".datepicker--cell");i.removeClass("-focus-"),this.silent=!0,this.focused="",this.silent=!1},_onTimeChange:function(t,e,i){var s=new Date,a=this.selectedDates,n=!1;a.length&&(n=!0,s=this.lastSelectedDate),s.setHours(e),s.setMinutes(i),n||this._getCell(s).hasClass("-disabled-")?(this._setInputValue(),this.opts.onSelect&&this._triggerOnChange()):this.selectDate(s)},_onClickCell:function(t,e){this.timepicker&&(e.setHours(this.timepicker.hours),e.setMinutes(this.timepicker.minutes)),this.selectDate(e)},set focused(t){if(!t&&this.focused){var e=this._getCell(this.focused);e.length&&e.removeClass("-focus-")}this._focused=t,this.opts.range&&1==this.selectedDates.length&&(this.minRange=this.selectedDates[0],this.maxRange="",n.less(this.minRange,this._focused)&&(this.maxRange=this.minRange,this.minRange="")),this.silent||(this.date=t)},get focused(){return this._focused},get parsedDate(){return n.getParsedDate(this.date)},set date(t){return t instanceof Date?(this.currentDate=t,this.inited&&!this.silent&&(this.views[this.view]._render(),this.nav._render(),this.visible&&this.elIsInput&&this.setPosition()),t):void 0},get date(){return this.currentDate},set view(t){return this.viewIndex=this.viewIndexes.indexOf(t),this.viewIndex<0?void 0:(this.prevView=this.currentView,this.currentView=t,this.inited&&(this.views[t]?this.views[t]._render():this.views[t]=new e.fn.datepicker.Body(this,t,this.opts),this.views[this.prevView].hide(),this.views[t].show(),this.nav._render(),this.opts.onChangeView&&this.opts.onChangeView(t),this.elIsInput&&this.visible&&this.setPosition()),t)},get view(){return this.currentView},get cellType(){return this.view.substring(0,this.view.length-1)},get minTime(){var t=n.getParsedDate(this.minDate);return new Date(t.year,t.month,t.date).getTime()},get maxTime(){var t=n.getParsedDate(this.maxDate);return new Date(t.year,t.month,t.date).getTime()},get curDecade(){return n.getDecade(this.date)}},n.getDaysCount=function(t){return new Date(t.getFullYear(),t.getMonth()+1,0).getDate()},n.getParsedDate=function(t){return{year:t.getFullYear(),month:t.getMonth(),fullMonth:t.getMonth()+1<10?"0"+(t.getMonth()+1):t.getMonth()+1,date:t.getDate(),fullDate:t.getDate()<10?"0"+t.getDate():t.getDate(),day:t.getDay(),hours:t.getHours(),fullHours:t.getHours()<10?"0"+t.getHours():t.getHours(),minutes:t.getMinutes(),fullMinutes:t.getMinutes()<10?"0"+t.getMinutes():t.getMinutes()}},n.getDecade=function(t){var e=10*Math.floor(t.getFullYear()/10);return[e,e+9]},n.template=function(t,e){return t.replace(/#\{([\w]+)\}/g,function(t,i){return e[i]||0===e[i]?e[i]:void 0})},n.isSame=function(t,e,i){if(!t||!e)return!1;var s=n.getParsedDate(t),a=n.getParsedDate(e),h=i?i:"day",r={day:s.date==a.date&&s.month==a.month&&s.year==a.year,month:s.month==a.month&&s.year==a.year,year:s.year==a.year};return r[h]},n.less=function(t,e,i){return t&&e?e.getTime()t.getTime():!1},n.getLeadingZeroNum=function(t){return parseInt(t)<10?"0"+t:t},n.resetTime=function(t){return"object"==typeof t?(t=n.getParsedDate(t),new Date(t.year,t.month,t.date)):void 0},e.fn.datepicker=function(t){return this.each(function(){if(e.data(this,h)){var i=e.data(this,h);i.opts=e.extend(!0,i.opts,t),i.update()}else e.data(this,h,new u(this,t))})},e.fn.datepicker.Constructor=u,e.fn.datepicker.language={ru:{days:["Воскресенье","Понедельник","Вторник","Среда","Четверг","Пятница","Суббота"],daysShort:["Вос","Пон","Вто","Сре","Чет","Пят","Суб"],daysMin:["Вс","Пн","Вт","Ср","Чт","Пт","Сб"],months:["Январь","Февраль","Март","Апрель","Май","Июнь","Июль","Август","Сентябрь","Октябрь","Ноябрь","Декабрь"],monthsShort:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],today:"Сегодня",clear:"Очистить",dateFormat:"dd.mm.yyyy",timeFormat:"hh:ii",firstDay:1}},e(function(){e(r).datepicker()})}(),function(){var t={days:'
                      ',months:'
                      ',years:'
                      '},s=e.fn.datepicker,a=s.Constructor;s.Body=function(t,e,i){this.d=t,this.type=e,this.opts=i,this.init()},s.Body.prototype={init:function(){this._buildBaseHtml(),this._render(),this._bindEvents()},_bindEvents:function(){this.$el.on("click",".datepicker--cell",e.proxy(this._onClickCell,this))},_buildBaseHtml:function(){this.$el=e(t[this.type]).appendTo(this.d.$content),this.$names=e(".datepicker--days-names",this.$el),this.$cells=e(".datepicker--cells",this.$el)},_getDayNamesHtml:function(t,e,s,a){return e=e!=i?e:t,s=s?s:"",a=a!=i?a:0,a>7?s:7==e?this._getDayNamesHtml(t,0,s,++a):(s+='
                      '+this.d.loc.daysMin[e]+"
                      ",this._getDayNamesHtml(t,++e,s,++a))},_getCellContents:function(t,e){var i="datepicker--cell datepicker--cell-"+e,s=new Date,n=this.d,h=a.resetTime(n.minRange),r=a.resetTime(n.maxRange),o=n.opts,c=a.getParsedDate(t),d={},l=c.date;switch(o.onRenderCell&&(d=o.onRenderCell(t,e)||{},l=d.html?d.html:l,i+=d.classes?" "+d.classes:""),e){case"day":n.isWeekend(c.day)&&(i+=" -weekend-"),c.month!=this.d.parsedDate.month&&(i+=" -other-month-",o.selectOtherMonths||(i+=" -disabled-"),o.showOtherMonths||(l=""));break;case"month":l=n.loc[n.opts.monthsField][c.month];break;case"year":var u=n.curDecade;l=c.year,(c.yearu[1])&&(i+=" -other-decade-",o.selectOtherYears||(i+=" -disabled-"),o.showOtherYears||(l=""))}return o.onRenderCell&&(d=o.onRenderCell(t,e)||{},l=d.html?d.html:l,i+=d.classes?" "+d.classes:""),o.range&&(a.isSame(h,t,e)&&(i+=" -range-from-"),a.isSame(r,t,e)&&(i+=" -range-to-"),1==n.selectedDates.length&&n.focused?((a.bigger(h,t)&&a.less(n.focused,t)||a.less(r,t)&&a.bigger(n.focused,t))&&(i+=" -in-range-"),a.less(r,t)&&a.isSame(n.focused,t)&&(i+=" -range-from-"),a.bigger(h,t)&&a.isSame(n.focused,t)&&(i+=" -range-to-")):2==n.selectedDates.length&&a.bigger(h,t)&&a.less(r,t)&&(i+=" -in-range-")),a.isSame(s,t,e)&&(i+=" -current-"),n.focused&&a.isSame(t,n.focused,e)&&(i+=" -focus-"),n._isSelected(t,e)&&(i+=" -selected-"),(!n._isInRange(t,e)||d.disabled)&&(i+=" -disabled-"),{html:l,classes:i}},_getDaysHtml:function(t){var e=a.getDaysCount(t),i=new Date(t.getFullYear(),t.getMonth(),1).getDay(),s=new Date(t.getFullYear(),t.getMonth(),e).getDay(),n=i-this.d.loc.firstDay,h=6-s+this.d.loc.firstDay;n=0>n?n+7:n,h=h>6?h-7:h;for(var r,o,c=-n+1,d="",l=c,u=e+h;u>=l;l++)o=t.getFullYear(),r=t.getMonth(),d+=this._getDayHtml(new Date(o,r,l));return d},_getDayHtml:function(t){var e=this._getCellContents(t,"day");return'
                      '+e.html+"
                      "},_getMonthsHtml:function(t){for(var e="",i=a.getParsedDate(t),s=0;12>s;)e+=this._getMonthHtml(new Date(i.year,s)),s++;return e},_getMonthHtml:function(t){var e=this._getCellContents(t,"month");return'
                      '+e.html+"
                      "},_getYearsHtml:function(t){var e=(a.getParsedDate(t),a.getDecade(t)),i=e[0]-1,s="",n=i;for(n;n<=e[1]+1;n++)s+=this._getYearHtml(new Date(n,0));return s},_getYearHtml:function(t){var e=this._getCellContents(t,"year");return'
                      '+e.html+"
                      "},_renderTypes:{days:function(){var t=this._getDayNamesHtml(this.d.loc.firstDay),e=this._getDaysHtml(this.d.currentDate);this.$cells.html(e),this.$names.html(t)},months:function(){var t=this._getMonthsHtml(this.d.currentDate);this.$cells.html(t)},years:function(){var t=this._getYearsHtml(this.d.currentDate);this.$cells.html(t)}},_render:function(){this._renderTypes[this.type].bind(this)()},_update:function(){var t,i,s,a=e(".datepicker--cell",this.$cells),n=this;a.each(function(a,h){i=e(this),s=n.d._getDateFromCell(e(this)),t=n._getCellContents(s,n.d.cellType),i.attr("class",t.classes)})},show:function(){this.$el.addClass("active"),this.acitve=!0},hide:function(){this.$el.removeClass("active"),this.active=!1},_handleClick:function(t){var e=t.data("date")||1,i=t.data("month")||0,s=t.data("year")||this.d.parsedDate.year,a=this.d;if(a.view!=this.opts.minView)return void a.down(new Date(s,i,e));var n=new Date(s,i,e),h=this.d._isSelected(n,this.d.cellType);h||a._trigger("clickCell",n),h&&this.opts.range?(2!=a.selectedDates.length&&!this.opts.toggleSelected||this.opts.toggleSelected)&&(a._trigger("clickCell",n),a.lastSelectedDate=h):h&&this.opts.toggleSelected&&a.removeDate(n),h&&!this.opts.toggleSelected&&(a.lastSelectedDate=h,a.opts.timepicker&&(a.timepicker._setTime(h),a.timepicker.update()))},_onClickCell:function(t){var i=e(t.target).closest(".datepicker--cell");i.hasClass("-disabled-")||this._handleClick.bind(this)(i)}}}(),function(){var t='
                      #{prevHtml}
                      #{title}
                      #{nextHtml}
                      ',i='
                      ',s='#{label}',a=e.fn.datepicker,n=a.Constructor;a.Navigation=function(t,e){this.d=t,this.opts=e,this.$buttonsContainer="",this.init()},a.Navigation.prototype={init:function(){this._buildBaseHtml(),this._bindEvents()},_bindEvents:function(){this.d.$nav.on("click",".datepicker--nav-action",e.proxy(this._onClickNavButton,this)),this.d.$nav.on("click",".datepicker--nav-title",e.proxy(this._onClickNavTitle,this)),this.d.$datepicker.on("click",".datepicker--button",e.proxy(this._onClickNavButton,this))},_buildBaseHtml:function(){this._render(),this._addButtonsIfNeed()},_addButtonsIfNeed:function(){this.opts.todayButton&&this._addButton("today"),this.opts.clearButton&&this._addButton("clear")},_render:function(){var i=this._getTitle(this.d.currentDate),s=n.template(t,e.extend({title:i},this.opts));this.d.$nav.html(s),"years"==this.d.view&&e(".datepicker--nav-title",this.d.$nav).addClass("-disabled-"),this.setNavStatus()},_getTitle:function(t){return this.d.formatDate(this.opts.navTitles[this.d.view],t)},_addButton:function(t){this.$buttonsContainer.length||this._addButtonsContainer();var i={action:t,label:this.d.loc[t]},a=n.template(s,i);e("[data-action="+t+"]",this.$buttonsContainer).length||this.$buttonsContainer.append(a)},_addButtonsContainer:function(){this.d.$datepicker.append(i),this.$buttonsContainer=e(".datepicker--buttons",this.d.$datepicker)},setNavStatus:function(){if((this.opts.minDate||this.opts.maxDate)&&this.opts.disableNavWhenOutOfRange){var t=this.d.parsedDate,e=t.month,i=t.year,s=t.date;switch(this.d.view){case"days":this.d._isInRange(new Date(i,e-1,s),"month")||this._disableNav("prev"),this.d._isInRange(new Date(i,e+1,s),"month")||this._disableNav("next");break;case"months":this.d._isInRange(new Date(i-1,e,s),"year")||this._disableNav("prev"),this.d._isInRange(new Date(i+1,e,s),"year")||this._disableNav("next");break;case"years":this.d._isInRange(new Date(i-10,e,s),"year")||this._disableNav("prev"),this.d._isInRange(new Date(i+10,e,s),"year")||this._disableNav("next")}}},_disableNav:function(t){e('[data-action="'+t+'"]',this.d.$nav).addClass("-disabled-")},_activateNav:function(t){e('[data-action="'+t+'"]',this.d.$nav).removeClass("-disabled-")},_onClickNavButton:function(t){var i=e(t.target).closest("[data-action]"),s=i.data("action");this.d[s]()},_onClickNavTitle:function(t){return e(t.target).hasClass("-disabled-")?void 0:"days"==this.d.view?this.d.view="months":void(this.d.view="years")}}}(),function(){var t='
                      #{hourValue} : #{minValue}
                      ',i=e.fn.datepicker,s=i.Constructor;i.Timepicker=function(t,e){this.d=t,this.opts=e,this.init()},i.Timepicker.prototype={init:function(){var t="input";this._setTime(this.d.date),this._buildHTML(),navigator.userAgent.match(/trident/gi)&&(t="change"),this.d.$el.on("selectDate",this._onSelectDate.bind(this)),this.$ranges.on(t,this._onChangeRange.bind(this)),this.$ranges.on("mouseup",this._onMouseUpRange.bind(this)),this.$ranges.on("mousemove focus ",this._onMouseEnterRange.bind(this)),this.$ranges.on("mouseout blur",this._onMouseOutRange.bind(this))},_setTime:function(t){var e=s.getParsedDate(t);this._handleDate(t),this.hours=e.hourst.getHours()&&(this.minMinutes=this.opts.minMinutes)},_setMaxTimeFromDate:function(t){this.maxHours=t.getHours(),this.maxMinutes=t.getMinutes(),this.d.lastSelectedDate&&this.d.lastSelectedDate.getHours()t?0:i.minHours,this.minMinutes=i.minMinutes<0||i.minMinutes>e?0:i.minMinutes,this.maxHours=i.maxHours<0||i.maxHours>t?t:i.maxHours,this.maxMinutes=i.maxMinutes<0||i.maxMinutes>e?e:i.maxMinutes},_validateHoursMinutes:function(t){this.hoursthis.maxHours&&(this.hours=this.maxHours),this.minutesthis.maxMinutes&&(this.minutes=this.maxMinutes)},_buildHTML:function(){ +var i=s.getLeadingZeroNum,a={hourMin:this.minHours,hourMax:i(this.maxHours),hourStep:this.opts.hoursStep,hourValue:i(this.displayHours),minMin:this.minMinutes,minMax:i(this.maxMinutes),minStep:this.opts.minutesStep,minValue:i(this.minutes)},n=s.template(t,a);this.$timepicker=e(n).appendTo(this.d.$datepicker),this.$ranges=e('[type="range"]',this.$timepicker),this.$hours=e('[name="hours"]',this.$timepicker),this.$minutes=e('[name="minutes"]',this.$timepicker),this.$hoursText=e(".datepicker--time-current-hours",this.$timepicker),this.$minutesText=e(".datepicker--time-current-minutes",this.$timepicker),this.d.ampm&&(this.$ampm=e('').appendTo(e(".datepicker--time-current",this.$timepicker)).html(this.dayPeriod),this.$timepicker.addClass("-am-pm-"))},_updateCurrentTime:function(){var t=s.getLeadingZeroNum(this.displayHours),e=s.getLeadingZeroNum(this.minutes);this.$hoursText.html(t),this.$minutesText.html(e),this.d.ampm&&this.$ampm.html(this.dayPeriod)},_updateRanges:function(){this.$hours.attr({min:this.minHours,max:this.maxHours}).val(this.hours),this.$minutes.attr({min:this.minMinutes,max:this.maxMinutes}).val(this.minutes)},_handleDate:function(t){this._setDefaultMinMaxTime(),t&&(s.isSame(t,this.d.opts.minDate)?this._setMinTimeFromDate(this.d.opts.minDate):s.isSame(t,this.d.opts.maxDate)&&this._setMaxTimeFromDate(this.d.opts.maxDate)),this._validateHoursMinutes(t)},update:function(){this._updateRanges(),this._updateCurrentTime()},_getValidHoursFromDate:function(t,e){var i=t,a=t;t instanceof Date&&(i=s.getParsedDate(t),a=i.hours);var n=e||this.d.ampm,h="am";if(n)switch(!0){case 0==a:a=12;break;case 12==a:h="pm";break;case a>11:a-=12,h="pm"}return{hours:a,dayPeriod:h}},set hours(t){this._hours=t;var e=this._getValidHoursFromDate(t);this.displayHours=e.hours,this.dayPeriod=e.dayPeriod},get hours(){return this._hours},_onChangeRange:function(t){var i=e(t.target),s=i.attr("name");this.d.timepickerIsActive=!0,this[s]=i.val(),this._updateCurrentTime(),this.d._trigger("timeChange",[this.hours,this.minutes]),this._handleDate(this.d.lastSelectedDate),this.update()},_onSelectDate:function(t,e){this._handleDate(e),this.update()},_onMouseEnterRange:function(t){var i=e(t.target).attr("name");e(".datepicker--time-current-"+i,this.$timepicker).addClass("-focus-")},_onMouseOutRange:function(t){var i=e(t.target).attr("name");this.d.inFocus||e(".datepicker--time-current-"+i,this.$timepicker).removeClass("-focus-")},_onMouseUpRange:function(t){this.d.timepickerIsActive=!1}}}()}(window,jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/datepicker.tpl b/manager/media/script/air-datepicker/datepicker.tpl new file mode 100644 index 0000000000..94f314c789 --- /dev/null +++ b/manager/media/script/air-datepicker/datepicker.tpl @@ -0,0 +1,44 @@ + + + + + diff --git a/manager/media/script/air-datepicker/i18n/datepicker.cs.js b/manager/media/script/air-datepicker/i18n/datepicker.cs.js new file mode 100644 index 0000000000..a89db7cbad --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.cs.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['cs'] = { + days: ['Neděle', 'Pondělí', 'Úterý', 'Středa', 'Čtvrtek', 'Pátek', 'Sobota'], + daysShort: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'], + daysMin: ['Ne', 'Po', 'Út', 'St', 'Čt', 'Pá', 'So'], + months: ['Leden', 'Únor', 'Březen', 'Duben', 'Květen', 'Červen', 'Červenec', 'Srpen', 'Září', 'Říjen', 'Listopad', 'Prosinec'], + monthsShort: ['Led', 'Úno', 'Bře', 'Dub', 'Kvě', 'Čvn', 'Čvc', 'Srp', 'Zář', 'Říj', 'Lis', 'Pro'], + today: 'Dnes', + clear: 'Vymazat', + dateFormat: 'dd.mm.yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.da.js b/manager/media/script/air-datepicker/i18n/datepicker.da.js new file mode 100644 index 0000000000..f34456e4db --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.da.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['da'] = { + days: ['Søndag', 'Mandag', 'Tirsdag', 'Onsdag', 'Torsdag', 'Fredag', 'Lørdag'], + daysShort: ['Søn', 'Man', 'Tir', 'Ons', 'Tor', 'Fre', 'Lør'], + daysMin: ['Sø', 'Ma', 'Ti', 'On', 'To', 'Fr', 'Lø'], + months: ['Januar','Februar','Marts','April','Maj','Juni', 'Juli','August','September','Oktober','November','December'], + monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'], + today: 'I dag', + clear: 'Nulstil', + dateFormat: 'dd/mm/yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.de.js b/manager/media/script/air-datepicker/i18n/datepicker.de.js new file mode 100644 index 0000000000..fd9f8ff3b9 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.de.js @@ -0,0 +1,13 @@ +;(function ($) { $.fn.datepicker.language['de'] = { + days: ['Sonntag', 'Montag', 'Dienstag', 'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag'], + daysShort: ['Son', 'Mon', 'Die', 'Mit', 'Don', 'Fre', 'Sam'], + daysMin: ['So', 'Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa'], + months: ['Januar','Februar','März','April','Mai','Juni', 'Juli','August','September','Oktober','November','Dezember'], + monthsShort: ['Jan', 'Feb', 'Mär', 'Apr', 'Mai', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dez'], + today: 'Heute', + clear: 'Aufräumen', + dateFormat: 'dd.mm.yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; + })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.en.js b/manager/media/script/air-datepicker/i18n/datepicker.en.js new file mode 100644 index 0000000000..32072f6c4e --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.en.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['en'] = { + days: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + daysShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], + daysMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], + months: ['January','February','March','April','May','June', 'July','August','September','October','November','December'], + monthsShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + today: 'Today', + clear: 'Clear', + dateFormat: 'mm/dd/yyyy', + timeFormat: 'hh:ii aa', + firstDay: 0 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.es.js b/manager/media/script/air-datepicker/i18n/datepicker.es.js new file mode 100644 index 0000000000..a8b6af500f --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.es.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['es'] = { + days: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'], + daysShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab'], + daysMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'], + months: ['Enero','Febrero','Marzo','Abril','Mayo','Junio', 'Julio','Augosto','Septiembre','Octubre','Noviembre','Diciembre'], + monthsShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'], + today: 'Hoy', + clear: 'Limpiar', + dateFormat: 'dd/mm/yyyy', + timeFormat: 'hh:ii aa', + firstDay: 1 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.fi.js b/manager/media/script/air-datepicker/i18n/datepicker.fi.js new file mode 100644 index 0000000000..9619705f51 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.fi.js @@ -0,0 +1,13 @@ +;(function ($) { $.fn.datepicker.language['fi'] = { + days: ['Sunnuntai', 'Maanantai', 'Tiistai', 'Keskiviikko', 'Torstai', 'Perjantai', 'Lauantai'], + daysShort: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'], + daysMin: ['Su', 'Ma', 'Ti', 'Ke', 'To', 'Pe', 'La'], + months: ['Tammikuu','Helmikuu','Maaliskuu','Huhtikuu','Toukokuu','Kesäkuu', 'Heinäkuu','Elokuu','Syyskuu','Lokakuu','Marraskuu','Joulukuu'], + monthsShort: ['Tammi', 'Helmi', 'Maalis', 'Huhti', 'Touko', 'Kesä', 'Heinä', 'Elo', 'Syys', 'Loka', 'Marras', 'Joulu'], + today: 'Tänään', + clear: 'Tyhjennä', + dateFormat: 'dd.mm.yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; + })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.fr.js b/manager/media/script/air-datepicker/i18n/datepicker.fr.js new file mode 100644 index 0000000000..0d083b2f74 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.fr.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['fr'] = { + days: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'], + daysShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'], + daysMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'], + months: ['Janvier','Février','Mars','Avril','Mai','Juin', 'Juillet','Août','Septembre','Octobre','Novembre','Decembre'], + monthsShort: ['Jan', 'Fév', 'Mars', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Dec'], + today: "Aujourd'hui", + clear: 'Effacer', + dateFormat: 'dd/mm/yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.hu.js b/manager/media/script/air-datepicker/i18n/datepicker.hu.js new file mode 100644 index 0000000000..7d144b36a4 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.hu.js @@ -0,0 +1,12 @@ +;(function ($) { ;(function ($) { $.fn.datepicker.language['hu'] = { + days: ['Vasárnap', 'Hétfő', 'Kedd', 'Szerda', 'Csütörtök', 'Péntek', 'Szombat'], + daysShort: ['Va', 'Hé', 'Ke', 'Sze', 'Cs', 'Pé', 'Szo'], + daysMin: ['V', 'H', 'K', 'Sz', 'Cs', 'P', 'Sz'], + months: ['Január', 'Február', 'Március', 'Április', 'Május', 'Június', 'Július', 'Augusztus', 'Szeptember', 'Október', 'November', 'December'], + monthsShort: ['Jan', 'Feb', 'Már', 'Ápr', 'Máj', 'Jún', 'Júl', 'Aug', 'Szep', 'Okt', 'Nov', 'Dec'], + today: 'Ma', + clear: 'Törlés', + dateFormat: 'yyyy-mm-dd', + timeFormat: 'hh:ii aa', + firstDay: 1 +}; })(jQuery); })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.ja.js b/manager/media/script/air-datepicker/i18n/datepicker.ja.js new file mode 100644 index 0000000000..b08556972f --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.ja.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['ja'] = { + days: ['日曜', '月曜', '火曜', '水曜', '木曜', '金曜', '土曜'], + daysShort: ['日', '月', '火', '水', '木', '金', '土'], + daysMin: ['日', '月', '火', '水', '木', '金', '土'], + months: ['1月','2月','3月','4月','5月','6月', '7月','8月','9月','10月','11月','12月'], + monthsShort: ['1月','2月','3月','4月','5月','6月', '7月','8月','9月','10月','11月','12月'], + today: '今日', + clear: 'クリア', + dateFormat: 'yyyy/mm/dd', + timeFormat: 'hh:ii', + firstDay: 0 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.nl.js b/manager/media/script/air-datepicker/i18n/datepicker.nl.js new file mode 100644 index 0000000000..8d29a5acf3 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.nl.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['nl'] = { + days: ['zondag', 'maandag', 'dinsdag', 'woensdag', 'donderdag', 'vrijdag', 'zaterdag'], + daysShort: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + daysMin: ['zo', 'ma', 'di', 'wo', 'do', 'vr', 'za'], + months: ['Januari', 'Februari', 'Maart', 'April', 'Mei', 'Juni', 'Juli', 'Augustus', 'September', 'Oktober', 'November', 'December'], + monthsShort: ['Jan', 'Feb', 'Mrt', 'Apr', 'Mei', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'], + today: 'Vandaag', + clear: 'Legen', + dateFormat: 'dd-MM-yy', + timeFormat: 'hh:ii', + firstDay: 0 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.pl.js b/manager/media/script/air-datepicker/i18n/datepicker.pl.js new file mode 100644 index 0000000000..3c0f56582f --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.pl.js @@ -0,0 +1,13 @@ +;(function ($) { $.fn.datepicker.language['pl'] = { + days: ['Niedziela', 'Poniedziałek', 'Wtorek', 'Środa', 'Czwartek', 'Piątek', 'Sobota'], + daysShort: ['Nie', 'Pon', 'Wto', 'Śro', 'Czw', 'Pią', 'Sob'], + daysMin: ['Nd', 'Pn', 'Wt', 'Śr', 'Czw', 'Pt', 'So'], + months: ['Styczeń','Luty','Marzec','Kwiecień','Maj','Czerwiec', 'Lipiec','Sierpień','Wrzesień','Październik','Listopad','Grudzień'], + monthsShort: ['Sty', 'Lut', 'Mar', 'Kwi', 'Maj', 'Cze', 'Lip', 'Sie', 'Wrz', 'Paź', 'Lis', 'Gru'], + today: 'Dzisiaj', + clear: 'Wyczyść', + dateFormat: 'yyyy-mm-dd', + timeFormat: 'hh:ii:aa', + firstDay: 1 +}; + })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.pt-BR.js b/manager/media/script/air-datepicker/i18n/datepicker.pt-BR.js new file mode 100644 index 0000000000..13a79f5433 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.pt-BR.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['pt-BR'] = { + days: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'], + daysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'], + daysMin: ['Do', 'Se', 'Te', 'Qu', 'Qu', 'Se', 'Sa'], + months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], + monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], + today: 'Hoje', + clear: 'Limpar', + dateFormat: 'dd/mm/yyyy', + timeFormat: 'hh:ii', + firstDay: 0 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.pt.js b/manager/media/script/air-datepicker/i18n/datepicker.pt.js new file mode 100644 index 0000000000..92a3a08a8c --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.pt.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['pt'] = { + days: ['Domingo', 'Segunda', 'Terça', 'Quarta', 'Quinta', 'Sexta', 'Sábado'], + daysShort: ['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sab'], + daysMin: ['Do', 'Se', 'Te', 'Qa', 'Qi', 'Sx', 'Sa'], + months: ['Janeiro', 'Fevereiro', 'Março', 'Abril', 'Maio', 'Junho', 'Julho', 'Agosto', 'Setembro', 'Outubro', 'Novembro', 'Dezembro'], + monthsShort: ['Jan', 'Fev', 'Mar', 'Abr', 'Mai', 'Jun', 'Jul', 'Ago', 'Set', 'Out', 'Nov', 'Dez'], + today: 'Hoje', + clear: 'Limpar', + dateFormat: 'dd/mm/yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.ro.js b/manager/media/script/air-datepicker/i18n/datepicker.ro.js new file mode 100644 index 0000000000..0034204d90 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.ro.js @@ -0,0 +1,13 @@ +;(function ($) { $.fn.datepicker.language['ro'] = { + days: ['Duminică', 'Luni', 'Marţi', 'Miercuri', 'Joi', 'Vineri', 'Sâmbătă'], + daysShort: ['Dum', 'Lun', 'Mar', 'Mie', 'Joi', 'Vin', 'Sâm'], + daysMin: ['D', 'L', 'Ma', 'Mi', 'J', 'V', 'S'], + months: ['Ianuarie','Februarie','Martie','Aprilie','Mai','Iunie','Iulie','August','Septembrie','Octombrie','Noiembrie','Decembrie'], + monthsShort: ['Ian', 'Feb', 'Mar', 'Apr', 'Mai', 'Iun', 'Iul', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec'], + today: 'Azi', + clear: 'Şterge', + dateFormat: 'dd.mm.yyyy', + timeFormat: 'hh:ii', + firstDay: 1 +}; + })(jQuery); \ No newline at end of file diff --git a/manager/media/script/air-datepicker/i18n/datepicker.zh.js b/manager/media/script/air-datepicker/i18n/datepicker.zh.js new file mode 100644 index 0000000000..08633cccd2 --- /dev/null +++ b/manager/media/script/air-datepicker/i18n/datepicker.zh.js @@ -0,0 +1,12 @@ +;(function ($) { $.fn.datepicker.language['zh'] = { + days: ['周日', '周一', '周二', '周三', '周四', '周五', '周六'], + daysShort: ['日', '一', '二', '三', '四', '五', '六'], + daysMin: ['日', '一', '二', '三', '四', '五', '六'], + months: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], + monthsShort: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'], + today: '今天', + clear: '清除', + dateFormat: 'yyyy-mm-dd', + timeFormat: 'hh:ii', + firstDay: 1 +}; })(jQuery); \ No newline at end of file diff --git a/manager/media/script/bootstrap/js/bootstrap.min.js b/manager/media/script/bootstrap/js/bootstrap.min.js new file mode 100644 index 0000000000..9bcd2fccae --- /dev/null +++ b/manager/media/script/bootstrap/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under the MIT license + */ +if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>3)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 4")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.7",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a("#"===f?[]:f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.7",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c).prop(c,!0)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c).prop(c,!1))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target).closest(".btn");b.call(d,"toggle"),a(c.target).is('input[type="radio"], input[type="checkbox"]')||(c.preventDefault(),d.is("input,button")?d.trigger("focus"):d.find("input:visible,button:visible").first().trigger("focus"))}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.7",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));if(!(a>this.$items.length-1||a<0))return this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){if(!this.sliding)return this.slide("next")},c.prototype.prev=function(){if(!this.sliding)return this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.7",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.7",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&jdocument.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth
                      ',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);if(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),!c.isInStateTrue())return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-mo.width?"left":"left"==h&&k.left-lg.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;jg.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null,a.$element=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;!e&&/destroy|hide/.test(b)||(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.7",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:''}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.7",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b=e[a]&&(void 0===e[a+1]||b .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.7",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return e=a-d&&"bottom"},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file diff --git a/manager/media/script/datefunctions.js b/manager/media/script/datefunctions.js deleted file mode 100755 index e99188287b..0000000000 --- a/manager/media/script/datefunctions.js +++ /dev/null @@ -1,158 +0,0 @@ -//====================================================================================================== -//====================================================================================================== - -// Title: Tigra Calendar -// URL: http://www.softcomplex.com/products/tigra_calendar/ -// Version: 3.2 (European date format) -// Date: 10/14/2002 (mm/dd/yyyy) -// Note: Permission given to use this script in ANY kind of applications if -// header lines are left unchanged. -// Note: Script consists of two files: calendar?.js and calendar.html - -// if two digit year input dates after this year considered 20 century. -var NUM_CENTYEAR = 30; -// is time input control required by default -var BUL_TIMECOMPONENT = false; -// are year scrolling buttons required by default -var BUL_YEARSCROLL = true; - -var calendars = []; -var RE_NUM = /^\-?\d+$/; - -function calendar1(obj_target, tmp_target) { - - // assigning methods - this.gen_date = cal_gen_date1; - this.gen_time = cal_gen_time1; - this.gen_tsmp = cal_gen_tsmp1; - this.prs_date = cal_prs_date1; - this.prs_time = cal_prs_time1; - this.prs_tsmp = cal_prs_tsmp1; - this.popup = cal_popup1; - - // validate input parameters - if (!obj_target) - return cal_error("Error calling the calendar: no target control specified"); - if (obj_target.value == null) - return cal_error("Error calling the calendar: parameter specified is not valid target control"); - this.target = obj_target; - this.txt_target = tmp_target; // added by Alex :) - this.time_comp = BUL_TIMECOMPONENT; - this.year_scroll = BUL_YEARSCROLL; - - // register in global collections - this.id = calendars.length; - calendars[this.id] = this; -} - -function cal_popup1 (str_datetime) { - this.dt_current = this.prs_tsmp(str_datetime ? str_datetime : this.target.value); - if (!this.dt_current) return; - - var obj_calwindow = window.open( - this.path+'calendar/calendar.html?datetime=' + this.dt_current.valueOf()+ '&id=' + this.id, - 'Calendar', 'width=200,height='+(this.time_comp ? 215 : 190)+ - ',status=yes,resizable=yes,top=200,left=200,dependent=yes,alwaysRaised=yes' - ); - obj_calwindow.opener = window; - obj_calwindow.focus(); -} - -// timestamp generating function -function cal_gen_tsmp1 (dt_datetime) { - return(this.gen_date(dt_datetime) + ' ' + this.gen_time(dt_datetime)); -} - -// date generating function -function cal_gen_date1 (dt_datetime) { - return ( - (dt_datetime.getDate() < 10 ? '0' : '') + dt_datetime.getDate() + "-" - + (dt_datetime.getMonth() < 9 ? '0' : '') + (dt_datetime.getMonth() + 1) + "-" - + dt_datetime.getFullYear() - ); -} -// time generating function -function cal_gen_time1 (dt_datetime) { - return ( - (dt_datetime.getHours() < 10 ? '0' : '') + dt_datetime.getHours() + ":" - + (dt_datetime.getMinutes() < 10 ? '0' : '') + (dt_datetime.getMinutes()) + ":" - + (dt_datetime.getSeconds() < 10 ? '0' : '') + (dt_datetime.getSeconds()) - ); -} - -// timestamp parsing function -function cal_prs_tsmp1 (str_datetime) { - // if no parameter specified return current timestamp - if (!str_datetime) - return (new Date()); - - // if positive integer treat as milliseconds from epoch - if (RE_NUM.exec(str_datetime)) - return new Date(str_datetime); - - // else treat as date in string format - var arr_datetime = str_datetime.split(' '); - return this.prs_time(arr_datetime[1], this.prs_date(arr_datetime[0])); -} - -// date parsing function -function cal_prs_date1 (str_date) { - - var arr_date = str_date.split('-'); - - if (arr_date.length != 3) return cal_error ("Invalid date format: '" + str_date + "'.\nFormat accepted is dd-mm-yyyy."); - if (!arr_date[0]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo day of month value can be found."); - if (!RE_NUM.exec(arr_date[0])) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed values are unsigned integers."); - if (!arr_date[1]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo month value can be found."); - if (!RE_NUM.exec(arr_date[1])) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed values are unsigned integers."); - if (!arr_date[2]) return cal_error ("Invalid date format: '" + str_date + "'.\nNo year value can be found."); - if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nAllowed values are unsigned integers."); - - var dt_date = new Date(); - dt_date.setDate(1); - - if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Invalid month value: '" + arr_date[1] + "'.\nAllowed range is 01-12."); - dt_date.setMonth(arr_date[1]-1); - - if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900); - dt_date.setFullYear(arr_date[2]); - - var dt_numdays = new Date(arr_date[2], arr_date[1], 0); - dt_date.setDate(arr_date[0]); - if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Invalid day of month value: '" + arr_date[0] + "'.\nAllowed range is 01-"+dt_numdays.getDate()+"."); - - return (dt_date) -} - -// time parsing function -function cal_prs_time1 (str_time, dt_date) { - - if (!dt_date) return null; - var arr_time = String(str_time ? str_time : '').split(':'); - - if (!arr_time[0]) dt_date.setHours(0); - else if (RE_NUM.exec(arr_time[0])) - if (arr_time[0] < 24) dt_date.setHours(arr_time[0]); - else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed range is 00-23."); - else return cal_error ("Invalid hours value: '" + arr_time[0] + "'.\nAllowed values are unsigned integers."); - - if (!arr_time[1]) dt_date.setMinutes(0); - else if (RE_NUM.exec(arr_time[1])) - if (arr_time[1] < 60) dt_date.setMinutes(arr_time[1]); - else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed range is 00-59."); - else return cal_error ("Invalid minutes value: '" + arr_time[1] + "'.\nAllowed values are unsigned integers."); - - if (!arr_time[2]) dt_date.setSeconds(0); - else if (RE_NUM.exec(arr_time[2])) - if (arr_time[2] < 60) dt_date.setSeconds(arr_time[2]); - else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed range is 00-59."); - else return cal_error ("Invalid seconds value: '" + arr_time[2] + "'.\nAllowed values are unsigned integers."); - - dt_date.setMilliseconds(0); - return dt_date; -} - -function cal_error (str_message) { - alert (str_message); - return null; -} \ No newline at end of file diff --git a/manager/media/script/forIE/csshover.htc b/manager/media/script/forIE/csshover.htc deleted file mode 100644 index 14f88576c1..0000000000 --- a/manager/media/script/forIE/csshover.htc +++ /dev/null @@ -1,120 +0,0 @@ - - \ No newline at end of file diff --git a/manager/media/script/forIE/htcmime.php b/manager/media/script/forIE/htcmime.php deleted file mode 100644 index 2090b53c50..0000000000 --- a/manager/media/script/forIE/htcmime.php +++ /dev/null @@ -1,41 +0,0 @@ -> instead of the following in your stylesheet: -// body { behavior: url(assets/js/csshover.htc) } -// -// Use the following in the head of your document (shown in -// an IE Conditional Comment...adjust paths as needed): -// -// -// -// NOTE: the img behavior is an alternate to using sleight.js - -// Get component file name -$fname = (array_key_exists("file", $_GET)) ? $_GET["file"] : ""; -$fpath = dirname(__FILE__); -$fname = basename($fname); - -// basename() also strips \x00, we don't need to worry about ? and # in path: -// Must be real files anyway, fopen() does not support wildcards -$ext = array_pop(explode('.', $fname)); - -$filename = $fpath . '/' . $fname; -if (strcasecmp($ext, "htc") != 0 || !file_exists($filename)) - exit ("No file specified, file not found or illegal file."); - -$flen = filesize($filename); - -header("Content-type: text/x-component"); -header("Content-Length: ".$flen); -header("Content-Disposition: inline; filename=$filename"); - -$fp = fopen($filename, "r"); - -echo fread($fp, $flen); - -fclose($fp); -?> \ No newline at end of file diff --git a/manager/media/script/forIE/pngbehavior.htc b/manager/media/script/forIE/pngbehavior.htc deleted file mode 100755 index d40067e4e3..0000000000 --- a/manager/media/script/forIE/pngbehavior.htc +++ /dev/null @@ -1,86 +0,0 @@ - - - - - - diff --git a/manager/media/script/gridster/jquery.gridster.css b/manager/media/script/gridster/jquery.gridster.css new file mode 100644 index 0000000000..056f52b2f5 --- /dev/null +++ b/manager/media/script/gridster/jquery.gridster.css @@ -0,0 +1,121 @@ +/*! gridster.js - v0.5.1 - 2014-03-26 +* http://gridster.net/ +* Copyright (c) 2014 ducksboard; Licensed MIT */ + +.gridster { + position:relative; +} + +.gridster > * { + margin: 0 auto; + -webkit-transition: height .4s, width .4s; + -moz-transition: height .4s, width .4s; + -o-transition: height .4s, width .4s; + -ms-transition: height .4s, width .4s; + transition: height .4s, width .4s; +} + +.gridster .gs-w { + z-index: 2; + position: absolute; +} + +.ready .gs-w:not(.preview-holder) { + -webkit-transition: opacity .3s, left .3s, top .3s; + -moz-transition: opacity .3s, left .3s, top .3s; + -o-transition: opacity .3s, left .3s, top .3s; + transition: opacity .3s, left .3s, top .3s; +} + +.ready .gs-w:not(.preview-holder), +.ready .resize-preview-holder { + -webkit-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; + -moz-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; + -o-transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; + transition: opacity .3s, left .3s, top .3s, width .3s, height .3s; +} + +.gridster .preview-holder { + z-index: 1; + position: absolute; + background-color: #fff; + border-color: #fff; + opacity: 0.3; +} + +.gridster .player-revert { + z-index: 10!important; + -webkit-transition: left .3s, top .3s!important; + -moz-transition: left .3s, top .3s!important; + -o-transition: left .3s, top .3s!important; + transition: left .3s, top .3s!important; +} + +.gridster .dragging, +.gridster .resizing { + z-index: 10!important; + -webkit-transition: all 0s !important; + -moz-transition: all 0s !important; + -o-transition: all 0s !important; + transition: all 0s !important; +} + + +.gs-resize-handle { + position: absolute; + z-index: 1; +} + +.gs-resize-handle-both { + width: 20px; + height: 20px; + bottom: -8px; + right: -8px; + background-image: url('data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pg08IS0tIEdlbmVyYXRvcjogQWRvYmUgRmlyZXdvcmtzIENTNiwgRXhwb3J0IFNWRyBFeHRlbnNpb24gYnkgQWFyb24gQmVhbGwgKGh0dHA6Ly9maXJld29ya3MuYWJlYWxsLmNvbSkgLiBWZXJzaW9uOiAwLjYuMSAgLS0+DTwhRE9DVFlQRSBzdmcgUFVCTElDICItLy9XM0MvL0RURCBTVkcgMS4xLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL0dyYXBoaWNzL1NWRy8xLjEvRFREL3N2ZzExLmR0ZCI+DTxzdmcgaWQ9IlVudGl0bGVkLVBhZ2UlMjAxIiB2aWV3Qm94PSIwIDAgNiA2IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmMDAiIHZlcnNpb249IjEuMSINCXhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIHhtbDpzcGFjZT0icHJlc2VydmUiDQl4PSIwcHgiIHk9IjBweCIgd2lkdGg9IjZweCIgaGVpZ2h0PSI2cHgiDT4NCTxnIG9wYWNpdHk9IjAuMzAyIj4NCQk8cGF0aCBkPSJNIDYgNiBMIDAgNiBMIDAgNC4yIEwgNCA0LjIgTCA0LjIgNC4yIEwgNC4yIDAgTCA2IDAgTCA2IDYgTCA2IDYgWiIgZmlsbD0iIzAwMDAwMCIvPg0JPC9nPg08L3N2Zz4='); + background-position: top left; + background-repeat: no-repeat; + cursor: se-resize; + z-index: 20; +} + +.gs-resize-handle-x { + top: 0; + bottom: 13px; + right: -5px; + width: 10px; + cursor: e-resize; +} + +.gs-resize-handle-y { + left: 0; + right: 13px; + bottom: -5px; + height: 10px; + cursor: s-resize; +} + +.gs-w:hover .gs-resize-handle, +.resizing .gs-resize-handle { + opacity: 1; +} + +.gs-resize-handle, +.gs-w.dragging .gs-resize-handle { + opacity: 0; +} + +.gs-resize-disabled .gs-resize-handle { + display: none!important; +} + +[data-max-sizex="1"] .gs-resize-handle-x, +[data-max-sizey="1"] .gs-resize-handle-y, +[data-max-sizey="1"][data-max-sizex="1"] .gs-resize-handle { + display: none !important; +} + +/* Uncomment this if you set helper : "clone" in draggable options */ +/*.gridster .player { + opacity:0; +} +*/ \ No newline at end of file diff --git a/manager/media/script/gridster/jquery.gridster.min.js b/manager/media/script/gridster/jquery.gridster.min.js new file mode 100644 index 0000000000..45d02a24e9 --- /dev/null +++ b/manager/media/script/gridster/jquery.gridster.min.js @@ -0,0 +1,2 @@ +!function(a,b){"function"==typeof define&&define.amd?define("gridster-coords",["jquery"],b):a.GridsterCoords=b(a.$||a.jQuery)}(this,function(a){function b(b){return b[0]&&a.isPlainObject(b[0])?this.data=b[0]:this.el=b,this.isCoords=!0,this.coords={},this.init(),this}var c=b.prototype;return c.init=function(){this.set(),this.original_coords=this.get()},c.set=function(a,b){var c=this.el;if(c&&!a&&(this.data=c.offset(),this.data.width=c.width(),this.data.height=c.height()),c&&a&&!b){var d=c.offset();this.data.top=d.top,this.data.left=d.left}var e=this.data;return"undefined"==typeof e.left&&(e.left=e.x1),"undefined"==typeof e.top&&(e.top=e.y1),this.coords.x1=e.left,this.coords.y1=e.top,this.coords.x2=e.left+e.width,this.coords.y2=e.top+e.height,this.coords.cx=e.left+e.width/2,this.coords.cy=e.top+e.height/2,this.coords.width=e.width,this.coords.height=e.height,this.coords.el=c||!1,this},c.update=function(b){if(!b&&!this.el)return this;if(b){var c=a.extend({},this.data,b);return this.data=c,this.set(!0,!0)}return this.set(!0),this},c.get=function(){return this.coords},c.destroy=function(){this.el.removeData("coords"),delete this.el},a.fn.coords=function(){if(this.data("coords"))return this.data("coords");var a=new b(this,arguments[0]);return this.data("coords",a),a},b}),function(a,b){"function"==typeof define&&define.amd?define("gridster-collision",["jquery","gridster-coords"],b):a.GridsterCollision=b(a.$||a.jQuery,a.GridsterCoords)}(this,function(a,b){function d(b,d,e){this.options=a.extend(c,e),this.$element=b,this.last_colliders=[],this.last_colliders_coords=[],this.set_colliders(d),this.init()}var c={colliders_context:document.body,overlapping_region:"C"};d.defaults=c;var e=d.prototype;return e.init=function(){this.find_collisions()},e.overlaps=function(a,b){var c=!1,d=!1;return(b.x1>=a.x1&&b.x1<=a.x2||b.x2>=a.x1&&b.x2<=a.x2||a.x1>=b.x1&&a.x2<=b.x2)&&(c=!0),(b.y1>=a.y1&&b.y1<=a.y2||b.y2>=a.y1&&b.y2<=a.y2||a.y1>=b.y1&&a.y2<=b.y2)&&(d=!0),c&&d},e.detect_overlapping_region=function(a,b){var c="",d="";return a.y1>b.cy&&a.y1b.y1&&a.y2b.cx&&a.x1b.x1&&a.x2this.player_max_left?f=this.player_max_left:f=r&&(n=o+i,n0&&(c["scroll"+f(g)](n),this["scroll_offset_"+b]-=i)),this},j.manage_scroll=function(a){this.scroll_in("x",a),this.scroll_in("y",a)},j.calculate_dimensions=function(a){this.window_height=c.height(),this.window_width=c.width()},j.drag_handler=function(b){b.target.nodeName;if(!this.disabled&&(1===b.which||e)&&!this.ignore_drag(b)){var d=this,f=!0;return this.$player=a(b.currentTarget),this.el_init_pos=this.get_actual_pos(this.$player),this.mouse_init_pos=this.get_mouse_pos(b),this.offsetY=this.mouse_init_pos.top-this.el_init_pos.top,this.$document.on(this.pointer_events.move,function(a){var b=d.get_mouse_pos(a),c=Math.abs(b.left-d.mouse_init_pos.left),e=Math.abs(b.top-d.mouse_init_pos.top);return(c>d.options.distance||e>d.options.distance)&&(f?(f=!1,d.on_dragstart.call(d,a),!1):(d.is_dragging===!0&&d.on_dragmove.call(d,a),!1))}),!!e&&void 0}},j.on_dragstart=function(b){if(b.preventDefault(),this.is_dragging)return this;this.drag_start=this.is_dragging=!0;var c=this.$container.offset();return this.baseX=Math.round(c.left),this.baseY=Math.round(c.top),this.initial_container_width=this.options.container_width||this.$container.width(),"clone"===this.options.helper?(this.$helper=this.$player.clone().appendTo(this.$container).addClass("helper"),this.helper=!0):this.helper=!1,this.win_offset_y=a(window).scrollTop(),this.win_offset_x=a(window).scrollLeft(),this.scroll_offset_y=0,this.scroll_offset_x=0,this.el_init_offset=this.$player.offset(),this.player_width=this.$player.width(),this.player_height=this.$player.height(),this.set_limits(this.options.container_width),this.options.start&&this.options.start.call(this.$player,b,this.get_drag_data(b)),!1},j.on_dragmove=function(a){var b=this.get_drag_data(a);this.options.autoscroll&&this.manage_scroll(b),this.options.move_element&&(this.helper?this.$helper:this.$player).css({position:"absolute",left:b.position.left,top:b.position.top});var c=this.last_position||b.position;return b.prev_position=c,this.options.drag&&this.options.drag.call(this.$player,a,b),this.last_position=b.position,!1},j.on_dragstop=function(a){var b=this.get_drag_data(a);return this.drag_start=!1,this.options.stop&&this.options.stop.call(this.$player,a,b),this.helper&&this.options.remove_helper&&this.$helper.remove(),!1},j.on_select_start=function(a){if(!this.disabled&&!this.ignore_drag(a))return!1},j.enable=function(){this.disabled=!1},j.disable=function(){this.disabled=!0},j.destroy=function(){this.disable(),this.$container.off(this.ns),this.$document.off(this.ns),a(window).off(this.ns),a.removeData(this.$container,"drag")},j.ignore_drag=function(b){return this.options.handle?!a(b.target).is(this.options.handle):a.isFunction(this.options.ignore_dragging)?this.options.ignore_dragging(b):a(b.target).is(this.options.ignore_dragging.join(", "))},a.fn.drag=function(a){return new i(this,a)},i}),function(a,b){"function"==typeof define&&define.amd?define(["jquery","gridster-draggable","gridster-collision"],b):a.Gridster=b(a.$||a.jQuery,a.GridsterDraggable,a.GridsterCollision)}(this,function(a,b,c){function e(b,c){this.options=a.extend(!0,{},d,c),this.$el=a(b),this.$wrapper=this.$el.parent(),this.$widgets=this.$el.children(this.options.widget_selector).addClass("gs-w"),this.widgets=[],this.$changed=a([]),this.wrapper_width=this.$wrapper.width(),this.min_widget_width=2*this.options.widget_margins[0]+this.options.widget_base_dimensions[0],this.min_widget_height=2*this.options.widget_margins[1]+this.options.widget_base_dimensions[1],this.generated_stylesheets=[],this.$style_tags=a([]),this.options.auto_init&&this.init()}var d={namespace:"",widget_selector:"li",widget_margins:[10,10],widget_base_dimensions:[400,225],extra_rows:0,extra_cols:0,min_cols:1,max_cols:1/0,min_rows:15,max_size_x:!1,autogrow_cols:!1,autogenerate_stylesheet:!0,avoid_overlapped_widgets:!0,auto_init:!0,serialize_params:function(a,b){return{col:b.col,row:b.row,size_x:b.size_x,size_y:b.size_y}},collision:{},draggable:{items:".gs-w",distance:4,ignore_dragging:b.defaults.ignore_dragging.slice(0)},resize:{enabled:!1,axes:["both"],handle_append_to:"",handle_class:"gs-resize-handle",max_size:[1/0,1/0],min_size:[1,1]}};e.defaults=d,e.generated_stylesheets=[],e.sort_by_row_asc=function(b){return b=b.sort(function(b,c){return b.row||(b=a(b).coords().grid,c=a(c).coords().grid),b.row>c.row?1:-1})},e.sort_by_row_and_col_asc=function(a){return a=a.sort(function(a,b){return a.row>b.row||a.row===b.row&&a.col>b.col?1:-1})},e.sort_by_col_asc=function(a){return a=a.sort(function(a,b){return a.col>b.col?1:-1})},e.sort_by_row_desc=function(a){return a=a.sort(function(a,b){return a.row+a.size_yh&&this.add_faux_rows(Math.max(c-h,0));var k=f+b-1;k>this.cols&&this.add_faux_cols(k-this.cols);var l={col:j,row:e.row,size_x:b,size_y:c};return this.mutate_widget_in_gridmap(a,e,l),this.set_dom_grid_height(),this.set_dom_grid_width(),d&&d.call(this,l.size_x,l.size_y),a},f.resize_widget_dimensions=function(b){b.widget_margins&&(this.options.widget_margins=b.widget_margins),b.widget_base_dimensions&&(this.options.widget_base_dimensions=b.widget_base_dimensions),b.max_cols&&(this.options.max_cols=b.max_cols),this.min_widget_width=2*this.options.widget_margins[0]+this.options.widget_base_dimensions[0],this.min_widget_height=2*this.options.widget_margins[1]+this.options.widget_base_dimensions[1];this.serialize();return this.$widgets.each(a.proxy(function(b,c){var d=a(c);this.resize_widget(d)},this)),this.generate_grid_and_stylesheet(),this.get_widgets_from_DOM(),this.set_dom_grid_height(),this},f.mutate_widget_in_gridmap=function(b,c,d){var f=(c.size_x,c.size_y),g=this.get_cells_occupied(c),h=this.get_cells_occupied(d),i=[];a.each(g.cols,function(b,c){a.inArray(c,h.cols)===-1&&i.push(c)});var j=[];a.each(h.cols,function(b,c){a.inArray(c,g.cols)===-1&&j.push(c)});var k=[];a.each(g.rows,function(b,c){a.inArray(c,h.rows)===-1&&k.push(c)});var l=[];if(a.each(h.rows,function(b,c){a.inArray(c,g.rows)===-1&&l.push(c)}),this.remove_from_gridmap(c),j.length){var m=[d.col,d.row,d.size_x,Math.min(f,d.size_y),b];this.empty_cells.apply(this,m)}if(l.length){var n=[d.col,d.row,d.size_x,d.size_y,b];this.empty_cells.apply(this,n)}if(c.col=d.col,c.row=d.row,c.size_x=d.size_x,c.size_y=d.size_y,this.add_to_gridmap(d,b),b.removeClass("player-revert"),b.data("coords").update({width:d.size_x*this.options.widget_base_dimensions[0]+(d.size_x-1)*this.options.widget_margins[0]*2,height:d.size_y*this.options.widget_base_dimensions[1]+(d.size_y-1)*this.options.widget_margins[1]*2}),b.attr({"data-col":d.col,"data-row":d.row,"data-sizex":d.size_x,"data-sizey":d.size_y}),i.length){var o=[i[0],d.row,i.length,Math.min(f,d.size_y),b];this.remove_empty_cells.apply(this,o)}if(k.length){var p=[d.col,d.row,d.size_x,d.size_y,b];this.remove_empty_cells.apply(this,p)}return this.move_widget_up(b),this},f.empty_cells=function(b,c,d,e,f){var g=this.widgets_below({col:b,row:c-e,size_x:d,size_y:e});return g.not(f).each(a.proxy(function(b,d){var f=a(d).coords().grid;if(f.row<=c+e-1){var g=c+e-f.row;this.move_widget_down(a(d),g)}},this)),this.set_dom_grid_height(),this},f.remove_empty_cells=function(b,c,d,e,f){var g=this.widgets_below({col:b,row:c,size_x:d,size_y:e});return g.not(f).each(a.proxy(function(b,c){this.move_widget_up(a(c),e)},this)),this.set_dom_grid_height(),this},f.next_position=function(a,b){a||(a=1),b||(b=1);for(var g,c=this.gridmap,d=c.length,f=[],h=1;h';return this.resize_handle_tpl=a.map(b,function(a){return c.replace("{type}",a)}).join(""),a.isArray(this.options.draggable.ignore_dragging)&&this.options.draggable.ignore_dragging.push("."+this.resize_handle_class),this},f.on_start_drag=function(b,c){this.$helper.add(this.$player).add(this.$wrapper).addClass("dragging"),this.highest_col=this.get_highest_occupied_cell().col,this.$player.addClass("player"),this.player_grid_data=this.$player.coords().grid,this.placeholder_grid_data=a.extend({},this.player_grid_data),this.set_dom_grid_height(this.$el.height()+this.player_grid_data.size_y*this.min_widget_height),this.set_dom_grid_width(this.cols);var d=this.player_grid_data.size_x,e=this.cols-this.highest_col;this.options.autogrow_cols&&e<=d&&this.add_faux_cols(Math.min(d-e,1));var f=this.faux_grid,g=this.$player.data("coords").coords;this.cells_occupied_by_player=this.get_cells_occupied(this.player_grid_data),this.cells_occupied_by_placeholder=this.get_cells_occupied(this.placeholder_grid_data),this.last_cols=[],this.last_rows=[],this.collision_api=this.$helper.collision(f,this.options.collision),this.$preview_holder=a("<"+this.$player.get(0).tagName+" />",{class:"preview-holder","data-row":this.$player.attr("data-row"),"data-col":this.$player.attr("data-col"),css:{width:g.width,height:g.height}}).appendTo(this.$el),this.options.draggable.start&&this.options.draggable.start.call(this,b,c)},f.on_drag=function(a,b){if(null===this.$player)return!1;var c={left:b.position.left+this.baseX,top:b.position.top+this.baseY};if(this.options.autogrow_cols){var d=this.placeholder_grid_data.col+this.placeholder_grid_data.size_x-1;d>=this.cols-1&&this.options.max_cols>=this.cols+1&&(this.add_faux_cols(1),this.set_dom_grid_width(this.cols+1),this.drag_api.set_limits(this.container_width)),this.collision_api.set_colliders(this.faux_grid)}this.colliders_data=this.collision_api.get_closest_colliders(c),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.helper&&this.$player&&this.$player.css({left:b.position.left,top:b.position.top}),this.options.draggable.drag&&this.options.draggable.drag.call(this,a,b)},f.on_stop_drag=function(a,b){this.$helper.add(this.$player).add(this.$wrapper).removeClass("dragging"),b.position.left=b.position.left+this.baseX,b.position.top=b.position.top+this.baseY,this.colliders_data=this.collision_api.get_closest_colliders(b.position),this.on_overlapped_column_change(this.on_start_overlapping_column,this.on_stop_overlapping_column),this.on_overlapped_row_change(this.on_start_overlapping_row,this.on_stop_overlapping_row),this.$player.addClass("player-revert").removeClass("player").attr({"data-col":this.placeholder_grid_data.col,"data-row":this.placeholder_grid_data.row}).css({left:"",top:""}),this.$changed=this.$changed.add(this.$player),this.cells_occupied_by_player=this.get_cells_occupied(this.placeholder_grid_data),this.set_cells_player_occupies(this.placeholder_grid_data.col,this.placeholder_grid_data.row),this.$player.coords().grid.row=this.placeholder_grid_data.row,this.$player.coords().grid.col=this.placeholder_grid_data.col,this.options.draggable.stop&&this.options.draggable.stop.call(this,a,b),this.$preview_holder.remove(),this.$player=null,this.$helper=null,this.placeholder_grid_data={},this.player_grid_data={},this.cells_occupied_by_placeholder={},this.cells_occupied_by_player={},this.set_dom_grid_height(),this.set_dom_grid_width(),this.options.autogrow_cols&&this.drag_api.set_limits(this.cols*this.min_widget_width)},f.on_start_resize=function(b,c){this.$resized_widget=c.$player.closest(".gs-w"),this.resize_coords=this.$resized_widget.coords(),this.resize_wgd=this.resize_coords.grid,this.resize_initial_width=this.resize_coords.coords.width,this.resize_initial_height=this.resize_coords.coords.height,this.resize_initial_sizex=this.resize_coords.grid.size_x,this.resize_initial_sizey=this.resize_coords.grid.size_y,this.resize_initial_col=this.resize_coords.grid.col,this.resize_last_sizex=this.resize_initial_sizex,this.resize_last_sizey=this.resize_initial_sizey,this.resize_max_size_x=Math.min(this.resize_wgd.max_size_x||this.options.resize.max_size[0],this.options.max_cols-this.resize_initial_col+1),this.resize_max_size_y=this.resize_wgd.max_size_y||this.options.resize.max_size[1],this.resize_min_size_x=this.resize_wgd.min_size_x||this.options.resize.min_size[0]||1,this.resize_min_size_y=this.resize_wgd.min_size_y||this.options.resize.min_size[1]||1,this.resize_initial_last_col=this.get_highest_occupied_cell().col,this.set_dom_grid_width(this.cols),this.resize_dir={right:c.$player.is("."+this.resize_handle_class+"-x"),bottom:c.$player.is("."+this.resize_handle_class+"-y")},this.$resized_widget.css({"min-width":this.options.widget_base_dimensions[0],"min-height":this.options.widget_base_dimensions[1]});var d=this.$resized_widget.get(0).tagName;this.$resize_preview_holder=a("<"+d+" />",{class:"preview-holder resize-preview-holder","data-row":this.$resized_widget.attr("data-row"),"data-col":this.$resized_widget.attr("data-col"),css:{width:this.resize_initial_width,height:this.resize_initial_height}}).appendTo(this.$el),this.$resized_widget.addClass("resizing"),this.options.resize.start&&this.options.resize.start.call(this,b,c,this.$resized_widget),this.$el.trigger("gridster:resizestart")},f.on_stop_resize=function(b,c){this.$resized_widget.removeClass("resizing").css({width:"",height:""}),delay(a.proxy(function(){this.$resize_preview_holder.remove().css({"min-width":"","min-height":""}),this.options.resize.stop&&this.options.resize.stop.call(this,b,c,this.$resized_widget),this.$el.trigger("gridster:resizestop")},this),300),this.set_dom_grid_width(),this.options.autogrow_cols&&this.drag_api.set_limits(this.cols*this.min_widget_width)},f.on_resize=function(a,b){var n,c=b.pointer.diff_left,d=b.pointer.diff_top,e=this.options.widget_base_dimensions[0],f=this.options.widget_base_dimensions[1],g=this.options.widget_margins[0],h=this.options.widget_margins[1],i=this.resize_max_size_x,j=this.resize_min_size_x,k=this.resize_max_size_y,l=this.resize_min_size_y,m=this.options.autogrow_cols,o=1/0,p=1/0,q=Math.ceil(c/(e+2*g)-.2),r=Math.ceil(d/(f+2*h)-.2),s=Math.max(1,this.resize_initial_sizex+q),t=Math.max(1,this.resize_initial_sizey+r),u=this.container_width/this.min_widget_width-this.resize_initial_col+1,v=u*this.min_widget_width-2*g;if(s=Math.max(Math.min(s,i),j),s=Math.min(u,s),n=i*e+(s-1)*g*2,o=Math.min(n,v),min_width=j*e+(s-1)*g*2,t=Math.max(Math.min(t,k),l),p=k*f+(t-1)*h*2,min_height=l*f+(t-1)*h*2,this.resize_dir.right?t=this.resize_initial_sizey:this.resize_dir.bottom&&(s=this.resize_initial_sizex),m){var w=this.resize_initial_col+s-1;m&&this.resize_initial_last_col<=w&&(this.set_dom_grid_width(Math.max(w+1,this.cols)),this.cols=0&&a.inArray(c,d.rows)>=0},f.is_placeholder_in=function(b,c){var d=this.cells_occupied_by_placeholder||{};return this.is_placeholder_in_col(b)&&a.inArray(c,d.rows)>=0},f.is_placeholder_in_col=function(b){var c=this.cells_occupied_by_placeholder||[];return a.inArray(b,c.cols)>=0},f.is_empty=function(a,b){return"undefined"==typeof this.gridmap[a]||"undefined"!=typeof this.gridmap[a][b]&&this.gridmap[a][b]===!1},f.is_occupied=function(a,b){return!!this.gridmap[a]&&!!this.gridmap[a][b]},f.is_widget=function(a,b){var c=this.gridmap[a];return!!c&&(c=c[b],!!c&&c)},f.is_widget_under_player=function(a,b){return!!this.is_widget(a,b)&&this.is_player_in(a,b)},f.get_widgets_under_player=function(b){b||(b=this.cells_occupied_by_player||{cols:[],rows:[]});var c=a([]);return a.each(b.cols,a.proxy(function(d,e){a.each(b.rows,a.proxy(function(a,b){this.is_widget(e,b)&&(c=c.add(this.gridmap[e][b]))},this))},this)),c},f.set_placeholder=function(b,c){var d=a.extend({},this.placeholder_grid_data),e=this.widgets_below({col:d.col,row:d.row,size_y:d.size_y,size_x:d.size_x}),f=b+d.size_x-1;f>this.cols&&(b-=f-b);var g=this.placeholder_grid_data.row0&&(this.is_empty(a,h)||this.is_player(a,h)||this.is_widget(a,h)&&g[h].is(f));)d[a].push(h),e=h0&&(!this.is_widget(f,h)||this.is_player_in(f,h)||g[h].is(a.el));)this.is_player(f,h)||this.is_placeholder_in(f,h)||this.is_player_in(f,h)||d[f].push(h),h=b&&a[d[0]]},f.get_widgets_overlapped=function(){var c=a([]),d=[],e=this.cells_occupied_by_player.rows.slice(0);return e.reverse(),a.each(this.cells_occupied_by_player.cols,a.proxy(function(b,f){a.each(e,a.proxy(function(b,e){if(!this.gridmap[f])return!0;var g=this.gridmap[f][e];this.is_occupied(f,e)&&!this.is_player(g)&&a.inArray(g,d)===-1&&(c=c.add(g),d.push(g))},this))},this)),c},f.on_start_overlapping_column=function(a){this.set_player(a,!1)},f.on_start_overlapping_row=function(a){this.set_player(!1,a)},f.on_stop_overlapping_column=function(a){this.set_player(a,!1);var b=this;this.for_each_widget_below(a,this.cells_occupied_by_player.rows[0],function(a,c){b.move_widget_up(this,b.player_grid_data.size_y)})},f.on_stop_overlapping_row=function(a){this.set_player(!1,a);for(var b=this,c=this.cells_occupied_by_player.cols,d=0,e=c.length;d0&&this.move_widget_down(d,f)},this)),h.row=i,this.update_widget_position(h,b),b.attr("data-row",h.row),this.$changed=this.$changed.add(b),f.push(b)}},f.can_go_up_to_row=function(b,c,d){var i,e=this.gridmap,f=!0,g=[],h=b.row;if(this.for_each_column_occupied(b,function(a){e[a];for(g[a]=[],i=h;i--&&this.is_empty(a,i)&&!this.is_placeholder_in(a,i);)g[a].push(i);if(!g[a].length)return f=!1,!0}),!f)return!1;for(i=d,i=1;i0?c:0},f.widgets_below=function(b){var c=a.isPlainObject(b)?b:b.coords().grid,d=this,g=(this.gridmap,c.row+c.size_y-1),h=a([]);return this.for_each_column_occupied(c,function(b){d.for_each_widget_below(b,g,function(b,c){if(!d.is_player(this)&&a.inArray(this,h)===-1)return h=h.add(this),!0})}),e.sort_by_row_asc(h)},f.set_cells_player_occupies=function(a,b){return this.remove_from_gridmap(this.placeholder_grid_data),this.placeholder_grid_data.col=a,this.placeholder_grid_data.row=b,this.add_to_gridmap(this.placeholder_grid_data,this.$player),this},f.empty_cells_player_occupies=function(){return this.remove_from_gridmap(this.placeholder_grid_data),this},f.can_go_up=function(a){var b=a.coords().grid,c=b.row,d=c-1,g=(this.gridmap,!0);return 1!==c&&(this.for_each_column_occupied(b,function(a){this.is_widget(a,d);if(this.is_occupied(a,d)||this.is_player(a,d)||this.is_placeholder_in(a,d)||this.is_player_in(a,d))return g=!1,!0}),g)},f.can_move_to=function(a,b,c,d){var f=(this.gridmap,a.el),g={size_y:a.size_y,size_x:a.size_x,col:b,row:c},h=!0,i=b+a.size_x-1;return!(i>this.cols)&&(!(d&&d0&&this.is_widget(d,m)&&a.inArray(g[d][m],l)===-1&&(h=f.call(g[d][m],d,m),l.push(g[d][m]),h)););},"for_each/below":function(){for(m=e+1,i=g[d].length;m=1;g--)for(a=c-1;a>=1;a--)if(this.is_widget(g,a)){d.push(a),e.push(g);break}return{col:Math.max.apply(Math,e),row:Math.max.apply(Math,d)}},f.get_widgets_from=function(b,c){var e=(this.gridmap,a());return b&&(e=e.add(this.$widgets.filter(function(){var c=a(this).attr("data-col");return c===b||c>b}))),c&&(e=e.add(this.$widgets.filter(function(){var b=a(this).attr("data-row");return b===c||b>c}))),e},f.set_dom_grid_height=function(a){if("undefined"==typeof a){var b=this.get_highest_occupied_cell().row;a=b*this.min_widget_height}return this.container_height=a,this.$el.css("height",this.container_height),this},f.set_dom_grid_width=function(a){"undefined"==typeof a&&(a=this.get_highest_occupied_cell().col);var b=this.options.autogrow_cols?this.options.max_cols:this.cols;return a=Math.min(b,Math.max(a,this.options.min_cols)),this.container_width=a*this.min_widget_width,this.$el.css("width",this.container_width),this},f.generate_stylesheet=function(b){var h,c="",d=this.options.max_size_x||this.cols;b||(b={}),b.cols||(b.cols=this.cols),b.rows||(b.rows=this.rows),b.namespace||(b.namespace=this.options.namespace),b.widget_base_dimensions||(b.widget_base_dimensions=this.options.widget_base_dimensions),b.widget_margins||(b.widget_margins=this.options.widget_margins),b.min_widget_width=2*b.widget_margins[0]+b.widget_base_dimensions[0],b.min_widget_height=2*b.widget_margins[1]+b.widget_base_dimensions[1];var j=a.param(b);if(a.inArray(j,e.generated_stylesheets)>=0)return!1;for(this.generated_stylesheets.push(j),e.generated_stylesheets.push(j),h=b.cols;h>=0;h--)c+=b.namespace+' [data-col="'+(h+1)+'"] { left:'+(h*b.widget_base_dimensions[0]+h*b.widget_margins[0]+(h+1)*b.widget_margins[0])+"px; }\n";for(h=b.rows;h>=0;h--)c+=b.namespace+' [data-row="'+(h+1)+'"] { top:'+(h*b.widget_base_dimensions[1]+h*b.widget_margins[1]+(h+1)*b.widget_margins[1])+"px; }\n";for(var k=1;k<=b.rows;k++)c+=b.namespace+' [data-sizey="'+k+'"] { height:'+(k*b.widget_base_dimensions[1]+(k-1)*(2*b.widget_margins[1]))+"px; }\n";for(var l=1;l<=d;l++)c+=b.namespace+' [data-sizex="'+l+'"] { width:'+(l*b.widget_base_dimensions[0]+(l-1)*(2*b.widget_margins[0]))+"px; }\n";return this.remove_style_tags(),this.add_style_tag(c)},f.add_style_tag=function(a){var b=document,c=b.createElement("style");return b.getElementsByTagName("head")[0].appendChild(c),c.setAttribute("type","text/css"),c.styleSheet?c.styleSheet.cssText=a:c.appendChild(document.createTextNode(a)),this.$style_tags=this.$style_tags.add(c),this},f.remove_style_tags=function(){var b=e.generated_stylesheets,c=this.generated_stylesheets;this.$style_tags.remove(),e.generated_stylesheets=a.map(b,function(b){if(a.inArray(b,c)===-1)return b})},f.generate_faux_grid=function(a,b){this.faux_grid=[],this.gridmap=[];var c,d;for(c=b;c>0;c--)for(this.gridmap[c]=[],d=a;d>0;d--)this.add_faux_cell(d,c);return this},f.add_faux_cell=function(b,c){var d=a({left:this.baseX+(c-1)*this.min_widget_width,top:this.baseY+(b-1)*this.min_widget_height,width:this.min_widget_width,height:this.min_widget_height,col:c,row:b,original_col:c,original_row:b}).coords();return a.isArray(this.gridmap[c])||(this.gridmap[c]=[]),this.gridmap[c][b]=!1,this.faux_grid.push(d),this},f.add_faux_rows=function(a){for(var b=this.rows,c=b+(a||1),d=c;d>b;d--)for(var e=this.cols;e>=1;e--)this.add_faux_cell(d,e);return this.rows=c,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},f.add_faux_cols=function(a){var b=this.cols,c=b+(a||1);c=Math.min(c,this.options.max_cols);for(var d=b+1;d<=c;d++)for(var e=this.rows;e>=1;e--)this.add_faux_cell(e,d);return this.cols=c,this.options.autogenerate_stylesheet&&this.generate_stylesheet(),this},f.recalculate_faux_grid=function(){var b=this.$wrapper.width();return this.baseX=(a(window).width()-b)/2,this.baseY=this.$wrapper.offset().top,a.each(this.faux_grid,a.proxy(function(a,b){this.faux_grid[a]=b.update({left:this.baseX+(b.data.col-1)*this.min_widget_width,top:this.baseY+(b.data.row-1)*this.min_widget_height})},this)),this},f.get_widgets_from_DOM=function(){var b=this.$widgets.map(a.proxy(function(b,c){var d=a(c);return this.dom_to_coords(d)},this));b=e.sort_by_row_and_col_asc(b);var c=a(b).map(a.proxy(function(a,b){return this.register_widget(b)||null},this));return c.length&&this.$el.trigger("gridster:positionschanged"),this},f.generate_grid_and_stylesheet=function(){var b=this.$wrapper.width(),c=this.options.max_cols,d=Math.floor(b/this.min_widget_width)+this.options.extra_cols,e=this.$widgets.map(function(){return a(this).attr("data-col")}).get();e.length||(e=[0]);var f=Math.max.apply(Math,e);this.cols=Math.max(f,d,this.options.min_cols),c!==1/0&&c>=f&&c=0;b--)if(this.is_widget(a,b)!==!1)return!0;return!1},c.widgets_in_row=function(a){for(var b=this.gridmap.length;b>=1;b--)if(this.is_widget(b,a)!==!1)return!0;return!1},c.widgets_in_range=function(b,c,d,e){var i,j,k,l,h=a([]);for(i=d;i>=b;i--)for(j=e;j>=c;j--)k=this.is_widget(i,j),k!==!1&&(l=k.data("coords").grid,l.col>=b&&l.col<=d&&l.row>=c&&l.row<=e&&(h=h.add(k)));return h},c.get_bottom_most_occupied_cell=function(){var a=0,b=0;return this.for_each_cell(function(c,d,e){c&&e>a&&(a=e,b=d)}),{col:b,row:a}},c.get_right_most_occupied_cell=function(){var a=0,b=0;return this.for_each_cell(function(c,d,e){if(c)return a=e,b=d,!1}),{col:b,row:a}},c.for_each_cell=function(a,b){b||(b=this.gridmap);var c=b.length,d=b[1].length;a:for(var e=c-1;e>=1;e--)for(var f=d-1;f>=1;f--){var g=b[e]&&b[e][f];if(a){if(a.call(this,g,e,f)===!1)break a}else;}},c.next_position_in_range=function(a,c,d){a||(a=1),c||(c=1);for(var h,e=this.gridmap,f=e.length,g=[],i=1;i=1&&b.sort_by_col_asc(g)[0]},c.closest_to_right=function(a,b){if(!this.gridmap[a])return!1;for(var c=this.gridmap.length-1,d=a;d<=c;d++)if(this.gridmap[d][b])return{col:d,row:b};return!1},c.closest_to_left=function(a,b){this.gridmap.length-1;if(!this.gridmap[a])return!1;for(var d=a;d>=1;d--)if(this.gridmap[d][b])return{col:d,row:b};return!1},b}); \ No newline at end of file diff --git a/manager/media/script/jquery.quicksearch.js b/manager/media/script/jquery.quicksearch.js new file mode 100644 index 0000000000..543d828fc6 --- /dev/null +++ b/manager/media/script/jquery.quicksearch.js @@ -0,0 +1,181 @@ +(function($, window, document, undefined) { + $.fn.quicksearch = function (target, opt) { + + var timeout, cache, rowcache, jq_results, val = '', e = this, options = $.extend({ + delay: 100, + selector: null, + stripeRows: null, + loader: null, + noResults: '', + matchedResultsCount: 0, + bind: 'keyup', + onBefore: function () { + return; + }, + onAfter: function () { + return; + }, + show: function () { + this.style.display = ""; + }, + hide: function () { + this.style.display = "none"; + }, + prepareQuery: function (val) { + return val.toLowerCase().split(' '); + }, + testQuery: function (query, txt, _row) { + for (var i = 0; i < query.length; i += 1) { + if (txt.indexOf(query[i]) === -1) { + return false; + } + } + return true; + } + }, opt); + + this.go = function () { + + var i = 0, + numMatchedRows = 0, + noresults = true, + query = options.prepareQuery(val), + val_empty = (val.replace(' ', '').length === 0); + + for (var i = 0, len = rowcache.length; i < len; i++) { + if (val_empty || options.testQuery(query, cache[i], rowcache[i])) { + options.show.apply(rowcache[i]); + noresults = false; + numMatchedRows++; + } else { + options.hide.apply(rowcache[i]); + } + } + + if (noresults) { + this.results(false); + } else { + this.results(true); + this.stripe(); + } + + this.matchedResultsCount = numMatchedRows; + this.loader(false); + options.onAfter(); + + return this; + }; + + /* + * External API so that users can perform search programatically. + * */ + this.search = function (submittedVal) { + val = submittedVal; + e.trigger(); + }; + + /* + * External API to get the number of matched results as seen in + * https://github.com/ruiz107/quicksearch/commit/f78dc440b42d95ce9caed1d087174dd4359982d6 + * */ + this.currentMatchedResults = function() { + return this.matchedResultsCount; + }; + + this.stripe = function () { + + if (typeof options.stripeRows === "object" && options.stripeRows !== null) + { + var joined = options.stripeRows.join(' '); + var stripeRows_length = options.stripeRows.length; + + jq_results.not(':hidden').each(function (i) { + $(this).removeClass(joined).addClass(options.stripeRows[i % stripeRows_length]); + }); + } + + return this; + }; + + this.strip_html = function (input) { + var output = input.replace(new RegExp('<[^<]+\>', 'g'), ""); + output = $.trim(output.toLowerCase()); + return output; + }; + + this.results = function (bool) { + if (typeof options.noResults === "string" && options.noResults !== "") { + if (bool) { + $(options.noResults).hide(); + } else { + $(options.noResults).show(); + } + } + return this; + }; + + this.loader = function (bool) { + if (typeof options.loader === "string" && options.loader !== "") { + (bool) ? $(options.loader).show() : $(options.loader).hide(); + } + return this; + }; + + this.cache = function () { + + jq_results = $(target); + + if (typeof options.noResults === "string" && options.noResults !== "") { + jq_results = jq_results.not(options.noResults); + } + + var t = (typeof options.selector === "string") ? jq_results.find(options.selector) : $(target).not(options.noResults); + cache = t.map(function () { + return e.strip_html(this.innerHTML); + }); + + rowcache = jq_results.map(function () { + return this; + }); + + /* + * Modified fix for sync-ing "val". + * Original fix https://github.com/michaellwest/quicksearch/commit/4ace4008d079298a01f97f885ba8fa956a9703d1 + * */ + val = val || this.val() || ""; + + return this.go(); + }; + + this.trigger = function () { + this.loader(true); + options.onBefore(); + + window.clearTimeout(timeout); + timeout = window.setTimeout(function () { + e.go(); + }, options.delay); + + return this; + }; + + this.cache(); + this.results(true); + this.stripe(); + this.loader(false); + + return this.each(function () { + + /* + * Changed from .bind to .on. + * */ + $(this).on(options.bind, function () { + + val = $(this).val(); + e.trigger(); + }); + }); + + }; + +}(jQuery, this, document)); diff --git a/manager/media/script/jquery/jquery.min.js b/manager/media/script/jquery/jquery.min.js new file mode 100644 index 0000000000..f6a6a99e60 --- /dev/null +++ b/manager/media/script/jquery/jquery.min.js @@ -0,0 +1,4 @@ +/*! jQuery v3.1.0 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){"use strict";var c=[],d=a.document,e=Object.getPrototypeOf,f=c.slice,g=c.concat,h=c.push,i=c.indexOf,j={},k=j.toString,l=j.hasOwnProperty,m=l.toString,n=m.call(Object),o={};function p(a,b){b=b||d;var c=b.createElement("script");c.text=a,b.head.appendChild(c).parentNode.removeChild(c)}var q="3.1.0",r=function(a,b){return new r.fn.init(a,b)},s=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,t=/^-ms-/,u=/-([a-z])/g,v=function(a,b){return b.toUpperCase()};r.fn=r.prototype={jquery:q,constructor:r,length:0,toArray:function(){return f.call(this)},get:function(a){return null!=a?a<0?this[a+this.length]:this[a]:f.call(this)},pushStack:function(a){var b=r.merge(this.constructor(),a);return b.prevObject=this,b},each:function(a){return r.each(this,a)},map:function(a){return this.pushStack(r.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(f.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(a<0?b:0);return this.pushStack(c>=0&&c0&&b-1 in a)}var x=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C={}.hasOwnProperty,D=[],E=D.pop,F=D.push,G=D.push,H=D.slice,I=function(a,b){for(var c=0,d=a.length;c+~]|"+K+")"+K+"*"),S=new RegExp("="+K+"*([^\\]'\"]*?)"+K+"*\\]","g"),T=new RegExp(N),U=new RegExp("^"+L+"$"),V={ID:new RegExp("^#("+L+")"),CLASS:new RegExp("^\\.("+L+")"),TAG:new RegExp("^("+L+"|[*])"),ATTR:new RegExp("^"+M),PSEUDO:new RegExp("^"+N),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+K+"*(even|odd|(([+-]|)(\\d*)n|)"+K+"*(?:([+-]|)"+K+"*(\\d+)|))"+K+"*\\)|)","i"),bool:new RegExp("^(?:"+J+")$","i"),needsContext:new RegExp("^"+K+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+K+"*((?:-\\d)?\\d*)"+K+"*\\)|)(?=[^-]|$)","i")},W=/^(?:input|select|textarea|button)$/i,X=/^h\d$/i,Y=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,$=/[+~]/,_=new RegExp("\\\\([\\da-f]{1,6}"+K+"?|("+K+")|.)","ig"),aa=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:d<0?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ba=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,ca=function(a,b){return b?"\0"===a?"\ufffd":a.slice(0,-1)+"\\"+a.charCodeAt(a.length-1).toString(16)+" ":"\\"+a},da=function(){m()},ea=ta(function(a){return a.disabled===!0},{dir:"parentNode",next:"legend"});try{G.apply(D=H.call(v.childNodes),v.childNodes),D[v.childNodes.length].nodeType}catch(fa){G={apply:D.length?function(a,b){F.apply(a,H.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s=b&&b.ownerDocument,w=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==w&&9!==w&&11!==w)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==w&&(l=Z.exec(a)))if(f=l[1]){if(9===w){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(s&&(j=s.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(l[2])return G.apply(d,b.getElementsByTagName(a)),d;if((f=l[3])&&c.getElementsByClassName&&b.getElementsByClassName)return G.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==w)s=b,r=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(ba,ca):b.setAttribute("id",k=u),o=g(a),h=o.length;while(h--)o[h]="#"+k+" "+sa(o[h]);r=o.join(","),s=$.test(a)&&qa(b.parentNode)||b}if(r)try{return G.apply(d,s.querySelectorAll(r)),d}catch(x){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(P,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("fieldset");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&a.sourceIndex-b.sourceIndex;if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return function(b){return"label"in b&&b.disabled===a||"form"in b&&b.disabled===a||"form"in b&&b.disabled===!1&&(b.isDisabled===a||b.isDisabled!==!a&&("label"in b||!ea(b))!==a)}}function pa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function qa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return!!b&&"HTML"!==b.nodeName},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),v!==n&&(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Y.test(n.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(_,aa);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){if("undefined"!=typeof b.getElementsByClassName&&p)return b.getElementsByClassName(a)},r=[],q=[],(c.qsa=Y.test(n.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+K+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+K+"*(?:value|"+J+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){a.innerHTML="";var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+K+"*[*^$|!~]?="),2!==a.querySelectorAll(":enabled").length&&q.push(":enabled",":disabled"),o.appendChild(a).disabled=!0,2!==a.querySelectorAll(":disabled").length&&q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Y.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"*"),s.call(a,"[s!='']:x"),r.push("!=",N)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Y.test(o.compareDocumentPosition),t=b||Y.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?I(k,a)-I(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?I(k,a)-I(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?la(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(S,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&C.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.escape=function(a){return(a+"").replace(ba,ca)},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(_,aa),a[3]=(a[3]||a[4]||a[5]||"").replace(_,aa),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return V.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&T.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(_,aa).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+K+")"+a+"("+K+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:!b||(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(O," ")+" ").indexOf(c)>-1:"|="===b&&(e===c||e.slice(0,c.length+1)===c+"-"))}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=I(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(P,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(_,aa),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return U.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(_,aa).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:oa(!1),disabled:oa(!0),checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return X.test(a.nodeName)},input:function(a){return W.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:pa(function(){return[0]}),last:pa(function(a,b){return[b-1]}),eq:pa(function(a,b,c){return[c<0?c+b:c]}),even:pa(function(a,b){for(var c=0;c=0;)a.push(d);return a}),gt:pa(function(a,b,c){for(var d=c<0?c+b:c;++d1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function va(a,b,c){for(var d=0,e=b.length;d-1&&(f[j]=!(g[j]=l))}}else r=wa(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):G.apply(g,r)})}function ya(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ta(function(a){return a===b},h,!0),l=ta(function(a){return I(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];i1&&ua(m),i>1&&sa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(P,"$1"),c,i0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=E.call(i));u=wa(u)}G.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&ga.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=ya(b[c]),f[u]?d.push(f):e.push(f);f=A(a,za(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(_,aa),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=V.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(_,aa),$.test(j[0].type)&&qa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&sa(j),!a)return G.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||$.test(a)&&qa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("fieldset"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){if(!c)return a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){if(!c&&"input"===a.nodeName.toLowerCase())return a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(J,function(a,b,c){var d;if(!c)return a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);r.find=x,r.expr=x.selectors,r.expr[":"]=r.expr.pseudos,r.uniqueSort=r.unique=x.uniqueSort,r.text=x.getText,r.isXMLDoc=x.isXML,r.contains=x.contains,r.escapeSelector=x.escape;var y=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&r(a).is(c))break;d.push(a)}return d},z=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},A=r.expr.match.needsContext,B=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i,C=/^.[^:#\[\.,]*$/;function D(a,b,c){if(r.isFunction(b))return r.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return r.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(C.test(b))return r.filter(b,a,c);b=r.filter(b,a)}return r.grep(a,function(a){return i.call(b,a)>-1!==c&&1===a.nodeType})}r.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?r.find.matchesSelector(d,a)?[d]:[]:r.find.matches(a,r.grep(b,function(a){return 1===a.nodeType}))},r.fn.extend({find:function(a){var b,c,d=this.length,e=this;if("string"!=typeof a)return this.pushStack(r(a).filter(function(){for(b=0;b1?r.uniqueSort(c):c},filter:function(a){return this.pushStack(D(this,a||[],!1))},not:function(a){return this.pushStack(D(this,a||[],!0))},is:function(a){return!!D(this,"string"==typeof a&&A.test(a)?r(a):a||[],!1).length}});var E,F=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,G=r.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||E,"string"==typeof a){if(e="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:F.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof r?b[0]:b,r.merge(this,r.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),B.test(e[1])&&r.isPlainObject(b))for(e in b)r.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}return f=d.getElementById(e[2]),f&&(this[0]=f,this.length=1),this}return a.nodeType?(this[0]=a,this.length=1,this):r.isFunction(a)?void 0!==c.ready?c.ready(a):a(r):r.makeArray(a,this)};G.prototype=r.fn,E=r(d);var H=/^(?:parents|prev(?:Until|All))/,I={children:!0,contents:!0,next:!0,prev:!0};r.fn.extend({has:function(a){var b=r(a,this),c=b.length;return this.filter(function(){for(var a=0;a-1:1===c.nodeType&&r.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?r.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?i.call(r(a),this[0]):i.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(r.uniqueSort(r.merge(this.get(),r(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function J(a,b){while((a=a[b])&&1!==a.nodeType);return a}r.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return y(a,"parentNode")},parentsUntil:function(a,b,c){return y(a,"parentNode",c)},next:function(a){return J(a,"nextSibling")},prev:function(a){return J(a,"previousSibling")},nextAll:function(a){return y(a,"nextSibling")},prevAll:function(a){return y(a,"previousSibling")},nextUntil:function(a,b,c){return y(a,"nextSibling",c)},prevUntil:function(a,b,c){return y(a,"previousSibling",c)},siblings:function(a){return z((a.parentNode||{}).firstChild,a)},children:function(a){return z(a.firstChild)},contents:function(a){return a.contentDocument||r.merge([],a.childNodes)}},function(a,b){r.fn[a]=function(c,d){var e=r.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=r.filter(d,e)),this.length>1&&(I[a]||r.uniqueSort(e),H.test(a)&&e.reverse()),this.pushStack(e)}});var K=/\S+/g;function L(a){var b={};return r.each(a.match(K)||[],function(a,c){b[c]=!0}),b}r.Callbacks=function(a){a="string"==typeof a?L(a):r.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h-1)f.splice(c,1),c<=h&&h--}),this},has:function(a){return a?r.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=g=[],c||b||(f=c=""),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j};function M(a){return a}function N(a){throw a}function O(a,b,c){var d;try{a&&r.isFunction(d=a.promise)?d.call(a).done(b).fail(c):a&&r.isFunction(d=a.then)?d.call(a,b,c):b.call(void 0,a)}catch(a){c.call(void 0,a)}}r.extend({Deferred:function(b){var c=[["notify","progress",r.Callbacks("memory"),r.Callbacks("memory"),2],["resolve","done",r.Callbacks("once memory"),r.Callbacks("once memory"),0,"resolved"],["reject","fail",r.Callbacks("once memory"),r.Callbacks("once memory"),1,"rejected"]],d="pending",e={state:function(){return d},always:function(){return f.done(arguments).fail(arguments),this},"catch":function(a){return e.then(null,a)},pipe:function(){var a=arguments;return r.Deferred(function(b){r.each(c,function(c,d){var e=r.isFunction(a[d[4]])&&a[d[4]];f[d[1]](function(){var a=e&&e.apply(this,arguments);a&&r.isFunction(a.promise)?a.promise().progress(b.notify).done(b.resolve).fail(b.reject):b[d[0]+"With"](this,e?[a]:arguments)})}),a=null}).promise()},then:function(b,d,e){var f=0;function g(b,c,d,e){return function(){var h=this,i=arguments,j=function(){var a,j;if(!(b=f&&(d!==N&&(h=void 0,i=[a]),c.rejectWith(h,i))}};b?k():(r.Deferred.getStackHook&&(k.stackTrace=r.Deferred.getStackHook()),a.setTimeout(k))}}return r.Deferred(function(a){c[0][3].add(g(0,a,r.isFunction(e)?e:M,a.notifyWith)),c[1][3].add(g(0,a,r.isFunction(b)?b:M)),c[2][3].add(g(0,a,r.isFunction(d)?d:N))}).promise()},promise:function(a){return null!=a?r.extend(a,e):e}},f={};return r.each(c,function(a,b){var g=b[2],h=b[5];e[b[1]]=g.add,h&&g.add(function(){d=h},c[3-a][2].disable,c[0][2].lock),g.add(b[3].fire),f[b[0]]=function(){return f[b[0]+"With"](this===f?void 0:this,arguments),this},f[b[0]+"With"]=g.fireWith}),e.promise(f),b&&b.call(f,f),f},when:function(a){var b=arguments.length,c=b,d=Array(c),e=f.call(arguments),g=r.Deferred(),h=function(a){return function(c){d[a]=this,e[a]=arguments.length>1?f.call(arguments):c,--b||g.resolveWith(d,e)}};if(b<=1&&(O(a,g.done(h(c)).resolve,g.reject),"pending"===g.state()||r.isFunction(e[c]&&e[c].then)))return g.then();while(c--)O(e[c],h(c),g.reject);return g.promise()}});var P=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;r.Deferred.exceptionHook=function(b,c){a.console&&a.console.warn&&b&&P.test(b.name)&&a.console.warn("jQuery.Deferred exception: "+b.message,b.stack,c)},r.readyException=function(b){a.setTimeout(function(){throw b})};var Q=r.Deferred();r.fn.ready=function(a){return Q.then(a)["catch"](function(a){r.readyException(a)}),this},r.extend({isReady:!1,readyWait:1,holdReady:function(a){a?r.readyWait++:r.ready(!0)},ready:function(a){(a===!0?--r.readyWait:r.isReady)||(r.isReady=!0,a!==!0&&--r.readyWait>0||Q.resolveWith(d,[r]))}}),r.ready.then=Q.then;function R(){d.removeEventListener("DOMContentLoaded",R),a.removeEventListener("load",R),r.ready()}"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll?a.setTimeout(r.ready):(d.addEventListener("DOMContentLoaded",R),a.addEventListener("load",R));var S=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===r.type(c)){e=!0;for(h in c)S(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0, +r.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(r(a),c)})),b))for(;h1,null,!0)},removeData:function(a){return this.each(function(){W.remove(this,a)})}}),r.extend({queue:function(a,b,c){var d;if(a)return b=(b||"fx")+"queue",d=V.get(a,b),c&&(!d||r.isArray(c)?d=V.access(a,b,r.makeArray(c)):d.push(c)),d||[]},dequeue:function(a,b){b=b||"fx";var c=r.queue(a,b),d=c.length,e=c.shift(),f=r._queueHooks(a,b),g=function(){r.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return V.get(a,c)||V.access(a,c,{empty:r.Callbacks("once memory").add(function(){V.remove(a,[b+"queue",c])})})}}),r.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length\x20\t\r\n\f]+)/i,ja=/^$|\/(?:java|ecma)script/i,ka={option:[1,""],thead:[1,"","
                      "],col:[2,"","
                      "],tr:[2,"","
                      "],td:[3,"","
                      "],_default:[0,"",""]};ka.optgroup=ka.option,ka.tbody=ka.tfoot=ka.colgroup=ka.caption=ka.thead,ka.th=ka.td;function la(a,b){var c="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&r.nodeName(a,b)?r.merge([a],c):c}function ma(a,b){for(var c=0,d=a.length;c-1)e&&e.push(f);else if(j=r.contains(f.ownerDocument,f),g=la(l.appendChild(f),"script"),j&&ma(g),c){k=0;while(f=g[k++])ja.test(f.type||"")&&c.push(f)}return l}!function(){var a=d.createDocumentFragment(),b=a.appendChild(d.createElement("div")),c=d.createElement("input");c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),b.appendChild(c),o.checkClone=b.cloneNode(!0).cloneNode(!0).lastChild.checked,b.innerHTML="",o.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var pa=d.documentElement,qa=/^key/,ra=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,sa=/^([^.]*)(?:\.(.+)|)/;function ta(){return!0}function ua(){return!1}function va(){try{return d.activeElement}catch(a){}}function wa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)wa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=ua;else if(!e)return a;return 1===f&&(g=e,e=function(a){return r().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=r.guid++)),a.each(function(){r.event.add(this,b,e,d,c)})}r.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.get(a);if(q){c.handler&&(f=c,c=f.handler,e=f.selector),e&&r.find.matchesSelector(pa,e),c.guid||(c.guid=r.guid++),(i=q.events)||(i=q.events={}),(g=q.handle)||(g=q.handle=function(b){return"undefined"!=typeof r&&r.event.triggered!==b.type?r.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(K)||[""],j=b.length;while(j--)h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n&&(l=r.event.special[n]||{},n=(e?l.delegateType:l.bindType)||n,l=r.event.special[n]||{},k=r.extend({type:n,origType:p,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&r.expr.match.needsContext.test(e),namespace:o.join(".")},f),(m=i[n])||(m=i[n]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,o,g)!==!1||a.addEventListener&&a.addEventListener(n,g)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),r.event.global[n]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,n,o,p,q=V.hasData(a)&&V.get(a);if(q&&(i=q.events)){b=(b||"").match(K)||[""],j=b.length;while(j--)if(h=sa.exec(b[j])||[],n=p=h[1],o=(h[2]||"").split(".").sort(),n){l=r.event.special[n]||{},n=(d?l.delegateType:l.bindType)||n,m=i[n]||[],h=h[2]&&new RegExp("(^|\\.)"+o.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&p!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,o,q.handle)!==!1||r.removeEvent(a,n,q.handle),delete i[n])}else for(n in i)r.event.remove(a,n+b[j],c,d,!0);r.isEmptyObject(i)&&V.remove(a,"handle events")}},dispatch:function(a){var b=r.event.fix(a),c,d,e,f,g,h,i=new Array(arguments.length),j=(V.get(this,"events")||{})[b.type]||[],k=r.event.special[b.type]||{};for(i[0]=b,c=1;c-1:r.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h\x20\t\r\n\f]*)[^>]*)\/>/gi,ya=/\s*$/g;function Ca(a,b){return r.nodeName(a,"table")&&r.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a:a}function Da(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function Ea(a){var b=Aa.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(V.hasData(a)&&(f=V.access(a),g=V.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;c1&&"string"==typeof q&&!o.checkClone&&za.test(q))return a.each(function(e){var f=a.eq(e);s&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(m&&(e=oa(b,a[0].ownerDocument,!1,a,d),f=e.firstChild,1===e.childNodes.length&&(e=f),f||d)){for(h=r.map(la(e,"script"),Da),i=h.length;l")},clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=r.contains(a.ownerDocument,a);if(!(o.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||r.isXMLDoc(a)))for(g=la(h),f=la(a),d=0,e=f.length;d0&&ma(g,!i&&la(a,"script")),h},cleanData:function(a){for(var b,c,d,e=r.event.special,f=0;void 0!==(c=a[f]);f++)if(T(c)){if(b=c[V.expando]){if(b.events)for(d in b.events)e[d]?r.event.remove(c,d):r.removeEvent(c,d,b.handle);c[V.expando]=void 0}c[W.expando]&&(c[W.expando]=void 0)}}}),r.fn.extend({detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return S(this,function(a){return void 0===a?r.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=a)})},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(r.cleanData(la(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null!=a&&a,b=null==b?a:b,this.map(function(){return r.clone(this,a,b)})},html:function(a){return S(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!ya.test(a)&&!ka[(ia.exec(a)||["",""])[1].toLowerCase()]){a=r.htmlPrefilter(a);try{for(;c1)}});function Xa(a,b,c,d,e){return new Xa.prototype.init(a,b,c,d,e)}r.Tween=Xa,Xa.prototype={constructor:Xa,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||r.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(r.cssNumber[c]?"":"px")},cur:function(){var a=Xa.propHooks[this.prop];return a&&a.get?a.get(this):Xa.propHooks._default.get(this)},run:function(a){var b,c=Xa.propHooks[this.prop];return this.options.duration?this.pos=b=r.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Xa.propHooks._default.set(this),this}},Xa.prototype.init.prototype=Xa.prototype,Xa.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=r.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){r.fx.step[a.prop]?r.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[r.cssProps[a.prop]]&&!r.cssHooks[a.prop]?a.elem[a.prop]=a.now:r.style(a.elem,a.prop,a.now+a.unit)}}},Xa.propHooks.scrollTop=Xa.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},r.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},r.fx=Xa.prototype.init,r.fx.step={};var Ya,Za,$a=/^(?:toggle|show|hide)$/,_a=/queueHooks$/;function ab(){Za&&(a.requestAnimationFrame(ab),r.fx.tick())}function bb(){return a.setTimeout(function(){Ya=void 0}),Ya=r.now()}function cb(a,b){var c,d=0,e={height:a};for(b=b?1:0;d<4;d+=2-b)c=aa[d],e["margin"+c]=e["padding"+c]=a;return b&&(e.opacity=e.width=a),e}function db(a,b,c){for(var d,e=(gb.tweeners[b]||[]).concat(gb.tweeners["*"]),f=0,g=e.length;f1)},removeAttr:function(a){return this.each(function(){r.removeAttr(this,a)})}}),r.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?r.prop(a,b,c):(1===f&&r.isXMLDoc(a)||(e=r.attrHooks[b.toLowerCase()]||(r.expr.match.bool.test(b)?hb:void 0)),void 0!==c?null===c?void r.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=r.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!o.radioValue&&"radio"===b&&r.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d=0,e=b&&b.match(K); +if(e&&1===a.nodeType)while(c=e[d++])a.removeAttribute(c)}}),hb={set:function(a,b,c){return b===!1?r.removeAttr(a,c):a.setAttribute(c,c),c}},r.each(r.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ib[b]||r.find.attr;ib[b]=function(a,b,d){var e,f,g=b.toLowerCase();return d||(f=ib[g],ib[g]=e,e=null!=c(a,b,d)?g:null,ib[g]=f),e}});var jb=/^(?:input|select|textarea|button)$/i,kb=/^(?:a|area)$/i;r.fn.extend({prop:function(a,b){return S(this,r.prop,a,b,arguments.length>1)},removeProp:function(a){return this.each(function(){delete this[r.propFix[a]||a]})}}),r.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&r.isXMLDoc(a)||(b=r.propFix[b]||b,e=r.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=r.find.attr(a,"tabindex");return b?parseInt(b,10):jb.test(a.nodeName)||kb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),o.optSelected||(r.propHooks.selected={get:function(a){var b=a.parentNode;return b&&b.parentNode&&b.parentNode.selectedIndex,null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),r.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){r.propFix[this.toLowerCase()]=this});var lb=/[\t\r\n\f]/g;function mb(a){return a.getAttribute&&a.getAttribute("class")||""}r.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).addClass(a.call(this,b,mb(this)))});if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(r.isFunction(a))return this.each(function(b){r(this).removeClass(a.call(this,b,mb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(K)||[];while(c=this[i++])if(e=mb(c),d=1===c.nodeType&&(" "+e+" ").replace(lb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=r.trim(d),e!==h&&c.setAttribute("class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):r.isFunction(a)?this.each(function(c){r(this).toggleClass(a.call(this,c,mb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=r(this),f=a.match(K)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=mb(this),b&&V.set(this,"__className__",b),this.setAttribute&&this.setAttribute("class",b||a===!1?"":V.get(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+mb(c)+" ").replace(lb," ").indexOf(b)>-1)return!0;return!1}});var nb=/\r/g,ob=/[\x20\t\r\n\f]+/g;r.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=r.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,r(this).val()):a,null==e?e="":"number"==typeof e?e+="":r.isArray(e)&&(e=r.map(e,function(a){return null==a?"":a+""})),b=r.valHooks[this.type]||r.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=r.valHooks[e.type]||r.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(nb,""):null==c?"":c)}}}),r.extend({valHooks:{option:{get:function(a){var b=r.find.attr(a,"value");return null!=b?b:r.trim(r.text(a)).replace(ob," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type,g=f?null:[],h=f?e+1:d.length,i=e<0?h:f?e:0;i-1)&&(c=!0);return c||(a.selectedIndex=-1),f}}}}),r.each(["radio","checkbox"],function(){r.valHooks[this]={set:function(a,b){if(r.isArray(b))return a.checked=r.inArray(r(a).val(),b)>-1}},o.checkOn||(r.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var pb=/^(?:focusinfocus|focusoutblur)$/;r.extend(r.event,{trigger:function(b,c,e,f){var g,h,i,j,k,m,n,o=[e||d],p=l.call(b,"type")?b.type:b,q=l.call(b,"namespace")?b.namespace.split("."):[];if(h=i=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!pb.test(p+r.event.triggered)&&(p.indexOf(".")>-1&&(q=p.split("."),p=q.shift(),q.sort()),k=p.indexOf(":")<0&&"on"+p,b=b[r.expando]?b:new r.Event(p,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=q.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+q.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:r.makeArray(c,[b]),n=r.event.special[p]||{},f||!n.trigger||n.trigger.apply(e,c)!==!1)){if(!f&&!n.noBubble&&!r.isWindow(e)){for(j=n.delegateType||p,pb.test(j+p)||(h=h.parentNode);h;h=h.parentNode)o.push(h),i=h;i===(e.ownerDocument||d)&&o.push(i.defaultView||i.parentWindow||a)}g=0;while((h=o[g++])&&!b.isPropagationStopped())b.type=g>1?j:n.bindType||p,m=(V.get(h,"events")||{})[b.type]&&V.get(h,"handle"),m&&m.apply(h,c),m=k&&h[k],m&&m.apply&&T(h)&&(b.result=m.apply(h,c),b.result===!1&&b.preventDefault());return b.type=p,f||b.isDefaultPrevented()||n._default&&n._default.apply(o.pop(),c)!==!1||!T(e)||k&&r.isFunction(e[p])&&!r.isWindow(e)&&(i=e[k],i&&(e[k]=null),r.event.triggered=p,e[p](),r.event.triggered=void 0,i&&(e[k]=i)),b.result}},simulate:function(a,b,c){var d=r.extend(new r.Event,c,{type:a,isSimulated:!0});r.event.trigger(d,null,b)}}),r.fn.extend({trigger:function(a,b){return this.each(function(){r.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];if(c)return r.event.trigger(a,b,c,!0)}}),r.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(a,b){r.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),r.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),o.focusin="onfocusin"in a,o.focusin||r.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){r.event.simulate(b,a.target,r.event.fix(a))};r.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=V.access(d,b);e||d.addEventListener(a,c,!0),V.access(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=V.access(d,b)-1;e?V.access(d,b,e):(d.removeEventListener(a,c,!0),V.remove(d,b))}}});var qb=a.location,rb=r.now(),sb=/\?/;r.parseXML=function(b){var c;if(!b||"string"!=typeof b)return null;try{c=(new a.DOMParser).parseFromString(b,"text/xml")}catch(d){c=void 0}return c&&!c.getElementsByTagName("parsererror").length||r.error("Invalid XML: "+b),c};var tb=/\[\]$/,ub=/\r?\n/g,vb=/^(?:submit|button|image|reset|file)$/i,wb=/^(?:input|select|textarea|keygen)/i;function xb(a,b,c,d){var e;if(r.isArray(b))r.each(b,function(b,e){c||tb.test(a)?d(a,e):xb(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==r.type(b))d(a,b);else for(e in b)xb(a+"["+e+"]",b[e],c,d)}r.param=function(a,b){var c,d=[],e=function(a,b){var c=r.isFunction(b)?b():b;d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(null==c?"":c)};if(r.isArray(a)||a.jquery&&!r.isPlainObject(a))r.each(a,function(){e(this.name,this.value)});else for(c in a)xb(c,a[c],b,e);return d.join("&")},r.fn.extend({serialize:function(){return r.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=r.prop(this,"elements");return a?r.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!r(this).is(":disabled")&&wb.test(this.nodeName)&&!vb.test(a)&&(this.checked||!ha.test(a))}).map(function(a,b){var c=r(this).val();return null==c?null:r.isArray(c)?r.map(c,function(a){return{name:b.name,value:a.replace(ub,"\r\n")}}):{name:b.name,value:c.replace(ub,"\r\n")}}).get()}});var yb=/%20/g,zb=/#.*$/,Ab=/([?&])_=[^&]*/,Bb=/^(.*?):[ \t]*([^\r\n]*)$/gm,Cb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Db=/^(?:GET|HEAD)$/,Eb=/^\/\//,Fb={},Gb={},Hb="*/".concat("*"),Ib=d.createElement("a");Ib.href=qb.href;function Jb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(K)||[];if(r.isFunction(c))while(d=f[e++])"+"===d[0]?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Kb(a,b,c,d){var e={},f=a===Gb;function g(h){var i;return e[h]=!0,r.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Lb(a,b){var c,d,e=r.ajaxSettings.flatOptions||{};for(c in b)void 0!==b[c]&&((e[c]?a:d||(d={}))[c]=b[c]);return d&&r.extend(!0,a,d),a}function Mb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===d&&(d=a.mimeType||b.getResponseHeader("Content-Type"));if(d)for(e in h)if(h[e]&&h[e].test(d)){i.unshift(e);break}if(i[0]in c)f=i[0];else{for(e in c){if(!i[0]||a.converters[e+" "+i[0]]){f=e;break}g||(g=e)}f=f||g}if(f)return f!==i[0]&&i.unshift(f),c[f]}function Nb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}r.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:qb.href,type:"GET",isLocal:Cb.test(qb.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Hb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":r.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Lb(Lb(a,r.ajaxSettings),b):Lb(r.ajaxSettings,a)},ajaxPrefilter:Jb(Fb),ajaxTransport:Jb(Gb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var e,f,g,h,i,j,k,l,m,n,o=r.ajaxSetup({},c),p=o.context||o,q=o.context&&(p.nodeType||p.jquery)?r(p):r.event,s=r.Deferred(),t=r.Callbacks("once memory"),u=o.statusCode||{},v={},w={},x="canceled",y={readyState:0,getResponseHeader:function(a){var b;if(k){if(!h){h={};while(b=Bb.exec(g))h[b[1].toLowerCase()]=b[2]}b=h[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return k?g:null},setRequestHeader:function(a,b){return null==k&&(a=w[a.toLowerCase()]=w[a.toLowerCase()]||a,v[a]=b),this},overrideMimeType:function(a){return null==k&&(o.mimeType=a),this},statusCode:function(a){var b;if(a)if(k)y.always(a[y.status]);else for(b in a)u[b]=[u[b],a[b]];return this},abort:function(a){var b=a||x;return e&&e.abort(b),A(0,b),this}};if(s.promise(y),o.url=((b||o.url||qb.href)+"").replace(Eb,qb.protocol+"//"),o.type=c.method||c.type||o.method||o.type,o.dataTypes=(o.dataType||"*").toLowerCase().match(K)||[""],null==o.crossDomain){j=d.createElement("a");try{j.href=o.url,j.href=j.href,o.crossDomain=Ib.protocol+"//"+Ib.host!=j.protocol+"//"+j.host}catch(z){o.crossDomain=!0}}if(o.data&&o.processData&&"string"!=typeof o.data&&(o.data=r.param(o.data,o.traditional)),Kb(Fb,o,c,y),k)return y;l=r.event&&o.global,l&&0===r.active++&&r.event.trigger("ajaxStart"),o.type=o.type.toUpperCase(),o.hasContent=!Db.test(o.type),f=o.url.replace(zb,""),o.hasContent?o.data&&o.processData&&0===(o.contentType||"").indexOf("application/x-www-form-urlencoded")&&(o.data=o.data.replace(yb,"+")):(n=o.url.slice(f.length),o.data&&(f+=(sb.test(f)?"&":"?")+o.data,delete o.data),o.cache===!1&&(f=f.replace(Ab,""),n=(sb.test(f)?"&":"?")+"_="+rb++ +n),o.url=f+n),o.ifModified&&(r.lastModified[f]&&y.setRequestHeader("If-Modified-Since",r.lastModified[f]),r.etag[f]&&y.setRequestHeader("If-None-Match",r.etag[f])),(o.data&&o.hasContent&&o.contentType!==!1||c.contentType)&&y.setRequestHeader("Content-Type",o.contentType),y.setRequestHeader("Accept",o.dataTypes[0]&&o.accepts[o.dataTypes[0]]?o.accepts[o.dataTypes[0]]+("*"!==o.dataTypes[0]?", "+Hb+"; q=0.01":""):o.accepts["*"]);for(m in o.headers)y.setRequestHeader(m,o.headers[m]);if(o.beforeSend&&(o.beforeSend.call(p,y,o)===!1||k))return y.abort();if(x="abort",t.add(o.complete),y.done(o.success),y.fail(o.error),e=Kb(Gb,o,c,y)){if(y.readyState=1,l&&q.trigger("ajaxSend",[y,o]),k)return y;o.async&&o.timeout>0&&(i=a.setTimeout(function(){y.abort("timeout")},o.timeout));try{k=!1,e.send(v,A)}catch(z){if(k)throw z;A(-1,z)}}else A(-1,"No Transport");function A(b,c,d,h){var j,m,n,v,w,x=c;k||(k=!0,i&&a.clearTimeout(i),e=void 0,g=h||"",y.readyState=b>0?4:0,j=b>=200&&b<300||304===b,d&&(v=Mb(o,y,d)),v=Nb(o,v,y,j),j?(o.ifModified&&(w=y.getResponseHeader("Last-Modified"),w&&(r.lastModified[f]=w),w=y.getResponseHeader("etag"),w&&(r.etag[f]=w)),204===b||"HEAD"===o.type?x="nocontent":304===b?x="notmodified":(x=v.state,m=v.data,n=v.error,j=!n)):(n=x,!b&&x||(x="error",b<0&&(b=0))),y.status=b,y.statusText=(c||x)+"",j?s.resolveWith(p,[m,x,y]):s.rejectWith(p,[y,x,n]),y.statusCode(u),u=void 0,l&&q.trigger(j?"ajaxSuccess":"ajaxError",[y,o,j?m:n]),t.fireWith(p,[y,x]),l&&(q.trigger("ajaxComplete",[y,o]),--r.active||r.event.trigger("ajaxStop")))}return y},getJSON:function(a,b,c){return r.get(a,b,c,"json")},getScript:function(a,b){return r.get(a,void 0,b,"script")}}),r.each(["get","post"],function(a,b){r[b]=function(a,c,d,e){return r.isFunction(c)&&(e=e||d,d=c,c=void 0),r.ajax(r.extend({url:a,type:b,dataType:e,data:c,success:d},r.isPlainObject(a)&&a))}}),r._evalUrl=function(a){return r.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},r.fn.extend({wrapAll:function(a){var b;return this[0]&&(r.isFunction(a)&&(a=a.call(this[0])),b=r(a,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstElementChild)a=a.firstElementChild;return a}).append(this)),this},wrapInner:function(a){return r.isFunction(a)?this.each(function(b){r(this).wrapInner(a.call(this,b))}):this.each(function(){var b=r(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=r.isFunction(a);return this.each(function(c){r(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(a){return this.parent(a).not("body").each(function(){r(this).replaceWith(this.childNodes)}),this}}),r.expr.pseudos.hidden=function(a){return!r.expr.pseudos.visible(a)},r.expr.pseudos.visible=function(a){return!!(a.offsetWidth||a.offsetHeight||a.getClientRects().length)},r.ajaxSettings.xhr=function(){try{return new a.XMLHttpRequest}catch(b){}};var Ob={0:200,1223:204},Pb=r.ajaxSettings.xhr();o.cors=!!Pb&&"withCredentials"in Pb,o.ajax=Pb=!!Pb,r.ajaxTransport(function(b){var c,d;if(o.cors||Pb&&!b.crossDomain)return{send:function(e,f){var g,h=b.xhr();if(h.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(g in b.xhrFields)h[g]=b.xhrFields[g];b.mimeType&&h.overrideMimeType&&h.overrideMimeType(b.mimeType),b.crossDomain||e["X-Requested-With"]||(e["X-Requested-With"]="XMLHttpRequest");for(g in e)h.setRequestHeader(g,e[g]);c=function(a){return function(){c&&(c=d=h.onload=h.onerror=h.onabort=h.onreadystatechange=null,"abort"===a?h.abort():"error"===a?"number"!=typeof h.status?f(0,"error"):f(h.status,h.statusText):f(Ob[h.status]||h.status,h.statusText,"text"!==(h.responseType||"text")||"string"!=typeof h.responseText?{binary:h.response}:{text:h.responseText},h.getAllResponseHeaders()))}},h.onload=c(),d=h.onerror=c("error"),void 0!==h.onabort?h.onabort=d:h.onreadystatechange=function(){4===h.readyState&&a.setTimeout(function(){c&&d()})},c=c("abort");try{h.send(b.hasContent&&b.data||null)}catch(i){if(c)throw i}},abort:function(){c&&c()}}}),r.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),r.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return r.globalEval(a),a}}}),r.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET")}),r.ajaxTransport("script",function(a){if(a.crossDomain){var b,c;return{send:function(e,f){b=r(" - - - -
                      [+site_name+]MODX Evolution
                      -
                      -
                      - - [+OnManagerLoginFormPrerender+] -

                      [+login_message+]

                      -
                      - - -
                      -

                      [+login_captcha_message+]

                      - [+captcha_image+] - [+captcha_input+] -
                      - - - - [+OnManagerLoginFormRender+] -
                      -
                      -
                      - © 2005-2014 by MODX®, and licensed under the GPL. -
                      -
                      - - - - - \ No newline at end of file diff --git a/manager/media/style/MODxCarbon/style.css b/manager/media/style/MODxCarbon/style.css deleted file mode 100755 index b333cf24a8..0000000000 --- a/manager/media/style/MODxCarbon/style.css +++ /dev/null @@ -1,1694 +0,0 @@ -/* -------------------------[ Neutralize styles, fonts and viewport ]--- */ -* html { overflow-x :hidden; overflow-y: auto;} /* for IE6 */ -*+html { overflow-x :hidden; overflow-y: auto;} /* for IE7 */ -html, body, form, fieldset,img { - margin: 0; - padding: 0; -} -img { - border: none; -} -html { - font-size: 100.01%; - line-height: 1.5; - font-family: Arial, HelveticaNeue, "Helvetica Neue", Helvetica, "Hiragino Kaku Gothic Pro", Meiryo, sans-serif; - color: #111; -} -body { - font-size: 62.5%; - font-size: 68.75%; - font-size: 75%; - height: 100%; - color:#333333; - background: #f7f7f7; -} -body#mainpane, -body.treeframebody { - background-image :url(images/misc/mainbg.png); - background-repeat:repeat-x; -} -a img { - text-decoration: none; -} -h1, h2, h3, h4, h5, h6, p, pre, blockquote, ul, ol, dl, address { - margin: 0 0 .5em; - padding: 0; - font-weight: normal; -} -li, dd, blockquote { - margin: 0 0 0 1em; -} - .rtl li, .rtl dd, .rtl blockquote { - margin: 0 1em 0 0; - } - - -.file-manager td { - border-bottom: 1px solid #d5dfea; -} -.ab2 { - padding-bottom: 20px; -} -/* -------------------------[ Miscellaneous conveniences ]--- */ -.clearfix, .cls { - clear: both; - height: 0 !important; - margin: 0; - font-size: 1px; - overflow: hidden; -} -.clear { - clear: both; -} -.fail { - color: #900; - font-weight: bold; -} -.warning { - color: #444444; - font-weight: bold; -} -.success { - color: #090; - font-weight: bold; -} -.contentPad { - height: 20px !important; - clear: both; -} -.hide, .skip, .printonly { - display: none; -} -.inline { - display: inline; -} -/* -------------------------[ Headers and Paragraphs ]--- */ -h1, h2, h3, h4, h5, h6, .subTitle { - font-weight: normal; -} -h1 { - font-size: 218%; - font-size: 164%; - line-height: 40px; - margin-left: 10px; - letter-spacing:1px; -} - .rtl h1 { - margin-right: 10px; - } -h2 { - font-size: 164%; -} -h3 { - font-size: 145%; -} -h4 { - font-size: 118%; -} -h5 { - font-size: 100%; - font-weight: bold; -} -h6 { - font-size: 86%; - font-weight: bold; -} -p.caption, p.comment { - font-size: 86%; - color: #888; -} -button { - color: #821517; - font-weight: bold; - width: 112px; - margin: 0 5px 0 0; - cursor: pointer; -} - .rtl button { - margin: 0 0 0 5px; - } -a, a:active, a:visited, a:link { - color: #00577d; - text-decoration: underline; -} -a:hover { - color: #0f1e76; -} -hr { - color: #777; - background-color: #777; - height: 1px; - border: 0; -} -.split { - background: #556476 url(images/misc/line.gif) repeat-x; - height: 1px; - font-size: 0; - clear: both; - padding: 0; -} -#previewIframe { - width: 100%; - height: 400px; -} -.messageRead { - color: #333; -} -.messageUnread { - color: #3CB371; - font-weight: bold; -} -.right { - font-weight: bold; - color: #333; - float: left; - padding: 0 20px 20px; -} - .rtl .right { - float: right; - } - -/* -------------------------[ Topbar ]--- */ -#topbar { - margin: 0; - color: #333; - padding: 0 5px; -} -#topbar * { - vertical-align: middle; -} -#topbar a, -#topbar a:link, -#topbar a:visited { - font-weight: bold; - color: #AAB1B9; - text-decoration: none; -} -#topbar a:hover { - color: #fff; - text-decoration: underline; -} -#tocText { - position: absolute; - left: 3px; - top: 50px; - z-index: 1000; -} - .rtl #tocText { - right: 3px; - } -.tocTextRTL { - right: 3px; -} -#tocText, -#buildText, -#workText { - font-weight: bold; - line-height: 16px; - margin: 0 15px; - color: #FFF; -} -#tocText, -#buildText img, -#workText img { - margin: 0 5px; -} -#statusbar { - position: absolute; - right: 0; - top: 27px; -} - .rtl #statusbar { - left: 0; - } -#supplementalNav { - float: right; - background: transparent; - font-size: 12px; - padding: 0 0 30px; - margin: 0; - color: #89939E; -} - .rtl #supplementalNav { - float: left; - } -#supplementalNav * { - vertical-align: bottom; -} -#supplementalNav a { - padding: 0; - margin: 0; -} -#msgCounter, #newMail { - margin: 0; - padding: 0; -} - -/* -------------------------[ Forms ]--- */ -tbody, thead, tr { - margin: 0; - padding: 0; - border: 0; -} -form label { - cursor: pointer; -} -form label input[type="radio"] { -margin:0; -} -fieldset { - border: none; -} -input, select, textarea, option, optgroup, td { - font-size: inherit; - font-family: inherit; - color: inherit; -} - .rtl input, - .rtl select, - .rtl textarea, - .rtl td { - text-align: right; - } - -#ta, .tmplvars textarea { -} -form input[type=text], -form input[type=password], -form textarea { - border: 1px solid #ddd; - border-left-color: #c3c3c3; - border-top-color: #acacac; - padding: 3px 5px; - background: #fff url(images/misc/input-bg.gif) repeat-x top left; - vertical-align: baseline; - border-radius : 3px; - -moz-border-radius : 3px; - -webkit-border-radius:3px; -} -form input[type=checkbox],form input[type=radio] { - cursor:pointer;cursor:hand; -} -input[type="email"]:focus, -input[type="password"]:focus, -input[type="search"]:focus, -input[type="text"]:focus, -input[type="url"]:focus, -textarea:focus, -form select:focus -{ - outline: none; - background: #fff; - border: 1px solid #73829a; -} -form input[type=text] { - line-height:1; -} - .rtl form input[type=text], - .rtl form textarea { - padding: 2px 2px 2px 0; - } - -input.checkbox, -input.radio, -input.submit, -input.button, -input[type="checkbox"], -input[type="radio"], -input[type="submit"], -input[type="button"] { - height: auto !important; - width: auto !important; - vertical-align: middle; -} -select { - border: 1px solid #c3c3c3 !important; - border: 0; - background: #fcfcfc; -} -.form { - padding: 15px; - border: solid 1px #ddd; -} -form input.hidden { - display: none !important; - position: absolute; -} -.form label, -.form input, -.form textarea { - display: block; - float: left; - vertical-align: middle; -} -.form label { - padding-right: 20px; - text-align: right; - width: 110px; -} - .rtl .form label, - .rtl .form input, - .rtl .form textarea { - float: right; - } - .rtl .form label { - padding-left: 20px; - text-align: left; - } -form textarea { - height: 85px; - width: 310px; - margin-top: 0; - padding:5px; - -webkit-box-sizing: border-box; /* Chrome, Safari */ - -moz-box-sizing: border-box; /* Firefox */ - box-sizing: border-box; /* IE8+, Opera */ -} -.form legend { - color: #04C; - font-weight: bold; - padding: 5px; -} -.form select { - display: inline; - float: left; -} - .rtl .form select { - float: right; - } -.form br { - clear: both; -} -input.submit { - display: block !important; - float: none !important; - margin: 20px 0 0 140px !important; -} - .rtl input.submit { - margin: 20px 140px 0 0 !important; - } -.form fieldset.list { - margin: 6px 6px 3px 0; -} - .rtl .form fieldset.list { - border: 0; - padding: 0 !important; - margin: 6px 0 3px 6px; - } -.form fieldset.list legend { - display: none; -} -.form fieldset.list label, -.form fieldset.list input { - padding: 0; - margin: 0 0 3px; - float: left; - display: inline; - border: 0; - background: none; - width: auto; - height: auto; -} - .rtl .form fieldset.list label, - .rtl .form fieldset.list input { - float: right; - } -.form fieldset.list label { - padding-left: 5px; - text-align: left; - width: auto; -} - -/* -------------------------[ Misc stuff ]--- */ -.sectionBody fieldset { - border: 0; - background: #fff; - font-size: 12px; - padding: 10px; -} -.sectionBody fieldset h3 { - font-size: 14px; - color: #789; - font-weight: bold; - padding-bottom: 0; - margin-bottom: 0; -} -.sectionHeader, .showHideVisible { - margin: 0 10px; - padding: 5px 3px 5px; - font-weight: bold; - color: #333; - border: 1px solid #e3e3e3; - border-bottom:none; -} - .tab-page .sectionHeader { - margin: 10px 10px 0; - } - .rtl .sectionHeader { - direction: rtl; - padding: 5px 18px 5px 3px; - } -.sectionBody, .layerVisible { - position: relative; - display: none; - background: #fff; - border: 1px solid #e3e3e3; - border-top: 1px solid #e3e3e3; - margin: 0 10px 10px; - padding: 10px; - display: block; - background: #fff url(images/misc/tabareabg.gif) repeat-x top; -} -.tab-page .sectionBody { - margin: 0 10px 10px; -} -.rtl .sectionBody, .layerVisible { - direction: rtl; - position: inherit; -} -.showHideVisible, .layerVisible { - margin: 0 10px 4px; -} -.sectionHeader { - padding: 5px 3px 5px 18px; - background: #EFEFEF url(images/misc/fade.gif) repeat-x top; - overflow:hidden; - zoom:1; - border-radius : 5px 5px 0 0; - -moz-border-radius : 5px 5px 0 0; - -webkit-border-radius:5px 5px 0 0; -} - .rtl .sectionHeader { - direction: rtl; - padding: 5px 18px 5px 3px; - } -.comment { - font-size: 12px; - color: #333; -} -.inherited { - font-style: italic; -} -thead, .fancyrow { - color: #333; - height: 18px !important; - background-color: #E4E4E4; -} -thead td { - color: #333; - border-top: 1px solid #fff; -} -.fancyrow2 { - height: 18px !important; - background-color: #F0A62F; - background-position: top; - background-repeat: repeat-x; - border-bottom: 1px solid #fff; - color: #fff; -} -li { - padding: 0; - margin: 0; - list-style: disc outside url(images/misc/li.gif); -} -ul { - margin: 0 20px 0 20px; -} - .rtl ul { - margin: 0 10px 0 20px; - } -.screen { - border: 1px solid #ddd; - text-align: center; -} -a img { - border: 0; -} -.even { - background: #D9E7C2; -} -.odd { - background: #fff; -} -/* -------------------------[ end sortable table ]--- */ -.disabledImage { - width: 20px; - opacity: 0.3; - filter: alpha(opacity=30); -} -.disabledImage img { - border: 0; -} -.editorCell { - border-top: 1px solid #808080; - text-align: left; - vertical-align: baseline; -} - .rtl .editorCell { - text-align: right; - } -.row1, .row2, .row3 { - background-color: #fff; - color: #333; -} -.row2 { - background-color: #ece7dd; -} -.row3 { - background-color: #F4F4F4; -} -.row3 td.warning { - padding-left:25px; -} -.treeframebody { - background-color: #f7f7f7; -} - -#treeMenu * { - vertical-align: middle; -} -#treeHolder { - cursor: default; - height: 100%; - padding: 5px 10px 0 10px; - border-top: 1px solid #fff; - background: #f7f7f7; -} - -#treeRoot { - margin-left:-10px; -} - -#treeRoot div img { - margin: 0; -} - .rtl #treeRoot div img { - margin: 0; - } -#floater { - display: none; - position: absolute; - width: 200px; - height: 50px; - top: 25px; - left: 4px; - background: #fff; - border-bottom: 1px solid #666; - z-index: 500; -} - .rtl #floater { - right: 4px - } -.rootNode, .treeNode, .treeNodeHover, .treeNodeSelected, .emptyNode { - color: #333; - padding: 2px; - cursor: pointer; - width: auto; -} -.treeNodeHover { - background-color: #fff; - border: 1px solid #c8c8d4; - padding: 1px; -} -.treeNodeSelected { - background-color: #fff; - color: #333; - border: 1px solid #c8c8d4; - padding: 1px; -} -.unpublishedNode, -.unpublished a { - color: #b68282; - font-style: italic; -} -.deletedNode { - color: #A52A2A; - text-decoration: line-through; -} -.publishedNode { - color: #333; -} -.emptyNode { - color: #aaa; - cursor: default; -} -.notInMenuNode { - color: #777; - text-decoration: none; -} -.protectedNode { - color: #aaa; -} - -#treeSplitter { - width: 10px; - height: 100%; - position: absolute; - right: -10px; -} - .rtl #treeSplitter { - left: -10px; - } -.disabledPlugin a { - color: #aaa; - text-decoration: line-through; -} -/* -------------------------[ grid style ]--- */ -table.grid { - width: 100%; - background-color: #fff; - border-collapse:collapse; - margin-bottom:10px; -} -table.grid th, table.grid td { - border:1px solid #ccc; - padding:4px; -} -table.grid th, .gridHeader { - color: #333; - font-weight: bold; - background-color: #d2d2d2; - white-space:nowrap; - text-align:left; -} -table.grid td.odd, .gridItem { - background-color: #fff; -} -table.grid td.even, .gridAltItem { - background-color: #eeeeee; -} -.gridRowIcon:hover { - background-color: #f5f5dc; -} -.grid a { - text-decoration: none; -} -.grid img { - vertical-align: middle; - padding-right: 4px; -} -/* -------------------------[ search bar ]--- */ -.searchbar { - width: 100%; - border: 1px solid silver; - background-color: #DBDBDB; - margin-bottom:8px; -} -.searchtext { - height: 18px; - padding: 2px; -} -.searchbutton { - width: 22px; - padding: 5px; - text-decoration: none; - background: #fff; - border: 1px solid #D1D8DF; -} -.searchbutton:hover { - text-decoration: none; - background: #fff; - border: 1px solid #88939E; -} -.searchbutton img { - vertical-align: middle; - margin: 0; - padding: 0 -} -/* -------------------------[ home page main links ]--- */ -a.hometblink, a.hometblink:active, a.hometblink:visited, a.hometblink:link, .hometblink { - text-decoration: underline; - color: #333; - font-weight: bold; -} -a.hometblink:hover { - text-decoration: underline; - color: Gray; -} -.notice { - width: 100%; - padding: 5px; - border: 1px solid #eee; - background-color: #F4F4F4; - color: #707070; -} -#preLoader { - position: absolute; - z-index: 50000; - width: 100%; - height: 100%; - text-align: center; - vertical-align: middle; -} -.preLoaderText { - background-color: #fff; - width: 300px; - height: 150px; - padding: 50px; - border: 1px solid #999; -} -/* -------------------------[ contextmenu in editing modules ]--- */ -.contextMenu { - background: #fff; - margin: 0; - padding: 8px; - border: 1px solid #039; - border-color: #eaeaea #909090 #707070 #eaeaea; - position: absolute; - z-index: 10000; - white-space: nowrap; -} -.cntxMnuItem { - background-image: url(images/misc/_tx_.gif); - cursor: pointer; - color: #333; - padding: 3px 16px 3px 2px; -} - .rtl .cntxMnuItem, - .rtl .cntxMnuItemDisabled { - padding: 3px 2px 3px 16px; - } -.cntxMnuItemDisabled { - cursor: default; - padding: 3px 16px 3px 2px; - color: #787878; -} -.cntxMnuItemOver { - cursor: pointer; - color: #333; - background: #e3e3e3; - padding: 2px 15px 2px 1px; - border: 1px solid #c0c0c0; -} - .rtl .cntxMnuItemOver { - padding: 2px 1px 2px 15px; - } -.cntxMnuItem img, .cntxMnuItemOver img, .cntxMnuItemDisabled img { - margin: 0 8px 0 0; -} - .rtl .cntxMnuItem img, - .rtl .cntxMnuItemOver img, - .rtl .cntxMnuItemDisabled img { - margin: 0 0 0 8px; - } - -.cntxMnuItem img, .cntxMnuItemDisabled img { - opacity: .3; - filter: alpha(opacity=30); -} -.cntxMnuSeparator { - font-size: 0; - height: 1px; - background-color: silver; - overflow: hidden; - margin: 3px 1px 3px 28px; -} - .rtl .cntxMnuSeparator { - margin: 3px 28px 3px 1px; - } - -/* -------------------------[ Top Navbar of snap in top menu bar layout ]--- */ -#topMenu { - background: #e4e4e4 url(images/misc/menubg.png); -} -#Navcontainer { - padding: 0 10px; - color: #fff; -} -#nav { - margin: 0; - padding: 0; - height: 25px; - width: 100%; - position: absolute; - top: 18px; - overflow: visible !important; -} - .rtl #nav { - right: 10px; - } -#nav ul { - display: none; - height: 25px; - position: relative; - z-index: 500; - margin: 0 0 0 -10px; - padding: 0 0 0 20px; -} - .rtl #nav ul { - margin: 0 -10px 0 0; - padding: 0 20px 0 0; - } -#nav li { - list-style: none; - background: #323c52 url(images/misc/tab.gif) 100% 100%; - float: left; - width: auto; - margin: 0 3px 0 0; - padding: 0; -} - .rtl #nav li { - float: right; - margin: 0 0 0 3px; - } -#nav li a { - border-left: 1px solid #2c3d50; - color: #919fae; - height: 25px; - font-weight: bold; - text-decoration: none; - white-space: nowrap; - cursor: pointer; - line-height: 25px; - overflow: hidden; - padding: 0 25px; - float: none !important; - float: left; - display: block; -} -#nav li ul li a { - padding: 0 18px !important; -} -#nav li ul li a { - background: #d4d4d4; - float: left; - width: auto; -} - .rtl #nav li ul li a { - float: right; - } - -#nav a:hover { - color: #fff; -} -#nav a:active { - color: #fff; -} -#nav li.active { - background: #758ca2 url(images/misc/tab.gif) 100% 0; -} -#nav li.active a { - color: #fff; - position: relative; - z-index: 999999; - border-bottom: 1px solid #657587; - border-left: 1px solid #7e8b9a; -} -#nav li.active a:hover { - cursor: pointer; -} -#nav li.active ul.subnav { - display: block; - position: absolute; - top: 25px; - width: 200%; - left: 0; - background: #657587; - border-top: 1px solid #8B96A0; - border-bottom: 1px solid #7b8c9f; -} - #nav li.active ul.subnav { - right: 0; - } -#nav li.active ul.subnav a { - color: #fff; - font-weight: normal; - border-bottom: 1px solid #7b8c9f; - background: #657587; - cursor: pointer; - border-left: none; -} -#nav li.active ul.subnav li { - margin: 0; -} -#nav li.active ul.subnav a:hover { - color: #fff; - background-color: #5d6c7d; - background-image:none; -} -#nav li.active ul.subnav a:active { - color: #ccc; -} -#nav li.active ul.subnav, -#nav li.active ul.subnav a { - background: #657587 url(images/misc/longbarbg.png) repeat-x top; -} - -/* -------------------------[ Contextual Menu used in the Tree Menu ]--- */ -#mx_contextmenu { - position: absolute; - height: auto; - visibility: hidden; - z-index: 10000; - width: 165px; - background-color: #fff; - background-image:url(images/misc/tabareabg.gif); - background-repeat:repeat-x; - background-position:0 20px; - margin: 0; - padding-bottom:10px; - border: 1px solid #ededed; - border-right-color: #dcdcdc; - border-bottom-color: #dcdcdc; - overflow: hidden; - line-height: 11px; - box-shadow: 2px 2px 15px #eaeaea; - -moz-box-shadow: 2px 2px 15px #eaeaea; - -webkit-box-shadow: 2px 2px 20px #eaeaea; -} -#mx_contextmenu .menuLink { - cursor: pointer; - color: #222; - padding: 3px 5px 3px 4px; -} -#mx_contextmenu .menuLink:hover { - background: #DDE4EB; - border: 1px solid #fdfdfd; - border-bottom-color: #dcdcdc; - color: #333; -} -#mx_contextmenu .menuLink:hover, -#mx_contextmenu .menuLinkDisabled { - cursor: pointer; - padding: 2px 4px 2px 3px; -} -#mx_contextmenu .menuLinkDisabled { - cursor: default; - color: #787878; -} -#mx_contextmenu .menuLink img, -#mx_contextmenu .menuLink:hover img, -#mx_contextmenu .menuLinkDisabled img { - margin-right: 5px; -} -#mx_contextmenu .menuLink img, -#mx_contextmenu .menuLinkDisabled img { - opacity: .3; - filter: alpha(opacity=30); -} -#mx_contextmenu .menuLink:hover img { - opacity: 1; - filter: alpha(opacity=100); -} - -#mx_contextmenu #nameHolder { - color: #fff; - text-align: left; - cursor: default; - font-weight: bold; - padding: 6px 4px; - margin-bottom: 3px; - background-color: #86939E; - background-image:url(images/misc/contextmenubg.png); - background-repeat:repeat-x; -} -#mx_contextmenu .seperator { - font-size: 0; - height: 1px; - background-color: silver; - overflow: hidden; - margin: 3px 1px 3px 28px; -} - - .rtl #mx_contextmenu .menuLink { - padding: 3px 2px 3px 16px; } - .rtl #mx_contextmenu .menuLink:hover, - .rtl #mx_contextmenu .menuLinkDisabled { - padding: 2px 1px 2px 15px;} - .rtl #mx_contextmenu .menuLink img, - .rtl #mx_contextmenu .menuLink:hover img, - .rtl #mx_contextmenu .menuLinkDisabled img { - margin-right: 8px; } - .rtl #mx_contextmenu #nameHolder { - text-align: right; - } - .rtl #mx_contextmenu .seperator { - margin: 3px 28px 3px 1px; - } - - -/* -------------------------[ Settings Table ]--- */ -.settings { - width: 600px; -} -.settings tr { - width: 100% !important; -} -.settings td, .settings th { - background: transparent; -} -.settings th { - width: 200px !important; - text-align: left; - color: #555; - font-size: inherit; -} - .rtl .settings th {text-align: right;} -.filelist td { - border-bottom: 1px solid #C2C3CF; -} -/* -------------------------[ Tabs ]--- */ -.dynamic-tab-pane-control.tab-pane { - position: relative; - width: 100%; -} - .rtl .dynamic-tab-pane-control.tab-pane { - direction: rtl; - } -.dynamic-tab-pane-control .tab-row .tab { - color: #313131; - font-weight: bold; - font-size: 12px; - cursor: pointer; - display: inline; - margin: 3px -3px 1px 5px; - float: left; - padding: 2px 15px 3px; - z-index: 1; - position: relative; - top: 0; - background: #ececec; - border: 1px solid #e0e0e0; - border-radius : 2px 2px 0 0; - -moz-border-radius : 2px 2px 0 0; - -webkit-border-radius: 2px 2px 0 0; -} - .rtl .dynamic-tab-pane-control .tab-row .tab { - margin: 3px 5px 1px -3px; - float: right; - padding: 2px 15px 3px; - } - -.dynamic-tab-pane-control .tab-row .tab.hover { - color: #222; - background: #fff; - text-decoration: none; -} -.dynamic-tab-pane-control .tab-row .tab.selected { - background: none repeat scroll 0 0 #FFFFFF; - border-color: #FFCC72 #C0C0C0 #FFFFFF #E0E0E0; - border-style: solid; - border-width: 1px; - top: 0; - z-index: 3; -} -.dynamic-tab-pane-control .tab-row .tab.selected span { - color: #111; -} -.dynamic-tab-pane-control .tab-row .tab span { - font-weight: bold; - font-size: 12px; - color: #999; - text-decoration: none; -} -.dynamic-tab-pane-control .tab-page { - clear: both; - background: #fff; - border-top: 1px solid #c0c0c0; - z-index: 2; - position: relative; - top: -2px; - padding: 10px; -} - .rtl .dynamic-tab-pane-control .tab-page { - position: inherit; /* critical adjustment for IE ul li Proper RTL demonstration */ - } -.dynamic-tab-pane-control .tab-row { - z-index: 1; - white-space: nowrap; -} -.dynamic-tab-pane-control ul { - padding-left: 10px; - padding-right: 10px; -} -.dynamic-tab-pane-control li { - padding-left: 5px; - padding-right: 5px; -} -/* -------------------------[ Tree buttons ]--- */ -.treeButton { - display: block; - cursor: default; - color: #333; - border: 1px; - border-bottom-color: #809c47; - padding: 3px 5px; - white-space: nowrap; - vertical-align: middle; -} -.treeButton:hover { - border: 1px solid #88939E; - padding: 2px 4px; - background: #fff; -} -.treeButtonDisabled { - cursor: default; - border: 1px solid #657587; - padding: 2px 4px; - color: #777; - border-width: 0; - opacity: .5; - filter: alpha(opacity=50); -} -/* -------------------------[ Welcome Page ]--- */ -a.hometblink, a.hometblink img { - border: 0 !important; - text-decoration: none !important; -} -.wm_button { - float: left; - margin: 0 6px 2px 5px; - text-align: center; -} - .rtl .wm_button { - float: right; - margin: 0 5px 2px 6px; - } - -/* -------------------------[ Welcome Page ]--- */ -#mainActionPages { - background: #f4f4f4 url(images/misc/mainbg.gif) repeat-x top; -} -.tab-page { - border: 1px solid #e4e4e4; -} -.sectionBody .tab-page { - border-width: 1px 0 0; -} -.tab strong { - color:#EF1D1D; -} -/* -------------------------[ New sortable table class ]--- */ -.sortabletable { -} -table.sortabletable { -border-collapse:collapse; -width:100%; -} -table.sortabletable td,table.sortabletable th { -border:1px solid #ccc; -padding:4px; -} -.sortabletable a { -} - -.sortabletable thead tr { - background-color: #86919e; -} -.sortabletable tr { - background: #fff; -} -.sortabletable tr.even { - background: #E9F0F3; -} -.sortabletable td, .sortabletable th { - padding: 2px 5px; - border-bottom: 1px solid #eee; -} -.sortabletable th { - text-align: left; - cursor: pointer; - color: #f3f3f3; -} - .rtl .sortabletable th { - text-align: right; - } -.sortabletable th a { - text-decoration: none; - color: #f3f3f3; -} -.sortabletable th:active { - background: #ccc; - padding: 3px 4px 1px 6px; -} - .rtl .sortabletable th:active { - padding: 3px 6px 1px 4px; - } -/* -------------------------[ Pagination table ]--- */ -#max-display-records { - margin: 10px 0; -} -#pagination { - margin: 10px 0; -} -#pagination ul { - margin: 10px 0; - display: inline; -} -#pagination li { - list-style: none; - display: inline; - width: 15px; - margin: 0 0 0 1px; - padding:0; -} -#pagination li a { - padding: 2px 5px; - border: 1px solid #ccc; - text-decoration: none; - color: #333; -} -#pagination li.currentPage a, #pagination li a:hover { - color: #333; - border: 1px solid #999; - background-color:#dddddd; -} - -fieldset.tab-page { - border: 1px solid #e4e4e4!important; -} -h2#edit_document_title { - font-size: 15px; - color: #f5f5f5; - width: 100%; - border-bottom: none; - padding: 5px 10px; -} -fieldset#preview h2.tab { - float: right; -} -/* -------------------------[ Action Buttons ]--- */ -#actions { - position: fixed; - top: 10px; - right: 0; - z-index: 100; - margin: 0; - text-align: right; -} -.rtl #actions { - left: 10px; - text-align: left; -} -ul.actionButtons { - margin: 2px 0 10px; - padding: 3px 0; /* accommodate border on buttons - */ - background: none; - width: auto; - white-space: nowrap; -} -.actionButtons li { - display: inline; - list-style-type: none; - margin-right: 5px; - padding: 0; -} -.actionButtons img { - vertical-align: top; - margin-top: 1px; -} -.actionButtons a { - color: #222c36; - font-weight: bold; - font-size: 12px; - background: #c7ced2 url(images/misc/button-gradient.png) repeat-x top left; - padding: 4px; - white-space: nowrap; - vertical-align: top; - text-decoration: none; - -moz-border-radius: 4px; - -webkit-border-radius: 4px; - border-radius: 4px; - -webkit-text-shadow: 1px 1px 0 #fff; - -moz-text-shadow: 1px 1px 0 #fff; - text-shadow: 1px 1px 0 #fff; - border:1px solid #8ea4be; - outline: none; -} -.actionButtons a:hover { - background-position: bottom left; - -webkit-box-shadow: 0 0 10px #b8c7d6; - -moz-box-shadow: 0 0 10px #b8c7d6; - box-shadow: 0 0 10px #b8c7d6; - -webkit-transition: -webkit-box-shadow 0.2s linear; -} -.actionButtons a:active { - background-color: #92aac4; - background-position: bottom left; - -webkit-box-shadow: 0 0 10px #b8c7d6; - -moz-box-shadow: 0 0 10px #b8c7d6; - box-shadow: 0 0 10px #b8c7d6; -} -.actionButtons a.disabled, -.actionButtons li.disabled a { - border: 1px solid #c7ced2; - color: #777; - cursor:default; -} - -.actionButtons a.disabled img, -.actionButtons li.disabled img{ - opacity: .3; - filter: alpha(opacity=30); -} -.actionButtons a:hover.disabled, -.actionButtons li.disabled a:hover { - background-position: top; - -webkit-box-shadow: none; - -moz-box-shadow: none; - box-shadow: none; - -webkit-transition: none; -} -.actionButtons .plus{ - margin:0 2px 0 5px; - color: #3b454f; - font-weight: bold; -} - /* -* Generic styles for all form elements - */ -form#mutate dt, -form#mutate dd { - margin-bottom: 10px; - } -form#mutate dt label, -form#mutate dt h3.label { - font-size: 12px; - display: inline; - float: left; - width: 200px; - color: #821517!important; - font-weight: bold; - } -form#mutate dd { - margin-left: 210px; -} -form#mutate input.disabled { - background-color: #f4f4f4 !important; -} - -form#mutate select.inputBox, -form#mutate input - { - width: 300px; -} -form#mutate input.inputBox, -form#mutate textarea, -div.tmplvars input[type=text] { - background: #fff url(images/misc/input-bg.gif) repeat-x top left; -} -form#mutate textarea.tv_textareamini { - height: 100px; - width: 300px; - overflow-y: scroll; -} -form#mutate textarea.tv_textarea { - height: 100px; - width: 100%; - overflow-y: scroll; -} - -/* -* Styling for datepicker elements in settings and templavars -*/ -form#mutate input.date, -form#mutate input.tvdate { - margin-right: 10px; -} - -/* -* Individual Styles for fieldset#settings_page_settings -*/ -form#mutate fieldset#settings_page_settings input#pub_date, -form#mutate fieldset#settings_page_settings input#unpub_date { - width: 150px; -} -form#mutate fieldset#settings_page_settings select { - width: 155px; -} -/* -* Individual Styles for fieldset#meta_keywords -*/ -form#mutate fieldset#meta_keywords { -} -form#mutate fieldset#meta_keywords { -} -form#mutate fieldset#meta_keywords select.inputBox { - display: block; - margin-bottom: 0; -} -form#mutate fieldset#meta_keywords dl.keywords { - float: left; - margin-right: 30px; -} -form#mutate fieldset#meta_keywords dl.metatags { - float: left; -} -form#mutate fieldset#meta_keywords dl dt label { - width: 100px; -} -form#mutate fieldset#meta_keywords dl dd { - margin-left: 110px; -} -/* -* Individual Styles for fieldset#preview -*/ -fieldset#preview iframe { - width: 100%; - margin: 0 auto; - border: 1px solid #f4f4f4; -} - -/* -* Individual Styles for fieldset#document_content -*/ - -fieldset#document_content textarea#ta { - width: 100%; - height: 400px; - font-size: 12px; -} - -/* -* Individual Styles for fieldset#access_permissions -*/ -fieldset#access_permissions dt label { - width: 200px; -} -fieldset#access_permissions dd { - margin-left: 210px; -} -fieldset#access_permissions dl dd ul li { - list-style-type: none; -} - -/* ppb: -* fieldset#settings_templvars -*/ -fieldset#settings_templvars .tv_url_select { - width: 70px; - margin-right: 10px; -} -fieldset#settings_templvars .tv_url_input { - width: 220px; -} -fieldset#settings_templvars dd.tvCheckBox label input, -fieldset#settings_templvars dd.tvRadioOptions label input { - margin-right: 10px; -} -fieldset#settings_templvars .tv_date { - width: 150px; -} -form#mutate select.tv_url_select { - padding: 5px 3px; -} - -/* ppb: -* Style mootools tooltips -*/ - -.custom-tip { - color: #333; - width: 175px; - z-index: 13000; - border: 1px solid #cccccc; - background: #fff; - padding: 5px; -} - -.custom-title { - font-weight: bold; - font-size: 12px; - margin: 0; - color: #fff; - padding: 6px 6px 4px; - background: #758CA2 url(images/misc/tab.gif); -} - -.custom-text { - font-size: 12px; - padding: 4px 8px 8px; - background: #fff; -} -/* ppb: -* Some styling for legacy mode fieldsets -*/ - -fieldset.legacy { - background: #fff; - margin: 10px; - padding: 10px; - border: 1px solid #e4e4e4!important; - position: relative; - margin-bottom: 35px; -} - -fieldset.legacy h2 { - width: 100%; - background: #f5f5f5; - margin: -10px -10px 15px -10px; - padding: 0 10px; - border-bottom: 1px solid #e4e4e4!important; -} - -/* -------------------------[ date picker ]--- */ -input.DatePicker, #mutate input.DatePicker, #userPane input.DatePicker, #webUserPane input.DatePicker, input#datefrom.DatePicker, input#dateto.DatePicker { - width: 150px; - padding: 3px 3px 3px 24px; - border: 1px solid #b4cde4; - background: #fff url(images/icons/datenofocus.gif) no-repeat top left; - ime-mode:disabled; -} -input:focus.DatePicker, #mutate input:focus.DatePicker, #userPane input:focus.DatePicker, #webUserPane input:focus.DatePicker, input#datefrom:focus.DatePicker, input#dateto:focus.DatePicker { - background: #fffce9 url(images/icons/datefocus.gif) no-repeat top left; - cursor:text; -} -.dp_container { - position: relative; - padding: 0; - z-index: 500; -} -.dp_cal { - background-color: #fff; - border: 1px solid #0070bf; - position: absolute; - width: 177px; - top: 24px; - left: 0; - margin: 0px 0px 3px 0px; -} -.dp_cal table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; -} - -.dp_cal p { - width: 177px; -} - -#mutate .dp_cal input.cal_timeTextBox, .dp_cal input.cal_timeTextBox { - display: block; - text-align: center; - width: 60px; - margin: 0 auto; - margin-top: 3px; -} - -.dp_cal select { - margin: 2px 3px; - font-size: 12px; -} -.dp_cal select option { - padding: 1px 3px; -} -.dp_cal th, -.dp_cal td { - width: 14.2857%; - text-align: center; - font-size: 12px; - padding: 2px 0; -} -.dp_cal th { - border: solid #aad4f2; - border-width: 1px 0; - color: #797774; - background: #daf2e6; - font-weight: bold; -} -.dp_cal td { - cursor: pointer; -} -.dp_cal thead th { - background: #d9eefc; -} -.dp_cal td.dp_roll { - color: #333; - background: #fff6bf; -} -/* -------------------------[ must have this for the IE6 select box hiding ]--- */ -.dp_hide { - visibility: hidden; -} -.dp_empty { - background: #eee; -} -.dp_today { - background: #daf2e6; -} -.dp_selected { - color: #fff; - background: #328dcf; -} - -/* System Alert Box ----------------------------------------------------------- */ -.cbOverlay {background-color: #000;z-index: 50000;} -.cbContainer {padding:5px;background-color:white;z-index: 50000;} -.cbBox h3 {color:#000;background: #bee860 url(images/misc/fade.gif) repeat-x top;padding:5px;font-weight:bold;} -.cbBox p {margin:3px;} -.cbBox .cbButtons {text-align:center;} -.sysAlert {width: 500px;height: 330px;white-space: nowrap;overflow: auto;} - - -/* Custom */ -/* normalize some td paddings */ -#tabTemplate tbody td, -.sectionBody td, -.sectionBody th { - padding: 1px 5px; - text-align:left; - vertical-align: top; -} -.sectionBody .displayparams { - margin-bottom: 3px; - background-color: #eee; - border-collapse: separate; - border-spacing: 1px -} -.sectionBody .displayparams th, .sectionBody .displayparams td { - padding: 2px 4px; -} -.sectionBody .displayparams thead td { - border-top: none; -} -.sectionBody .permissiongroup input, .sectionBody .permissiongroups input { - width: 200px; -} - -/* modx-ja ----------------------------------------------------------- */ -a#button7 {margin:7px 3px;border:1px solid #ccc;background-color:#eee;text-decoration:none;cursor:pointer;padding: 2px 4px;color:#333;} - -td input.button {width:30px !important;cursor:pointer;border:1px solid #ccc; background-color:#f5f5f5;margin-left:5px; margin-bottom: 3px; padding:2px 5px;} - -form#mutate input.text, -input.inputBox, -form#mutate input.imageField, -#displayparams input[type=text], -#displayparams select -{width:300px;} -form#mutate textarea.inputBox {width:300px;height:80px;} -form#mutate textarea {width:90%;height:240px;} -form#mutate textarea.textareamini {height:120px;} -form#mutate input.number,input.email {ime-mode:disabled;} -form#mutate input.number {width:60px !important;padding-right:10px;text-align:right;} -/*form#mutate div.tmplvars label {display:block;}*/ - -.phptextarea {font-family: 'Courier New','Courier', monospace;} -optgroup {font-style:normal;} - -#mainpane table th {vertical-align:top;} -/*Refactor #4440*/ -table.fields {border: 0px solid #fff;} -table.fields td {border: 0px solid #fff;} diff --git a/manager/media/style/MODxCarbon/style.php b/manager/media/style/MODxCarbon/style.php deleted file mode 100755 index 055927cc38..0000000000 --- a/manager/media/style/MODxCarbon/style.php +++ /dev/null @@ -1,130 +0,0 @@ -config['manager_theme']/style.php - * Function: Manager style variables for images and icons. - * Encoding: UTF-8 - * Credit: icons by Mark James of FamFamFam http://www.famfamfam.com/lab/icons/ - * Date: 18-Mar-2010 - * Version: 1.1 - * MODX version: 1.0.3 -*/ - -// $modx->config['manager_menu_height'] = '70'; -// $modx->config['manager_tree_width'] = '260'; -// $modx->config['mce_editor_skin'] = 'o2k7:silver'; - -$style_path = 'media/style/' . $modx->config['manager_theme'] . '/images/'; - -// Tree Menu Toolbar -$_style['add_doc_tree'] = ''; -$_style['add_weblink_tree'] = ''; -$_style['collapse_tree'] = ''; -$_style['empty_recycle_bin'] = ''; -$_style['empty_recycle_bin_empty'] = ''; -$_style['expand_tree'] = ''; -$_style['hide_tree'] = ''; -$_style['refresh_tree'] = ''; -$_style['show_tree'] = $style_path.'icons/application_side_expand.png'; -$_style['sort_tree'] = ''; - - -// Tree Icons -$_style['tree_deletedpage'] = $style_path.'tree/deletedpage.gif'; -$_style['tree_folder'] = $style_path.'tree/application_double.png'; /* folder.png */ -$_style['tree_folderopen'] = $style_path.'tree/application_double.png'; /* folder-open.png */ -$_style['tree_folder_secure'] = $style_path.'tree/application_double_key.png'; -$_style['tree_folderopen_secure'] = $style_path.'tree/application_double_key.png'; -$_style['tree_globe'] = $style_path.'tree/globe.gif'; -$_style['tree_linkgo'] = $style_path.'tree/link_go.png'; -$_style['tree_minusnode'] = $style_path.'tree/minusnode.gif'; -$_style['tree_page'] = $style_path.'tree/application.png'; -$_style['tree_page_home'] = $style_path.'tree/application_home.gif'; -$_style['tree_page_404'] = $style_path.'tree/application_404.gif'; -$_style['tree_page_hourglass'] = $style_path.'tree/application_hourglass.gif'; -$_style['tree_page_info'] = $style_path.'tree/application_info.gif'; -$_style['tree_page_blank'] = $style_path.'tree/application.png'; -$_style['tree_page_css'] = $style_path.'tree/application_css.png'; -$_style['tree_page_html'] = $style_path.'tree/application_html.png'; -$_style['tree_page_xml'] = $style_path.'tree/application_xml.png'; -$_style['tree_page_js'] = $style_path.'tree/application_js.png'; -$_style['tree_page_rss'] = $style_path.'tree/application_rss.png'; -$_style['tree_page_pdf'] = $style_path.'tree/application_pdf.png'; -$_style['tree_page_word'] = $style_path.'tree/application_word.png'; -$_style['tree_page_excel'] = $style_path.'tree/application_excel.png'; -$_style['tree_plusnode'] = $style_path.'tree/plusnode.gif'; -$_style['tree_showtree'] = ''; -$_style['tree_weblink'] = $style_path.'tree/link_go.png'; - -$_style['tree_page_secure'] = $style_path.'tree/application_key.png'; -$_style['tree_page_blank_secure'] = $style_path.'tree/application_html_secure.png'; -$_style['tree_page_css_secure'] = $style_path.'tree/application_css_secure.png'; -$_style['tree_page_html_secure'] = $style_path.'tree/application_html_secure.png'; -$_style['tree_page_xml_secure'] = $style_path.'tree/application_xml_secure.png'; -$_style['tree_page_js_secure'] = $style_path.'tree/application_js_secure.png'; -$_style['tree_page_rss_secure'] = $style_path.'tree/application_rss_secure.png'; -$_style['tree_page_pdf_secure'] = $style_path.'tree/application_pdf_secure.png'; -$_style['tree_page_word_secure'] = $style_path.'tree/application_word_secure.png'; -$_style['tree_page_excel_secure'] = $style_path.'tree/application_excel_secure.png'; - - -// Icons -$_style['icons_add'] = $style_path.'icons/save.png'; -$_style['icons_cal'] = $style_path.'icons/cal.gif'; -$_style['icons_cal_nodate'] = $style_path.'icons/cal_nodate.gif'; -$_style['icons_cancel'] = $style_path.'icons/stop.png'; -$_style['icons_close'] = $style_path.'icons/stop.png'; -$_style['icons_delete'] = $style_path.'icons/delete.png'; -$_style['icons_delete_document'] = $style_path.'icons/delete.png'; -$_style['icons_resource_overview'] = $style_path.'icons/information.png'; -$_style['icons_resource_duplicate'] = $style_path.'icons/page_white_copy.png'; -$_style['icons_edit_document'] = $style_path.'icons/save.png'; -$_style['icons_email'] = $style_path.'icons/email.png'; -$_style['icons_folder'] = $style_path.'icons/folder.gif'; -$_style['icons_home'] = $style_path.'icons/home.gif'; -$_style['icons_information'] = $style_path.'icons/information.png'; -$_style['icons_loading_doc_tree'] = $style_path.'icons/information.png'; // top bar -$_style['icons_mail'] = $style_path.'icons/email.png'; // top bar -$_style['icons_message_forward'] = $style_path.'icons/forward.gif'; -$_style['icons_message_reply'] = $style_path.'icons/reply.gif'; -$_style['icons_modules'] = $style_path.'icons/modules.gif'; -$_style['icons_move_document'] = $style_path.'icons/page_white_go.png'; -$_style['icons_new_document'] = $style_path.'icons/page_white_add.png'; -$_style['icons_new_weblink'] = $style_path.'icons/world_link.png'; -$_style['icons_preview_resource'] = $style_path.'icons/page_white_magnify.png'; -$_style['icons_publish_document'] = $style_path.'icons/clock_play.png'; -$_style['icons_refresh'] = $style_path.'icons/refresh.png'; -$_style['icons_save'] = $style_path.'icons/save.png'; -$_style['icons_set_parent'] = $style_path.'icons/stick.gif'; -$_style['icons_table'] = $style_path.'icons/table.gif'; -$_style['icons_undelete_resource'] = $style_path.'icons/b092.gif'; -$_style['icons_unpublish_resource'] = $style_path.'icons/clock_stop.png'; -$_style['icons_user'] = $style_path.'icons/user.gif'; -$_style['icons_weblink'] = $style_path.'icons/world_link.png'; -$_style['icons_working'] = $style_path.'icons/exclamation.png'; // top bar -$_style['icons_event1'] = $style_path.'icons/event1.png'; -$_style['icons_event2'] = $style_path.'icons/event2.png'; -$_style['icons_event3'] = $style_path.'icons/event3.png'; -$_style['icons_secured'] = $style_path.'icons/secured.gif'; - -// Tabs -$_style['icons_tab_preview'] = $style_path.'icons/preview.png'; - -// Indicators -$_style['icons_tooltip'] = $style_path.'icons/b02.gif'; -$_style['icons_tooltip_over'] = $style_path.'icons/b02_trans.gif'; - -// Large Icons -$_style['icons_backup_large'] = $style_path.'icons/backup.gif'; -$_style['icons_mail_large'] = $style_path.'icons/mail_generic.gif'; -$_style['icons_modules_large'] = $style_path.'icons/modules.gif'; -$_style['icons_resources_large'] = $style_path.'icons/resources.gif'; -$_style['icons_security_large'] = $style_path.'icons/security.gif'; -$_style['icons_webusers_large'] = $style_path.'icons/web_users.gif'; - -// Miscellaneous -$_style['ajax_loader'] = '

                      '.$_lang['loading_page'].'

                      Please wait

                      '; -$_style['tx'] = $style_path.'misc/_tx_.gif'; -$_style['icons_right_arrow'] = $style_path.'icons/circlerightarrow.gif'; -$_style['fade'] = $style_path.'misc/fade.gif'; -$_style['ed_save'] = $style_path.'misc/ed_save.gif'; -?> \ No newline at end of file diff --git a/manager/media/style/MODxRE/images/_session.gif b/manager/media/style/MODxRE/images/_session.gif deleted file mode 100755 index fc2560981e..0000000000 Binary files a/manager/media/style/MODxRE/images/_session.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/credits/dtree.gif b/manager/media/style/MODxRE/images/credits/dtree.gif deleted file mode 100755 index c921b195d9..0000000000 Binary files a/manager/media/style/MODxRE/images/credits/dtree.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/credits/mysql.gif b/manager/media/style/MODxRE/images/credits/mysql.gif deleted file mode 100755 index 167226919c..0000000000 Binary files a/manager/media/style/MODxRE/images/credits/mysql.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/credits/penguin.gif b/manager/media/style/MODxRE/images/credits/penguin.gif deleted file mode 100755 index 83e2d605f7..0000000000 Binary files a/manager/media/style/MODxRE/images/credits/penguin.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/credits/php.gif b/manager/media/style/MODxRE/images/credits/php.gif deleted file mode 100755 index 2a4b030cbe..0000000000 Binary files a/manager/media/style/MODxRE/images/credits/php.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/credits/webfx.gif b/manager/media/style/MODxRE/images/credits/webfx.gif deleted file mode 100755 index 28e4b0fc76..0000000000 Binary files a/manager/media/style/MODxRE/images/credits/webfx.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/add.png b/manager/media/style/MODxRE/images/icons/add.png deleted file mode 100755 index 6332fefea4..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/add.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/application_side_contract.png b/manager/media/style/MODxRE/images/icons/application_side_contract.png deleted file mode 100755 index 3585f94d61..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/application_side_contract.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/application_side_expand.png b/manager/media/style/MODxRE/images/icons/application_side_expand.png deleted file mode 100755 index 030cf7c378..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/application_side_expand.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/arrow_down.png b/manager/media/style/MODxRE/images/icons/arrow_down.png deleted file mode 100755 index 2c4e279377..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/arrow_down.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/arrow_up.png b/manager/media/style/MODxRE/images/icons/arrow_up.png deleted file mode 100755 index 1ebb193243..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/arrow_up.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/b02.gif b/manager/media/style/MODxRE/images/icons/b02.gif deleted file mode 100755 index 993bdece2c..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/b02.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/b02_trans.gif b/manager/media/style/MODxRE/images/icons/b02_trans.gif deleted file mode 100755 index 6f68a447c3..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/b02_trans.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/b06.gif b/manager/media/style/MODxRE/images/icons/b06.gif deleted file mode 100755 index 3ee7084dbf..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/b06.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/b092.gif b/manager/media/style/MODxRE/images/icons/b092.gif deleted file mode 100755 index 60b73593ac..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/b092.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/backup.gif b/manager/media/style/MODxRE/images/icons/backup.gif deleted file mode 100755 index ffcad1b964..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/backup.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/bkmanager.gif b/manager/media/style/MODxRE/images/icons/bkmanager.gif deleted file mode 100755 index b1cc21f62b..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/bkmanager.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/cal.gif b/manager/media/style/MODxRE/images/icons/cal.gif deleted file mode 100755 index 08a10639f3..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/cal.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/cal_nodate.gif b/manager/media/style/MODxRE/images/icons/cal_nodate.gif deleted file mode 100755 index 82c46bc3d8..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/cal_nodate.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/cancel.png b/manager/media/style/MODxRE/images/icons/cancel.png deleted file mode 100755 index c149c2bc01..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/cancel.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/circlerightarrow.gif b/manager/media/style/MODxRE/images/icons/circlerightarrow.gif deleted file mode 100755 index 585b4cc676..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/circlerightarrow.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/clock_play.png b/manager/media/style/MODxRE/images/icons/clock_play.png deleted file mode 100755 index fb4ebc850a..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/clock_play.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/clock_stop.png b/manager/media/style/MODxRE/images/icons/clock_stop.png deleted file mode 100755 index 6fe8a6f951..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/clock_stop.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/comment.gif b/manager/media/style/MODxRE/images/icons/comment.gif deleted file mode 100755 index 4d3a770a6a..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/comment.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/context_view.gif b/manager/media/style/MODxRE/images/icons/context_view.gif deleted file mode 100755 index dcce4f8396..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/context_view.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/copy.gif b/manager/media/style/MODxRE/images/icons/copy.gif deleted file mode 100755 index abb13f67ac..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/copy.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/date.gif b/manager/media/style/MODxRE/images/icons/date.gif deleted file mode 100755 index 0fa5303868..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/date.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/datefocus.gif b/manager/media/style/MODxRE/images/icons/datefocus.gif deleted file mode 100755 index 13f734ca71..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/datefocus.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/datenofocus.gif b/manager/media/style/MODxRE/images/icons/datenofocus.gif deleted file mode 100755 index 52e27d116f..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/datenofocus.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/delete.gif b/manager/media/style/MODxRE/images/icons/delete.gif deleted file mode 100755 index 08256dfbb6..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/delete.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/delete.png b/manager/media/style/MODxRE/images/icons/delete.png deleted file mode 100755 index 08f249365a..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/delete.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/down.gif b/manager/media/style/MODxRE/images/icons/down.gif deleted file mode 100755 index 559229e175..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/down.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/ed_save.gif b/manager/media/style/MODxRE/images/icons/ed_save.gif deleted file mode 100755 index df3aaabdb6..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/ed_save.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/email.png b/manager/media/style/MODxRE/images/icons/email.png deleted file mode 100755 index 7348aed77f..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/email.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/error.png b/manager/media/style/MODxRE/images/icons/error.png deleted file mode 100755 index 628cf2dae3..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/error.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/event1.png b/manager/media/style/MODxRE/images/icons/event1.png deleted file mode 100755 index 12cd1aef90..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/event1.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/event2.png b/manager/media/style/MODxRE/images/icons/event2.png deleted file mode 100755 index 628cf2dae3..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/event2.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/event3.png b/manager/media/style/MODxRE/images/icons/event3.png deleted file mode 100755 index c149c2bc01..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/event3.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/exclamation.png b/manager/media/style/MODxRE/images/icons/exclamation.png deleted file mode 100755 index c37bd062e6..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/exclamation.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/folder.gif b/manager/media/style/MODxRE/images/icons/folder.gif deleted file mode 100755 index aecebb5f59..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/folder.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/folder_add.png b/manager/media/style/MODxRE/images/icons/folder_add.png deleted file mode 100755 index 529fe8fe04..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/folder_add.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/folder_page_add.png b/manager/media/style/MODxRE/images/icons/folder_page_add.png deleted file mode 100755 index 09b2839fad..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/folder_page_add.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/forward.gif b/manager/media/style/MODxRE/images/icons/forward.gif deleted file mode 100755 index d2e0654e96..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/forward.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/globe.gif b/manager/media/style/MODxRE/images/icons/globe.gif deleted file mode 100755 index f22d361373..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/globe.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/home.gif b/manager/media/style/MODxRE/images/icons/home.gif deleted file mode 100755 index 50b176a777..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/home.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/information.png b/manager/media/style/MODxRE/images/icons/information.png deleted file mode 100755 index 12cd1aef90..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/information.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/layout_go.png b/manager/media/style/MODxRE/images/icons/layout_go.png deleted file mode 100755 index b84b9394f8..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/layout_go.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/link_add.png b/manager/media/style/MODxRE/images/icons/link_add.png deleted file mode 100755 index 00be352c57..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/link_add.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/logging.gif b/manager/media/style/MODxRE/images/icons/logging.gif deleted file mode 100755 index 12df115357..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/logging.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/mail_generic.gif b/manager/media/style/MODxRE/images/icons/mail_generic.gif deleted file mode 100755 index 8a5a531126..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/mail_generic.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/module.gif b/manager/media/style/MODxRE/images/icons/module.gif deleted file mode 100755 index 1862875176..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/module.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/modules.gif b/manager/media/style/MODxRE/images/icons/modules.gif deleted file mode 100755 index 1862875176..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/modules.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/new1-09.gif b/manager/media/style/MODxRE/images/icons/new1-09.gif deleted file mode 100755 index 2a5d10c640..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/new1-09.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/newdoc.gif b/manager/media/style/MODxRE/images/icons/newdoc.gif deleted file mode 100755 index 0c4c55c8e2..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/newdoc.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/next.gif b/manager/media/style/MODxRE/images/icons/next.gif deleted file mode 100755 index cbf1e6a749..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/next.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/page_white_add.png b/manager/media/style/MODxRE/images/icons/page_white_add.png deleted file mode 100755 index aa23dde374..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/page_white_add.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/page_white_copy.png b/manager/media/style/MODxRE/images/icons/page_white_copy.png deleted file mode 100755 index a9f31a278e..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/page_white_copy.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/page_white_go.png b/manager/media/style/MODxRE/images/icons/page_white_go.png deleted file mode 100755 index 7e62a924bc..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/page_white_go.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/page_white_magnify.png b/manager/media/style/MODxRE/images/icons/page_white_magnify.png deleted file mode 100755 index f6b74cc40f..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/page_white_magnify.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/prev.gif b/manager/media/style/MODxRE/images/icons/prev.gif deleted file mode 100755 index 84bae5a294..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/prev.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/preview.png b/manager/media/style/MODxRE/images/icons/preview.png deleted file mode 100755 index cf3d97f75e..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/preview.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/refresh.gif b/manager/media/style/MODxRE/images/icons/refresh.gif deleted file mode 100755 index 9199cfa9f1..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/refresh.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/refresh.png b/manager/media/style/MODxRE/images/icons/refresh.png deleted file mode 100755 index 0de26566d4..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/refresh.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/reply.gif b/manager/media/style/MODxRE/images/icons/reply.gif deleted file mode 100755 index 3c9ce14b42..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/reply.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/resources.gif b/manager/media/style/MODxRE/images/icons/resources.gif deleted file mode 100755 index ca3ec26296..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/resources.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/save.png b/manager/media/style/MODxRE/images/icons/save.png deleted file mode 100755 index 89c8129a49..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/save.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/secured.gif b/manager/media/style/MODxRE/images/icons/secured.gif deleted file mode 100755 index 95f0e0670e..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/secured.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/security.gif b/manager/media/style/MODxRE/images/icons/security.gif deleted file mode 100755 index 1f59ecf076..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/security.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/sort.png b/manager/media/style/MODxRE/images/icons/sort.png deleted file mode 100755 index 258c16c63a..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/sort.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/stop.png b/manager/media/style/MODxRE/images/icons/stop.png deleted file mode 100755 index 0cfd585963..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/stop.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/table.gif b/manager/media/style/MODxRE/images/icons/table.gif deleted file mode 100755 index 5b2980c7ea..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/table.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/trash.png b/manager/media/style/MODxRE/images/icons/trash.png deleted file mode 100755 index afe22ba99e..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/trash.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/trash_full.png b/manager/media/style/MODxRE/images/icons/trash_full.png deleted file mode 100755 index ebad933c8b..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/trash_full.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/unzip.gif b/manager/media/style/MODxRE/images/icons/unzip.gif deleted file mode 100755 index 14439628ca..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/unzip.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/user.gif b/manager/media/style/MODxRE/images/icons/user.gif deleted file mode 100755 index bdab29dbf3..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/user.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/web_users.gif b/manager/media/style/MODxRE/images/icons/web_users.gif deleted file mode 100755 index d7bc391679..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/web_users.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/icons/world_link.png b/manager/media/style/MODxRE/images/icons/world_link.png deleted file mode 100755 index b8edc1265d..0000000000 Binary files a/manager/media/style/MODxRE/images/icons/world_link.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/input-bg.gif b/manager/media/style/MODxRE/images/input-bg.gif deleted file mode 100644 index cbbbd18ba6..0000000000 Binary files a/manager/media/style/MODxRE/images/input-bg.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/_tx_.gif b/manager/media/style/MODxRE/images/misc/_tx_.gif deleted file mode 100755 index 4b2a9a8a38..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/_tx_.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/ajax-loader.gif b/manager/media/style/MODxRE/images/misc/ajax-loader.gif deleted file mode 100755 index cf9e7ccfdd..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/ajax-loader.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/button-gradient.png b/manager/media/style/MODxRE/images/misc/button-gradient.png deleted file mode 100755 index 9737cd2e8a..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/button-gradient.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/ed_save.gif b/manager/media/style/MODxRE/images/misc/ed_save.gif deleted file mode 100755 index 96f1572de6..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/ed_save.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/enter.png b/manager/media/style/MODxRE/images/misc/enter.png deleted file mode 100755 index e98b0ad9f5..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/enter.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/fade.gif b/manager/media/style/MODxRE/images/misc/fade.gif deleted file mode 100755 index dbdc7ccf58..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/fade.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/headers.jpg b/manager/media/style/MODxRE/images/misc/headers.jpg deleted file mode 100755 index 80d82a5874..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/headers.jpg and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/input-bg.gif b/manager/media/style/MODxRE/images/misc/input-bg.gif deleted file mode 100755 index cbbbd18ba6..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/input-bg.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/li.gif b/manager/media/style/MODxRE/images/misc/li.gif deleted file mode 100755 index f76f19d39f..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/li.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/line.gif b/manager/media/style/MODxRE/images/misc/line.gif deleted file mode 100755 index 5b0f5be790..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/line.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/lock.gif b/manager/media/style/MODxRE/images/misc/lock.gif deleted file mode 100755 index e6f19e000d..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/lock.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/locked.gif b/manager/media/style/MODxRE/images/misc/locked.gif deleted file mode 100755 index 3a2fe3211a..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/locked.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/login-logo.png b/manager/media/style/MODxRE/images/misc/login-logo.png deleted file mode 100644 index ff994860cb..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/login-logo.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/logo.png b/manager/media/style/MODxRE/images/misc/logo.png deleted file mode 100644 index 18b4b20135..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/logo.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/longbarbg.png b/manager/media/style/MODxRE/images/misc/longbarbg.png deleted file mode 100755 index fa3da70559..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/longbarbg.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/mainbg.gif b/manager/media/style/MODxRE/images/misc/mainbg.gif deleted file mode 100755 index 3251a4e72c..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/mainbg.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/menubg.png b/manager/media/style/MODxRE/images/misc/menubg.png deleted file mode 100755 index 0971d6c3af..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/menubg.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/minus.gif b/manager/media/style/MODxRE/images/misc/minus.gif deleted file mode 100755 index bbdcbfc58a..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/minus.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/modx-logo-4.png b/manager/media/style/MODxRE/images/misc/modx-logo-4.png deleted file mode 100755 index 357bd1dcd8..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/modx-logo-4.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/plus.gif b/manager/media/style/MODxRE/images/misc/plus.gif deleted file mode 100755 index 957b4a7710..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/plus.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/submit.png b/manager/media/style/MODxRE/images/misc/submit.png deleted file mode 100755 index 9b76495010..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/submit.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/tab.gif b/manager/media/style/MODxRE/images/misc/tab.gif deleted file mode 100755 index 787666d1e5..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/tab.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/misc/tabareabg.gif b/manager/media/style/MODxRE/images/misc/tabareabg.gif deleted file mode 100755 index 4a8bf79cbc..0000000000 Binary files a/manager/media/style/MODxRE/images/misc/tabareabg.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application.png b/manager/media/style/MODxRE/images/tree/application.png deleted file mode 100755 index 5b6d1634f4..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_404.gif b/manager/media/style/MODxRE/images/tree/application_404.gif deleted file mode 100755 index f9382a841a..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_404.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_css.png b/manager/media/style/MODxRE/images/tree/application_css.png deleted file mode 100755 index 3a29a04a6a..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_css.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_css_secure.png b/manager/media/style/MODxRE/images/tree/application_css_secure.png deleted file mode 100755 index 6a35374b9b..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_css_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_double.png b/manager/media/style/MODxRE/images/tree/application_double.png deleted file mode 100755 index 79308866f8..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_double.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_double_key.png b/manager/media/style/MODxRE/images/tree/application_double_key.png deleted file mode 100755 index d54546802f..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_double_key.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_excel.png b/manager/media/style/MODxRE/images/tree/application_excel.png deleted file mode 100755 index 1c391be303..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_excel.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_excel_secure.png b/manager/media/style/MODxRE/images/tree/application_excel_secure.png deleted file mode 100755 index 209c213871..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_excel_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_home.gif b/manager/media/style/MODxRE/images/tree/application_home.gif deleted file mode 100755 index 27343e7a28..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_home.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_hourglass.gif b/manager/media/style/MODxRE/images/tree/application_hourglass.gif deleted file mode 100755 index 9bebd58f31..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_hourglass.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_html.png b/manager/media/style/MODxRE/images/tree/application_html.png deleted file mode 100755 index 3676894b93..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_html.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_html_secure.png b/manager/media/style/MODxRE/images/tree/application_html_secure.png deleted file mode 100755 index 92ee745f7f..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_html_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_info.gif b/manager/media/style/MODxRE/images/tree/application_info.gif deleted file mode 100755 index b227884dc4..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_info.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_js.png b/manager/media/style/MODxRE/images/tree/application_js.png deleted file mode 100755 index 6dd38888bf..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_js.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_js_secure.png b/manager/media/style/MODxRE/images/tree/application_js_secure.png deleted file mode 100755 index a5fc524950..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_js_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_key.png b/manager/media/style/MODxRE/images/tree/application_key.png deleted file mode 100755 index 9d155cdc92..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_key.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_pdf.png b/manager/media/style/MODxRE/images/tree/application_pdf.png deleted file mode 100755 index 2072f495c6..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_pdf.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_pdf_secure.png b/manager/media/style/MODxRE/images/tree/application_pdf_secure.png deleted file mode 100755 index eeb7e627fe..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_pdf_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_rss.png b/manager/media/style/MODxRE/images/tree/application_rss.png deleted file mode 100755 index 98b8c3a463..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_rss.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_rss_secure.png b/manager/media/style/MODxRE/images/tree/application_rss_secure.png deleted file mode 100755 index 086ee362e2..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_rss_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_word.png b/manager/media/style/MODxRE/images/tree/application_word.png deleted file mode 100755 index 4b8d99cb2a..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_word.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_word_secure.png b/manager/media/style/MODxRE/images/tree/application_word_secure.png deleted file mode 100755 index ce8dd47457..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_word_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_xml.png b/manager/media/style/MODxRE/images/tree/application_xml.png deleted file mode 100755 index f4b59d0248..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_xml.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/application_xml_secure.png b/manager/media/style/MODxRE/images/tree/application_xml_secure.png deleted file mode 100755 index 342e31639d..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/application_xml_secure.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/deletedfolder.gif b/manager/media/style/MODxRE/images/tree/deletedfolder.gif deleted file mode 100755 index bb1ee3a073..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/deletedfolder.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/deletedpage.gif b/manager/media/style/MODxRE/images/tree/deletedpage.gif deleted file mode 100755 index 9994e9c1cb..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/deletedpage.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/empty.gif b/manager/media/style/MODxRE/images/tree/empty.gif deleted file mode 100755 index b5cf52378f..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/empty.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/folder.gif b/manager/media/style/MODxRE/images/tree/folder.gif deleted file mode 100755 index ff0ac555ad..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/folder.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/folderopen.gif b/manager/media/style/MODxRE/images/tree/folderopen.gif deleted file mode 100755 index 0b68d283a2..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/folderopen.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/globe.gif b/manager/media/style/MODxRE/images/tree/globe.gif deleted file mode 100755 index ce2c2b1897..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/globe.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/link_go.png b/manager/media/style/MODxRE/images/tree/link_go.png deleted file mode 100755 index f8e5348241..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/link_go.png and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/minusnode.gif b/manager/media/style/MODxRE/images/tree/minusnode.gif deleted file mode 100755 index 7194672201..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/minusnode.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/page-html.gif b/manager/media/style/MODxRE/images/tree/page-html.gif deleted file mode 100755 index 50d99032bf..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/page-html.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/page.gif b/manager/media/style/MODxRE/images/tree/page.gif deleted file mode 100755 index 59670e94d9..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/page.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/plusnode.gif b/manager/media/style/MODxRE/images/tree/plusnode.gif deleted file mode 100755 index b7b7f20111..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/plusnode.gif and /dev/null differ diff --git a/manager/media/style/MODxRE/images/tree/sitemap.png b/manager/media/style/MODxRE/images/tree/sitemap.png deleted file mode 100755 index ca779f3237..0000000000 Binary files a/manager/media/style/MODxRE/images/tree/sitemap.png and /dev/null differ diff --git a/manager/media/style/MODxRE/index.html b/manager/media/style/MODxRE/index.html deleted file mode 100755 index fdd3791786..0000000000 --- a/manager/media/style/MODxRE/index.html +++ /dev/null @@ -1,2 +0,0 @@ -

                      Unauthorized access

                      -You're not allowed to access file folder \ No newline at end of file diff --git a/manager/media/style/MODxRE/login.tpl b/manager/media/style/MODxRE/login.tpl deleted file mode 100644 index 7ca9e4737f..0000000000 --- a/manager/media/style/MODxRE/login.tpl +++ /dev/null @@ -1,254 +0,0 @@ - - - - MODX CMF Manager Login - - - - - - - - - -
                      -
                      - - [+OnManagerLoginFormPrerender+] -
                      - -
                      -
                      - - - - - -

                      [+login_captcha_message+]

                      -
                      [+captcha_image+]
                      - [+captcha_input+] - - - - - [+OnManagerLoginFormRender+] -
                      -
                      -
                      - - - -

                      - -

                      -
                      © 2005-2014 by the MODX. MODX™ is licensed under the GPL.
                      - - \ No newline at end of file diff --git a/manager/media/style/MODxRE/style.css b/manager/media/style/MODxRE/style.css deleted file mode 100644 index 0b1ab06833..0000000000 --- a/manager/media/style/MODxRE/style.css +++ /dev/null @@ -1,1830 +0,0 @@ -/* -------------------------[ Neutralize styles, fonts and viewport ]--- */ -* html { overflow-x :hidden; overflow-y: auto;} /* for IE6 */ -*+html { overflow-x :hidden; overflow-y: auto;} /* for IE7 */ -html, body, form, fieldset,img { - margin: 0; - padding: 0; -} -img { - border: none; -} -html { - font-size: 100.01%; - line-height: 1.5; - color: #111; -} -body { - font-family: Arial, HelveticaNeue, "Helvetica Neue", Helvetica, "Hiragino Kaku Gothic Pro", Meiryo, sans-serif; - font-size: 62.5%; - font-size: 68.75%; - font-size: 75%; - height: 100%; - color:#333333; - background: #eeeeee url(images/body.jpg); -} -img, a img { - border: 0 !important; - text-decoration: none; - padding: 0; - margin: 0; -} -h1, h2, h3, h4, h5, h6, p, pre, blockquote, ul, ol, dl, address { - margin: 0 0 .5em; - padding: 0; - font-weight: normal; -} -li, dd, blockquote { - margin: 0 0 0 1em; -} - .rtl li, .rtl dd, .rtl blockquote { - margin: 0 1em 0 0; - } - - -.file-manager td { - border-bottom: 1px solid #d5dfea; -} -.ab2 { - padding-bottom: 20px; -} -/* -------------------------[ Miscellaneous conveniences ]--- */ -.clearfix, .cls { - clear: both; - height: 0 !important; - margin: 0; - font-size: 1px; - overflow: hidden; -} -.clear { - clear: both; -} -.fail { - color: #900; - font-weight: bold; -} -.warning { - color: #222; - font-weight: bold; -} -.success { - color: #090; - font-weight: bold; -} -.contentPad { - height: 20px !important; - clear: both; -} -.hide, .skip, .printonly { - display: none; -} -.inline { - display: inline; -} -/* -------------------------[ Headers and Paragraphs ]--- */ -h1, h2, h3, h4, h5, h6, .subTitle { - font-weight: normal; -} -h1 { - font-size: 1.8em; - line-height: 35px; - margin: 15px 15px 0; -} - .rtl h1 { - margin-right: 10px; - } -h2 { - font-size: 164%; -} -h3 { - font-size: 145%; -} -h4 { - font-size: 118%; -} -h5 { - font-size: 100%; - font-weight: bold; -} -h6 { - font-size: 86%; - font-weight: bold; -} -p.caption, p.comment { - font-size: 86%; - color: #888; -} -button { - color: #821517; - font:inherit; - font-weight: bold; - width: 112px; - margin: 0 5px 0 0; - cursor: pointer; -} - .rtl button { - margin: 0 0 0 5px; - } -a, a:active, a:visited, a:link { - color: #1285A4; - text-decoration: underline; -} -a:hover { - color: #0f1e76; -} -hr { - color: #777; - background-color: #777; - height: 1px; - border: 0; -} -.split { - background: #556476 url(images/misc/line.gif) repeat-x; - height: 1px; - font-size: 0; - clear: both; - padding: 0; -} -#previewIframe { - width: 100%; - height: 400px; -} -.messageRead { - color: #333; -} -.messageUnread { - color: #3CB371; - font-weight: bold; -} -.right { - font-weight: bold; - color: #333; - float: left; - padding: 0 20px 20px; -} - .rtl .right { - float: right; - } - -/* -------------------------[ Topbar ]--- */ -#topbar { - margin: 0; - color: #333; - padding: 0 5px; -} -#topbar * { - vertical-align: middle; -} -#topbar a, -#topbar a:link, -#topbar a:visited { - font-weight: bold; - color: #AAB1B9; - text-decoration: none; -} -#topbar a:hover { - color: #fff; - text-decoration: underline; -} -#tocText { - position: absolute; - left: 3px; - top: 50px; - z-index: 1000; -} - .rtl #tocText { - right: 3px; - } -.tocTextRTL { - right: 3px; -} -#tocText, -#buildText, -#workText { - font-weight: bold; - line-height: 16px; - margin: 0 15px; - color: #FFF; -} -#tocText, -#buildText img, -#workText img { - margin: 0 5px; -} -#statusbar { - position: absolute; - right: 0; - top: 27px; -} - .rtl #statusbar { - left: 0; - } -#supplementalNav { - float: right; - background: transparent; - padding: 0 0 30px; - margin: 0; - color: #89939E; -} - .rtl #supplementalNav { - float: left; - } -#supplementalNav * { - vertical-align: bottom; -} -#supplementalNav a { - padding: 0; - margin: 0; -} -#msgCounter, #newMail { - margin: 0; - padding: 0; -} - -/* -------------------------[ Forms ]--- */ -tbody, thead, tr { - margin: 0; - padding: 0; - border: 0; -} -form label { - cursor: pointer; -} -fieldset { - border: none; -} -input, select, textarea, option, optgroup, td { - font: inherit; - color: inherit; -} - .rtl input, - .rtl select, - .rtl textarea, - .rtl td { - text-align: right; - } -optgroup { - font-style:normal; - font-weight:bold; - background-color:#ddd; -} -optgroup option { - font-weight:normal; - background-color:#fff; -} -#ta, .tmplvars textarea { -} -form select -{ - background: #F9F9F9; - border-color: #AAAAAA #DEDEDE #DEDEDE #AAAAAA; - border-style: solid; - border-width: 1px; - padding: 4px 4px 4px 2px; - margin: 0 2px 0 0; - min-height: 17px; - vertical-align: baseline; - -moz-border-radius:3px; - -webkit-border-radius:3px; - border-radius:3px; -} -form select.dropdown, form select[size="1"], form select:not([size]) { - height: 28px; -} -form input[type="text"], -form input[type="password"], -form input[type="number"], -form textarea { - background: #f9f9f9; - border-color: #999 #DDD #DDD #999; - border-style: solid; - border-width: 1px; - padding: 4px 2px 4px 4px; - margin: 0 5px 0 0; - min-height: 17px; - vertical-align: baseline; - -moz-border-radius:3px; - -webkit-border-radius:3px; - border-radius:3px; - -moz-box-shadow: 0px 1px 3px #E8E8E8 inset; - -webkit-box-shadow: 0px 1px 3px #E8E8E8 inset; - box-shadow: 0px 1px 3px #E8E8E8 inset; - } - .rtl form input[type="text"], - .rtl form textarea { - padding: 2px 2px 2px 0; - } -input[type="email"]:focus, -input[type="password"]:focus, -input[type="search"]:focus, -input[type="text"]:focus, -input[type="url"]:focus, -input[type="number"]:focus, -textarea:focus, -select:focus -{ - outline: none; - background: #fff; - border-color: green; - border-style: solid; - border-width: 1px; -} -input[type="button"], -input[type="submit"] { -background:#ededed; - border: 1px solid green; - cursor: pointer; - line-height: normal; - margin: 0 5px 3px 0; - padding: 4px 10px; - overflow: visible; - min-height: 27px; - -webkit-appearance: button; - background:-moz-linear-gradient(#f5f5f5, #DDDDDD); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#DDDDDD)); - background:-o-linear-gradient(#f5f5f5, #DDDDDD); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#f5f5f5,endColorstr=#DDDDDD); zoom:1; - -moz-border-radius:3px; - -webkit-border-radius:3px; - border-radius:3px; - } - input[type="button"]:hover, - input[type="submit"] { - border-color: green; - background:-moz-linear-gradient(#FFFFFF, #EEEEEE); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#EEEEEE)); - background:-o-linear-gradient(#FFFFFF, #EEEEEE); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF,endColorstr=#EEEEEE); zoom:1; - } - -input.checkbox, -input.radio, -input.submit, -input.button, -input[type="checkbox"], -input[type="radio"], -input[type="submit"], -input[type="button"] { - height: auto !important; - width: auto !important; - cursor:pointer;cursor:hand; -} -select { - border: 1px solid #c3c3c3 !important; - border: 0; - background: #fcfcfc; - cursor:pointer;cursor:hand; -} -.form { - padding: 15px; - border: solid 1px #ddd; -} -form input.hidden { - display: none !important; - position: absolute; -} -.form label, -.form input, -.form textarea { - display: block; - float: left; - vertical-align: middle; -} -.form label { - padding-right: 20px; - text-align: right; - width: 110px; -} - .rtl .form label, - .rtl .form input, - .rtl .form textarea { - float: right; - } - .rtl .form label { - padding-left: 20px; - text-align: left; - } -form textarea { - height: 75px; - width: 300px; -} -.form legend { - color: #04C; - font-weight: bold; - padding: 5px; -} -.form select { - display: inline; - float: left; -} - .rtl .form select { - float: right; - } -.form br { - clear: both; -} -input.submit { - display: block !important; - float: none !important; - margin: 20px 0 0 140px !important; -} - .rtl input.submit { - margin: 20px 140px 0 0 !important; - } -.form fieldset.list { - margin: 6px 6px 3px 0; -} - .rtl .form fieldset.list { - border: 0; - padding: 0 !important; - margin: 6px 0 3px 6px; - } -.form fieldset.list legend { - display: none; -} -.form fieldset.list label, -.form fieldset.list input { - padding: 0; - margin: 0 0 3px; - float: left; - display: inline; - border: 0; - background: none; - width: auto; - height: auto; -} - .rtl .form fieldset.list label, - .rtl .form fieldset.list input { - float: right; - } -.form fieldset.list label { - padding-left: 5px; - text-align: left; - width: auto; -} - -/* -------------------------[ Misc stuff ]--- */ -.sectionBody fieldset { - background: none repeat scroll 0 0 #FDFDFD; - border: 1px solid #CCCCCC; - padding: 15px !important; -} -.sectionBody legend { - font-weight: bold; - padding: 5px 15px; - background: #fff; - border: 1px solid #ccc; - -moz-box-shadow:1px 1px 3px #ccc; - -webkit-box-shadow:1px 1px 3px #ccc; - box-shadow:1px 1px 3px #ccc; - -moz-border-radius:3px; - -webkit-border-radius:3px; - border-radius:3px; -} -.sectionBody fieldset h3 { - font-size: 14px; - color: #789; - font-weight: bold; - padding-bottom: 0; - margin-bottom: 0; -} -.sectionHeader, .showHideVisible { - color: #777; - margin: 0 15px; - padding: 5px 3px 5px; - zoom:1; - font-weight: bold; - font-size: 1.2em; - border: 1px solid #ccc; - border-bottom:none; - text-shadow: 0px 1px 0px #FFF; -} - .tab-page .sectionHeader { - margin: 2px 3px 0px; - } - .rtl .sectionHeader { - direction: rtl; - padding: 5px 18px 5px 3px; - } -.sectionBody, .layerVisible { - position: relative; - display: none; - margin: 5px 15px 15px; - display: block; -} - .tab-page .sectionBody, .tab-page .section .sectionBody, .sectionBody .sectionBody { - background: none repeat scroll 0 0 #F7F7F7!important; - border: 1px solid #CCCCCC; - margin: 0 3px 15px; - padding: 7px; - } - .section .sectionBody { - margin:0 15px 15px; - padding: 7px; - padding-left:15px; - background-color:#fff; - border: 1px solid #CCCCCC; -} - .rtl .sectionBody, .layerVisible { - direction: rtl; - position: inherit; - } -.showHideVisible, .layerVisible { - margin: 0 10px 4px; -} -.sectionHeader { - padding: 5px 9px 5px 15px; - background:-moz-linear-gradient(#f5f5f5, #DDDDDD); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#DDDDDD)); - background:-o-linear-gradient(#f5f5f5, #DDDDDD); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#f5f5f5,endColorstr=#DDDDDD); zoom:1; - -moz-box-shadow:0px 1px 0px #fff inset; - -webkit-box-shadow:0px 1px 0px #fff inset; - box-shadow:0px 1px 0px #fff inset; -} - .rtl .sectionHeader { - direction: rtl; - padding: 5px 18px 5px 3px; - } -.comment { - font-size: .9em; - color: #999; -} -thead, .fancyrow { - color: #333; - height: 18px !important; - background-color: #E4E4E4; -} -thead td { - color: #333; - border-top: 1px solid #fff; -} -.fancyrow2 { - height: 18px !important; - background-color: #F0A62F; - background-position: top; - background-repeat: repeat-x; - border-bottom: 1px solid #fff; - color: #fff; -} -li { - padding: 0; - margin: 0; - list-style: disc outside url(images/misc/li.gif); -} -ul { - margin: 0 20px 0 20px; -} - .rtl ul { - margin: 0 10px 0 20px; - } -.screen { - border: 1px solid #ddd; - text-align: center; -} -a img { - border: 0; -} -.even { - background: #D9E7C2; -} -.odd { - background: #fff; -} -/* -------------------------[ end sortable table ]--- */ -.disabledImage { - width: 20px; - opacity: 0.3; - filter: alpha(opacity=30); -} -.disabledImage img { - border: 0; -} -.editorCell { - border-top: 1px solid #808080; - text-align: left; - vertical-align: baseline; -} - .rtl .editorCell { - text-align: right; - } -.row1, .row2, .row3 { - background-color: #fff; - color: #333; -} -.row2 { - background-color: #C8DAA2; -} -.row3 { - background-color: #f5f5f5; -} - -div.treeframebody { - background: #f5f5f5 url(images/subnav.jpg) !important; - -webkit-box-shadow: inset -2px 2px 6px 0px rgba(0, 0, 0, 0.1); - box-shadow: inset -2px 2px 6px 0px rgba(0, 0, 0, 0.1); -} - -#treeMenu * { - vertical-align: middle; -} -#treeHolder { - cursor: default; - height: 100%; - padding: 6px 8px 0; - line-height: 1.5em; -} -#treeHolder { - padding-left:12px; -} -#treeRoot { - margin-left:-10px; -} -#treeRoot div img { - margin: 0; - vertical-align:middle; -} - .rtl #treeRoot div img { - margin: 0; - } -#floater { - display: none; - position: absolute; - width: auto; - padding:5px; - top: 25px; - left: 0px; - background: #fff; - border: 1px solid #ccc; - z-index: 500; -} - .rtl #floater { - right: 4px - } -.rootNode, .treeNode, .treeNodeHover, .treeNodeSelected, .emptyNode { - color: #000; - cursor: pointer; - width: auto; - margin-right:2px; -} -div.treeNode { - white-space: nowrap; -} -.treeNodeSelected, -.treeNodeHover -{ - background-color: #FFFFFF; - border: 1px solid #CCC; - color: #000; - padding: 1px 2px; - margin-left:-3px; -} -.unpublished a, .unpublishedNode, .unpublish { - color: #B68282; - font-style: italic; -} -.deletedNode, .deleted { - color: #A52A2A; - text-decoration: line-through; -} -.publishedNode { - color: #222; -} -.emptyNode { - color: #aaa; - cursor: default; -} -.notInMenuNode { - color: #777; - text-decoration: none; -} -.protectedNode { - color: #aaa; -} - -#treeSplitter { - width: 10px; - height: 100%; - position: absolute; - right: -10px; -} - .rtl #treeSplitter { - left: -10px; - } -.disabledPlugin a { - color: #aaa; - text-decoration: line-through; -} -/* -------------------------[ grid style ]--- */ -.grid { - width: 100%; - background-color: #fff; - border: 1px solid silver; - border-collapse:collapse; -} -.grid th, .grid td { -padding:5px; -} -.gridHeader, .grid th { - color: #333; - font-weight: bold; - white-space:nowrap; - background-color: #d2d2d2; - text-align:left; -} -.gridItem { - background-color: #fff; - padding: 3px; -} -.gridAltItem { - background-color: #f7f7f7; - padding: 3px; -} -.grid tbody tr:hover td { - background: #E9F0F3; -} - - - -.gridRowIcon:hover { - background-color: #f5f5dc; -} -.grid a { - text-decoration: none; -} -.grid img { - vertical-align: middle; - padding-right: 4px; -} -/* -------------------------[ search bar ]--- */ -.searchbar { - width: 100%; -} -.searchtext { - height: 18px; - padding: 2px; -} -.searchbutton { - width: 22px; - padding: 5px; - text-decoration: none; - background: #fff; - border: 1px solid #D1D8DF; -} -.searchbutton:hover { - text-decoration: none; - background: #fff; - border: 1px solid #88939E; -} -.searchbutton img { - vertical-align: middle; - margin: 0; - padding: 0 -} -.searchtoolbarbtn { - text-decoration: none; - border: 1px solid #D1D8DF; - text-decoration: none!important; - background: #fff; - padding: 5px 5px 5px 2px; -} -.searchtoolbarbtn img { - vertical-align: middle; - padding: 3px; -} -.searchtoolbarbtn:hover { - text-decoration: none; - border: 1px solid #88939E; - background: #fff; -} -/* -------------------------[ home page main links ]--- */ -a.hometblink, a.hometblink:active, a.hometblink:visited, a.hometblink:link, .hometblink { - text-decoration: underline; - color: #333; - font-weight: bold; -} -a.hometblink:hover { - text-decoration: underline; - color: Gray; -} -.notice { - width: 100%; - padding: 5px; - border: 1px solid #eee; - background-color: #f5f5f5; - color: #707070; -} -#preLoader { - position: absolute; - z-index: 50000; - width: 100%; - height: 100%; - text-align: center; - vertical-align: middle; -} -.preLoaderText { - background-color: #fff; - width: 300px; - height: 150px; - padding: 50px; - border: 1px solid #039; -} -/* -------------------------[ contextmenu in editing modules ]--- */ -.contextMenu { - background: #fff; - margin: 0; - padding: 0; - border: 1px solid #039; - border-color: #eaeaea #909090 #707070 #eaeaea; - position: absolute; - z-index: 10000; -} -.cntxMnuItem { - background-image: url(images/misc/_tx_.gif); - cursor: pointer; - color: #333; - padding: 3px 16px 3px 2px; -} - .rtl .cntxMnuItem, - .rtl .cntxMnuItemDisabled { - padding: 3px 2px 3px 16px; - } -.cntxMnuItemDisabled { - cursor: default; - padding: 3px 16px 3px 2px; - color: #111; -} -.cntxMnuItemOver { - cursor: pointer; - color: #333; - background: #e3e3e3; - padding: 2px 15px 2px 1px; - border: 1px solid #c0c0c0; -} - .rtl .cntxMnuItemOver { - padding: 2px 1px 2px 15px; - } -.cntxMnuItem img, .cntxMnuItemOver img, .cntxMnuItemDisabled img { - margin: 0 8px 0 0; -} - .rtl .cntxMnuItem img, - .rtl .cntxMnuItemOver img, - .rtl .cntxMnuItemDisabled img { - margin: 0 0 0 8px; - } - -.cntxMnuItem img, .cntxMnuItemDisabled img { - opacity: .3; - filter: alpha(opacity=30); -} -.cntxMnuSeparator { - font-size: 0; - height: 1px; - background-color: silver; - overflow: hidden; - margin: 3px 1px 3px 28px; -} - .rtl .cntxMnuSeparator { - margin: 3px 28px 3px 1px; - } - -/* -------------------------[ Top Navbar of snap in top menu bar layout ]--- */ -#topMenu { - background: url("images/misc/headers.jpg") repeat scroll 0 0 #23393C; -} -#Navcontainer { - padding: 0 10px; - color: #fff; -} -#nav { - margin: 0; - padding: 0; - height: 25px; - width: 100%; - position: absolute; - top: 18px; - overflow: visible !important; -} - .rtl #nav { - right: 10px; - } -#nav ul { - display: none; - height: 26px; - position: relative; - z-index: 500; - margin: 0 0 0 -10px; - padding: 0 0 0 20px; -} - .rtl #nav ul { - margin: 0 -10px 0 0; - padding: 0 20px 0 0; - } -#nav li { - list-style: none; - float: left; - width: auto; - margin: 0 0 0 10px; - padding: 0; -} - .rtl #nav li { - float: right; - margin: 0 0 0 3px; - } -#nav li a { - color: #A4B8B6; - height: 25px; - text-decoration: none; - white-space: nowrap; - cursor: pointer; - line-height: 25px; - overflow: hidden; - padding: 0 18px; - float: none !important; - float: left; - display: block; -} -#nav li ul li a { - padding: 0 18px !important; -} -#nav li ul li a { - background: #d4d4d4; - float: left; - width: auto; -} - .rtl #nav li ul li a { - float: right; - } -#nav a:hover { - color: #fff; -} -#nav a:active { - color: #fff; -} -#nav li.active { - background: none repeat scroll 0 0 #888; - -moz-border-radius:5px 5px 0 0; - -webkit-border-radius:5px 5px 0 0; - border-radius:5px 5px 0 0; - -moz-box-shadow: 0 1px 0 #CCC inset, 1px 1px 2px rgba(0,0,0,.7); - -webkit-box-shadow: 0 1px 0 #CCC inset, 1px 1px 2px rgba(0,0,0,.7); - box-shadow: 0 1px 0 #CCC inset, 1px 1px 2px rgba(0,0,0,.7); -} -#nav li.active a { - color: #FFF; - position: relative; - text-shadow: 0 -1px 0 #333; - z-index: 999999; -} -#nav li.active a:hover { - cursor: pointer; -} -#nav li.active ul.subnav { - display: block; - position:fixed; - bottom:0; - left: 0; - border-top: 1px solid #999; - border-bottom: 1px solid #FFF; -} - #nav li.active ul.subnav { - right: 0; - } -#nav li.active ul.subnav a { - color: #fff; - font-weight: normal; - background: #657587; - cursor: pointer; - border-left: none; -} -#nav li.active ul.subnav li { - margin: 0; -} -#nav li.active ul.subnav a:hover { - color: #fff; - background-color:#777; - background:-moz-linear-gradient(#999999, #444444); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#999999), to(#444444)); - background:-o-linear-gradient(#999999, #444444); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#999999,endColorstr=#444444);/*ie8 ?*/ - background: -ms-linear-gradient(top, #999999, #444444); /*ie9*/ - background: linear-gradient(to bottom, #999999, #444444);/*ie10*/ - zoom:1; -} -#nav li.active ul.subnav a:active { - color: #ccc; -} -#nav li.active ul.subnav, -#nav li.active ul.subnav a { - background-color:#777; - background:-moz-linear-gradient(#777777, #444444); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#777777), to(#444444)); - background:-o-linear-gradient(#777777, #444444); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#777777,endColorstr=#444444);/*ie8 ?*/ - background: -ms-linear-gradient(top, #777777, #444444); /*ie9*/ - background: linear-gradient(to bottom, #777777, #444444);/*ie10*/ - zoom:1; -} - -/* -------------------------[ Contextual Menu used in the Tree Menu ]--- */ -#mx_contextmenu { - position: absolute; - height: auto; - visibility: hidden; - z-index: 10000; - width: 170px; - background-color: #fff; - box-shadow: inset 0px 5px 10px 0px rgba(70, 70, 70, 0.1); - margin: 0; - padding-bottom:10px; - border: 1px solid #ededed; - border-right-color: #dcdcdc; - border-bottom-color: #dcdcdc; - overflow: hidden; - line-height: 11px; - box-shadow: 2px 2px 15px #eaeaea; - -moz-box-shadow: 2px 2px 15px #eaeaea; - -webkit-box-shadow: 2px 2px 20px #eaeaea; -} -#mx_contextmenu .menuLink { - cursor: pointer; - color: #222; - padding: 3px 5px 3px 4px; -} -#mx_contextmenu .menuLink:hover { - background: #DDE4EB; - border: 1px solid #fdfdfd; - border-bottom-color: #dcdcdc; - color: #333; -} -#mx_contextmenu .menuLink:hover, -#mx_contextmenu .menuLinkDisabled { - cursor: pointer; - padding: 2px 4px 2px 3px; -} -#mx_contextmenu .menuLinkDisabled { - cursor: default; - color: #787878; -} -#mx_contextmenu .menuLink img, -#mx_contextmenu .menuLink:hover img, -#mx_contextmenu .menuLinkDisabled img { - margin-right: 5px; -} -#mx_contextmenu .menuLink img, -#mx_contextmenu .menuLinkDisabled img { - opacity: .3; - filter: alpha(opacity=30); -} -#mx_contextmenu .menuLink:hover img { - opacity: 1; - filter: alpha(opacity=100); -} - -#mx_contextmenu #nameHolder { - color: #fff; - text-align: left; - cursor: default; - font-weight: bold; - padding: 6px 4px; - margin-bottom: 3px; - background-color: #86939E; - background-repeat:repeat-x; - text-shadow: 0px -1px 0px #222; - background:-moz-linear-gradient(#8aae4b, #66901b); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#8aae4b), to(#66901b)); - background:-o-linear-gradient(#8aae4b, #66901b); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#8aae4b,endColorstr=#66901b); - background: -ms-linear-gradient(top, #8aae4b, #66901b); /*ie9*/ - background: linear-gradient(to bottom, #8aae4b, #66901b);/*ie10*/ - zoom:1; -} -#mx_contextmenu .seperator { - font-size: 0; - height: 1px; - background-color: silver; - overflow: hidden; - margin: 3px 1px 3px 28px; -} - - .rtl #mx_contextmenu .menuLink { - padding: 3px 2px 3px 16px; } - .rtl #mx_contextmenu .menuLink:hover, - .rtl #mx_contextmenu .menuLinkDisabled { - padding: 2px 1px 2px 15px;} - .rtl #mx_contextmenu .menuLink img, - .rtl #mx_contextmenu .menuLink:hover img, - .rtl #mx_contextmenu .menuLinkDisabled img { - margin-right: 8px; } - .rtl #mx_contextmenu #nameHolder { - text-align: right; - } - .rtl #mx_contextmenu .seperator { - margin: 3px 28px 3px 1px; - } - - -/* -------------------------[ Settings Table ]--- */ -.settings { - width: 600px; -} -.settings tr { - width: 100% !important; -} -.settings td, .settings th { - background: transparent; -} -.settings th { - width: 200px !important; - text-align: left; - color: #555; - font-size: inherit; -} - .rtl .settings th {text-align: right;} -.filelist td { - border-bottom: 1px solid #C2C3CF; -} -/* -------------------------[ Tabs ]--- */ -.dynamic-tab-pane-control.tab-pane { - position: relative; - width: 100%; -} - .rtl .dynamic-tab-pane-control.tab-pane { - direction: rtl; - } -.dynamic-tab-pane-control .tab-row .tab { - color: #313131; - font-size: 1em; - cursor: pointer; - display: inline; - margin: 3px 2px 1px 0; - float: left; - padding: 3px 10px; - z-index: 1; - position: relative; - top: 1px; - border: 1px solid #658f1a; - background: none repeat scroll 0 0 #66901b; - text-shadow: 0px -1px 0px #2B5F0C; - border-radius:5px 5px 0 0; - -moz-border-radius:5px 5px 0 0; - -webkit-border-radius:5px 5px 0 0; - -ms-border-radius:0; - background:-moz-linear-gradient(#8aae4b, #66901b); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#8aae4b), to(#66901b)); - background:-o-linear-gradient(#8aae4b, #66901b); -} - .rtl .dynamic-tab-pane-control .tab-row .tab { - margin: 3px 5px 1px -3px; - float: right; - padding: 2px 15px 3px; - } - -.dynamic-tab-pane-control .tab-row .tab.hover { - text-decoration: none; - background: none repeat scroll 0 0 #749c2f; - background:-moz-linear-gradient(#749c2f, #4b7109); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#749c2f), to(#4b7109)); - background:-o-linear-gradient(#749c2f, #4b7109); -} -.dynamic-tab-pane-control .tab-row .tab.selected { - color: #333; - z-index: 999; - top: 1px; - border-width: 1px; - border-bottom-style: solid; - border-color: #ffcc72 #AAA #FFF #AAA; - -moz-border-radius:5px 5px 0 0; - -webkit-border-radius:5px 5px 0 0; - border-radius:5px 5px 0 0; - border-width:1px 1px 0; - background: #fff; - background-color: #fff; - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#ffffff,endColorstr=#ffffff); -} -.dynamic-tab-pane-control .tab-row .tab.selected span { - color: #111; - background-color:#fff; - text-shadow: none; -} -.dynamic-tab-pane-control .tab-row .tab span { - color: #fff; - text-decoration: none; -} -.dynamic-tab-pane-control .tab-row .tab .alert { - color:#ffcc72; -} -.dynamic-tab-pane-control .tab-row .tab.selected .alert { - color:#ccc; -} -.dynamic-tab-pane-control .tab-page { - clear: both; - background: #fff; - z-index: 2; - position: relative; - top: -2px; - padding: 20px 15px 14px !important; -} - .rtl .dynamic-tab-pane-control .tab-page { - position: inherit; /* critical adjustment for IE ul li Proper RTL demonstration */ - } -.dynamic-tab-pane-control .tab-row { - z-index: 1; - white-space: nowrap; -} -.dynamic-tab-pane-control ul { - padding-left: 10px; - padding-right: 10px; - padding-bottom: 5px; -} -.dynamic-tab-pane-control li { - padding-left: 5px; - padding-right: 5px; -} -/* -------------------------[ Tree buttons ]--- */ -.treeButton { - display: block; - cursor: pointer; - cursor: hand; - color: #333; - border: 1px; - border-bottom-color: #809c47; - padding: 3px 5px; - white-space: nowrap; - vertical-align: middle; -} -.treeButton:hover { - border: 1px solid #88939E; - padding: 2px 4px; - background: #fff; -} -.treeButtonDisabled { - cursor: default; - border: 1px solid #657587; - padding: 2px 4px; - color: #777; - border-width: 0; - opacity: .5; - filter: alpha(opacity=50); -} -/* -------------------------[ Welcome Page ]--- */ -a.hometblink, a.hometblink img { - border: 0 !important; - text-decoration: none !important; -} -.wm_button { - float: left; - margin: 0 5px 2px 20px; - text-align: center; -} - .rtl .wm_button { - float: right; - margin: 0 5px 2px 6px; - } - -/* -------------------------[ Welcome Page ]--- */ -#mainActionPages { - background: #f5f5f5 url(images/misc/mainbg.gif) repeat-x top; -} -.tab-page { - border: 1px solid #AAA; - border-radius: 0 0 5px 5px; -} -.tab-page img { - vertical-align: middle; -} -.sectionBody .tab-page { - padding: 20px 15px 15px !important; -} -/* -------------------------[ New sortable table class ]--- */ -.sortabletable { - width:100%; - border-collapse:collapse; -} -.sortabletable thead tr { - color: #333; - font-weight: bold; - white-space:nowrap; - background-color: #d2d2d2; - text-align:left; -} -.sortabletable tr { - background: #fff; -} -.sortabletable tr.even { - background: #f7f7f7; -} -.sortabletable tbody tr:hover { - background: #E9F0F3; -} -.sortabletable td, .sortabletable th { - padding: 5px!important; - border: 1px solid #ccc; -} -.sortabletable th { - text-align: left; - cursor: pointer; - color: #333; -} - .rtl .sortabletable th { - text-align: right; - } -.sortabletable th a { - text-decoration: none; - color: #333; -} -.sortabletable th:active { - background: #ccc; - padding: 3px 4px 1px 6px; -} - .rtl .sortabletable th:active { - padding: 3px 6px 1px 4px; - } -/* -------------------------[ Pagination table ]--- */ -#max-display-records { - margin: 10px 0; -} -#pagination { - margin: 10px 0; -} -#pagination ul { - margin: 10px 0; - display: inline; -} -#pagination li { - list-style: none; - display: inline; - width: 15px; - margin: 0 0 0 1px; -} -#pagination li a { - padding: 3px 8px; - border: 1px solid #D9E7C2; - text-decoration: none; - color: #333; -} -#pagination li.currentPage a, #pagination li a:hover { - color: #060; - border: 1px solid #060; -} - -fieldset.tab-page { - border: 1px solid #e4e4e4!important; -} -h2#edit_document_title { - font-size: 15px; - color: #f5f5f5; - width: 100%; - border-bottom: none; - padding: 5px 10px; -} -fieldset#preview h2.tab { - float: right; -} -/* -------------------------[ Action Buttons ]--- */ -#actions { - background: none repeat scroll 0 0 rgba(230, 230, 230, 0.8); - height: 25px; - margin: 0 -1px 0 0; - padding: 10px 5px 14px 10px; - position: fixed; - right: 16px; - text-align: right; - top: 1px; - z-index: 100; - -moz-border-radius:5px; - -webkit-border-radius:5px; - border-radius:5px; -} -select#stay { - margin-top: -7px; - padding: 6px 5px 6px 2px; -} -.rtl #actions { - left: 10px; - text-align: left; -} -ul.actionButtons { - margin: 0; - padding: 0; /* accommodate border on buttons - */ - background: none; - min-height: 40px; - width: auto; - white-space: nowrap; - padding-top: 5px; -} -.actionButtons li { - list-style: none; - margin-right: 3px; - padding: 0; - float: left; -} -.actionButtons img { - vertical-align: top; - margin-top: 1px; - filter: alpha(opacity=30); - -moz-opacity: 0.3; - opacity: 0.3; -} -.actionButtons:hover img { - filter: alpha(opacity=100); - -moz-opacity: 1; - opacity: 1; -} -.actionButtons a { - border: 1px solid #BBB; - border-radius: 3px 3px 3px 3px; - color: #333; - font-weight: bold; - outline: medium none; - padding: 7px 8px 7px 4px; - text-decoration: none; - vertical-align: top; - white-space: nowrap; - text-shadow: 0px 1px 0px #FFF; - -moz-box-shadow:1px 1px 2px #ccc; - -webkit-box-shadow:1px 1px 2px #ccc; - box-shadow:1px 1px 2px #ccc; - background:-moz-linear-gradient(#FFFFFF, #E0E0E0); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#E0E0E0)); - background:-o-linear-gradient(#FFFFFF, #E0E0E0); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF,endColorstr=#E0E0E0); zoom:1; -} -.actionButtons a:hover { - border-color: #999; - -moz-box-shadow:1px 1px 2px #aaa; - -webkit-box-shadow:1px 1px 2px #aaa; - box-shadow:1px 1px 2px #aaa; - -webkit-transition: all .3s ease; - -moz-transition: all .3s ease; - -o-transition: all .3s ease; - transition: .3s ease; - background:-moz-linear-gradient(#FFFFFF, #F5F5F5); - background:-webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#F5F5F5)); - background:-o-linear-gradient(#FFFFFF, #F5F5F5); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF,endColorstr=#F5F5F5); zoom:1; -} -.actionButtons a:active { - background-color: #92aac4; - background-position: bottom left; - -webkit-box-shadow: 0 0 10px #b8c7d6; - -moz-box-shadow: 0 0 10px #b8c7d6; - box-shadow: 0 0 10px #b8c7d6; -} -.actionButtons li.primary a, -.actionButtons a.primary, -.actionButtons a.default { - color: #fff; - border-color:#658f1a; - text-shadow:0 -1px 0 #2B5F0C; - background:#66901b; - background:-moz-linear-gradient(#8aae4b,#66901b); - background:-webkit-gradient(linear,0 0,0 100%,from(#8aae4b),to(#66901b)); - background:-o-linear-gradient(#8aae4b,#66901b); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#8aae4b,endColorstr=#66901b); -} -.actionButtons a.disabled { - border: 1px solid #657587; - padding: 2px 4px; - color: #777; - border-width: 0; -} -.actionButtons a.disabled img { - opacity: .3; - filter: alpha(opacity=30); -} -.actionButtons .plus{ - margin:0 2px 0 5px; - color: #3b454f; - font-weight: bold; -} - /* -* Generic styles for all form elements - */ -form#mutate dt, -form#mutate dd { - margin-bottom: 10px; - } -form#mutate dt label, -form#mutate dt h3.label { - font-size: 1em; - display: inline; - float: left; - width: 200px; - color: #821517!important; - font-weight: bold; - } -form#mutate dd { - margin-left: 210px; -} -form#mutate input.disabled { - background-color: #f5f5f5 !important; -} - -form#mutate select.inputBox, -form#mutate input, -form#mutate textarea { - width: 300px; -} -form#mutate select { - width: 308px; -} -#tv_body input[type="text"], -#tv_body input[type="password"], -#tv_body input[type="number"], -#tv_body textarea -{ - background: none repeat scroll 0 0 #FFFFFF; - max-width: 98% !important; -} -form#mutate textarea.tv_textareamini { - height: 100px; - width: 300px; - overflow-y: scroll; -} -form#mutate textarea.tv_textarea { - height: 100px; - width: 100%; - overflow-y: scroll; -} - -/* -* Styling for datepicker elements in settings and templavars -*/ -form#mutate input.date, -form#mutate input.tvdate { - margin-right: 10px; -} - -/* -* Individual Styles for fieldset#settings_page_settings -*/ -form#mutate fieldset#settings_page_settings input#pub_date, -form#mutate fieldset#settings_page_settings input#unpub_date { - width: 150px; -} -form#mutate fieldset#settings_page_settings select { - width: 155px; -} -/* -* Individual Styles for fieldset#meta_keywords -*/ -form#mutate fieldset#meta_keywords { -} -form#mutate fieldset#meta_keywords { -} -form#mutate fieldset#meta_keywords select.inputBox { - display: block; - margin-bottom: 0; -} -form#mutate fieldset#meta_keywords dl.keywords { - float: left; - margin-right: 30px; -} -form#mutate fieldset#meta_keywords dl.metatags { - float: left; -} -form#mutate fieldset#meta_keywords dl dt label { - width: 100px; -} -form#mutate fieldset#meta_keywords dl dd { - margin-left: 110px; -} -/* -* Individual Styles for fieldset#preview -*/ -fieldset#preview iframe { - width: 100%; - margin: 0 auto; - border: 1px solid #f5f5f5; -} - -/* -* Individual Styles for fieldset#document_content -*/ - -fieldset#document_content textarea#ta { - width: 100%; - height: 400px; - font-size: 1em; -} - -/* -* Individual Styles for fieldset#access_permissions -*/ -fieldset#access_permissions dt label { - width: 200px; -} -fieldset#access_permissions dd { - margin-left: 210px; -} -fieldset#access_permissions dl dd ul li { - list-style-type: none; -} - -/* ppb: -* fieldset#settings_templvars -*/ -fieldset#settings_templvars .tv_url_select { - width: 70px; - margin-right: 10px; -} -fieldset#settings_templvars .tv_url_input { - width: 220px; -} -fieldset#settings_templvars dd.tvCheckBox label input, -fieldset#settings_templvars dd.tvRadioOptions label input { - margin-right: 10px; -} -fieldset#settings_templvars .tv_date { - width: 150px; -} -form#mutate select.tv_url_select { - padding: 5px 3px; -} - -/* ppb: -* Style mootools tooltips -*/ - -.custom-tip { - color: #333; - width: 175px; - z-index: 13000; - border: 1px solid #cccccc; - background: #fff; - padding: 5px; -} - -.custom-title { - font-weight: bold; - font-size: 1em; - margin: 0; - color: #fff; - padding: 6px 6px 4px; - background: #758CA2 url(images/misc/tab.gif); -} - -.custom-text { - font-size: 1em; - padding: 4px 8px 8px; - background: #fff; -} -/* ppb: -* Some styling for legacy mode fieldsets -*/ - -fieldset.legacy { - background: #fff; - margin: 10px; - padding: 10px; - border: 1px solid #e4e4e4!important; - position: relative; - margin-bottom: 35px; -} - -fieldset.legacy h2 { - width: 100%; - background: #f5f5f5; - margin: -10px -10px 15px -10px; - padding: 0 10px; - border-bottom: 1px solid #e4e4e4!important; -} - -/* -------------------------[ date picker ]--- */ -input.DatePicker, #mutate input.DatePicker, #userPane input.DatePicker, #webUserPane input.DatePicker, input#datefrom.DatePicker, input#dateto.DatePicker { - width: 150px; - padding: 3px 3px 3px 24px; - border: 1px solid #b4cde4; - background: #fff url(images/icons/datenofocus.gif) no-repeat top left; - cursor: pointer; - ime-mode:disabled; -} -input:focus.DatePicker, #mutate input:focus.DatePicker, #userPane input:focus.DatePicker, #webUserPane input:focus.DatePicker, input#datefrom:focus.DatePicker, input#dateto:focus.DatePicker { - background: #fffce9 url(images/icons/datefocus.gif) no-repeat top left; - cursor:text; -} -.dp_container { - position: relative; - padding: 0; - z-index: 500; -} -.dp_cal { - background-color: #fff; - border: 1px solid #0070bf; - position: absolute; - width: 177px; - top: 24px; - left: 0; - margin: 0px 0px 3px 0px; -} -.dp_cal table { - width: 100%; - border-collapse: collapse; - border-spacing: 0; -} - -.dp_cal p { - width: 177px; -} - -#mutate .dp_cal input.cal_timeTextBox, .dp_cal input.cal_timeTextBox { - display: block; - text-align: center; - width: 60px; - margin: 0 auto; - margin-top: 3px; -} - -.dp_cal select { - margin: 2px 3px; - font-size: 1em; -} -.dp_cal select option { - padding: 1px 3px; -} -.dp_cal th, -.dp_cal td { - width: 14.2857%; - text-align: center; - font-size: 1em; - padding: 2px 0; -} -.dp_cal th { - border: solid #aad4f2; - border-width: 1px 0; - color: #797774; - background: #daf2e6; - font-weight: bold; -} -.dp_cal td { - cursor: pointer; -} -.dp_cal thead th { - background: #d9eefc; -} -.dp_cal td.dp_roll { - color: #333; - background: #fff6bf; -} -/* -------------------------[ must have this for the IE6 select box hiding ]--- */ -.dp_hide { - visibility: hidden; -} -.dp_empty { - background: #eee; -} -.dp_today { - background: #daf2e6; -} -.dp_selected { - color: #fff; - background: #328dcf; -} - -/* System Alert Box ----------------------------------------------------------- */ -.cbOverlay {background-color: #000;z-index: 50000;} -.cbContainer {padding:5px;background-color:white;z-index: 50000;} -.cbBox h3 {color:#000;background: #bee860 url(images/misc/fade.gif) repeat-x top;padding:5px;font-weight:bold;} -.cbBox p {margin:3px;} -.cbBox .cbButtons {text-align:center;} -.sysAlert {width: 500px;height: 330px;white-space: nowrap;overflow: auto;} - -.phptextarea {font-family: 'Courier New','Courier', monospace;} - -/* Custom */ -/* normalize some td paddings */ -#tabTemplate tbody td, -.sectionBody td, -.sectionBody th { - padding: 1px 5px; - text-align:left; - vertical-align: top; -} -.sectionBody .displayparams, .sectionBody .permissiongroup { - margin-bottom: 3px; - background-color: #eee; - border-collapse: separate; - border-spacing: 1px; -} -.sectionBody .displayparams th, .sectionBody .displayparams td { - padding: 2px 4px; -} -.sectionBody .displayparams thead td, .sectionBody .permissiongroup thead td { - border-top: none; -} -.sectionBody .permissiongroup input, .sectionBody .permissiongroups input { - width: 200px; -} - -/* replace warning red color in tabs */ -strong[style*='color:#EF1D1D'] { - color: yellow !important; - } - .selected strong[style*='color:#ffeb00'] { - color: red !important; - } - -#tabEvents table, #tabEvents td {padding:2px;} - -code {font-size:inherit;font-family: 'Courier New','Courier', monospace;background-color:#eee;border:1px solid #ccc;padding:1px 2px;} diff --git a/manager/media/style/MODxRE/style.php b/manager/media/style/MODxRE/style.php deleted file mode 100755 index a99e906343..0000000000 --- a/manager/media/style/MODxRE/style.php +++ /dev/null @@ -1,126 +0,0 @@ -config['manager_theme']/style.php - * Function: Manager style variables for images and icons. - * Encoding: UTF-8 - * Credit: icons by Mark James of FamFamFam http://www.famfamfam.com/lab/icons/ - * Date: 18-Mar-2010 - * Version: 1.1 - * MODX version: 1.0.3 -*/ -$style_path = 'media/style/' . $modx->config['manager_theme'] . '/images/'; - -// Tree Menu Toolbar -$_style['add_doc_tree'] = ''; -$_style['add_weblink_tree'] = ''; -$_style['collapse_tree'] = ''; -$_style['empty_recycle_bin'] = ''; -$_style['empty_recycle_bin_empty'] = ''; -$_style['expand_tree'] = ''; -$_style['hide_tree'] = ''; -$_style['refresh_tree'] = ''; -$_style['show_tree'] = $style_path.'icons/application_side_expand.png'; -$_style['sort_tree'] = ''; - - -// Tree Icons -$_style['tree_deletedpage'] = $style_path.'tree/deletedpage.gif'; -$_style['tree_folder'] = $style_path.'tree/application_double.png'; /* folder.png */ -$_style['tree_folderopen'] = $style_path.'tree/application_double.png'; /* folder-open.png */ -$_style['tree_folder_secure'] = $style_path.'tree/application_double_key.png'; -$_style['tree_folderopen_secure'] = $style_path.'tree/application_double_key.png'; -$_style['tree_globe'] = $style_path.'tree/globe.gif'; -$_style['tree_linkgo'] = $style_path.'tree/link_go.png'; -$_style['tree_minusnode'] = $style_path.'tree/minusnode.gif'; -$_style['tree_page'] = $style_path.'tree/application.png'; -$_style['tree_page_home'] = $style_path.'tree/application_home.gif'; -$_style['tree_page_404'] = $style_path.'tree/application_404.gif'; -$_style['tree_page_hourglass'] = $style_path.'tree/application_hourglass.gif'; -$_style['tree_page_info'] = $style_path.'tree/application_info.gif'; -$_style['tree_page_blank'] = $style_path.'tree/application.png'; -$_style['tree_page_css'] = $style_path.'tree/application_css.png'; -$_style['tree_page_html'] = $style_path.'tree/application_html.png'; -$_style['tree_page_xml'] = $style_path.'tree/application_xml.png'; -$_style['tree_page_js'] = $style_path.'tree/application_js.png'; -$_style['tree_page_rss'] = $style_path.'tree/application_rss.png'; -$_style['tree_page_pdf'] = $style_path.'tree/application_pdf.png'; -$_style['tree_page_word'] = $style_path.'tree/application_word.png'; -$_style['tree_page_excel'] = $style_path.'tree/application_excel.png'; -$_style['tree_plusnode'] = $style_path.'tree/plusnode.gif'; -$_style['tree_showtree'] = ''; -$_style['tree_weblink'] = $style_path.'tree/link_go.png'; - -$_style['tree_page_secure'] = $style_path.'tree/application_key.png'; -$_style['tree_page_blank_secure'] = $style_path.'tree/application_html_secure.png'; -$_style['tree_page_css_secure'] = $style_path.'tree/application_css_secure.png'; -$_style['tree_page_html_secure'] = $style_path.'tree/application_html_secure.png'; -$_style['tree_page_xml_secure'] = $style_path.'tree/application_xml_secure.png'; -$_style['tree_page_js_secure'] = $style_path.'tree/application_js_secure.png'; -$_style['tree_page_rss_secure'] = $style_path.'tree/application_rss_secure.png'; -$_style['tree_page_pdf_secure'] = $style_path.'tree/application_pdf_secure.png'; -$_style['tree_page_word_secure'] = $style_path.'tree/application_word_secure.png'; -$_style['tree_page_excel_secure'] = $style_path.'tree/application_excel_secure.png'; - - -// Icons -$_style['icons_add'] = $style_path.'icons/save.png'; -$_style['icons_cal'] = $style_path.'icons/cal.gif'; -$_style['icons_cal_nodate'] = $style_path.'icons/cal_nodate.gif'; -$_style['icons_cancel'] = $style_path.'icons/stop.png'; -$_style['icons_close'] = $style_path.'icons/stop.png'; -$_style['icons_delete'] = $style_path.'icons/delete.png'; -$_style['icons_delete_document'] = $style_path.'icons/delete.png'; -$_style['icons_resource_overview'] = $style_path.'icons/information.png'; -$_style['icons_resource_duplicate'] = $style_path.'icons/page_white_copy.png'; -$_style['icons_edit_document'] = $style_path.'icons/save.png'; -$_style['icons_email'] = $style_path.'icons/email.png'; -$_style['icons_folder'] = $style_path.'icons/folder.gif'; -$_style['icons_home'] = $style_path.'icons/home.gif'; -$_style['icons_information'] = $style_path.'icons/information.png'; -$_style['icons_loading_doc_tree'] = $style_path.'icons/information.png'; // top bar -$_style['icons_mail'] = $style_path.'icons/email.png'; // top bar -$_style['icons_message_forward'] = $style_path.'icons/forward.gif'; -$_style['icons_message_reply'] = $style_path.'icons/reply.gif'; -$_style['icons_modules'] = $style_path.'icons/modules.gif'; -$_style['icons_move_document'] = $style_path.'icons/page_white_go.png'; -$_style['icons_new_document'] = $style_path.'icons/page_white_add.png'; -$_style['icons_new_weblink'] = $style_path.'icons/world_link.png'; -$_style['icons_preview_resource'] = $style_path.'icons/page_white_magnify.png'; -$_style['icons_publish_document'] = $style_path.'icons/clock_play.png'; -$_style['icons_refresh'] = $style_path.'icons/refresh.png'; -$_style['icons_save'] = $style_path.'icons/save.png'; -$_style['icons_set_parent'] = $style_path.'icons/layout_go.png'; -$_style['icons_table'] = $style_path.'icons/table.gif'; -$_style['icons_undelete_resource'] = $style_path.'icons/b092.gif'; -$_style['icons_unpublish_resource'] = $style_path.'icons/clock_stop.png'; -$_style['icons_user'] = $style_path.'icons/user.gif'; -$_style['icons_weblink'] = $style_path.'icons/world_link.png'; -$_style['icons_working'] = $style_path.'icons/exclamation.png'; // top bar -$_style['icons_event1'] = $style_path.'icons/event1.png'; -$_style['icons_event2'] = $style_path.'icons/event2.png'; -$_style['icons_event3'] = $style_path.'icons/event3.png'; -$_style['icons_secured'] = $style_path.'icons/secured.gif'; - -// Tabs -$_style['icons_tab_preview'] = $style_path.'icons/preview.png'; - -// Indicators -$_style['icons_tooltip'] = $style_path.'icons/b02.gif'; -$_style['icons_tooltip_over'] = $style_path.'icons/b02_trans.gif'; - -// Large Icons -$_style['icons_backup_large'] = $style_path.'icons/backup.gif'; -$_style['icons_mail_large'] = $style_path.'icons/mail_generic.gif'; -$_style['icons_modules_large'] = $style_path.'icons/modules.gif'; -$_style['icons_resources_large'] = $style_path.'icons/resources.gif'; -$_style['icons_security_large'] = $style_path.'icons/security.gif'; -$_style['icons_webusers_large'] = $style_path.'icons/web_users.gif'; - -// Miscellaneous -$_style['ajax_loader'] = '

                      '.$_lang['loading_page'].'

                      Please wait

                      '; -$_style['tx'] = $style_path.'misc/_tx_.gif'; -$_style['icons_right_arrow'] = $style_path.'icons/circlerightarrow.gif'; -$_style['fade'] = $style_path.'misc/fade.gif'; -$_style['ed_save'] = $style_path.'misc/ed_save.gif'; - -?> \ No newline at end of file diff --git a/manager/media/style/MODxRE/welcome.tpl b/manager/media/style/MODxRE/welcome.tpl deleted file mode 100644 index 2c12286196..0000000000 --- a/manager/media/style/MODxRE/welcome.tpl +++ /dev/null @@ -1,100 +0,0 @@ - -
                      - -
                      - - - -
                      -[+OnManagerWelcomePrerender+] -

                      [+site_name+]

                      - -
                      [+welcome_title+]
                      -
                      - - - - - - - - -
                      -

                      [+site_name+]

                      - [+welcome_title+] -
                      - [+logo_slogan+] -

                      -
                      -[+OnManagerWelcomeHome+] - [+SecurityIcon+] - [+WebUserIcon+] - [+ModulesIcon+] - [+ResourcesIcon+] - [+BackupIcon+] -

                      - [+MessageInfo+] -
                      -
                      -
                      - - -
                      -

                      [+settings_config+]

                      - -
                      [+configcheck_title+]
                      -
                      - - [+config_check_results+] -
                      -
                      - - -
                      -

                      [+modx_news+]

                      - -
                      [+modx_news_title+]
                      - [+modx_news_content+] -
                      -
                      - - -
                      -

                      [+modx_security_notices+]

                      - -
                      [+modx_security_notices_title+]
                      - [+modx_security_notices_content+] -
                      -
                      - - -
                      -

                      [+recent_docs+]

                      - -
                      [+activity_title+]
                      - [+RecentInfo+] -
                      -
                      - - -
                      -

                      [+info+]

                      - -
                      [+yourinfo_title+]
                      - [+UserInfo+] -
                      -
                      - - -
                      -

                      [+online+]

                      - -
                      [+onlineusers_title+]
                      - [+OnlineInfo+] -
                      -
                      -[+OnManagerWelcomeRender+] -
                      -
                      \ No newline at end of file diff --git a/manager/media/style/MODxRE2/dashboard/css/dashboard.css b/manager/media/style/MODxRE2/dashboard/css/dashboard.css new file mode 100644 index 0000000000..d6e106e0d9 --- /dev/null +++ b/manager/media/style/MODxRE2/dashboard/css/dashboard.css @@ -0,0 +1,240 @@ +body {-moz-osx-font-smoothing: grayscale;} +.dashboard { + padding-top: 5px; +} +.dashboard * { + font-size: 13px; +} +.dashboard h1 { + font-size : 24px; +} +.dashboard li, div#idShowHideSocialBox.sectionBody > div.btn-group.ope > ul.dropdown-menu > li { + list-style : none; +} +.dashrow { + clear : both; +} +.dashboard_header {margin:0; padding-right:0;} +.dashboard_search {padding-right: -16px%;} + +.overflowscroll { + max-height : 270px; + overflow-y : auto!important; +} +div.widget-stage.sectionBody { + margin: 0; +} +div.widget-stage.sectionBody em { + font-style : italic; +} +div.widget-stage.sectionBody strong { + font-weight : bold; +} +.widget-stage .sectionBody ul li a { + display : inline; + font-size : 14px; + font-weight : 700; + padding-left : 0; + text-decoration : none; +} +div.widget-stage.sectionBody li, div.widget-stage.sectionBody li, div.widget-stage.sectionBody ul li { + border-bottom : 1px dotted #dcdcdc; + display : block; + list-style-type : none; + padding : 5px 0 5px 5px; +} +div.widget-stage.sectionBody li span a { + font-size : 13px; + font-weight : bold; + text-decoration: none; +} +.disabled { + background:#c8c8c8; + border-color: #c8c8c8; +} + + a.deleted { + color:#ca2626; + text-decoration: line-through; +} + a.unpublished { + color:#999999; + font-style: italic; +} +[data-toggle="collapse"] {cursor: pointer;} +.hiddenRow { + padding: 0 !important; + border-top:0 !important; +} +.hiddenRow:hover { + background:#FFF; +} +.resource-overview-accordian {padding-bottom:3px;border: 1px solid #ededed; } +.panel-custom > .panel-body {margin-bottom:0; padding-bottom:0;} +#modxrecent_widget > div > div > ul > li:before{ + content:'\f0c8'; + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + font-size:10px; + color: #dbdbdb; + padding: 0 5px 0 5px; +} +#modxrecent_widget > div > div > ul > li:hover{ + background: #fbfbfb; +} + +div.widget-stage.sectionBody ul li a { + margin : 3px 8px 8px 0px; + padding-left : 0px; +} +div.widget-stage.sectionBody ul li i { + margin : 3px 3px 3px 0px; + padding-left : 7px; +} +div.wm_button { + border-radius : 3px; + float : left; + moz-border-radius : 3px; + text-align : center; + webkit-border-radius : 3px; +} +div.wm_buttons > a.hometblink{ + border-radius : 3px; + display : inline-block; + line-height : 64px; + moz-border-radius : 3px; + padding : 10px; + position : relative; + webkit-border-radius : 3px; + +} +div.wm_buttons a { + font-weight : bold; + text-align : center; + +} +div.wm_buttons > a > i { + margin-bottom : 8px; + text-align : center; + color: #666; +} +div.wm_logo { + float : left; +} +.dashSeparator { + border-bottom : 2px solid #f1f1f1; + clear : both; + color : #d7d7d7; + display : block; + float : left; + height : 24px; + margin : 3px 0 8px 0; + padding : -6px 25px; + text-align : center; + width : 100%; +} +.dashSeparator h3 { + font-size : 18px; + margin-bottom : 5px; +} + +.dashboard_header { + margin: 0; +} + +.dashboard_search { + margin-top: 25px; +} + +.panel-heading { + background-color : transparent; +} +.sectionHeader { + cursor : move; + margin : 0; + min-height : 34px; +} +.widget-wrapper { + background : #fff; + border : 1px solid #e2e2e2; + border-radius : 4px; + box-shadow : 1px 1px 2px #ddd; + moz-box-shadow : 1px 1px 2px #ddd; + webkit-box-shadow : 1px 1px 2px #ddd; +} +.widget-wrapper .widget-title { + border-bottom : 1px solid #d7d7d7; + font-size : 14px; + font-weight : 300; + padding : 7px 5px 4px 10px; +} +.widget-wrapper .widget-stage { + overflow : hidden; + padding : 15px; + position : relative; +} +.widget-wrapper .widget-notes { + background : #fbfbfb; + border-top : 1px solid #e2e2e2; + color : #808080; + font-size : 12px; + padding : 8px 10px 5px; +} +i.icon-color-verylight { + color : #dedede; + float : left; + margin-right : 5px; +} +.btn-group a:link { + text-decoration : none; + text-weight : normal; +} +.btn-group .panel-hide { + margin-top : -7px; + padding-top: 3px; +} + +.btn-action { + padding: 1px 1px !important; + width:28px; +} +.btn-expand i{ + color : #afafaf; +} +.btn-expand:hover{ + color : #4d4d4d; + background : #fbfbfb; +} + +table > tbody > tr > td a.btn { + color: #fff;} +.gridster ul, .gridster ol { + list-style : none; +} +.gridster { + display : none; +} +.gridster .panel-headingx { + min-height : 32px; + overflow : hidden; +} +.gridster .panel-body.widget-stage.sectionBody { + height : inherit; + overflow-x : hidden; + overflow-y : auto; +} +.gridster .panel { + height : 100%; + padding-bottom : 60px; +} +.gridster .panel-headingx { + cursor : move; +} +.gridster .preview-holder { + background : rgba(33,255,181,0.08); + border : 1px dashed #000; + border-color : #000; + opacity : 0.3; + position : absolute; +} diff --git a/manager/media/style/MODxRE2/dashboard/js/evodashboard.js b/manager/media/style/MODxRE2/dashboard/js/evodashboard.js new file mode 100644 index 0000000000..ab8b7163b1 --- /dev/null +++ b/manager/media/style/MODxRE2/dashboard/js/evodashboard.js @@ -0,0 +1,152 @@ +function fnCreateGridster(page, states){ + /* load saved position and sizes */ + if(localdata_position){ + $.each(localdata_position, function(i,value){ + $('#'+value.id).attr({"data-col":value.col, "data-row":value.row, "data-sizex":value.size_x, "data-sizey":value.size_y}); + }); + } + + + /* force 1 column on mobile screen sizes */ + if ($( window ).width() <= 480){ + var cols=1; + var offset=60; + } else { + var cols=4; + var offset=19; + } + + + /* get the default size for the ratio */ + var base_size=($( window ).width()/cols)-offset; + + + /* start gridster */ + var gridster= $(".gridster > ul").gridster({ + extra_cols: 1, + autogrow_cols: true, + min_cols:4, + max_cols:cols, + widget_margins: [5, 5], + widget_base_dimensions: [base_size, 50], + resize: { + enabled: true, + stop: function(event, ui, widget) { + var positions = JSON.stringify(this.serialize()); + localStorage.setItem(page, positions); + } + }, + serialize_params: function($w, wgd) + { + return { id: $($w).attr('id'),col: wgd.col, row: wgd.row,size_x: wgd.size_x,size_y: wgd.size_y }; + }, + draggable: + { + handle: '.panel-headingx, .panel-handel', + stop: function(event, ui) { + var _positions=this.serialize(); + $.each(_positions, function(i,value){ + _state=$('#'+ value.id).attr('data-state'); + if(_state=='min'){ + value.size_y=$('#'+ value.id).attr('data-sizey-old'); + _positions[i]=value; + } + + }); + var positions = JSON.stringify(_positions); + localStorage.setItem(page, positions); + } + } + }).data('gridster'); + + + /* load states */ + if(localdata_states){ + $.each(localdata_states, function(i,value){ + if(value){ + console.log(value); + if(value.state == 'closed'){ + $(".gridster > ul").data('gridster').remove_widget($('#'+value.panel)); + }else if(value.state == false) _state_minimize(value.panel); + } + }); + } + + /* register the minimize button */ + $(document).on("click", ".panel-hide", function(e) { + e.preventDefault(); + var panel = $(this).attr("data-id"); + if($(this).hasClass('fa-minus')){ + _state_minimize(panel); + var _state=false; + + } else { + _state_maxamize(panel); + var _state=true; + } + _state_update(panel, _state); + + }); + + /* helpers */ + + function _state_update(panel, _state){ + var _states = { + panel: panel, + state: _state + }; + + if(localdata_states){ + $.each(localdata_states, function(i,value){ + if(value){ + if(value.panel == panel) localdata_states.splice(i, 1); + } + }); + } else localdata_states=[]; + + localdata_states.push(_states); + localStorage.setItem(states, JSON.stringify(localdata_states)); + } + + function _state_maxamize(panel){ + $('#'+panel +'').attr('data-state', 'max'); + var _oldsize=parseInt($('#'+panel).attr('data-sizey-old')); + $('#'+panel +'').attr('data-sizey', _oldsize); + $(".gridster > ul").data('gridster').resize_widget($('#'+panel),$('#'+panel).attr('data-sizex'),_oldsize); + $('#'+panel +' .panel').css('padding-bottom', '60px'); + $('#'+panel +' .panel-body').slideDown(); + $('#'+panel +' .panel-hide').removeClass('fa-plus').addClass('fa-minus'); + $('#'+panel +' .gs-resize-handle').show(); + $('#'+panel +' .panel-max, #'+panel +' .panel-close').show(); + } + + function _state_minimize(panel){ + $('#'+panel +'').attr('data-state', 'min'); + $('#'+panel).attr('data-sizey-old', $('#'+panel).attr('data-sizey')); + $(".gridster > ul").data('gridster').resize_widget($('#'+panel),$('#'+panel).attr('data-sizex'),1); + $('#'+panel).attr('data-sizey', '1'); + $('#'+panel +' .gs-resize-handle').hide(); + $('#'+panel +' .panel-body').slideUp(); + $('#'+panel +' .panel-hide').removeClass('fa-minus').addClass('fa-plus'); + $('#'+panel +' .panel').css('padding-bottom', '0px'); + $('#'+panel +' .panel-max, #'+panel +' .panel-close').hide(); + } + + function _resize_gridster(){ + gridster.resize_widget_dimensions({ + widget_base_dimensions: [(((base_size*($( window ).width()/base_size))/cols)-offset + 4), 50], + widget_margins: [5, 5], + }); + } + + + /* we're ready for the show */ + $(window).on('resize load',_resize_gridster); + + /* start welcome with fade in fx*/ + setTimeout(function(){ + $('.gridster').fadeIn('fast'); + _resize_gridster(); + }, 400); + +} \ No newline at end of file diff --git a/manager/media/style/MODxCarbon/images/_session.gif b/manager/media/style/MODxRE2/images/_session.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/_session.gif rename to manager/media/style/MODxRE2/images/_session.gif diff --git a/manager/media/style/MODxRE/images/body.jpg b/manager/media/style/MODxRE2/images/body.jpg similarity index 100% rename from manager/media/style/MODxRE/images/body.jpg rename to manager/media/style/MODxRE2/images/body.jpg diff --git a/manager/media/style/MODxCarbon/images/credits/dtree.gif b/manager/media/style/MODxRE2/images/credits/dtree.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/credits/dtree.gif rename to manager/media/style/MODxRE2/images/credits/dtree.gif diff --git a/manager/media/style/MODxCarbon/images/credits/mysql.gif b/manager/media/style/MODxRE2/images/credits/mysql.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/credits/mysql.gif rename to manager/media/style/MODxRE2/images/credits/mysql.gif diff --git a/manager/media/style/MODxCarbon/images/credits/penguin.gif b/manager/media/style/MODxRE2/images/credits/penguin.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/credits/penguin.gif rename to manager/media/style/MODxRE2/images/credits/penguin.gif diff --git a/manager/media/style/MODxCarbon/images/credits/php.gif b/manager/media/style/MODxRE2/images/credits/php.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/credits/php.gif rename to manager/media/style/MODxRE2/images/credits/php.gif diff --git a/manager/media/style/MODxRE2/images/icons/add.png b/manager/media/style/MODxRE2/images/icons/add.png new file mode 100644 index 0000000000..bcab54020b Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/add.png differ diff --git a/manager/media/style/MODxRE2/images/icons/application_get.png b/manager/media/style/MODxRE2/images/icons/application_get.png new file mode 100644 index 0000000000..da3cd6433d Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/application_get.png differ diff --git a/manager/media/style/MODxRE2/images/icons/application_side_contract.png b/manager/media/style/MODxRE2/images/icons/application_side_contract.png new file mode 100644 index 0000000000..c96087690d Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/application_side_contract.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/application_side_expand.png b/manager/media/style/MODxRE2/images/icons/application_side_expand.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/application_side_expand.png rename to manager/media/style/MODxRE2/images/icons/application_side_expand.png diff --git a/manager/media/style/MODxRE2/images/icons/arrow-down.png b/manager/media/style/MODxRE2/images/icons/arrow-down.png new file mode 100644 index 0000000000..8cb82b44fd Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/arrow-down.png differ diff --git a/manager/media/style/MODxRE2/images/icons/arrow-right.png b/manager/media/style/MODxRE2/images/icons/arrow-right.png new file mode 100644 index 0000000000..d811b98fea Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/arrow-right.png differ diff --git a/manager/media/style/MODxRE2/images/icons/arrow-up.png b/manager/media/style/MODxRE2/images/icons/arrow-up.png new file mode 100644 index 0000000000..7603fdcd4b Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/arrow-up.png differ diff --git a/manager/media/style/MODxRE2/images/icons/arrow_down.png b/manager/media/style/MODxRE2/images/icons/arrow_down.png new file mode 100644 index 0000000000..05f17f7009 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/arrow_down.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/arrow_up.png b/manager/media/style/MODxRE2/images/icons/arrow_up.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/arrow_up.png rename to manager/media/style/MODxRE2/images/icons/arrow_up.png diff --git a/manager/media/style/MODxCarbon/images/icons/b02.gif b/manager/media/style/MODxRE2/images/icons/b02.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/b02.gif rename to manager/media/style/MODxRE2/images/icons/b02.gif diff --git a/manager/media/style/MODxCarbon/images/icons/b02_trans.gif b/manager/media/style/MODxRE2/images/icons/b02_trans.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/b02_trans.gif rename to manager/media/style/MODxRE2/images/icons/b02_trans.gif diff --git a/manager/media/style/MODxCarbon/images/icons/b06.gif b/manager/media/style/MODxRE2/images/icons/b06.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/b06.gif rename to manager/media/style/MODxRE2/images/icons/b06.gif diff --git a/manager/media/style/MODxCarbon/images/icons/b092.gif b/manager/media/style/MODxRE2/images/icons/b092.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/b092.gif rename to manager/media/style/MODxRE2/images/icons/b092.gif diff --git a/manager/media/style/MODxCarbon/images/icons/backup.gif b/manager/media/style/MODxRE2/images/icons/backup.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/backup.gif rename to manager/media/style/MODxRE2/images/icons/backup.gif diff --git a/manager/media/style/MODxCarbon/images/icons/bkmanager.gif b/manager/media/style/MODxRE2/images/icons/bkmanager.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/bkmanager.gif rename to manager/media/style/MODxRE2/images/icons/bkmanager.gif diff --git a/manager/media/style/MODxRE2/images/icons/brick.png b/manager/media/style/MODxRE2/images/icons/brick.png new file mode 100755 index 0000000000..7851cf34c9 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/brick.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/cal.gif b/manager/media/style/MODxRE2/images/icons/cal.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/cal.gif rename to manager/media/style/MODxRE2/images/icons/cal.gif diff --git a/manager/media/style/MODxRE2/images/icons/cal_nodate.gif b/manager/media/style/MODxRE2/images/icons/cal_nodate.gif new file mode 100644 index 0000000000..8c4fddce23 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/cal_nodate.gif differ diff --git a/manager/media/style/MODxRE2/images/icons/calendar-empty.png b/manager/media/style/MODxRE2/images/icons/calendar-empty.png new file mode 100644 index 0000000000..2255ffae89 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/calendar-empty.png differ diff --git a/manager/media/style/MODxRE2/images/icons/calendar.png b/manager/media/style/MODxRE2/images/icons/calendar.png new file mode 100644 index 0000000000..c760be3063 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/calendar.png differ diff --git a/manager/media/style/MODxRE2/images/icons/camera.png b/manager/media/style/MODxRE2/images/icons/camera.png new file mode 100755 index 0000000000..4d44a4760c Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/camera.png differ diff --git a/manager/media/style/MODxRE2/images/icons/cancel.png b/manager/media/style/MODxRE2/images/icons/cancel.png new file mode 100644 index 0000000000..44197a49d1 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/cancel.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/circlerightarrow.gif b/manager/media/style/MODxRE2/images/icons/circlerightarrow.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/circlerightarrow.gif rename to manager/media/style/MODxRE2/images/icons/circlerightarrow.gif diff --git a/manager/media/style/MODxCarbon/images/icons/clock_play.png b/manager/media/style/MODxRE2/images/icons/clock_play.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/clock_play.png rename to manager/media/style/MODxRE2/images/icons/clock_play.png diff --git a/manager/media/style/MODxCarbon/images/icons/clock_stop.png b/manager/media/style/MODxRE2/images/icons/clock_stop.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/clock_stop.png rename to manager/media/style/MODxRE2/images/icons/clock_stop.png diff --git a/manager/media/style/MODxRE2/images/icons/clone.png b/manager/media/style/MODxRE2/images/icons/clone.png new file mode 100644 index 0000000000..349f024605 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/clone.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/comment.gif b/manager/media/style/MODxRE2/images/icons/comment.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/comment.gif rename to manager/media/style/MODxRE2/images/icons/comment.gif diff --git a/manager/media/style/MODxRE2/images/icons/context_view.gif b/manager/media/style/MODxRE2/images/icons/context_view.gif new file mode 100644 index 0000000000..d5217bda86 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/context_view.gif differ diff --git a/manager/media/style/MODxCarbon/images/icons/copy.gif b/manager/media/style/MODxRE2/images/icons/copy.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/copy.gif rename to manager/media/style/MODxRE2/images/icons/copy.gif diff --git a/manager/media/style/MODxCarbon/images/icons/date.gif b/manager/media/style/MODxRE2/images/icons/date.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/date.gif rename to manager/media/style/MODxRE2/images/icons/date.gif diff --git a/manager/media/style/MODxCarbon/images/icons/datefocus.gif b/manager/media/style/MODxRE2/images/icons/datefocus.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/datefocus.gif rename to manager/media/style/MODxRE2/images/icons/datefocus.gif diff --git a/manager/media/style/MODxCarbon/images/icons/datenofocus.gif b/manager/media/style/MODxRE2/images/icons/datenofocus.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/datenofocus.gif rename to manager/media/style/MODxRE2/images/icons/datenofocus.gif diff --git a/manager/media/style/MODxRE2/images/icons/delete.gif b/manager/media/style/MODxRE2/images/icons/delete.gif new file mode 100644 index 0000000000..8b2236111b Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/delete.gif differ diff --git a/manager/media/style/MODxRE2/images/icons/delete.png b/manager/media/style/MODxRE2/images/icons/delete.png new file mode 100644 index 0000000000..5cc0d4a2dc Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/delete.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/down.gif b/manager/media/style/MODxRE2/images/icons/down.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/down.gif rename to manager/media/style/MODxRE2/images/icons/down.gif diff --git a/manager/media/style/MODxRE2/images/icons/download-alt.png b/manager/media/style/MODxRE2/images/icons/download-alt.png new file mode 100644 index 0000000000..6e5f9882fc Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/download-alt.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/ed_save.gif b/manager/media/style/MODxRE2/images/icons/ed_save.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/ed_save.gif rename to manager/media/style/MODxRE2/images/icons/ed_save.gif diff --git a/manager/media/style/MODxRE2/images/icons/email.png b/manager/media/style/MODxRE2/images/icons/email.png new file mode 100644 index 0000000000..3c645a86e1 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/email.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/error.png b/manager/media/style/MODxRE2/images/icons/error.png old mode 100644 new mode 100755 similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/error.png rename to manager/media/style/MODxRE2/images/icons/error.png diff --git a/manager/media/style/MODxRE2/images/icons/event1.png b/manager/media/style/MODxRE2/images/icons/event1.png new file mode 100644 index 0000000000..f55680b0e6 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/event1.png differ diff --git a/manager/media/style/MODxRE2/images/icons/event2.png b/manager/media/style/MODxRE2/images/icons/event2.png new file mode 100644 index 0000000000..8d434cc753 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/event2.png differ diff --git a/manager/media/style/MODxRE2/images/icons/event3.png b/manager/media/style/MODxRE2/images/icons/event3.png new file mode 100644 index 0000000000..042ca49002 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/event3.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/exclamation.png b/manager/media/style/MODxRE2/images/icons/exclamation.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/exclamation.png rename to manager/media/style/MODxRE2/images/icons/exclamation.png diff --git a/manager/media/style/MODxRE2/images/icons/eye.png b/manager/media/style/MODxRE2/images/icons/eye.png new file mode 100644 index 0000000000..b3b1ab6b76 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/eye.png differ diff --git a/manager/media/style/MODxRE2/images/icons/files.png b/manager/media/style/MODxRE2/images/icons/files.png new file mode 100755 index 0000000000..d819d8f405 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/files.png differ diff --git a/manager/media/style/MODxRE2/images/icons/folder-open.png b/manager/media/style/MODxRE2/images/icons/folder-open.png new file mode 100644 index 0000000000..079e37ee4e Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/folder-open.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/folder.gif b/manager/media/style/MODxRE2/images/icons/folder.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/folder.gif rename to manager/media/style/MODxRE2/images/icons/folder.gif diff --git a/manager/media/style/MODxRE2/images/icons/folder.png b/manager/media/style/MODxRE2/images/icons/folder.png new file mode 100644 index 0000000000..d096d08f68 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/folder.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/folder_add.png b/manager/media/style/MODxRE2/images/icons/folder_add.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/folder_add.png rename to manager/media/style/MODxRE2/images/icons/folder_add.png diff --git a/manager/media/style/MODxCarbon/images/icons/folder_page_add.png b/manager/media/style/MODxRE2/images/icons/folder_page_add.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/folder_page_add.png rename to manager/media/style/MODxRE2/images/icons/folder_page_add.png diff --git a/manager/media/style/MODxCarbon/images/icons/forward.gif b/manager/media/style/MODxRE2/images/icons/forward.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/forward.gif rename to manager/media/style/MODxRE2/images/icons/forward.gif diff --git a/manager/media/style/MODxRE2/images/icons/forward.png b/manager/media/style/MODxRE2/images/icons/forward.png new file mode 100644 index 0000000000..0dc7b94b68 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/forward.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/globe.gif b/manager/media/style/MODxRE2/images/icons/globe.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/globe.gif rename to manager/media/style/MODxRE2/images/icons/globe.gif diff --git a/manager/media/style/MODxRE2/images/icons/help.png b/manager/media/style/MODxRE2/images/icons/help.png new file mode 100755 index 0000000000..0bf44fc16c Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/help.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/home.gif b/manager/media/style/MODxRE2/images/icons/home.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/home.gif rename to manager/media/style/MODxRE2/images/icons/home.gif diff --git a/manager/media/style/MODxRE2/images/icons/home.png b/manager/media/style/MODxRE2/images/icons/home.png new file mode 100644 index 0000000000..c97fbda9ce Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/home.png differ diff --git a/manager/media/style/MODxRE2/images/icons/info-sign.png b/manager/media/style/MODxRE2/images/icons/info-sign.png new file mode 100644 index 0000000000..63c4230399 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/info-sign.png differ diff --git a/manager/media/style/MODxRE2/images/icons/information.png b/manager/media/style/MODxRE2/images/icons/information.png new file mode 100644 index 0000000000..63c4230399 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/information.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/layout_go.png b/manager/media/style/MODxRE2/images/icons/layout_go.png old mode 100644 new mode 100755 similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/layout_go.png rename to manager/media/style/MODxRE2/images/icons/layout_go.png diff --git a/manager/media/style/MODxRE2/images/icons/link.png b/manager/media/style/MODxRE2/images/icons/link.png new file mode 100644 index 0000000000..34b8bac39f Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/link.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/link_add.png b/manager/media/style/MODxRE2/images/icons/link_add.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/link_add.png rename to manager/media/style/MODxRE2/images/icons/link_add.png diff --git a/manager/media/style/MODxRE2/images/icons/lock.png b/manager/media/style/MODxRE2/images/icons/lock.png new file mode 100644 index 0000000000..9ae0020f54 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/lock.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/logging.gif b/manager/media/style/MODxRE2/images/icons/logging.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/logging.gif rename to manager/media/style/MODxRE2/images/icons/logging.gif diff --git a/manager/media/style/MODxCarbon/images/icons/mail_generic.gif b/manager/media/style/MODxRE2/images/icons/mail_generic.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/mail_generic.gif rename to manager/media/style/MODxRE2/images/icons/mail_generic.gif diff --git a/manager/media/style/MODxCarbon/images/icons/module.gif b/manager/media/style/MODxRE2/images/icons/module.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/module.gif rename to manager/media/style/MODxRE2/images/icons/module.gif diff --git a/manager/media/style/MODxCarbon/images/icons/modules.gif b/manager/media/style/MODxRE2/images/icons/modules.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/modules.gif rename to manager/media/style/MODxRE2/images/icons/modules.gif diff --git a/manager/media/style/MODxRE2/images/icons/modules.png b/manager/media/style/MODxRE2/images/icons/modules.png new file mode 100644 index 0000000000..6a11d3bfc3 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/modules.png differ diff --git a/manager/media/style/MODxRE2/images/icons/move.png b/manager/media/style/MODxRE2/images/icons/move.png new file mode 100644 index 0000000000..c5b05ad278 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/move.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/new1-09.gif b/manager/media/style/MODxRE2/images/icons/new1-09.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/new1-09.gif rename to manager/media/style/MODxRE2/images/icons/new1-09.gif diff --git a/manager/media/style/MODxCarbon/images/icons/newdoc.gif b/manager/media/style/MODxRE2/images/icons/newdoc.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/newdoc.gif rename to manager/media/style/MODxRE2/images/icons/newdoc.gif diff --git a/manager/media/style/MODxCarbon/images/icons/next.gif b/manager/media/style/MODxRE2/images/icons/next.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/next.gif rename to manager/media/style/MODxRE2/images/icons/next.gif diff --git a/manager/media/style/MODxCarbon/images/icons/page_white_add.png b/manager/media/style/MODxRE2/images/icons/page_white_add.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/page_white_add.png rename to manager/media/style/MODxRE2/images/icons/page_white_add.png diff --git a/manager/media/style/MODxCarbon/images/icons/page_white_copy.png b/manager/media/style/MODxRE2/images/icons/page_white_copy.png old mode 100644 new mode 100755 similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/page_white_copy.png rename to manager/media/style/MODxRE2/images/icons/page_white_copy.png diff --git a/manager/media/style/MODxCarbon/images/icons/page_white_go.png b/manager/media/style/MODxRE2/images/icons/page_white_go.png old mode 100644 new mode 100755 similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/page_white_go.png rename to manager/media/style/MODxRE2/images/icons/page_white_go.png diff --git a/manager/media/style/MODxCarbon/images/icons/page_white_magnify.png b/manager/media/style/MODxRE2/images/icons/page_white_magnify.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/page_white_magnify.png rename to manager/media/style/MODxRE2/images/icons/page_white_magnify.png diff --git a/manager/media/style/MODxRE2/images/icons/play.png b/manager/media/style/MODxRE2/images/icons/play.png new file mode 100644 index 0000000000..8bc9a8f359 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/play.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/prev.gif b/manager/media/style/MODxRE2/images/icons/prev.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/prev.gif rename to manager/media/style/MODxRE2/images/icons/prev.gif diff --git a/manager/media/style/MODxCarbon/images/icons/preview.png b/manager/media/style/MODxRE2/images/icons/preview.png old mode 100644 new mode 100755 similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/preview.png rename to manager/media/style/MODxRE2/images/icons/preview.png diff --git a/manager/media/style/MODxRE2/images/icons/question-sign-trans.png b/manager/media/style/MODxRE2/images/icons/question-sign-trans.png new file mode 100644 index 0000000000..6e6b7c3d42 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/question-sign-trans.png differ diff --git a/manager/media/style/MODxRE2/images/icons/question-sign.png b/manager/media/style/MODxRE2/images/icons/question-sign.png new file mode 100644 index 0000000000..05bf84f241 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/question-sign.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/refresh.gif b/manager/media/style/MODxRE2/images/icons/refresh.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/refresh.gif rename to manager/media/style/MODxRE2/images/icons/refresh.gif diff --git a/manager/media/style/MODxRE2/images/icons/refresh.png b/manager/media/style/MODxRE2/images/icons/refresh.png new file mode 100644 index 0000000000..79cb1c052d Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/refresh.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/reply.gif b/manager/media/style/MODxRE2/images/icons/reply.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/reply.gif rename to manager/media/style/MODxRE2/images/icons/reply.gif diff --git a/manager/media/style/MODxRE2/images/icons/reply.png b/manager/media/style/MODxRE2/images/icons/reply.png new file mode 100644 index 0000000000..eea4c7ce6a Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/reply.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/resources.gif b/manager/media/style/MODxRE2/images/icons/resources.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/resources.gif rename to manager/media/style/MODxRE2/images/icons/resources.gif diff --git a/manager/media/style/MODxRE2/images/icons/run.png b/manager/media/style/MODxRE2/images/icons/run.png new file mode 100755 index 0000000000..5119f14313 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/run.png differ diff --git a/manager/media/style/MODxRE2/images/icons/save.png b/manager/media/style/MODxRE2/images/icons/save.png new file mode 100644 index 0000000000..fca9970173 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/save.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/secured.gif b/manager/media/style/MODxRE2/images/icons/secured.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/secured.gif rename to manager/media/style/MODxRE2/images/icons/secured.gif diff --git a/manager/media/style/MODxCarbon/images/icons/security.gif b/manager/media/style/MODxRE2/images/icons/security.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/security.gif rename to manager/media/style/MODxRE2/images/icons/security.gif diff --git a/manager/media/style/MODxCarbon/images/icons/sort.png b/manager/media/style/MODxRE2/images/icons/sort.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/sort.png rename to manager/media/style/MODxRE2/images/icons/sort.png diff --git a/manager/media/style/MODxRE2/images/icons/sort_index.png b/manager/media/style/MODxRE2/images/icons/sort_index.png new file mode 100644 index 0000000000..d09c246478 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/sort_index.png differ diff --git a/manager/media/style/MODxRE2/images/icons/stop.png b/manager/media/style/MODxRE2/images/icons/stop.png new file mode 100644 index 0000000000..7dc446519c Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/stop.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/table.gif b/manager/media/style/MODxRE2/images/icons/table.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/table.gif rename to manager/media/style/MODxRE2/images/icons/table.gif diff --git a/manager/media/style/MODxRE2/images/icons/table.png b/manager/media/style/MODxRE2/images/icons/table.png new file mode 100644 index 0000000000..7099f0ea23 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/table.png differ diff --git a/manager/media/style/MODxRE2/images/icons/table_refresh.png b/manager/media/style/MODxRE2/images/icons/table_refresh.png new file mode 100755 index 0000000000..ab92010c2c Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/table_refresh.png differ diff --git a/manager/media/style/MODxRE2/images/icons/trash.png b/manager/media/style/MODxRE2/images/icons/trash.png new file mode 100644 index 0000000000..e4dd2dccb9 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/trash.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/trash_full.png b/manager/media/style/MODxRE2/images/icons/trash_full.png similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/trash_full.png rename to manager/media/style/MODxRE2/images/icons/trash_full.png diff --git a/manager/media/style/MODxRE2/images/icons/undelete.png b/manager/media/style/MODxRE2/images/icons/undelete.png new file mode 100644 index 0000000000..eb12e8c76e Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/undelete.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/unzip.gif b/manager/media/style/MODxRE2/images/icons/unzip.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/unzip.gif rename to manager/media/style/MODxRE2/images/icons/unzip.gif diff --git a/manager/media/style/MODxRE2/images/icons/user.gif b/manager/media/style/MODxRE2/images/icons/user.gif new file mode 100755 index 0000000000..6c578ab953 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/user.gif differ diff --git a/manager/media/style/MODxRE2/images/icons/user.png b/manager/media/style/MODxRE2/images/icons/user.png new file mode 100644 index 0000000000..928de545a6 Binary files /dev/null and b/manager/media/style/MODxRE2/images/icons/user.png differ diff --git a/manager/media/style/MODxCarbon/images/icons/web_users.gif b/manager/media/style/MODxRE2/images/icons/web_users.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/web_users.gif rename to manager/media/style/MODxRE2/images/icons/web_users.gif diff --git a/manager/media/style/MODxCarbon/images/icons/world_link.png b/manager/media/style/MODxRE2/images/icons/world_link.png old mode 100644 new mode 100755 similarity index 100% rename from manager/media/style/MODxCarbon/images/icons/world_link.png rename to manager/media/style/MODxRE2/images/icons/world_link.png diff --git a/assets/templates/modxhost/images/input-bg.gif b/manager/media/style/MODxRE2/images/input-bg.gif similarity index 100% rename from assets/templates/modxhost/images/input-bg.gif rename to manager/media/style/MODxRE2/images/input-bg.gif diff --git a/manager/media/style/MODxCarbon/images/misc/_tx_.gif b/manager/media/style/MODxRE2/images/misc/_tx_.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/_tx_.gif rename to manager/media/style/MODxRE2/images/misc/_tx_.gif diff --git a/manager/media/style/MODxCarbon/images/misc/ajax-loader.gif b/manager/media/style/MODxRE2/images/misc/ajax-loader.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/ajax-loader.gif rename to manager/media/style/MODxRE2/images/misc/ajax-loader.gif diff --git a/manager/media/style/MODxRE2/images/misc/button-gradient.png b/manager/media/style/MODxRE2/images/misc/button-gradient.png new file mode 100644 index 0000000000..1d681bf6fe Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/button-gradient.png differ diff --git a/manager/media/style/MODxRE2/images/misc/ed_save.gif b/manager/media/style/MODxRE2/images/misc/ed_save.gif new file mode 100644 index 0000000000..b9c67e22e0 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/ed_save.gif differ diff --git a/manager/media/style/MODxRE2/images/misc/enter.png b/manager/media/style/MODxRE2/images/misc/enter.png new file mode 100644 index 0000000000..b61f65c46e Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/enter.png differ diff --git a/manager/media/style/MODxCarbon/images/misc/fade.gif b/manager/media/style/MODxRE2/images/misc/fade.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/fade.gif rename to manager/media/style/MODxRE2/images/misc/fade.gif diff --git a/manager/media/style/MODxRE2/images/misc/headers.jpg b/manager/media/style/MODxRE2/images/misc/headers.jpg new file mode 100644 index 0000000000..54d6403d39 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/headers.jpg differ diff --git a/manager/media/style/MODxCarbon/images/input-bg.gif b/manager/media/style/MODxRE2/images/misc/input-bg.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/input-bg.gif rename to manager/media/style/MODxRE2/images/misc/input-bg.gif diff --git a/manager/media/style/MODxCarbon/images/misc/li.gif b/manager/media/style/MODxRE2/images/misc/li.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/li.gif rename to manager/media/style/MODxRE2/images/misc/li.gif diff --git a/manager/media/style/MODxRE2/images/misc/li.png b/manager/media/style/MODxRE2/images/misc/li.png new file mode 100644 index 0000000000..dd5f9253df Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/li.png differ diff --git a/manager/media/style/MODxCarbon/images/misc/line.gif b/manager/media/style/MODxRE2/images/misc/line.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/line.gif rename to manager/media/style/MODxRE2/images/misc/line.gif diff --git a/manager/media/style/MODxCarbon/images/misc/lock.gif b/manager/media/style/MODxRE2/images/misc/lock.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/lock.gif rename to manager/media/style/MODxRE2/images/misc/lock.gif diff --git a/manager/media/style/MODxCarbon/images/misc/locked.gif b/manager/media/style/MODxRE2/images/misc/locked.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/locked.gif rename to manager/media/style/MODxRE2/images/misc/locked.gif diff --git a/manager/media/style/MODxRE2/images/misc/login-logo.png b/manager/media/style/MODxRE2/images/misc/login-logo.png new file mode 100644 index 0000000000..02dd596de8 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/login-logo.png differ diff --git a/manager/media/style/MODxRE2/images/misc/logo-dashboard.png b/manager/media/style/MODxRE2/images/misc/logo-dashboard.png new file mode 100644 index 0000000000..e2a78b04c6 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/logo-dashboard.png differ diff --git a/manager/media/style/MODxRE2/images/misc/logo.png b/manager/media/style/MODxRE2/images/misc/logo.png new file mode 100644 index 0000000000..0c5057ec84 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/logo.png differ diff --git a/manager/media/style/MODxRE2/images/misc/longbarbg.png b/manager/media/style/MODxRE2/images/misc/longbarbg.png new file mode 100644 index 0000000000..44197d8aee Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/longbarbg.png differ diff --git a/manager/media/style/MODxCarbon/images/misc/mainbg.gif b/manager/media/style/MODxRE2/images/misc/mainbg.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/mainbg.gif rename to manager/media/style/MODxRE2/images/misc/mainbg.gif diff --git a/manager/media/style/MODxRE2/images/misc/menubg.png b/manager/media/style/MODxRE2/images/misc/menubg.png new file mode 100644 index 0000000000..323797511f Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/menubg.png differ diff --git a/manager/media/style/MODxCarbon/images/misc/minus.gif b/manager/media/style/MODxRE2/images/misc/minus.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/minus.gif rename to manager/media/style/MODxRE2/images/misc/minus.gif diff --git a/manager/media/style/MODxRE2/images/misc/modx-logo-4.png b/manager/media/style/MODxRE2/images/misc/modx-logo-4.png new file mode 100644 index 0000000000..5ca5317f16 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/modx-logo-4.png differ diff --git a/manager/media/style/MODxCarbon/images/misc/plus.gif b/manager/media/style/MODxRE2/images/misc/plus.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/plus.gif rename to manager/media/style/MODxRE2/images/misc/plus.gif diff --git a/manager/media/style/MODxRE2/images/misc/submit.png b/manager/media/style/MODxRE2/images/misc/submit.png new file mode 100644 index 0000000000..b8779de446 Binary files /dev/null and b/manager/media/style/MODxRE2/images/misc/submit.png differ diff --git a/manager/media/style/MODxCarbon/images/misc/tab.gif b/manager/media/style/MODxRE2/images/misc/tab.gif similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/tab.gif rename to manager/media/style/MODxRE2/images/misc/tab.gif diff --git a/manager/media/style/MODxCarbon/images/misc/tabareabg.gif b/manager/media/style/MODxRE2/images/misc/tabareabg.gif old mode 100755 new mode 100644 similarity index 100% rename from manager/media/style/MODxCarbon/images/misc/tabareabg.gif rename to manager/media/style/MODxRE2/images/misc/tabareabg.gif diff --git a/manager/media/style/MODxRE/images/subnav.jpg b/manager/media/style/MODxRE2/images/subnav.jpg similarity index 100% rename from manager/media/style/MODxRE/images/subnav.jpg rename to manager/media/style/MODxRE2/images/subnav.jpg diff --git a/manager/media/style/MODxRE2/images/tree/angle-down.png b/manager/media/style/MODxRE2/images/tree/angle-down.png new file mode 100644 index 0000000000..9197ab12b1 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/angle-down.png differ diff --git a/manager/media/style/MODxRE2/images/tree/angle-left.png b/manager/media/style/MODxRE2/images/tree/angle-left.png new file mode 100644 index 0000000000..04bfdc34d6 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/angle-left.png differ diff --git a/manager/media/style/MODxRE2/images/tree/angle-right.png b/manager/media/style/MODxRE2/images/tree/angle-right.png new file mode 100644 index 0000000000..d6362d5ee6 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/angle-right.png differ diff --git a/manager/media/style/MODxRE2/images/tree/angle-up.png b/manager/media/style/MODxRE2/images/tree/angle-up.png new file mode 100644 index 0000000000..a3c0be7dba Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/angle-up.png differ diff --git a/manager/media/style/MODxRE2/images/tree/deletedfolder.gif b/manager/media/style/MODxRE2/images/tree/deletedfolder.gif new file mode 100644 index 0000000000..a8e7e5add1 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/deletedfolder.gif differ diff --git a/manager/media/style/MODxRE2/images/tree/deletedfolder.png b/manager/media/style/MODxRE2/images/tree/deletedfolder.png new file mode 100644 index 0000000000..99d891f9e2 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/deletedfolder.png differ diff --git a/manager/media/style/MODxRE2/images/tree/expand.png b/manager/media/style/MODxRE2/images/tree/expand.png new file mode 100644 index 0000000000..1267a4a036 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/expand.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-alt-deleted.png b/manager/media/style/MODxRE2/images/tree/file-alt-deleted.png new file mode 100644 index 0000000000..f8b40ec9df Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-alt-deleted.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-alt-secure.png b/manager/media/style/MODxRE2/images/tree/file-alt-secure.png new file mode 100644 index 0000000000..4084e04fbb Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-alt-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-alt.png b/manager/media/style/MODxRE2/images/tree/file-alt.png new file mode 100644 index 0000000000..e0c0a5cdeb Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-alt.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-code-secure.png b/manager/media/style/MODxRE2/images/tree/file-code-secure.png new file mode 100644 index 0000000000..5971b08a01 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-code-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-code.png b/manager/media/style/MODxRE2/images/tree/file-code.png new file mode 100644 index 0000000000..19c603f8fd Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-code.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-deleted.png b/manager/media/style/MODxRE2/images/tree/file-deleted.png new file mode 100644 index 0000000000..596bcce831 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-deleted.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-excel-secure.png b/manager/media/style/MODxRE2/images/tree/file-excel-secure.png new file mode 100644 index 0000000000..2ad89f3a55 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-excel-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-excel.png b/manager/media/style/MODxRE2/images/tree/file-excel.png new file mode 100644 index 0000000000..14c33d9f9b Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-excel.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-pdf-secure.png b/manager/media/style/MODxRE2/images/tree/file-pdf-secure.png new file mode 100644 index 0000000000..ce852f411e Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-pdf-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-pdf.png b/manager/media/style/MODxRE2/images/tree/file-pdf.png new file mode 100644 index 0000000000..39faad4cc9 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-pdf.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-rss-secure.png b/manager/media/style/MODxRE2/images/tree/file-rss-secure.png new file mode 100644 index 0000000000..23ae05a436 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-rss-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-rss.png b/manager/media/style/MODxRE2/images/tree/file-rss.png new file mode 100644 index 0000000000..352f39195e Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-rss.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-secure.png b/manager/media/style/MODxRE2/images/tree/file-secure.png new file mode 100644 index 0000000000..4084e04fbb Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-text-alt.png b/manager/media/style/MODxRE2/images/tree/file-text-alt.png new file mode 100644 index 0000000000..65b7e20e5b Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-text-alt.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-text.png b/manager/media/style/MODxRE2/images/tree/file-text.png new file mode 100644 index 0000000000..501d02c23f Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-text.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-word-secure.png b/manager/media/style/MODxRE2/images/tree/file-word-secure.png new file mode 100644 index 0000000000..eefa42a689 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-word-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file-word.png b/manager/media/style/MODxRE2/images/tree/file-word.png new file mode 100644 index 0000000000..45f04f1ee2 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file-word.png differ diff --git a/manager/media/style/MODxRE2/images/tree/file.png b/manager/media/style/MODxRE2/images/tree/file.png new file mode 100644 index 0000000000..0c658c09ca Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/file.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-close-alt-secure.png b/manager/media/style/MODxRE2/images/tree/folder-close-alt-secure.png new file mode 100644 index 0000000000..d8a768ac21 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-close-alt-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-close-alt.png b/manager/media/style/MODxRE2/images/tree/folder-close-alt.png new file mode 100644 index 0000000000..d096d08f68 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-close-alt.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-close-secure.png b/manager/media/style/MODxRE2/images/tree/folder-close-secure.png new file mode 100644 index 0000000000..d57efda247 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-close-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-close.png b/manager/media/style/MODxRE2/images/tree/folder-close.png new file mode 100644 index 0000000000..53c4f6672a Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-close.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-open-alt-secure.png b/manager/media/style/MODxRE2/images/tree/folder-open-alt-secure.png new file mode 100644 index 0000000000..bb2d2f7463 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-open-alt-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-open-alt.png b/manager/media/style/MODxRE2/images/tree/folder-open-alt.png new file mode 100644 index 0000000000..079e37ee4e Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-open-alt.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-open-secure.png b/manager/media/style/MODxRE2/images/tree/folder-open-secure.png new file mode 100644 index 0000000000..60231bef00 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-open-secure.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder-open.png b/manager/media/style/MODxRE2/images/tree/folder-open.png new file mode 100644 index 0000000000..69b4d4811a Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder-open.png differ diff --git a/manager/media/style/MODxRE2/images/tree/folder.gif b/manager/media/style/MODxRE2/images/tree/folder.gif new file mode 100644 index 0000000000..21f367852c Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/folder.gif differ diff --git a/manager/media/style/MODxRE2/images/tree/globe.png b/manager/media/style/MODxRE2/images/tree/globe.png new file mode 100644 index 0000000000..18820a4107 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/globe.png differ diff --git a/manager/media/style/MODxRE2/images/tree/home.png b/manager/media/style/MODxRE2/images/tree/home.png new file mode 100644 index 0000000000..c97fbda9ce Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/home.png differ diff --git a/manager/media/style/MODxRE2/images/tree/info.png b/manager/media/style/MODxRE2/images/tree/info.png new file mode 100644 index 0000000000..5fc69b0ecb Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/info.png differ diff --git a/manager/media/style/MODxRE2/images/tree/link.png b/manager/media/style/MODxRE2/images/tree/link.png new file mode 100644 index 0000000000..34b8bac39f Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/link.png differ diff --git a/manager/media/style/MODxRE2/images/tree/page-html.gif b/manager/media/style/MODxRE2/images/tree/page-html.gif new file mode 100644 index 0000000000..3d17ea0367 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/page-html.gif differ diff --git a/manager/media/style/MODxRE2/images/tree/sitemap.png b/manager/media/style/MODxRE2/images/tree/sitemap.png new file mode 100644 index 0000000000..494adab497 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/sitemap.png differ diff --git a/manager/media/style/MODxRE2/images/tree/time.png b/manager/media/style/MODxRE2/images/tree/time.png new file mode 100644 index 0000000000..f1aaf37b5d Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/time.png differ diff --git a/manager/media/style/MODxRE2/images/tree/warning-sign.png b/manager/media/style/MODxRE2/images/tree/warning-sign.png new file mode 100644 index 0000000000..630c32b610 Binary files /dev/null and b/manager/media/style/MODxRE2/images/tree/warning-sign.png differ diff --git a/manager/media/style/MODxRE2/index.html b/manager/media/style/MODxRE2/index.html new file mode 100644 index 0000000000..cfb7d0fe18 --- /dev/null +++ b/manager/media/style/MODxRE2/index.html @@ -0,0 +1,2 @@ +

                      Unauthorized access

                      +You're not allowed to access file folder \ No newline at end of file diff --git a/manager/media/style/MODxRE2/login.tpl b/manager/media/style/MODxRE2/login.tpl new file mode 100644 index 0000000000..c92c3bd442 --- /dev/null +++ b/manager/media/style/MODxRE2/login.tpl @@ -0,0 +1,251 @@ + + + + [+site_name+] (MODX CMF Manager Login) + + + + + + + + + + +
                      +
                      + + [+OnManagerLoginFormPrerender+] +
                      + +
                      +
                      + + + + + + + + + +

                      [+login_captcha_message+]

                      + +

                      [+captcha_image+]

                      + [+captcha_input+] + +
                      + + + + [+OnManagerLoginFormRender+] +
                      +
                      +
                      + + + +

                      + +

                      +
                      © 2005-2016 by the MODX. MODX™ is licensed under the GPL.
                      + + diff --git a/manager/media/style/MODxRE/manager.lockout.tpl b/manager/media/style/MODxRE2/manager.lockout.tpl similarity index 98% rename from manager/media/style/MODxRE/manager.lockout.tpl rename to manager/media/style/MODxRE2/manager.lockout.tpl index 9178aa79d9..25a9401366 100644 --- a/manager/media/style/MODxRE/manager.lockout.tpl +++ b/manager/media/style/MODxRE2/manager.lockout.tpl @@ -81,7 +81,7 @@

                      - MODX™ is licensed under the GPL license. © 2005-2014 MODX. + MODX™ is licensed under the GPL license. © 2005-2016 MODX.

                      diff --git a/manager/media/style/MODxRE2/style.css b/manager/media/style/MODxRE2/style.css new file mode 100644 index 0000000000..361b2fe08f --- /dev/null +++ b/manager/media/style/MODxRE2/style.css @@ -0,0 +1,3714 @@ +/* -------------------------[ Neutralize styles, fonts and viewport ]--- */ + +* html { + overflow-x: hidden; + overflow-y: auto; +} + + +/* for IE7 */ + +html, +body, +form, +fieldset, +img { + margin: 0; + padding: 0; +} + +img { + border: none; +} + +html { + font-size: 100.01%; + line-height: 1.5; + color: #333; +} + +body { + font-family:'Helvetica Neue', Helvetica, Arial, sans-serif; + font-size: 13px; + + + height: 100%; + color: #333; + background: #eeeeee; +} + +/* For Arabic Font */ +html[lang="ar"] body, +html[lang="ary"] body, +html[lang="azb"] body, +html[lang="fa-IR"] body, +html[lang="haz"] body, +html[lang="ps"] body, +html[lang="ur"] body { + font-family: Tahoma, Arial, sans-serif; +} + +/* For Chinese Font */ +html[lang="zh"] body{ + font-family: "PingFang SC", "Microsoft JhengHei", "Hiragino Sans GB", "Microsoft YaHei", "Source Han Sans SC", Helvetica, sans-serif; +} + +/* For Devanagari Font */ +html[lang="bn-BD"] body, +html[lang="hi-IN"] body, +html[lang="mr-IN"] body { + font-family: Arial, sans-serif; +} + +/* For Greek Font */ +html[lang="el"] body { + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +/* For Gujarati Font */ +html[lang="gu-IN"] body { + font-family: Arial, sans-serif; +} + +/* For Hebrew Font */ +html[lang="he"] body { + font-family: "Arial Hebrew", Arial, sans-serif; +} + +/* For Japanese Font */ +html[lang="ja"] body { + font-family: Meiryo, "Hiragino Kaku Gothic Pro", sans-serif; +} + +/* For Korean font */ +html[lang="ko-KR"] body { + font-family: "Apple SD Gothic Neo", "Malgun Gothic", "Nanum Gothic", Dotum, sans-serif; +} + +/* For Thai Font */ +html[lang="th"] body { + font-family: "Sukhumvit Set", "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +/* For Arabic Font */ +html[lang="fa"] body { + font-family: Tahoma, Arial, sans-serif; +} + +img, +a img { + border: 0 !important; + text-decoration: none; + padding: 0; + margin: 0; +} + +h1, +h2, +h3, +h4, +h5, +h6, +p, +pre, +blockquote, +ul, +ol, +dl, +address { + margin: 0 0 .5em; + padding: 0; + font-weight: normal; +} + +li, +dd, +blockquote { + margin: 0 0 0 1em; +} + +.rtl li, +.rtl dd, +.rtl blockquote { + margin: 0 1em 0 0; +} + +.file-manager td { + border-bottom: 1px solid #d5dfea; +} + +.ab2 { + padding-bottom: 20px; +} + +td{vertical-align:top;} + +/* -------------------------[ Miscellaneous conveniences ]--- */ + +.clearfix, +.cls { + clear: both; + height: 0 !important; + margin: 0; + font-size: 1px; + overflow: hidden; +} + +.clear { + clear: both; +} + +.fail { + color: #900; + font-weight: 500; +} + +.warning { + color: #111; + font-weight: 500; +} + +.success { + color: #090; + font-weight: 500; +} + +.contentPad { + height: 20px !important; + clear: both; +} + +.hide, +.skip, +.printonly { + display: none; +} + +.inline { + display: inline; +} + + +/* -------------------------[ Headers and Paragraphs ]--- */ + +h1, +h2, +h3, +h4, +h5, +h6, +.subTitle { + font-weight: 500; +} + +h1 { + font-size: 1.8em; + line-height: 35px; + margin: 15px 15px 10px 15px; +} + +.rtl h1 { + margin-right: 10px; +} + +h2 { + font-size: 164%; +} + +h3 { + font-size: 145%; +} + +h4 { + font-size: 118%; +} + +h5 { + font-size: 100%; + font-weight: 500; +} + +h6 { + font-size: 86%; + font-weight: 500; +} + +p.caption, +p.comment { + font-size: 86%; + color: #888; +} + +button { + color: #821517; + font: inherit; + font-weight: 500; + width: 112px; + margin: 0 5px 0 0; + cursor: pointer; +} + +.rtl button { + margin: 0 0 0 5px; +} + +a, +a:active, +a:visited, +a:link { + color: #3697CD; + text-decoration: none; +} + +a:hover { + color: #26719B; + text-decoration: underline; +} + +hr { + color: #777; + background-color: #777; + height: 1px; + border: 0; +} + +.split { + background: #556476 url(images/misc/line.gif) repeat-x; + height: 1px; + font-size: 0; + clear: both; + padding: 0; +} + +#previewIframe { + width: 100%; + height: 400px; +} + +.messageRead { + color: #333; +} + +.messageUnread { + color: #3CB371; + font-weight: 500; +} + +.right { + font-weight: 500; + color: #333; + float: left; + padding: 0 20px 20px; +} + +.rtl .right { + float: right; +} + + +/* -------------------------[ Topbar ]--- */ + +#topbar { + margin: 0; + color: #333; + padding: 0 5px; +} + +#topbar * { + vertical-align: middle; +} + +#topbar a, +#topbar a:link, +#topbar a:visited { + font-weight: 500; + color: #AAB1B9; + text-decoration: none; +} + +#topbar a:hover { + color: #fff; + text-decoration: underline; +} + +#tocText { + position: absolute; + left: 3px; + top: 50px; + z-index: 1000; +} + +.rtl #tocText { + right: 3px; +} + +.tocTextRTL { + right: 3px; +} + +#tocText, +#buildText, +#workText { + font-weight: 500; + line-height: 16px; + margin: 0 15px; + color: #FFF; +} + +#tocText, +#buildText img, +#workText img { + margin: 0 5px; +} + +#statusbar { + font-size: 11px; + position: absolute; + right: 0; + top: 46px; + z-index: 1000; +} + +.rtl #statusbar { + left: 0; +} + +#supplementalNav { + background: none repeat scroll 0 0 transparent; + color: #89939e; + margin: 0; + position: absolute; + top: 8px; + right: 8px; + z-index: 111; +} + +.rtl #supplementalNav { + float: left; +} + +#supplementalNav * { + vertical-align: middle; +} + +#supplementalNav .username { + display: inline-block; + margin-right: 10px; + padding-left: 20px; + background-image: url('images/icons/user.png'); + background-repeat: no-repeat; + background-position: left center; +} + +#supplementalNav a { + padding: 0; + margin: 0; + display: inline-block; + border: 1px solid rgba(255, 255, 255, 0.6); + padding: 2px 7px; + border-radius: 3px; + margin: 0 2px; + background-color: rgba(255,255,255,.1); + color: #fff !important; +} + +#supplementalNav a:hover { + text-decoration: none; + background-color: rgba(255,255,255,.3); +} + +#supplementalNav a:active { + background-color: rgba(255,255,255,.2); + box-shadow: inset 1px 1px 2px 0 rgba(0,0,0,.3); +} + +#msgCounter, +#newMail { + margin: 0; + padding: 0; +} + + +/* -------------------------[ Forms ]--- */ + +tbody, +thead, +tr { + margin: 0; + padding: 0; + border: 0; +} + +form label { + cursor: pointer; +} + +fieldset { + border: none; +} + +input, +select, +textarea, +option, +optgroup, +td { + font: inherit; + color: inherit; +} + +.rtl input, +.rtl select, +.rtl textarea, +.rtl td { + text-align: right; +} + +optgroup { + font-style: normal; + font-weight: 500; + background-color: #ddd; +} + +optgroup option { + font-weight: normal; + background-color: #fff; +} + +#ta, +.tmplvars textarea {} + +form select { + background: #F9F9F9; + border-color: #AAAAAA #DEDEDE #DEDEDE #AAAAAA; + border-style: solid; + border-width: 1px; + padding: 4px 4px 4px 2px; + margin: 0 2px 0 0; + min-height: 17px; + vertical-align: baseline; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +form select.dropdown, +form select[size="1"], +form select:not([size]) { + height: 28px; +} + +form input[type="text"], +form input[type="password"], +form input[type="number"], +form textarea { + background: #f9f9f9; + border-color: #999 #DDD #DDD #999; + border-style: solid; + border-width: 1px; + padding: 4px 2px 4px 4px; + margin: 0 5px 0 0; + min-height: 17px; + vertical-align: baseline; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; + -moz-box-shadow: 0px 1px 3px #E8E8E8 inset; + -webkit-box-shadow: 0px 1px 3px #E8E8E8 inset; + box-shadow: 0px 1px 3px #E8E8E8 inset; +} + +.rtl form input[type="text"], +.rtl form textarea { + padding: 2px 2px 2px 0; +} + +input[type="email"]:focus, +input[type="password"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="url"]:focus, +input[type="number"]:focus, +textarea:focus, +select:focus { + outline: none; + background: #fff; + border-color: green; + border-style: solid; + border-width: 1px; +} + +input[type="button"], +input[type="submit"] { + background: #ededed; + border: 1px solid green; + cursor: pointer; + line-height: normal; + margin: 0 5px 3px 0; + padding: 4px 10px; + overflow: visible; + min-height: 27px; + -webkit-appearance: button; + background: -moz-linear-gradient(#f5f5f5, #DDDDDD); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#DDDDDD)); + background: -o-linear-gradient(#f5f5f5, #DDDDDD); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#f5f5f5, endColorstr=#DDDDDD); + zoom: 1; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +input[type="button"]:hover, +input[type="submit"] { + border-color: green; + background: -moz-linear-gradient(#FFFFFF, #EEEEEE); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#EEEEEE)); + background: -o-linear-gradient(#FFFFFF, #EEEEEE); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#EEEEEE); + zoom: 1; +} + +input.checkbox, +input.radio, +input.submit, +input.button, +input[type="checkbox"], +input[type="radio"], +input[type="submit"], +input[type="button"] { + height: auto !important; + width: auto !important; + cursor: pointer; + cursor: hand; +} + +input.checkbox, +input.radio, +input[type="checkbox"], +input[type="radio"] { + vertical-align: -2px; +} + +select { + border: 1px solid #c3c3c3 !important; + border: 0; + background: #fcfcfc; + cursor: pointer; + cursor: hand; +} + +.form { + padding: 15px; + border: solid 1px #ddd; +} + +form input.hidden { + display: none !important; + position: absolute; +} + +.form label, +.form input, +.form textarea { + display: block; + float: left; + vertical-align: middle; +} + +.form label { + padding-right: 20px; + text-align: right; + width: 110px; +} + +.rtl .form label, +.rtl .form input, +.rtl .form textarea { + float: right; +} + +.rtl .form label { + padding-left: 20px; + text-align: left; +} + +form textarea { + height: 75px; + width: 300px; +} + +.form legend { + color: #04C; + font-weight: 500; + padding: 5px; +} + +.form select { + display: inline; + float: left; +} + +.rtl .form select { + float: right; +} + +.form br { + clear: both; +} + +input.submit { + display: block !important; + float: none !important; + margin: 20px 0 0 140px !important; +} + +.rtl input.submit { + margin: 20px 140px 0 0 !important; +} + +.form fieldset.list { + margin: 6px 6px 3px 0; +} + +.rtl .form fieldset.list { + border: 0; + padding: 0 !important; + margin: 6px 0 3px 6px; +} + +.form fieldset.list legend { + display: none; +} + +.form fieldset.list label, +.form fieldset.list input { + padding: 0; + margin: 0 0 3px; + float: left; + display: inline; + border: 0; + background: none; + width: auto; + height: auto; +} + +.rtl .form fieldset.list label, +.rtl .form fieldset.list input { + float: right; +} + +.form fieldset.list label { + padding-left: 5px; + text-align: left; + width: auto; +} + + +/* -------------------------[ Misc stuff ]--- */ + +.sectionBody fieldset { + background: none repeat scroll 0 0 #FDFDFD; + border: 1px solid #CCCCCC; + padding: 15px !important; +} + +.sectionBody legend { + font-weight: 500; + padding: 5px 15px; + background: #fff; + border: 1px solid #ccc; + -moz-box-shadow: 1px 1px 3px #ccc; + -webkit-box-shadow: 1px 1px 3px #ccc; + box-shadow: 1px 1px 3px #ccc; + -moz-border-radius: 3px; + -webkit-border-radius: 3px; + border-radius: 3px; +} + +.sectionBody fieldset h3 { + font-size: 14px; + color: #789; + font-weight: 500; + padding-bottom: 0; + margin-bottom: 0; +} + +.sectionHeader, +.showHideVisible { + color: #666; + margin: 0 15px; + padding: 5px 3px 5px; + zoom: 1; + font-weight: 500; + font-size: 14px; + border: 1px solid #ccc; + border-bottom: none; + text-shadow: 0px 1px 0px #FFF; +} + +.tab-page .sectionHeader { + margin: 2px 3px 0px; +} + +.rtl .sectionHeader { + direction: rtl; + padding: 5px 18px 5px 3px; +} + +.sectionBody, +.layerVisible { + position: relative; + display: none; + margin: 5px 15px 15px; + display: block; +} + +.tab-page .sectionBody, +.tab-page .section .sectionBody, +.sectionBody .sectionBody { + background: none repeat scroll 0 0 #F7F7F7!important; + border: 1px solid #CCCCCC; + margin: 0 3px 15px; + padding: 7px; +} + +.section .sectionBody { + margin: 0 15px 15px; + padding: 15px; + background-color: #fff; + border: 1px solid #CCCCCC; +} + +.rtl .sectionBody, +.layerVisible { + direction: rtl; + position: inherit; +} + +.showHideVisible, +.layerVisible { + margin: 0 10px 4px; +} + +.sectionHeader { + padding: 5px 9px 5px 15px; + background: -moz-linear-gradient(#f5f5f5, #DDDDDD); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#DDDDDD)); + background: -o-linear-gradient(#f5f5f5, #DDDDDD); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#f5f5f5, endColorstr=#DDDDDD); + zoom: 1; + -moz-box-shadow: 0px 1px 0px #fff inset; + -webkit-box-shadow: 0px 1px 0px #fff inset; + box-shadow: 0px 1px 0px #fff inset; +} + +.rtl .sectionHeader { + direction: rtl; + padding: 5px 18px 5px 3px; +} + +.comment { + font-size: 11px; + color: #999; + padding:4px 0; +} + +thead, +.fancyrow { + color: #333; + height: 18px !important; + background-color: #E4E4E4; +} + +thead td { + color: #333; + border-top: 1px solid #fff; +} + +.fancyrow2 { + height: 18px !important; + background-color: #F0A62F; + background-position: top; + background-repeat: repeat-x; + border-bottom: 1px solid #fff; + color: #fff; +} + +li { + padding: 0; + margin: 0; + list-style: disc outside url(images/misc/li.png); +} + +ul { + margin: 0 20px 0 10px; +} + +.rtl ul { + margin: 0 10px 0 20px; +} + +.screen { + border: 1px solid #ddd; + text-align: center; +} + +a img { + border: 0; +} + +.even { + background: #D9E7C2; +} + +.odd { + background: #fff; +} + + +/* -------------------------[ end sortable table ]--- */ + +.disabledImage { + width: 20px; + opacity: 0.3; + filter: alpha(opacity=30); +} + +.disabledImage img { + border: 0; +} + +.editorCell { + border-top: 1px solid #808080; + text-align: left; + vertical-align: baseline; +} + +.rtl .editorCell { + text-align: right; +} + +.row1, +.row2, +.row3 { + background-color: #fff; + color: #333; +} + +.row2 { + background-color: #fff; +} + +.row3 { + background-color: #f5f5f5; +} + +div.treeframebody { + background: #f5f5f5 url(images/subnav.jpg) !important; + -webkit-box-shadow: inset -2px 2px 6px 0px rgba(0, 0, 0, 0.1); + box-shadow: inset -2px 2px 6px 0px rgba(0, 0, 0, 0.1); +} + +#treeMenu { + margin-left: 2px; + background-color: rgba(0, 0, 0, 0.1); + border-bottom: 1px solid #fff; +} + +#treeMenu table td { + padding: 3px 0px; +} + +#treeMenu * { + vertical-align: middle; +} + +#treeHolder { + cursor: default; + height: 100%; + padding: 6px 8px 0; + line-height: 1.5em; +} + +#treeHolder { + margin-top: 0; + padding-left: 8px; +} + +#treeRoot { + margin-top: 2px; + margin-left: -20px; +} + +#treeRoot div img { + margin: 0; + vertical-align: middle; +} + +.rtl #treeRoot div img { + margin: 0; +} + +#floater { + display: none; + position: absolute; + width: 100%; + padding: 15px; + padding-bottom: 10px; + top: 31px; + left: 0px; + background: #fff; + border: 1px solid #b0b0b0; + box-shadow: 0 5px 5px 0 rgba(0,0,0,.1); + box-sizing: border-box; + z-index: 500; +} + +#floater td { + padding: 0 !important; +} + +#floater input, +#floater select { + box-sizing: border-box; + width: 150px; + margin-bottom: 5px; +} + +.rtl #floater { + right: 4px +} + +.rootNode, +.treeNode, +.treeNodeHover, +.treeNodeSelected, +.emptyNode { + color: #000; + cursor: pointer; + width: auto; + margin-right: 2px; +} + +div.treeNode { + white-space: nowrap; +} + +.treeNodeSelected, +.treeNodeHover { + background-color: #FFFFFF; + border: 1px solid #CCC; + color: #000; + padding: 1px 2px; + margin-left: -3px; +} + +.treeNodeSelected { + font-weight: 700; +} + +.unpublished a, +.unpublishedNode, +.unpublish { + color: #B68282; + font-style: italic; +} + +.deletedNode, +.deleted { + color: #A52A2A; + text-decoration: line-through; +} + +.publishedNode { + /*color: #4078c0;*/ + color: #3697cd; +} + +.emptyNode { + color: #aaa; + cursor: default; +} + +.notInMenuNode { + color: #39515d; + text-decoration: none; +} + +.protectedNode { + color: #aaa; +} + +#treeSplitter { + width: 10px; + height: 100%; + position: absolute; + right: -10px; + +} + +.rtl #treeSplitter { + left: -10px; +} + +.disabledPlugin a { + color: #B68282; + font-style: italic; +} + +label.disabled { + color: #aaa; +} + + +/* -------------------------[ grid style ]--- */ + +.grid { + width: 100%; + background-color: #fff; + border: 1px solid silver; + border-collapse: collapse; +} + +.grid th, +.grid td { + padding: 5px; +} + +.gridHeader, +.grid th { + color: #333; + font-weight: 500; + white-space: nowrap; + background-color: #d2d2d2; + text-align: left; +} + +.gridItem { + background-color: #fff; + padding: 3px; +} + +.gridAltItem { + background-color: #f7f7f7; + padding: 3px; +} + +.grid tbody tr:hover td { + background: #E9EDF3; +} + +.gridRowIcon:hover { + background-color: #f5f5dc; +} + +.grid a { + text-decoration: none; +} + +.grid img { + vertical-align: middle; + padding-right: 4px; +} + + +/* -------------------------[ search bar ]--- */ + +.searchbar { + width: 100%; +} + +.searchbar table { + margin-top: -3px; +} + +.searchtext { + margin-top: -5px!important; + height: 18px; + padding: 2px; +} + +.searchbutton { + width: 22px; + padding: 5px; + text-decoration: none; + background: #fff; + border: 1px solid #D1D8DF; +} + +.searchbutton:hover { + text-decoration: none; + background: #fff; + border: 1px solid #88939E; +} + +.searchbutton img { + vertical-align: middle; + margin: 0; + padding: 0 +} + +.searchtoolbarbtn { + text-decoration: none; + border: 1px solid #D1D8DF; + text-decoration: none!important; + background: #fff; + padding: 5px 5px 5px 2px; +} + +.searchtoolbarbtn img { + vertical-align: middle; + padding: 3px; +} + +.searchtoolbarbtn:hover { + text-decoration: none; + border: 1px solid #88939E; + background: #fff; +} + + +/* -------------------------[ home page main links ]--- */ + +a.hometblink, +a.hometblink:active, +a.hometblink:visited, +a.hometblink:link, +.hometblink { + text-decoration: underline; + color: #333; + font-weight: 500; +} + +a.hometblink:hover { + text-decoration: underline; + color: Gray; +} + +.notice { + width: 100%; + padding: 5px; + border: 1px solid #eee; + background-color: #f5f5f5; + color: #707070; +} + +#preLoader { + position: absolute; + z-index: 50000; + width: 100%; + height: 100%; + text-align: center; + vertical-align: middle; + padding: 100px 0 0 0; + background-color: rgba(255, 255, 255, 0.5); +} + +.preLoaderText { + background-color: #fff; + width: 400px; + height: 150px; + padding: 50px; + border: 1px solid #dadada; + -webkit-border-radius: 7px; + -moz-border-radius: 7px; + border-radius: 7px; + -webkit-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); + -moz-box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); + box-shadow: 0 0 40px 0 rgba(0, 0, 0, 0.2); +} + +.preLoaderText p { + font-size: 18px; + padding: 25px 0 0 0; +} + +#loadingmask { + display: none !important; +} + + +/* -------------------------[ contextmenu in editing modules ]--- */ + +.contextMenu { + background: #fff; + margin: 0; + padding: 4px; + border: 1px solid #c9c9c9; + border-top-width: 3px; + border-top-color: #3697CD; + position: absolute; + z-index: 10000; + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); +} + +.cntxMnuItem { + background-image: url(images/misc/_tx_.gif); + cursor: pointer; + color: #333; + padding: 3px 5px; + border: 1px solid transparent; +} + +.rtl .cntxMnuItem, +.rtl .cntxMnuItemDisabled { + padding: 3px 5px; +} + +.cntxMnuItemDisabled { + cursor: default; + padding: 3px 5px; + color: #111; +} + +.cntxMnuItemOver { + background: #E6F2FF; + border: 1px solid #BACCDB; + color: #333; + padding: 3px 5px; + cursor: pointer; +} + +.rtl .cntxMnuItemOver { + padding: 2px 1px 2px 15px; +} + +.cntxMnuItem img, +.cntxMnuItemOver img, +.cntxMnuItemDisabled img { + margin: 0 8px 0 0; +} + +.rtl .cntxMnuItem img, +.rtl .cntxMnuItemOver img, +.rtl .cntxMnuItemDisabled img { + margin: 0 0 0 8px; +} + +.cntxMnuItem img, +.cntxMnuItemDisabled img { + +} + +.cntxMnuSeparator { + font-size: 0; + height: 1px; + background-color: #D8D8D8; + overflow: hidden; + margin: 3px 0; +} + +.rtl .cntxMnuSeparator { + margin: 3px 28px 3px 1px; +} + + +/* -------------------------[ Top Navbar of snap in top menu bar layout ]--- */ + +#topMenu { + background: url("images/misc/headers.jpg") repeat scroll 0 0 #23393C; +} + +#Navcontainer { + padding: 0 10px; + color: #fff; +} + +#nav { + margin: 0; + padding: 0; + height: 25px; + width: 100%; + position: absolute; + top: 12px; + overflow: visible !important; +} + +.rtl #nav { + right: 10px; +} + +#nav ul { + display: none; + height: 28px; + position: relative; + z-index: 500; + margin: 0 0 0 -10px; + padding: 0 0 0 10px; +} + +.rtl #nav ul { + margin: 0 -10px 0 0; + padding: 0 20px 0 0; +} + +#nav li { + list-style: none; + float: left; + width: auto; + margin: 0; + padding: 0; +} + +.rtl #nav li { + float: right; + margin: 0 0 0 3px; +} + +#nav li a { + color: #A4B8B6; + height: 28px; + text-decoration: none; + white-space: nowrap; + cursor: pointer; + line-height: 26px; + overflow: hidden; + padding: 0 18px; + float: none !important; + float: left; + display: block; +} + +#nav > li > a { + height: 29px; + line-height: 29px; +} + +#nav li ul li a { + padding: 0 18px !important; +} + +#nav li ul li a { + background: #d4d4d4; + float: left; + width: auto; +} + +.rtl #nav li ul li a { + float: right; +} + +#nav a:hover { + color: #fff; + background-color: rgba(255,255,255,0.05); +} + +#nav a:active { + color: #fff; + background-color: rgba(255,255,255,0.02); +} + +#nav li.active { + background: none repeat scroll 0 0 #888; + -moz-border-radius: 5px 5px 0 0; + -webkit-border-radius: 5px 5px 0 0; + border-radius: 5px 5px 0 0; + -moz-box-shadow: 0 1px 0 #CCC inset, 1px 1px 2px rgba(0, 0, 0, .7); + -webkit-box-shadow: 0 1px 0 #CCC inset, 1px 1px 2px rgba(0, 0, 0, .7); + box-shadow: 0 1px 0 #CCC inset, 1px 1px 2px rgba(0, 0, 0, .7); +} + +#nav li.active a { + color: #FFF; + position: relative; + + z-index: 999999; +} + +#nav li.active a:hover { + background-color: transparent; +} + +#nav li.active a:hover { + cursor: pointer; +} + +#nav li.active ul.subnav { + display: block; + position: fixed; + top: 37px; + width: 200%; + left: 0; + border-top: 1px solid #999; + border-bottom: 1px solid #FFF; +} + +#nav li.active ul.subnav { + right: 0; +} + +#nav li.active ul.subnav a { + color: #fff; + font-weight: 500; + background: #657587; + cursor: pointer; + border-left: none; +} + +#nav li.active ul.subnav li { + margin: 0; +} + +#nav li.active ul.subnav a:hover { + color: #fff; + background-color: #777; + background: -moz-linear-gradient(#999999, #444444); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#999999), to(#444444)); + background: -o-linear-gradient(#999999, #444444); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#999999, endColorstr=#444444); + /*ie8 ?*/ + background: -ms-linear-gradient(top, #999999, #444444); + /*ie9*/ + background: linear-gradient(to bottom, #999999, #444444); + /*ie10*/ + zoom: 1; +} + +#nav li.active ul.subnav a:active { + color: #ccc; +} + +#nav li.active ul.subnav, +#nav li.active ul.subnav a { + background-color: #777; + background: -moz-linear-gradient(#777777, #444444); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#777777), to(#444444)); + background: -o-linear-gradient(#777777, #444444); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#777777, endColorstr=#444444); + /*ie8 ?*/ + background: -ms-linear-gradient(top, #777777, #444444); + /*ie9*/ + background: linear-gradient(to bottom, #777777, #444444); + /*ie10*/ + zoom: 1; +} + + +/* -------------------------[ Contextual Menu used in the Tree Menu ]--- */ + +#mx_contextmenu { + position: absolute; + height: auto; + visibility: hidden; + z-index: 10000; + width: 190px; + background: #fff; + margin: 0; + padding: 4px; + border: 1px solid #C9C9C9; + overflow: hidden; + line-height: 11px; + font-size:12px; + /* font-size: 11px; */ + -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + -moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); + box-shadow: 0 1px 5px rgba(0, 0, 0, 0.3); +} + +#mx_contextmenu .menuLink { + cursor: pointer; + color: #222; + padding: 4px 2px 4px 4px; + line-height: 16px; + border: 1px solid #fff; +} + +#mx_contextmenu .menuLink:hover { + background: #E5F0D6; + border-color: #98BF6C; + color: #333; +} + +#mx_contextmenu .menuLink:hover, +#mx_contextmenu .menuLinkDisabled { + cursor: pointer; +} + +#mx_contextmenu .menuLinkDisabled { + cursor: default; + color: #787878; + padding: 3px 2px 4px 4px; + line-height: 16px; + border: 1px solid #fff; +} + +#mx_contextmenu .menuLink img, +#mx_contextmenu .menuLink:hover img, +#mx_contextmenu .menuLinkDisabled img { + margin-right: 8px; +} + +#mx_contextmenu .menuLink img, +#mx_contextmenu .menuLinkDisabled img { + /* opacity: .3; + filter: alpha(opacity=30); */ + vertical-align: top; +} + +#mx_contextmenu .menuLink:hover img { + /* opacity: 1; + filter: alpha(opacity=100); */ +} + +#mx_contextmenu #nameHolder { + color: #86939E; + text-align: left; + cursor: default; + font-weight: 500; + margin-bottom: 2px; + font-size: 12px; + padding: 6px 6px 6px 4px; +} + +#mx_contextmenu .seperator { + font-size: 0; + height: 1px; + background-color: #D8D8D8; + overflow: hidden; + margin: 3px 0; +} + +.rtl #mx_contextmenu .menuLink { + padding: 3px 2px 3px 16px; +} + +.rtl #mx_contextmenu .menuLink:hover, +.rtl #mx_contextmenu .menuLinkDisabled { + padding: 2px 1px 2px 15px; +} + +.rtl #mx_contextmenu .menuLink img, +.rtl #mx_contextmenu .menuLink:hover img, +.rtl #mx_contextmenu .menuLinkDisabled img { + margin-right: 8px; +} + +.rtl #mx_contextmenu #nameHolder { + text-align: right; +} + +.rtl #mx_contextmenu .seperator { + margin: 3px 28px 3px 1px; +} + + +/* -------------------------[ Settings Table ]--- */ + +.settings { + width: 600px; +} + +.settings tr { + width: 100% !important; +} + +.settings td, +.settings th { + background: transparent; +} + +.settings th { + width: 200px !important; + text-align: left; + color: #555; + font-size: inherit; +} + +.rtl .settings th { + text-align: right; +} + +.filelist td { + border-bottom: 1px solid #C2C3CF; +} + + +/* -------------------------[ Tabs ]--- */ + +.dynamic-tab-pane-control.tab-pane { + position: relative; + width: 100%; +} + +.rtl .dynamic-tab-pane-control.tab-pane { + direction: rtl; +} + +.dynamic-tab-pane-control .tab-row .tab { + color: #313131; + font-size: 1em; + cursor: pointer; + display: inline; + margin: 3px 2px 1px 0; + float: left; + padding: 4px 12px 5px 12px; + z-index: 1; + position: relative; + top: 0; + border: 1px solid #658f1a; + background: none repeat scroll 0 0 #66901b; + text-shadow: 0px -1px 0px #2B5F0C; + -webkit-border-radius: 4px 4px 0 0; + -moz-border-radius: 4px 4px 0 0; + border-radius: 4px 4px 0 0; + -ms-border-radius: 0; + background: -moz-linear-gradient(#8aae4b, #66901b); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#8aae4b), to(#66901b)); + background: -o-linear-gradient(#8aae4b, #66901b); +} + +.rtl .dynamic-tab-pane-control .tab-row .tab { + margin: 3px 5px 1px -3px; + float: right; + padding: 2px 15px 3px; +} + +.dynamic-tab-pane-control .tab-row .tab.hover { + text-decoration: none; + background: none repeat scroll 0 0 #749c2f; + background: -moz-linear-gradient(#749c2f, #4b7109); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#749c2f), to(#4b7109)); + background: -o-linear-gradient(#749c2f, #4b7109); +} + +.dynamic-tab-pane-control .tab-row .tab.selected { + color: #333; + z-index: 9; + top: 0; + padding-bottom: 6px; + border-width: 1px; + border-bottom-style: solid; + border-color: #ffcc72 #AAA #FFF #AAA; + border-radius: 0; + border-width: 1px 1px 0; + background: #fff; + background-color: #fff; + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#ffffff, endColorstr=#ffffff); +} + +.dynamic-tab-pane-control .tab-row .tab.selected span { + color: #111; + background-color: #fff; + text-shadow: none; +} + +.dynamic-tab-pane-control .tab-row .tab span { + color: #fff; + text-decoration: none; +} + +.dynamic-tab-pane-control .tab-row .tab .alert { + color: #ffcc72; +} + +.dynamic-tab-pane-control .tab-row .tab.selected .alert { + color: #ccc; +} + +.dynamic-tab-pane-control .tab-page { + clear: both; + background: #fff; + position: relative; + top: -2px; + padding: 20px 15px 14px !important; +} + +.rtl .dynamic-tab-pane-control .tab-page { + position: inherit; + /* critical adjustment for IE ul li Proper RTL demonstration */ +} + +.dynamic-tab-pane-control .tab-row { + z-index: 1; + white-space: nowrap; +} + +.dynamic-tab-pane-control .tab-row .fa { + margin-right: 3px; + font-size: 14px; +} + +.dynamic-tab-pane-control ul { + padding-left: 5px; + padding-right: 10px; + padding-bottom: 10px; +} + +.dynamic-tab-pane-control li { + padding-left: 2px; + padding-right: 5px; +} + + +/* -------------------------[ Tree buttons ]--- */ + +.treeButton, +.treeButtonDisabled { + display: block; + cursor: pointer; + cursor: hand; + color: #333; + border: 1px solid transparent; + border-radius: 3px; + padding: 3px 5px; + white-space: nowrap; + vertical-align: middle; +} + +.treeButton:hover { + border-color: #6e7a86; + background-color: #fff; + background-color: rgba(255,255,255,.5); +} + +.treeButton:active { + background-color: #fff; +} + +.treeButton .fa, +.treeButton .fa-lg { + font-size: 14px; +} + +.treeButtonDisabled { + cursor: default; + color: #777; + opacity: .5; + filter: alpha(opacity=50); +} + + +/* -------------------------[ Welcome Page ]--- */ + +a.hometblink, +a.hometblink img { + border: 0 !important; + text-decoration: none !important; +} + +.wm_header { + margin-bottom: 15px; + padding-bottom: 15px; + border-bottom: 1px dotted #bbb; +} + +.wm_header_title { + margin: 0; +} + +.wm_button { + display: inline-block; + margin: 0px 15px 15px 0px; + text-align: center; +} + +.wm_messages { + margin-left: 20px; + margin-top: 15px; + padding-top: 15px; + border-top: 1px dotted #bbb; +} + +.wm_messages .comment { + font-size: 12px; +} + +.wm_messages_inbox_link { + text-decoration: none !important; + color: #333 !important; +} + +.wm_messages_inbox_link:hover { + color: gray !important; +} + +.table--managerWelcome { + width: 100%; +} + +.rtl .wm_buttons { + text-align: right; +} + +.rtl .wm_button { + text-align: right; + margin: 0 20px 2px 5px; +} + + +/* -------------------------[ Welcome Page ]--- */ + +#mainActionPages { + background: #f5f5f5 url(images/misc/mainbg.gif) repeat-x top; +} + +.tab-page { + border: 1px solid #AAA; + border-radius: 0 0 5px 5px; + margin-bottom: 2em; +} + +.tab-page img { + vertical-align: middle; +} + +.sectionBody .tab-page { + padding: 20px 15px 15px !important; +} + + +/* -------------------------[ New sortable table class ]--- */ + +.sortabletable { + width: 100%; + border-collapse: collapse; +} + +.sortabletable thead tr { + color: #333; + font-weight: 500; + white-space: nowrap; + background-color: #d2d2d2; + text-align: left; +} + +.sortabletable tr { + background: #fff; +} + +.sortabletable tr.even { + background: #f7f7f7; +} + +.sortabletable tbody tr:hover { + background: #E9F0F3; +} + +.sortabletable td, +.sortabletable th { + padding: 5px!important; + border: 1px solid #ccc; +} + +.sortabletable th { + text-align: left; + cursor: pointer; + color: #333; +} + +.rtl .sortabletable th { + text-align: right; +} + +.sortabletable th a { + text-decoration: none; + color: #333; +} + +.sortabletable th:active { + background: #ccc; + padding: 3px 4px 1px 6px; +} + +.rtl .sortabletable th:active { + padding: 3px 6px 1px 4px; +} + + +/* -------------------------[ Pagination table ]--- */ + +#max-display-records { + margin: 10px 0; +} + +#pagination { + margin: 10px 0; +} + +#pagination ul { + margin: 10px 0; + display: inline; +} + +#pagination li { + list-style: none; + display: inline; + width: 15px; + margin: 0 0 0 1px; +} + +#pagination li a { + padding: 3px 8px; + border: 1px solid #D9E7C2; + text-decoration: none; + color: #333; +} + +#pagination li.currentPage a, +#pagination li a:hover { + color: #060; + border: 1px solid #060; +} + +fieldset.tab-page { + border: 1px solid #e4e4e4!important; +} + +h2#edit_document_title { + font-size: 15px; + color: #f5f5f5; + width: 100%; + border-bottom: none; + padding: 5px 10px; +} + +fieldset#preview h2.tab { + float: right; +} + + +/* -------------------------[ Action Buttons ]--- */ + +#actions { + background: none repeat scroll 0 0 rgba(230, 230, 230, 0.8); + height: 25px; + margin: 0 -1px 0 0; + padding: 10px 5px 14px 10px; + position: fixed; + right: 16px; + text-align: right; + top: 1px; + z-index: 100; + -moz-border-radius: 5px; + -webkit-border-radius: 5px; + border-radius: 5px; +} + +select#stay { + margin-top: -7px; + padding: 6px 5px 6px 2px; + width: auto !important; + height: 32px; +} + +.rtl #actions { + left: 10px; + text-align: left; +} + +ul.actionButtons { + margin: 0; + padding: 0; + /* accommodate border on buttons - */ + background: none; + min-height: 40px; + width: auto; + white-space: nowrap; + padding-top: 5px; +} + +.actionButtons li { + list-style: none; + margin-right: 3px; + padding: 0; + float: left; +} + +.actionButtons img { + vertical-align: top; + margin-top: 1px; + filter: alpha(opacity=30); + -moz-opacity: 0.3; + opacity: 0.3; +} + +.actionButtons:hover img { + filter: alpha(opacity=100); + -moz-opacity: 1; + opacity: 1; +} + +.actionButtons a { + border: 1px solid #BBB; + border-radius: 3px 3px 3px 3px; + color: #333; + font-weight: 500; + outline: medium none; + padding: 7px 8px 7px 4px; + text-decoration: none; + vertical-align: top; + white-space: nowrap; + text-shadow: 0px 1px 0px #FFF; + -moz-box-shadow: 1px 1px 2px #ccc; + -webkit-box-shadow: 1px 1px 2px #ccc; + box-shadow: 1px 1px 2px #ccc; + background: -moz-linear-gradient(#FFFFFF, #E0E0E0); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#E0E0E0)); + background: -o-linear-gradient(#FFFFFF, #E0E0E0); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#E0E0E0); + zoom: 1; +} + +.actionButtons a:hover { + border-color: #999; + -moz-box-shadow: 1px 1px 2px #aaa; + -webkit-box-shadow: 1px 1px 2px #aaa; + box-shadow: 1px 1px 2px #aaa; + -webkit-transition: all .3s ease; + -moz-transition: all .3s ease; + -o-transition: all .3s ease; + transition: .3s ease; + background: -moz-linear-gradient(#FFFFFF, #F5F5F5); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#FFFFFF), to(#F5F5F5)); + background: -o-linear-gradient(#FFFFFF, #F5F5F5); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#FFFFFF, endColorstr=#F5F5F5); + zoom: 1; + text-decoration:none !important; +} + +.actionButtons a:active { + background-color: #92aac4; + background-position: bottom left; + -webkit-box-shadow: 0 0 10px #b8c7d6; + -moz-box-shadow: 0 0 10px #b8c7d6; + box-shadow: 0 0 10px #b8c7d6; +} + +.actionButtons li.primary a, +.actionButtons a.primary, +.actionButtons a.default { + color: #fff; + border-color: #658f1a; + text-shadow: 0 -1px 0 #2B5F0C; + background: #66901b; + background: -moz-linear-gradient(#8aae4b, #66901b); + background: -webkit-gradient(linear, 0 0, 0 100%, from(#8aae4b), to(#66901b)); + background: -o-linear-gradient(#8aae4b, #66901b); + filter: progid: DXImageTransform.Microsoft.gradient(startColorstr=#8aae4b, endColorstr=#66901b); +} + +.actionButtons li.disabled a { + border: 1px solid #657587; + color: #777; + border-width: 0; + pointer-events: none; +} + +.actionButtons li.disabled a img { + opacity: .3; + filter: alpha(opacity=30); +} + +.actionButtons .plus { + margin: 0 2px 0 5px; + color: #3b454f; + font-weight: 500; +} + + +/* +* Generic styles for all form elements + */ + +form#mutate dt, +form#mutate dd { + margin-bottom: 10px; +} + +form#mutate dt label, +form#mutate dt h3.label { + font-size: 1em; + display: inline; + float: left; + width: 200px; + color: #821517!important; + font-weight: 500; +} + +form#mutate dd { + margin-left: 210px; +} + +form#mutate input.disabled { + background-color: #f5f5f5 !important; +} + +form#mutate select { + width: 308px; +} + +form#mutate .inputBox { + width: 93%; +} + +form#mutate select.inputBox { + margin-right: 5px; +} + +form#mutate .multitv input[type="text"] { + width: 300px; +} + +form#mutate .imageField { + width: 50%; + min-width: 300px; +} + +form#mutate input[name="menuindex"].inputBox { + text-align: center; + width: 40px !important; + padding-left: 0; + padding-right: 0; +} + +form#mutate input[name="ta"].inputBox { + width: 70%; +} + +#tv_body input[type="text"], +#tv_body input[type="password"], +#tv_body input[type="number"], +#tv_body textarea { + background: none repeat scroll 0 0 #FFFFFF; + max-width: 98% !important; +} + +form#mutate textarea.tv_textareamini { + height: 100px; + width: 300px; + overflow-y: scroll; +} + +form#mutate textarea.tv_textarea { + height: 100px; + width: 100%; + overflow-y: scroll; +} + + +/* +* Styling for datepicker elements in settings and templavars +*/ + +form#mutate input.date, +form#mutate input.tvdate { + margin-right: 10px; +} + + +/* +* Individual Styles for fieldset#settings_page_settings +*/ + +form#mutate fieldset#settings_page_settings input#pub_date, +form#mutate fieldset#settings_page_settings input#unpub_date { + width: 150px; +} + +form#mutate fieldset#settings_page_settings select { + width: 155px; +} + + +/* +* Individual Styles for fieldset#meta_keywords +*/ + +form#mutate fieldset#meta_keywords {} + +form#mutate fieldset#meta_keywords {} + +form#mutate fieldset#meta_keywords select.inputBox { + display: block; + margin-bottom: 0; +} + +form#mutate fieldset#meta_keywords dl.keywords { + float: left; + margin-right: 30px; +} + +form#mutate fieldset#meta_keywords dl.metatags { + float: left; +} + +form#mutate fieldset#meta_keywords dl dt label { + width: 100px; +} + +form#mutate fieldset#meta_keywords dl dd { + margin-left: 110px; +} + + +/* +* Individual Styles for fieldset#preview +*/ + +fieldset#preview iframe { + width: 100%; + margin: 0 auto; + border: 1px solid #f5f5f5; +} + + +/* +* Individual Styles for fieldset#document_content +*/ + +fieldset#document_content textarea#ta { + width: 100%; + height: 400px; + font-size: 1em; +} + + +/* +* Individual Styles for fieldset#access_permissions +*/ + +fieldset#access_permissions dt label { + width: 200px; +} + +fieldset#access_permissions dd { + margin-left: 210px; +} + +fieldset#access_permissions dl dd ul li { + list-style-type: none; +} + + +/* ppb: +* fieldset#settings_templvars +*/ + +fieldset#settings_templvars .tv_url_select { + width: 70px; + margin-right: 10px; +} + +fieldset#settings_templvars .tv_url_input { + width: 220px; +} + +fieldset#settings_templvars dd.tvCheckBox label input, +fieldset#settings_templvars dd.tvRadioOptions label input { + margin-right: 10px; +} + +fieldset#settings_templvars .tv_date { + width: 150px; +} + +form#mutate select.tv_url_select { + padding: 5px 3px; +} + + +/* ppb: +* Style mootools tooltips +*/ + +.custom-tip { + color: #333; + width: 175px; + z-index: 13000; + border: 1px solid #cccccc; + background: #fff; + padding: 5px; +} + +.custom-title { + font-weight: 500; + font-size: 1em; + margin: 0; + color: #fff; + padding: 6px 6px 4px; + background: #758CA2 url(images/misc/tab.gif); +} + +.custom-text { + font-size: 1em; + padding: 4px 8px 8px; + background: #fff; +} + + +/* ppb: +* Some styling for legacy mode fieldsets +*/ + +fieldset.legacy { + background: #fff; + margin: 10px; + padding: 10px; + border: 1px solid #e4e4e4!important; + position: relative; + margin-bottom: 35px; +} + +fieldset.legacy h2 { + width: 100%; + background: #f5f5f5; + margin: -10px -10px 15px -10px; + padding: 0 10px; + border-bottom: 1px solid #e4e4e4!important; +} + + +/* -------------------------[ date picker ]--- */ + +input.DatePicker, +#mutate input.DatePicker, +#userPane input.DatePicker, +#webUserPane input.DatePicker, +input#datefrom.DatePicker, +input#dateto.DatePicker { + width: 150px; + padding: 3px 3px 3px 24px; + border: 1px solid #b4cde4; + background: #fff url(images/icons/datenofocus.gif) no-repeat top left; + cursor: pointer; + ime-mode: disabled; +} + +input:focus.DatePicker, +#mutate input:focus.DatePicker, +#userPane input:focus.DatePicker, +#webUserPane input:focus.DatePicker, +input#datefrom:focus.DatePicker, +input#dateto:focus.DatePicker { + background: #fffce9 url(images/icons/datefocus.gif) no-repeat top left; + cursor: text; +} + +.dp_container { + position: relative; + padding: 0; + z-index: 500; +} + +.dp_cal { + background-color: #fff; + border: 1px solid #0070bf; + position: absolute; + width: 177px; + top: 24px; + left: 0; + margin: 0px 0px 3px 0px; +} + +.dp_cal table { + width: 100%; + border-collapse: collapse; + border-spacing: 0; +} + +.dp_cal p { + width: 177px; +} + +#mutate .dp_cal input.cal_timeTextBox, +.dp_cal input.cal_timeTextBox { + display: block; + text-align: center; + width: 60px !important; + margin: 0 auto; + margin-top: 3px; +} + +.dp_cal select { + margin: 2px 3px; + font-size: 1em; + width: auto !important; +} + +.dp_cal select option { + padding: 1px 3px; +} + +.dp_cal th, +.dp_cal td { + width: 14.2857%; + text-align: center !important; + font-size: 1em; + padding: 2px 0; +} + +.dp_cal th { + border: solid #aad4f2; + border-width: 1px 0; + color: #797774; + background: #daf2e6; + font-weight: 500; +} + +.dp_cal td { + cursor: pointer; +} + +.dp_cal thead th { + background: #d9eefc; +} + +.dp_cal td.dp_roll { + color: #333; + background: #fff6bf; +} + + +/* -------------------------[ must have this for the IE6 select box hiding ]--- */ + +.dp_hide { + visibility: hidden; +} + +.dp_empty { + background: #eee; +} + +.dp_today { + background: #daf2e6; +} + +.dp_selected { + color: #fff; + background: #328dcf; +} + + +/* System Alert Box +---------------------------------------------------------- */ + +.cbOverlay { + background-color: #000; + z-index: 50000; +} + +.cbContainer { + padding: 5px; + background-color: white; + z-index: 50000; +} + +.cbBox h3 { + color: #000; + background: #bee860 url(images/misc/fade.gif) repeat-x top; + padding: 5px; + font-weight: 500; +} + +.cbBox p { + margin: 3px; +} + +.cbBox .cbButtons { + text-align: center; +} + +.sysAlert { + width: 500px; + height: 330px; + white-space: nowrap; + overflow: auto; +} + +.phptextarea { + font-family: Consolas, 'Courier New', 'Courier', monospace; +} + + +/* Custom */ + + +/* normalize some td paddings */ + + +#tabTemplate tbody td, +.sectionBody td, +.sectionBody th { + padding: 1px 5px; + text-align: left; + vertical-align: middle; +} + +.sectionBody .displayparams, +.sectionBody .permissiongroup { + margin-bottom: 3px; + background-color: #eee; + border-collapse: separate; + border-spacing: 1px; +} + +.sectionBody .displayparams th, +.sectionBody .displayparams td { + padding: 4px 4px; +} + +.sectionBody .displayparams thead td, +.sectionBody .permissiongroup thead td { + border-top: none; +} +#displayparams table{ + background: #fff; +} +#displayparams table tbody td { + border-bottom: 1px dotted #d3d3d3; +} +.sectionBody .permissiongroup input, +.sectionBody .permissiongroups input { + width: 200px; +} +td#displayparams > table.displayparams { +border: none; +} + +/* replace warning red color in tabs */ + +strong[style*='color:#EF1D1D'] { + color: yellow !important; +} + +.selected strong[style*='color:#ffeb00'] { + color: red !important; +} + +#tabEvents table, +#tabEvents td { + padding: 2px; +} + +code { + font-size: inherit; + font-family: Consolas, 'Courier New', 'Courier', monospace; + background-color: #eee; + border: 1px solid #ccc; + padding: 1px 2px; +} + +#resourcesPane .disabledPlugin a:hover { + color: #aaa; +} + + +/* breadcrumbs */ + +ul.breadcrumbs { + margin: 0px 15px 12px 15px; + padding: 0 0 9px 0; + line-height: normal; + font-size: 0; + border-bottom: 1px dotted #CECACA; +} + +li.breadcrumbs__li { + list-style: none; + display: inline-block; + padding: 0; + margin: 0; +} + +a.breadcrumbs__a { + font-size: 12px; + text-decoration: none; +} + +.breadcrumbs__sep { + font-size: 13px; + margin: 0 6px; + color: #777; +} + +li.breadcrumbs__li_current { + font-size: 12px; + font-weight: 500; +} + +/* end breadcrumbs */ + +/* table styles*/ + +.table, +#documentPane #tv_body table, +#documentPane [id*="table-"], +#documentPane [id*="table-tv"] { + width: 100%; +} + +.table--edit { + margin-bottom: 15px; +} + +.table th, +.table td { + text-align: left; + vertical-align: middle; +} + +table th { + font-weight: 500; +} + +.table--edit th { + width: 200px; + color: #555; + font-size: inherit; +} + +form input[type="text"], +form input[type="password"], +form input[type="number"], +form textarea, +form select { + box-sizing: border-box; +} + +.table--edit input[type="text"], +.table--edit input[type="password"], +.table--edit input[type="number"], +.table--edit textarea, +.table--edit select, +.settings input[type="text"], +.settings input[type="password"], +.settings input[type="number"], +.settings textarea, +.settings select { + width: 300px; +} + +.table th, +.table td, +#tabTemplate tbody td, +.sectionBody td, +.sectionBody th { + padding: 3px 5px; +} + +/* STYLES FOR HELP */ +#helpPane h1 { font-size:20px; display:block; border-bottom:1px solid #888; margin-bottom:1em; font-weight:500; } +#helpPane li:not(:first-child) > strong { margin-top:1.4em; } +#helpPane li > strong { display:block; font-size:14px; } +#helpPane pre { font-size:12px; border:1px solid #888; border-radius:5px; background-color:#fff;padding:1em; margin:10px 0;} + +/* Top nav search form */ +#searchform { + z-index: 1000; + position: absolute; + top: 38px; + right: 0; +} + +@media (max-width: 958px) { + #searchform { + display: none; + } +} + +#searchform input[type=text] { + height: 27px; + width: 160px; + padding-left: 10px; + margin-right: 8px; + border: 0px solid rgba(255,255,255,0.1); + border-radius: 0 !important; + border-width: 1px; + background: rgba(0,0,0,0.1); + color: white; + text-align: left; + margin-top: 2px; + /* + box-shadow: 1px 1px 2px rgba(0,0,0,0.3) inset; + -moz-box-shadow: 1px 1px 2px rgba(0,0,0,0.3) inset; + -webkit-box-shadow: 1px 1px 2px rgba(0,0,0,0.3) inset; + */ + -moz-transition-duration: 0.2s; + -webkit-transition-duration: 0.2s; + transition-duration: 0.2s; +} + +#searchform input[type=text]:focus { + width: 250px; + /*border-color: rgba(255,255,255,0.5);*/ + background: rgba(0,0,0, 0.2); + text-align: left; +} + +/* + * MODxRE2 styles + * css above is original MODxRE + * css below is basicaly MODxRE overrides to get MODxRE2 look + */ + +* { + border-radius: 0; + -moz-osx-font-smoothing: grayscale; +} + +body +{ + background-color: #F2F2F2 !important; + background-image: none !important; +} +div.treeframebody { + background-color: #ebebeb !important; + background-image: none !important; +} + +#topMenu { + height: 70px; + background: none; + background-color: #39515D !important; + background-image: -webkit-linear-gradient(left, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; + background-image: -o-linear-gradient(left, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; + background-image: linear-gradient(to right, #3f4850 0%, #365462 46%, #3e5554 60%, #42554d 68%, #573d4e 100%) !important; +} + +/* nav */ + +#nav { + height: 30px; + top: 0; +} + +#nav li a { + color: #A4B8B6; + height: 33px; + line-height: 31px; + padding: 0 18px; +} + +@media (max-width: 991px) { + #nav li a { + padding-left: 10px; + padding-right: 10px; + } +} + +@media (max-width: 767px) { + #nav li a { + padding-left: 5px; + padding-right: 5px; + } +} + +#nav > li > a { + height: 37px; + line-height: 38px; + color: #fff; + font-weight: 500; +} + +#nav ul { + height: 33px; +} + +#nav li.active { + background: rgba(0,0,0,0.15); + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + border-radius: 0 !important; +} + +#nav li.active ul.subnav, +#nav li.active ul.subnav a { + color: #fff; + + filter: none; + background: none; + background-color: transparent; +} + +#nav li.active ul.subnav a:hover { + color: #fff; + background: none; + background-color: rgba(0,0,0,0.1); +} + +#nav li.active ul.subnav a:active { + background-color: rgba(0,0,0,0.15); +} + +#nav li.active ul.subnav { + top: 37px; + background-color: rgba(0,0,0,0.15); + /*border-top-color: rgba(255,255,255,0.15);*/ + border-top-color: transparent; + border-top-width: 0; +} + +@media (max-width: 767px) { + #nav li ul li a { + padding: 0 8px !important; + } +} + +#supplementalNav { + top: 6px; + right: -1px; + color: #C9D4E1; +} + +#supplementalNav a { + border: 1px solid rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.15); + border-radius: 2px !important; + font-weight: normal !important; + color: rgba(255, 255, 255, 0.75) !important; +} + +#supplementalNav a:hover { + color: #fff !important; +} + +#supplementalNav .systemversion { + display: block; + float: left; + padding-top: 3px; + margin-right: 15px; + color: #939DA8; +} + +#supplementalNav .systemversion:before { + content: 'MODX Evolution '; +} + +@media (max-width: 991px) { + #supplementalNav .systemversion { + display: none; + } +} + +.alert-warning{color:#3697cd;} + + +#statusbar { + top: 45px; +} + +#statusbar img { + display: none; +} + +/* tree */ + +#treeMenu { + background-color: rgba(0, 0, 0, 0.05); + border-bottom: 1px solid #dbdbdb; +} + +/* tab panes */ + +.dynamic-tab-pane-control.tab-pane { + margin-top: 10px; +} + +.sectionBody > .dynamic-tab-pane-control.tab-pane, +#treePane.dynamic-tab-pane-control.tab-pane { + margin-top: 0; +} + +.dynamic-tab-pane-control .tab-row .tab, +.dynamic-tab-pane-control .tab-row .tab span { + color: #3697CD; + font-size: 13px; +} + +.dynamic-tab-pane-control .tab-row .tab { + position: relative; + margin: 3px 2px 1px 0; + padding: 8px 12px 9px 12px; + border: 0 none; + background: transparent; + text-shadow: none; + background: none; +} + +.dynamic-tab-pane-control .tab-row .tab.hover { + /*padding-bottom: 6px;*/ + background: transparent; + background-color: transparent; + filter: none; +} + +.dynamic-tab-pane-control .tab-row .tab.selected span, +.dynamic-tab-pane-control .tab-row .tab.selected.hover span { + color: #3697CD; +} +.dynamic-tab-pane-control .tab-row .tab.selected, +.dynamic-tab-pane-control .tab-row .tab.selected.hover { + padding-bottom: 6px; + border-style: solid; + border-color: #3697CD #fff #fff #fff; + border-width: 0; + background: #fff; + background-color: #fff; + filter: none; + box-shadow: 0 -3px 0 #3697cd,-1px 0 0 transparent; +} + + +.dynamic-tab-pane-control .tab-row .tab:before, +.dynamic-tab-pane-control .tab-row .tab:after { + position: absolute; + content: ''; + left: 0; + display: block; + right: 0; +} +.dynamic-tab-pane-control .tab-row .tab.selected:after, +.dynamic-tab-pane-control .tab-row .tab.selected.hover:after { + border-radius: 3px; + box-shadow: 0 0 5px 0 rgba(0,0,0,.1); + top: -3px; + bottom: 1px; + z-index: -1; +} + +.dynamic-tab-pane-control .tab-row .tab.selected:before { + background: #FFF; + top: 90%; + bottom: -4px; +} + +.dynamic-tab-pane-control .tab-row .tab.hover, +.dynamic-tab-pane-control .tab-row .tab.hover span { + color: #2b749d; +} + +.tab-page, +.dynamic-tab-pane-control .tab-page { + border: 0 none; + border-radius: 0; + box-shadow: 0 0 5px 0 rgba(0,0,0,.1); +} + +.sectionHeader { + padding: 7px 12px; + background: #F2F2F2; +} + +.tab-page .sectionHeader { + margin: 10px 3px 0px; +} + +.tab-page .sectionBody, +.tab-page .section .sectionBody, +.sectionBody .sectionBody { + padding: 12px; + background: #F9F9F9 !important; +} + +/* category icons in manage elements */ + +#site_templates, +#site_tmplvars, +#site_htmlsnippets, +#site_snippets, +#site_plugins, +#categories_list ul { + padding-left: 0; +} + +#site_templates li, +#site_tmplvars li, +#site_htmlsnippets li, +#site_snippets li, +#site_snippets li, +#site_plugins li, +#categories_list li { + list-style-type: none; + list-style: none; + margin-left: -15px; +} + +#site_templates li strong:before, +#site_tmplvars li strong:before, +#site_htmlsnippets li strong:before, +#site_snippets li strong:before, +#site_snippets li strong:before, +#site_plugins li strong:before, +#categories_list li strong:before { + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + color: #5b6f7a; + padding: 0 5px 0 5px; + content:'\f105'; +} + +.tab-pane ul li ul li strong:before{ + content:''; +} + +/* elements icons in manage elements */ + +.tab-pane ul li ul li { + list-style-type: none; + list-style: none; +} +.tab-pane ul li ul li:before{ + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + color: #5b6f7a; + padding: 0 5px 0 12px; +} +div#tabTemplates.tab-page ul li ul li:before, +div#tabCategory.tab-page ul li ul li.el-16:before{ + content:'\f1ea'; +} +div#tabVariables.tab-page ul li ul li:before, +div#tabCategory.tab-page ul li ul li.el-301:before{ + content:'\f022'; +} +div#tabChunks.tab-page ul li ul li:before, +div#tabCategory.tab-page ul li ul li.el-78:before{ + content:'\f009'; +} +div#tabSnippets.tab-page ul li ul li:before, +div#tabCategory.tab-page ul li ul li.el-22:before{ + content:'\f121'; +} +div#tabPlugins.tab-page ul li ul li:before, +div#tabCategory.tab-page ul li ul li.el-102:before{ + content:'\f1e6'; +} +div#tabCategory.tab-page ul li ul li.el-108:before{ + content:'\f085'; +} + +/* action buttons */ + +.actionButtons a { + padding: 8px 10px; + font-size: 13px; + font-weight: 500; +} +.actionButtons a, +.actionButtons li.primary a, +.actionButtons a.primary, +.actionButtons a.default { + text-shadow: none; + background: #fff; + filter: none; + color: #555; + border-width: 1px; + border-style: solid; + border-color: #E4E4E4; + border-radius: 3px !important; + /*box-shadow: 0 0 0 1px #E4E4E4;*/ + box-shadow: none; + transition: none; +} +.actionButtons a:hover { + background: none; + filter: none; + background-color: #3697cd; + box-shadow: none; + border-color: #3697cd; + color: #FFF !important; + transition: none; +} +.actionButtons a:active { + background-color: #3189ba; + border-color: #3189ba; +} +.actionButtons li.primary a, +.actionButtons a.primary { + color: #fff; + + border-color: #32AB9A; + background-color: #32AB9A; + background-image: linear-gradient(#32AB9A, #00948E); +} +.actionButtons li.primary a:hover, +.actionButtons a.primary:hover { + background-color: #2b9385; + background-image: linear-gradient(#2b9385, #007571); + border-color: #2b9385; +} +.actionButtons li.primary a:active, +.actionButtons a.primary:active { + background: #32AB9A; + border-color: #32AB9A; +} +.actionButtons img { + display: none; +} +#treePane .actionButtons img { + display: inline; +} + +.actionButtons--tableheader .fa { + font-size: 14px; +} + +.sectionBody .actionButtons { + padding-top: 0; + min-height: 48px; +} + +.sectionBody .actionButtons li { + margin-right: 10px; +} + +.sectionBody .actionButtons a { + display: inline-block; + padding: 9px 10px; + line-height: 1; +} + +.treeButton, +.treeButtonDisabled { + color: #3d5764 !important; + border-radius: 2px !important; + min-width: 15px; + text-align: center; +} + +.treeButton:active { + background-color: #d5d5d5; +} + +input[type="button"], +input[type="submit"] { + background: #ededed; + border: 1px solid #ededed; + border-radius: 3px !important; +} + +input[type="button"]:hover, +input[type="submit"]:hover { + background: #3697CD; + border: 1px solid #3697CD; + color: #fff; +} + +input[type="button"]:active, +input[type="submit"]:active { + background: #3189ba; + border: 1px solid #3189ba; +} + +form select, +input[type="text"], +input[type="email"], +input[type="password"], +input[type="url"], +input[type="number"], +textarea, +form input[type="text"], +form input[type="password"], +form input[type="number"], +form textarea, +#tv_body select, +#tv_body input[type="text"], +#tv_body input[type="email"], +#tv_body input[type="password"], +#tv_body input[type="url"], +#tv_body input[type="number"], +#tv_body textarea { + background-color: #FBFBFB; + transition: all .2s; + border-color: #dbdbdb; + -webkit-box-shadow: 0 1px 1px 0 rgba(0,0,0,0.05) inset; + box-shadow: 0 1px 1px 0 rgba(0,0,0,0.05) inset; +} + +#tv_body select, +#tv_body input[type="text"], +#tv_body input[type="email"], +#tv_body input[type="password"], +#tv_body input[type="url"], +#tv_body input[type="number"], +#tv_body textarea { + background-color: #fff; + border-color: #cfcfcf; +} + +#tmplvars-pane select, +#tmplvars-pane input[type="text"], +#tmplvars-pane input[type="email"], +#tmplvars-pane input[type="password"], +#tmplvars-pane input[type="url"], +#tmplvars-pane input[type="number"], +#tmplvars-pane textarea { + background-color: #FBFBFB; + border-color: #dbdbdb; +} + +input[type="email"]:focus, +input[type="password"]:focus, +input[type="search"]:focus, +input[type="text"]:focus, +input[type="url"]:focus, +input[type="number"]:focus, +textarea:focus, +select:focus, +form input[type="text"]:focus, +form input[type="password"]:focus, +form input[type="email"]:focus, +form input[type="url"]:focus, +form input[type="number"]:focus, +form textarea:focus, +#tv_body input[type="text"]:focus, +#tv_body input[type="password"]:focus, +#tv_body input[type="email"]:focus, +#tv_body input[type="url"]:focus, +#tv_body input[type="number"]:focus, +#tv_body textarea:focus { + border-color: #3697CD; +} + +/* context menu */ + +#mx_contextmenu { + border-top-color: #3697CD; + border-top-width: 3px; +} + +#mx_contextmenu #nameHolder { + color: #3697CD; + font-size: 13px; + padding: 9px 6px 7px 7px; + line-height: 1.2; +} + +#mx_contextmenu .menuLink { + color: #333; + padding: 4px 2px 4px 6px; + line-height: 1.3; + border: 1px solid #fff; +} + +#mx_contextmenu .menuLink:hover { + background: #E6F2FF; + border-color: #BACCDB; + color: #333; +} + +.treeButton .fa, +.treeButton .fa-lg, +#mx_contextmenu .menuLink .fa, +#mx_contextmenu .menuLink .fa-lg { + font-size: 14px; +} + +#mx_contextmenu img { + display: none; +} + +/* tree */ + +.treeNodeSelected, +.treeNodeHover { + background-color: rgba(54,151,205,0.2); + border: 1px solid #3697CD; + color: #3697CD; + padding: 1px 1px; + margin-left: -2px; +} + +/* dashboard */ + +.dashboard .wm_logo { + margin-top: 15px; + margin-bottom: 10px; + margin-left: 10px; + margin-right: 15px; +} + +.dashboard .wm_logo img { + height: 56px; +} + +.wm_buttons a { + font-weight: normal !important; + color: #3d5764 !important; +} + +.wm_buttons .fa { + margin-bottom: 5px; +} + +.dashboard h1 { + margin-top: 30px; +} + +.widget-wrapper { + border: 1px solid #ccc; +} + +.widget-wrapper .widget-title { + border: 1px solid #ccc; + border-width: 0 0 1px 0; +} + +.widget-stage .label, +.widget-stage .label-info { + background-color: transparent; + color: inherit; +} +.widget-stage .btn { + background-color: transparent !important; + color: #3d5764 !important; + border-color: #ccc !important; +} +.widget-stage .btn:hover { + border-color: #3697CD !important; +} + +#modxrecent_widget table { + margin-bottom: 0; +} + +#modxrecent_widget .table-condensed > tbody > tr > td { + padding: 2px 3px; +} + +#modxrecent_widget table ul { + margin: 0; + padding: 0; +} + +#modxrecent_widget table li { + padding: 3px 5px; +} + +#modxrecent_widget table li:last-child { + border-bottom-width: 0; + padding-bottom: 0; +} + +#content_body #which_editor { + margin-top: 12px; +} + +/* resource children list */ + +#tabChildren select[name="dir"], +#tabChildren select[name="sort"] { + margin-top: 10px; + margin-bottom: 5px; + margin-right: 10px; + padding: 3px; + font-size: 12px; +} + +table.grid { + border: 1px solid #e1e1e1; +} + +table.grid th, +table.grid .gridHeader { + background-color: #e9e9e9; +} + +table.grid th, +table.grid td { + padding: 7px; +} + +table.actionButtons { + margin-top: 15px; + margin-bottom: 10px; +} + +table.actionButtons img { + display: inline-block; +} + +table.actionButtons .searchtext { + padding: 5px; + height: 24px; + width: 150px; +} + +/* backup */ + +#tabBackup p.actionButtons { + margin-top: 20px; + margin-bottom: 15px; +} + +/* filter elements */ + +.filterElements-form { + margin-bottom: 10px; + margin-top: 5px; +} + +.actionButtons .filterElements-form { + margin-top: 0; + margin-bottom: 0; +} + +.filterElements-form .form-control { + display: block; + width: 100%; + max-width: 500px; + font-size: 13px; +} + +.actionButtons .filterElements-form .form-control { + width: 200px; + height: 33px; + padding-left: 8px; + box-sizing: border-box; +} + +/* pagetitle-icon */ + +.pagetitle-icon { + margin-right: 2px; + color: #3697CD; +} + +/* element-edit-message */ + +.element-edit-message { + padding-bottom: 10px; + border-bottom: 1px solid #ededed; + margin-bottom: 15px; + color: #777; +} + +.userprofiletable {margin-bottom:-20px;} + +.btn-small { padding:2px 4px !important; font-size:11px !important; } +.relative { position:relative; } + +.modx-alert { display:block; margin:60px 10px 10px 10px; padding:1em; } +.modx-alert.alert-error { background-color:#ffd0d0; border:1px solid #ff0000; color:#000; } + +tr.userIdle td { color:#aaa; } +tr.userIdle td strong:before { + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + color: #aaa; + padding: 0 5px 0 0; + content:'\f017'; +} +#modxonline_widget td strong:before { + font-family: FontAwesome; + font-style: normal; + font-weight: normal; + color: #3d5764; + padding: 0 5px 0 0; + content:'\f2be'; +} + +#modxonline_widget td strong.userMultipleSessions:before { + color: #bf4949; + content:'\f2bd'; +} +#modxonline_widget tr.userIdle td strong.userMultipleSessions:before { + color: #bf4949; + content:'\f017'; +} +/* c-roleslist */ +.c-roleslist { + margin-bottom: 10px; + margin-left: 12px; +} + +.c-roleslist-name { + display: block; + font-size: 13px; + font-weight: 500; +} + +.c-roleslist-hyphen { + display: none; +} + +.c-roleslist-description { + color: #666; +} + +.c-roleslist-item { + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px dashed #ddd; +} + +.c-roleslist-item:last-child { + margin-bottom: 0; + padding-bottom: 0; + border-bottom-width: 0; +} + +.c-roleslist-item--admin { + font-style: italic; +} +/* codemirror */ + +.CodeMirror pre { + font-size: 12px !important; +} + + +/*Manage Files*/ +#ManageFiles i.fa, #ManageFiles span.fa {color: #39515d;} +#ManageFiles i.fa.FilesTopFolder {color: #80969c;font-size: 19px!important;} +#ManageFiles i.fa.FilesFolder {font-size: 19px!important; color: #80969c; margin-right: 4px;} +#ManageFiles i.fa.FilesDeletedFolder {font-size: 19px!important; color: #e2e2e2; margin-right: 4px;} +#ManageFiles i.fa.FilesPage {color: #80969c; margin-right: 4px;} +#FilesTable {border-collapse:collapse;} +#FilesTable tr, #FilesTable td {padding:2px !important;} +#FilesTable td {border-bottom: 1px dotted #e2e2e2 !important;} +#FilesTable th {background: #fff;border: none;} + +/*BS button*/ +.btn { + display: inline-block; + padding: 6px 12px; + margin-bottom: 0; + font-size: 16px; + font-weight: normal; + /* line-height: 1.42857143;*/ + text-align: center; + white-space: nowrap; + vertical-align: middle; + -ms-touch-action: manipulation; + touch-action: manipulation; + cursor: pointer; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + background-image: none; + border: 1px solid transparent; + border-radius: 4px; +} +.btn:focus, +.btn:active:focus, +.btn.active:focus, +.btn.focus, +.btn:active.focus, +.btn.active.focus { + outline: thin dotted; + outline: 5px auto -webkit-focus-ring-color; + outline-offset: -2px; +} +.btn:hover, +.btn:focus, +.btn.focus { + color: #333; + text-decoration: none; +} +.btn:active, +.btn.active { + background-image: none; + outline: 0; + -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); + box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); +} +.btn.disabled, +.btn[disabled], +fieldset[disabled] .btn { + cursor: not-allowed; + filter: alpha(opacity=45); + -webkit-box-shadow: none; + box-shadow: none; + opacity: .45; +} +a.btn.disabled, +fieldset[disabled] a.btn { + pointer-events: none; +} +.btn-default { + font-size: 14px; + color: #3d5764 !important; + background-color: #fff; + border-color: #ccc; +} +.btn-default:focus, +.btn-default.focus { + color: #333; + background-color: #fff; + border-color: #3697CD; +} +.btn-default:hover { + color: #333; + background-color: #fff; + border-color: #3697CD; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + color: #333; + background-color: #e6e6e6; + border-color: #adadad; +} +.btn-default:active:hover, +.btn-default.active:hover, +.open > .dropdown-toggle.btn-default:hover, +.btn-default:active:focus, +.btn-default.active:focus, +.open > .dropdown-toggle.btn-default:focus, +.btn-default:active.focus, +.btn-default.active.focus, +.open > .dropdown-toggle.btn-default.focus { + color: #333; + background-color: #d4d4d4; + border-color: #8c8c8c; +} +.btn-default:active, +.btn-default.active, +.open > .dropdown-toggle.btn-default { + background-image: none; +} +.btn-default.disabled:hover, +.btn-default[disabled]:hover, +fieldset[disabled] .btn-default:hover, +.btn-default.disabled:focus, +.btn-default[disabled]:focus, +fieldset[disabled] .btn-default:focus, +.btn-default.disabled.focus, +.btn-default[disabled].focus, +fieldset[disabled] .btn-default.focus { + background-color: #fff; + border-color: #ccc; +} +.btn-default .badge { + color: #fff; + background-color: #333; +} + +.btn-lg, +.btn-group-lg > .btn { + padding: 10px 16px; + font-size: 18px; + line-height: 1.3333333; + border-radius: 6px; +} +.btn-sm, +.btn-group-sm > .btn { + padding: 5px 10px; + font-size: 12px; + line-height: 1.5; + border-radius: 3px; +} +.btn-xs, +.btn-group-xs > .btn { + padding: 3px 5px; + font-size: 10px; + line-height: 1.5; + border-radius: 3px; +} +.btn-block { + display: block; + width: 100%; +} +.btn-block + .btn-block { + margin-top: 5px; +} + diff --git a/manager/media/style/MODxRE2/style.php b/manager/media/style/MODxRE2/style.php new file mode 100644 index 0000000000..3ca2d4a8e7 --- /dev/null +++ b/manager/media/style/MODxRE2/style.php @@ -0,0 +1,184 @@ +config['manager_theme']/style.php + * Function: Manager style variables for images and icons. + * Encoding: UTF-8 + * Credit: icons by Mark James of FamFamFam http://www.famfamfam.com/lab/icons/ + * Date: 18-Mar-2010 + * Version: 1.1 + * MODX version: 1.0.3 +*/ +$style_path = 'media/style/' . $modx->config['manager_theme'] . '/images/'; +$modx->config['mgr_date_picker_path'] = 'media/style/common/moo-datepicker/datepicker.inc.php'; +if(!$modx->config['lang_code']) { + global $modx_lang_attribute; + $modx->config['lang_code'] = !$modx_lang_attribute ? 'en' : $modx_lang_attribute; +} + +if($_GET['a']==2) include_once('welcome.php'); + +// Tree Menu Toolbar +$_style['add_doc_tree'] = ''; +$_style['add_weblink_tree'] = ''; +$_style['collapse_tree'] = ''; +$_style['empty_recycle_bin'] = ''; +$_style['empty_recycle_bin_empty'] = ''; +$_style['expand_tree'] = ''; +$_style['hide_tree'] = ''; +$_style['refresh_tree'] = ''; +$_style['show_tree'] = $style_path.'tree/expand.png'; +$_style['sort_tree'] = ''; +$_style['sort_menuindex'] = ''; +$_style['element_management'] = ''; +$_style['images_management'] = ''; +$_style['files_management'] = ''; + +//Tree Contextual Menu Popup +$_style['ctx_new_document'] = 'fa fa-file-o fa-fw fa-lg'; +$_style['ctx_edit_document'] = 'fa fa-pencil-square-o fa-fw fa-lg'; +$_style['ctx_move_document'] = 'fa fa-arrows fa-fw fa-lg'; +$_style['ctx_resource_duplicate'] = 'fa fa-clone fa-fw fa-lg'; +$_style['ctx_sort_menuindex'] = 'fa fa-sort-numeric-asc fa-fw fa-lg'; +$_style['ctx_publish_document'] = 'fa fa-arrow-up fa-fw fa-lg'; +$_style['ctx_unpublish_resource'] = 'fa fa-arrow-down fa-fw fa-lg'; +$_style['ctx_delete'] = 'fa fa-trash fa-fw fa-lg'; +$_style['ctx_undelete_resource'] = 'fa fa-arrow-circle-o-up fa-fw fa-lg'; +$_style['ctx_weblink'] = 'fa fa-link fa-fw fa-lg'; +$_style['ctx_resource_overview'] = 'fa fa-info fa-fw fa-lg'; +$_style['ctx_preview_resource'] = 'fa fa-eye fa-fw fa-lg'; + +// Tree Icons +$_style['tree_deletedpage'] = $style_path.'tree/file-alt-deleted.png'; +$_style['tree_folder'] = $style_path.'tree/folder-close-alt.png'; /* folder.png */ +$_style['tree_folderopen'] = $style_path.'tree/folder-open-alt.png'; /* folder-open.png */ +$_style['tree_folder_secure'] = $style_path.'tree/folder-close-alt-secure.png'; +$_style['tree_folderopen_secure'] = $style_path.'tree/folder-open-alt-secure.png'; +$_style['tree_globe'] = $style_path.'tree/globe.png'; +$_style['tree_linkgo'] = $style_path.'tree/link.png'; +$_style['tree_minusnode'] = $style_path.'tree/angle-down.png'; +$_style['tree_page'] = $style_path.'tree/file-alt.png'; +$_style['tree_page_home'] = $style_path.'tree/home.png'; +$_style['tree_page_404'] = $style_path.'tree/warning-sign.png'; +$_style['tree_page_hourglass'] = $style_path.'tree/time.png'; +$_style['tree_page_info'] = $style_path.'tree/info.png'; +$_style['tree_page_blank'] = $style_path.'tree/file-alt.png'; +$_style['tree_page_css'] = $style_path.'tree/file-text.png'; +$_style['tree_page_html'] = $style_path.'tree/file-alt.png'; +$_style['tree_page_xml'] = $style_path.'tree/file-code.png'; +$_style['tree_page_js'] = $style_path.'tree/file-code.png'; +$_style['tree_page_rss'] = $style_path.'tree/file-rss.png'; +$_style['tree_page_pdf'] = $style_path.'tree/file-pdf.png'; +$_style['tree_page_word'] = $style_path.'tree/file-word.png'; +$_style['tree_page_excel'] = $style_path.'tree/file-excel.png'; +$_style['tree_plusnode'] = $style_path.'tree/angle-right.png'; +$_style['tree_showtree'] = ''; +$_style['tree_weblink'] = $style_path.'tree/link.png'; + +$_style['tree_page_secure'] = $style_path.'tree/file-alt-secure.png'; +$_style['tree_page_blank_secure'] = $style_path.'tree/file-alt-secure.png'; +$_style['tree_page_css_secure'] = $style_path.'tree/file-code-secure.png'; +$_style['tree_page_html_secure'] = $style_path.'tree/file-alt-secure.png'; +$_style['tree_page_xml_secure'] = $style_path.'tree/file-code-secure.png'; +$_style['tree_page_js_secure'] = $style_path.'tree/file-code-secure.png'; +$_style['tree_page_rss_secure'] = $style_path.'tree/file-rss-secure.png'; +$_style['tree_page_pdf_secure'] = $style_path.'tree/file-pdf-secure.png'; +$_style['tree_page_word_secure'] = $style_path.'tree/file-word-secure.png'; +$_style['tree_page_excel_secure'] = $style_path.'tree/file-excel-secure.png'; + +// resource overview and managment +$_style['icons_move_document'] = $style_path.'icons/move.png'; +$_style['icons_publish_document'] = $style_path.'icons/arrow-up.png'; +$_style['icons_unpublish_resource'] = $style_path.'icons/arrow-down.png'; +$_style['icons_delete_document'] = $style_path.'icons/trash.png'; +$_style['icons_resource_duplicate'] = $style_path.'icons/clone.png'; +$_style['icons_resource_overview'] = $style_path.'icons/info-sign.png'; +$_style['icons_edit_document'] = $style_path.'icons/save.png'; +$_style['icons_preview_resource'] = $style_path.'icons/eye.png'; + +//file manager icons +$_style['files_save'] = 'fa fa-floppy-o fa-fw fa-lg'; +$_style['files_folder'] = 'fa fa-folder-o fa-lg'; +$_style['files_deleted_folder'] = 'fa fa-folder-o fa-lg'; +$_style['files_folder-open'] = 'fa fa-folder-open-o fa-lg'; +$_style['files_page_php'] = 'fa fa-file-o fa-lg'; +$_style['files_page_html'] = 'fa fa-file-o fa-lg'; +$_style['files_cancel'] = 'fa fa-times-circle fa-fw fa-lg'; +$_style['files_top'] = 'fa fa-folder-open-o fa-lg'; +$_style['files_add'] = 'fa fa-plus-circle fa-fw fa-lg'; +$_style['files_upload'] = 'fa fa-upload fa-fw fa-lg'; +$_style['files_delete'] = 'fa fa-trash fa-fw fa-lg'; +$_style['files_duplicate'] = 'fa fa-clone fa-fw fa-lg'; +$_style['files_rename'] = 'fa fa-i-cursor fa-fw fa-lg'; +$_style['files_view'] = 'fa fa-eye fa-fw fa-lg'; +$_style['files_download'] = 'fa fa-download fa-fw fa-lg'; +$_style['files_unzip'] = 'fa fa-file-archive-o fa-fw fa-lg'; +$_style['files_edit'] = 'fa fa-pencil-square-o fa-fw fa-lg'; + +//for back compatibility + +$_style['icons_save'] = $style_path.'icons/save.png'; +$_style['icons_delete'] = $style_path.'icons/trash.png'; +$_style['icons_deleted_folder'] = $style_path.'tree/deletedfolder.png'; +$_style['icons_unzip'] = $style_path.'icons/download-alt.png'; + + +// Indicators +$_style['icons_tooltip'] = $style_path.'icons/question-sign-trans.png'; +$_style['icons_tooltip_over'] = $style_path.'icons/question-sign.png'; +$_style['icons_cal'] = $style_path.'icons/calendar.png'; +$_style['icons_cal_nodate'] = $style_path.'icons/calendar.png'; +$_style['icons_set_parent'] = $style_path.'icons/folder-open.png'; + +//modules +$_style['icons_modules'] = $style_path.'icons/modules.png'; +$_style['icons_run'] = $style_path.'icons/play.png'; + +//View Resource data +$_style['icons_new_document'] = $style_path.'icons/save.png'; +$_style['icons_new_weblink'] = $style_path.'icons/link.png'; +$_style['icons_undelete_resource'] = $style_path.'icons/undelete.png'; +$_style['icons_secured'] = $style_path.'icons/lock.png'; + + +//users and webusers +$_style['icons_user'] = $style_path.'icons/user.png'; + +//Messages +$_style['icons_message_unread'] = $style_path.'icons/email.png'; +$_style['icons_message_forward'] = $style_path.'icons/forward.png'; +$_style['icons_message_reply'] = $style_path.'icons/reply.png'; + +// Icons +$_style['icons_add'] = $style_path.'icons/add.png'; +$_style['icons_cancel'] = $style_path.'icons/cancel.png'; +$_style['icons_close'] = $style_path.'icons/stop.png'; +$_style['icons_refresh'] = $style_path.'icons/refresh.png'; +$_style['icons_table'] = $style_path.'icons/table.png'; + +// top bar +$_style['icons_loading_doc_tree'] = $style_path.'icons/info-sign.png'; +$_style['icons_mail'] = $style_path.'icons/email.png'; +$_style['icons_working'] = $style_path.'icons/exclamation.png'; + +//event log +$_style['icons_event1'] = $style_path.'icons/event1.png'; +$_style['icons_event2'] = $style_path.'icons/event2.png'; +$_style['icons_event3'] = $style_path.'icons/event3.png'; + + +//nowhere in the manager +$_style['icons_folder'] = $style_path.'icons/folder.png'; +$_style['icons_email'] = $style_path.'icons/email.png'; +$_style['icons_home'] = $style_path.'icons/home.png'; +$_style['icons_sort_menuindex'] = $style_path.'icons/sort_index.png'; +$_style['icons_weblink'] = $style_path.'icons/world_link.png'; +$_style['icons_tab_preview'] = $style_path.'icons/preview.png'; // Tabs +$_style['icons_information'] = $style_path.'icons/info-sign.png'; + + +// Miscellaneous +$_style['ajax_loader'] = '

                      '.$_lang['loading_page'].'

                      Please wait

                      '; +$_style['tx'] = $style_path.'misc/_tx_.gif'; +$_style['icons_right_arrow'] = $style_path.'icons/arrow-right.png'; +$_style['fade'] = $style_path.'misc/fade.gif'; +$_style['ed_save'] = $style_path.'misc/ed_save.gif'; diff --git a/manager/media/style/MODxRE2/welcome.php b/manager/media/style/MODxRE2/welcome.php new file mode 100644 index 0000000000..90fcf67f33 --- /dev/null +++ b/manager/media/style/MODxRE2/welcome.php @@ -0,0 +1,21 @@ +config['enable_filter'] = 1; + +$modx->addSnippet('hasPermission','return $modx->hasPermission($key);'); + +if($modx->hasPermission('new_template') || $modx->hasPermission('edit_template') || $modx->hasPermission('new_snippet') || $modx->hasPermission('edit_snippet') || $modx->hasPermission('new_plugin') || $modx->hasPermission('edit_plugin') || $modx->hasPermission('manage_metatags')) + $hasAnyPermission = 1; +else $hasAnyPermission = 0; +$modx->addSnippet('hasAnyPermission','global $hasAnyPermission; return $hasAnyPermission;'); +$modx->addSnippet('getLoginUserName','return $modx->getLoginUserName();'); +$code = 'global $_lang;return $_SESSION["nrtotalmessages"] ? sprintf($_lang["welcome_messages"], $_SESSION["nrtotalmessages"], \'\' . $_SESSION["nrnewmessages"] . "") : $_lang["messages_no_messages"];'; +$modx->addSnippet('getMessageCount',$code); + +// Large Icons +$_style['icons_backup_large'] = 'fa fa-database fa-fw fa-2x'; +$_style['icons_mail_large'] = 'fa fa-envelope fa-fw fa-2x'; +$_style['icons_modules_large'] = 'fa fa-cogs fa-fw fa-2x'; +$_style['icons_resources_large'] = 'fa fa-th fa-fw fa-2x'; +$_style['icons_security_large'] = 'fa fa-lock fa-fw fa-2x'; +$_style['icons_webusers_large'] = 'fa fa-users fa-fw fa-2x'; +$_style['icons_help_large'] = 'fa fa-question-circle fa-fw fa-2x'; diff --git a/manager/media/style/MODxRE2/welcome.tpl b/manager/media/style/MODxRE2/welcome.tpl new file mode 100644 index 0000000000..d2e93feb0a --- /dev/null +++ b/manager/media/style/MODxRE2/welcome.tpl @@ -0,0 +1,243 @@ + + + + + +
                      + + + [[@OnManagerWelcomePrerender]] + + + +
                      +
                      + [+logout_reminder_msg+] +
                      +
                      + + +
                      +
                      + [+multiple_sessions_msg+] +
                      +
                      + + +
                      +
                      + [+config_check_results+] +
                      +
                      + +
                      + + +
                      + +
                      +
                        + [[@OnManagerWelcomeHome]] + + +
                      • +
                        +
                        + [%welcome_title%] +
                        +
                        + +
                        +
                        +
                        +
                        +
                        + + +
                        + [%security%]
                        +
                        + + + +
                        + [%web_users%]
                        +
                        + + + +
                        + [%modules%]
                        +
                        + + + +
                        + [%elements%]
                        +
                        + + + +
                        + [%backup%]
                        +
                        + + + +
                        + [%help%]
                        +
                        + +
                        +
                        + + + + + + + + + + + + + + + + + + + + + + + +
                        [%yourinfo_username%][[#getLoginUserName]]
                        [%yourinfo_role%][[$_SESSION['mgrPermissions']['name'] ]]
                        [%yourinfo_previous_login%][[$_SESSION['mgrLastlogin']:math('%s+[(server_offset_time)]'):dateFormat]]
                        [%yourinfo_total_logins%][[$_SESSION['mgrLogincount']:math('%s+1')]]
                        [%inbox%][[#getMessageCount]]
                        +
                        +
                        +
                        +
                      • + + + + +
                      • +
                        +
                        + [%onlineusers_title%] +
                        +
                        + +
                        +
                        +
                        +
                        +
                        + [+OnlineInfo+] +
                        +
                        +
                        +
                      • + + + + +
                      • +
                        +
                        + [%activity_title%] +
                        +
                        + +
                        +
                        +
                        +
                        + [+RecentInfo+] +
                        +
                        +
                      • + + + + +
                      • +
                        +
                        + [%modx_news_title%] +
                        +
                        + +
                        +
                        +
                        +
                        + [+modx_news_content+] +
                        +
                        +
                      • + + + + +
                      • +
                        +
                        + [%security_notices_title%] +
                        +
                        + +
                        +
                        +
                        +
                        + [+modx_security_notices_content+] +
                        +
                        +
                      • + +
                      +
                      + + + [[@OnManagerWelcomeRender]] +
                      +

                      + [%reset%] +

                      +
                      + +
                      + + + + + + + + \ No newline at end of file diff --git a/manager/media/style/common/bootstrap/css/bootstrap.min.css b/manager/media/style/common/bootstrap/css/bootstrap.min.css new file mode 100644 index 0000000000..4980b42726 --- /dev/null +++ b/manager/media/style/common/bootstrap/css/bootstrap.min.css @@ -0,0 +1,5 @@ +/*! + * Bootstrap v3.3.7 (http://getbootstrap.com) + * Copyright 2011-2016 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + *//*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */@media print{*,*:before,*:after{background:transparent !important;color:#000 !important;-webkit-box-shadow:none !important;box-shadow:none !important;text-shadow:none !important}a,a:visited{text-decoration:underline}a[href]:after{content:" (" attr(href) ")"}abbr[title]:after{content:" (" attr(title) ")"}a[href^="#"]:after,a[href^="javascript:"]:after{content:""}pre,blockquote{border:1px solid #999;page-break-inside:avoid}thead{display:table-header-group}tr,img{page-break-inside:avoid}img{max-width:100% !important}p,h2,h3{orphans:3;widows:3}h2,h3{page-break-after:avoid}.navbar{display:none}.btn>.caret,.dropup>.btn>.caret{border-top-color:#000 !important}.label{border:1px solid #000}.table{border-collapse:collapse !important}.table td,.table th{background-color:#fff !important}.table-bordered th,.table-bordered td{border:1px solid #ddd !important}}*{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}*:before,*:after{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}html{font-size:10px;-webkit-tap-highlight-color:rgba(0,0,0,0)}body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:14px;line-height:1.42857143;color:#333;background-color:#fff}input,button,select,textarea{font-family:inherit;font-size:inherit;line-height:inherit}a{color:#337ab7;text-decoration:none}a:hover,a:focus{color:#23527c;text-decoration:underline}a:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}figure{margin:0}img{vertical-align:middle}.img-responsive,.thumbnail>img,.thumbnail a>img,.carousel-inner>.item>img,.carousel-inner>.item>a>img{display:block;max-width:100%;height:auto}.img-rounded{border-radius:6px}.img-thumbnail{padding:4px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:all .2s ease-in-out;-o-transition:all .2s ease-in-out;transition:all .2s ease-in-out;display:inline-block;max-width:100%;height:auto}.img-circle{border-radius:50%}hr{margin-top:20px;margin-bottom:20px;border:0;border-top:1px solid #eee}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}[role="button"]{cursor:pointer}h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{font-family:inherit;font-weight:500;line-height:1.1;color:inherit}h1 small,h2 small,h3 small,h4 small,h5 small,h6 small,.h1 small,.h2 small,.h3 small,.h4 small,.h5 small,.h6 small,h1 .small,h2 .small,h3 .small,h4 .small,h5 .small,h6 .small,.h1 .small,.h2 .small,.h3 .small,.h4 .small,.h5 .small,.h6 .small{font-weight:normal;line-height:1;color:#777}h1,.h1,h2,.h2,h3,.h3{margin-top:20px;margin-bottom:10px}h1 small,.h1 small,h2 small,.h2 small,h3 small,.h3 small,h1 .small,.h1 .small,h2 .small,.h2 .small,h3 .small,.h3 .small{font-size:65%}h4,.h4,h5,.h5,h6,.h6{margin-top:10px;margin-bottom:10px}h4 small,.h4 small,h5 small,.h5 small,h6 small,.h6 small,h4 .small,.h4 .small,h5 .small,.h5 .small,h6 .small,.h6 .small{font-size:75%}h1,.h1{font-size:36px}h2,.h2{font-size:30px}h3,.h3{font-size:24px}h4,.h4{font-size:18px}h5,.h5{font-size:14px}h6,.h6{font-size:12px}p{margin:0 0 10px}.lead{margin-bottom:20px;font-size:16px;font-weight:300;line-height:1.4}@media (min-width:768px){.lead{font-size:21px}}small,.small{font-size:85%}mark,.mark{background-color:#fcf8e3;padding:.2em}.text-left{text-align:left}.text-right{text-align:right}.text-center{text-align:center}.text-justify{text-align:justify}.text-nowrap{white-space:nowrap}.text-lowercase{text-transform:lowercase}.text-uppercase{text-transform:uppercase}.text-capitalize{text-transform:capitalize}.text-muted{color:#777}.text-primary{color:#337ab7}a.text-primary:hover,a.text-primary:focus{color:#286090}.text-success{color:#3c763d}a.text-success:hover,a.text-success:focus{color:#2b542c}.text-info{color:#31708f}a.text-info:hover,a.text-info:focus{color:#245269}.text-warning{color:#8a6d3b}a.text-warning:hover,a.text-warning:focus{color:#66512c}.text-danger{color:#a94442}a.text-danger:hover,a.text-danger:focus{color:#843534}.bg-primary{color:#fff;background-color:#337ab7}a.bg-primary:hover,a.bg-primary:focus{background-color:#286090}.bg-success{background-color:#dff0d8}a.bg-success:hover,a.bg-success:focus{background-color:#c1e2b3}.bg-info{background-color:#d9edf7}a.bg-info:hover,a.bg-info:focus{background-color:#afd9ee}.bg-warning{background-color:#fcf8e3}a.bg-warning:hover,a.bg-warning:focus{background-color:#f7ecb5}.bg-danger{background-color:#f2dede}a.bg-danger:hover,a.bg-danger:focus{background-color:#e4b9b9}.page-header{padding-bottom:9px;margin:40px 0 20px;border-bottom:1px solid #eee}ul,ol{margin-top:0;margin-bottom:10px}ul ul,ol ul,ul ol,ol ol{margin-bottom:0}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none;margin-left:-5px}.list-inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-top:0;margin-bottom:20px}dt,dd{line-height:1.42857143}dt{font-weight:bold}dd{margin-left:0}@media (min-width:768px){.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}}abbr[title],abbr[data-original-title]{cursor:help;border-bottom:1px dotted #777}.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:10px 20px;margin:0 0 20px;font-size:17.5px;border-left:5px solid #eee}blockquote p:last-child,blockquote ul:last-child,blockquote ol:last-child{margin-bottom:0}blockquote footer,blockquote small,blockquote .small{display:block;font-size:80%;line-height:1.42857143;color:#777}blockquote footer:before,blockquote small:before,blockquote .small:before{content:'\2014 \00A0'}.blockquote-reverse,blockquote.pull-right{padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0;text-align:right}.blockquote-reverse footer:before,blockquote.pull-right footer:before,.blockquote-reverse small:before,blockquote.pull-right small:before,.blockquote-reverse .small:before,blockquote.pull-right .small:before{content:''}.blockquote-reverse footer:after,blockquote.pull-right footer:after,.blockquote-reverse small:after,blockquote.pull-right small:after,.blockquote-reverse .small:after,blockquote.pull-right .small:after{content:'\00A0 \2014'}address{margin-bottom:20px;font-style:normal;line-height:1.42857143}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,"Courier New",monospace}code{padding:2px 4px;font-size:90%;color:#c7254e;background-color:#f9f2f4;border-radius:4px}kbd{padding:2px 4px;font-size:90%;color:#fff;background-color:#333;border-radius:3px;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.25)}kbd kbd{padding:0;font-size:100%;font-weight:bold;-webkit-box-shadow:none;box-shadow:none}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:1.42857143;word-break:break-all;word-wrap:break-word;color:#333;background-color:#f5f5f5;border:1px solid #ccc;border-radius:4px}pre code{padding:0;font-size:inherit;color:inherit;white-space:pre-wrap;background-color:transparent;border-radius:0}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}@media (min-width:768px){.container{width:750px}}@media (min-width:992px){.container{width:970px}}@media (min-width:1200px){.container{width:1170px}}.container-fluid{margin-right:auto;margin-left:auto;padding-left:15px;padding-right:15px}.row{margin-left:-15px;margin-right:-15px}.col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12{position:relative;min-height:1px;padding-left:15px;padding-right:15px}.col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12{float:left}.col-xs-12{width:100%}.col-xs-11{width:91.66666667%}.col-xs-10{width:83.33333333%}.col-xs-9{width:75%}.col-xs-8{width:66.66666667%}.col-xs-7{width:58.33333333%}.col-xs-6{width:50%}.col-xs-5{width:41.66666667%}.col-xs-4{width:33.33333333%}.col-xs-3{width:25%}.col-xs-2{width:16.66666667%}.col-xs-1{width:8.33333333%}.col-xs-pull-12{right:100%}.col-xs-pull-11{right:91.66666667%}.col-xs-pull-10{right:83.33333333%}.col-xs-pull-9{right:75%}.col-xs-pull-8{right:66.66666667%}.col-xs-pull-7{right:58.33333333%}.col-xs-pull-6{right:50%}.col-xs-pull-5{right:41.66666667%}.col-xs-pull-4{right:33.33333333%}.col-xs-pull-3{right:25%}.col-xs-pull-2{right:16.66666667%}.col-xs-pull-1{right:8.33333333%}.col-xs-pull-0{right:auto}.col-xs-push-12{left:100%}.col-xs-push-11{left:91.66666667%}.col-xs-push-10{left:83.33333333%}.col-xs-push-9{left:75%}.col-xs-push-8{left:66.66666667%}.col-xs-push-7{left:58.33333333%}.col-xs-push-6{left:50%}.col-xs-push-5{left:41.66666667%}.col-xs-push-4{left:33.33333333%}.col-xs-push-3{left:25%}.col-xs-push-2{left:16.66666667%}.col-xs-push-1{left:8.33333333%}.col-xs-push-0{left:auto}.col-xs-offset-12{margin-left:100%}.col-xs-offset-11{margin-left:91.66666667%}.col-xs-offset-10{margin-left:83.33333333%}.col-xs-offset-9{margin-left:75%}.col-xs-offset-8{margin-left:66.66666667%}.col-xs-offset-7{margin-left:58.33333333%}.col-xs-offset-6{margin-left:50%}.col-xs-offset-5{margin-left:41.66666667%}.col-xs-offset-4{margin-left:33.33333333%}.col-xs-offset-3{margin-left:25%}.col-xs-offset-2{margin-left:16.66666667%}.col-xs-offset-1{margin-left:8.33333333%}.col-xs-offset-0{margin-left:0}@media (min-width:768px){.col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12{float:left}.col-sm-12{width:100%}.col-sm-11{width:91.66666667%}.col-sm-10{width:83.33333333%}.col-sm-9{width:75%}.col-sm-8{width:66.66666667%}.col-sm-7{width:58.33333333%}.col-sm-6{width:50%}.col-sm-5{width:41.66666667%}.col-sm-4{width:33.33333333%}.col-sm-3{width:25%}.col-sm-2{width:16.66666667%}.col-sm-1{width:8.33333333%}.col-sm-pull-12{right:100%}.col-sm-pull-11{right:91.66666667%}.col-sm-pull-10{right:83.33333333%}.col-sm-pull-9{right:75%}.col-sm-pull-8{right:66.66666667%}.col-sm-pull-7{right:58.33333333%}.col-sm-pull-6{right:50%}.col-sm-pull-5{right:41.66666667%}.col-sm-pull-4{right:33.33333333%}.col-sm-pull-3{right:25%}.col-sm-pull-2{right:16.66666667%}.col-sm-pull-1{right:8.33333333%}.col-sm-pull-0{right:auto}.col-sm-push-12{left:100%}.col-sm-push-11{left:91.66666667%}.col-sm-push-10{left:83.33333333%}.col-sm-push-9{left:75%}.col-sm-push-8{left:66.66666667%}.col-sm-push-7{left:58.33333333%}.col-sm-push-6{left:50%}.col-sm-push-5{left:41.66666667%}.col-sm-push-4{left:33.33333333%}.col-sm-push-3{left:25%}.col-sm-push-2{left:16.66666667%}.col-sm-push-1{left:8.33333333%}.col-sm-push-0{left:auto}.col-sm-offset-12{margin-left:100%}.col-sm-offset-11{margin-left:91.66666667%}.col-sm-offset-10{margin-left:83.33333333%}.col-sm-offset-9{margin-left:75%}.col-sm-offset-8{margin-left:66.66666667%}.col-sm-offset-7{margin-left:58.33333333%}.col-sm-offset-6{margin-left:50%}.col-sm-offset-5{margin-left:41.66666667%}.col-sm-offset-4{margin-left:33.33333333%}.col-sm-offset-3{margin-left:25%}.col-sm-offset-2{margin-left:16.66666667%}.col-sm-offset-1{margin-left:8.33333333%}.col-sm-offset-0{margin-left:0}}@media (min-width:992px){.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{float:left}.col-md-12{width:100%}.col-md-11{width:91.66666667%}.col-md-10{width:83.33333333%}.col-md-9{width:75%}.col-md-8{width:66.66666667%}.col-md-7{width:58.33333333%}.col-md-6{width:50%}.col-md-5{width:41.66666667%}.col-md-4{width:33.33333333%}.col-md-3{width:25%}.col-md-2{width:16.66666667%}.col-md-1{width:8.33333333%}.col-md-pull-12{right:100%}.col-md-pull-11{right:91.66666667%}.col-md-pull-10{right:83.33333333%}.col-md-pull-9{right:75%}.col-md-pull-8{right:66.66666667%}.col-md-pull-7{right:58.33333333%}.col-md-pull-6{right:50%}.col-md-pull-5{right:41.66666667%}.col-md-pull-4{right:33.33333333%}.col-md-pull-3{right:25%}.col-md-pull-2{right:16.66666667%}.col-md-pull-1{right:8.33333333%}.col-md-pull-0{right:auto}.col-md-push-12{left:100%}.col-md-push-11{left:91.66666667%}.col-md-push-10{left:83.33333333%}.col-md-push-9{left:75%}.col-md-push-8{left:66.66666667%}.col-md-push-7{left:58.33333333%}.col-md-push-6{left:50%}.col-md-push-5{left:41.66666667%}.col-md-push-4{left:33.33333333%}.col-md-push-3{left:25%}.col-md-push-2{left:16.66666667%}.col-md-push-1{left:8.33333333%}.col-md-push-0{left:auto}.col-md-offset-12{margin-left:100%}.col-md-offset-11{margin-left:91.66666667%}.col-md-offset-10{margin-left:83.33333333%}.col-md-offset-9{margin-left:75%}.col-md-offset-8{margin-left:66.66666667%}.col-md-offset-7{margin-left:58.33333333%}.col-md-offset-6{margin-left:50%}.col-md-offset-5{margin-left:41.66666667%}.col-md-offset-4{margin-left:33.33333333%}.col-md-offset-3{margin-left:25%}.col-md-offset-2{margin-left:16.66666667%}.col-md-offset-1{margin-left:8.33333333%}.col-md-offset-0{margin-left:0}}@media (min-width:1200px){.col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12{float:left}.col-lg-12{width:100%}.col-lg-11{width:91.66666667%}.col-lg-10{width:83.33333333%}.col-lg-9{width:75%}.col-lg-8{width:66.66666667%}.col-lg-7{width:58.33333333%}.col-lg-6{width:50%}.col-lg-5{width:41.66666667%}.col-lg-4{width:33.33333333%}.col-lg-3{width:25%}.col-lg-2{width:16.66666667%}.col-lg-1{width:8.33333333%}.col-lg-pull-12{right:100%}.col-lg-pull-11{right:91.66666667%}.col-lg-pull-10{right:83.33333333%}.col-lg-pull-9{right:75%}.col-lg-pull-8{right:66.66666667%}.col-lg-pull-7{right:58.33333333%}.col-lg-pull-6{right:50%}.col-lg-pull-5{right:41.66666667%}.col-lg-pull-4{right:33.33333333%}.col-lg-pull-3{right:25%}.col-lg-pull-2{right:16.66666667%}.col-lg-pull-1{right:8.33333333%}.col-lg-pull-0{right:auto}.col-lg-push-12{left:100%}.col-lg-push-11{left:91.66666667%}.col-lg-push-10{left:83.33333333%}.col-lg-push-9{left:75%}.col-lg-push-8{left:66.66666667%}.col-lg-push-7{left:58.33333333%}.col-lg-push-6{left:50%}.col-lg-push-5{left:41.66666667%}.col-lg-push-4{left:33.33333333%}.col-lg-push-3{left:25%}.col-lg-push-2{left:16.66666667%}.col-lg-push-1{left:8.33333333%}.col-lg-push-0{left:auto}.col-lg-offset-12{margin-left:100%}.col-lg-offset-11{margin-left:91.66666667%}.col-lg-offset-10{margin-left:83.33333333%}.col-lg-offset-9{margin-left:75%}.col-lg-offset-8{margin-left:66.66666667%}.col-lg-offset-7{margin-left:58.33333333%}.col-lg-offset-6{margin-left:50%}.col-lg-offset-5{margin-left:41.66666667%}.col-lg-offset-4{margin-left:33.33333333%}.col-lg-offset-3{margin-left:25%}.col-lg-offset-2{margin-left:16.66666667%}.col-lg-offset-1{margin-left:8.33333333%}.col-lg-offset-0{margin-left:0}}table{background-color:transparent}caption{padding-top:8px;padding-bottom:8px;color:#777;text-align:left}th{text-align:left}.table{width:100%;max-width:100%;margin-bottom:20px}.table>thead>tr>th,.table>tbody>tr>th,.table>tfoot>tr>th,.table>thead>tr>td,.table>tbody>tr>td,.table>tfoot>tr>td{padding:8px;line-height:1.42857143;vertical-align:top;border-top:1px solid #ddd}.table>thead>tr>th{vertical-align:bottom;border-bottom:2px solid #ddd}.table>caption+thead>tr:first-child>th,.table>colgroup+thead>tr:first-child>th,.table>thead:first-child>tr:first-child>th,.table>caption+thead>tr:first-child>td,.table>colgroup+thead>tr:first-child>td,.table>thead:first-child>tr:first-child>td{border-top:0}.table>tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed>thead>tr>th,.table-condensed>tbody>tr>th,.table-condensed>tfoot>tr>th,.table-condensed>thead>tr>td,.table-condensed>tbody>tr>td,.table-condensed>tfoot>tr>td{padding:5px}.table-bordered{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>tbody>tr>th,.table-bordered>tfoot>tr>th,.table-bordered>thead>tr>td,.table-bordered>tbody>tr>td,.table-bordered>tfoot>tr>td{border:1px solid #ddd}.table-bordered>thead>tr>th,.table-bordered>thead>tr>td{border-bottom-width:2px}.table-striped>tbody>tr:nth-of-type(odd){background-color:#f9f9f9}.table-hover>tbody>tr:hover{background-color:#f5f5f5}table col[class*="col-"]{position:static;float:none;display:table-column}table td[class*="col-"],table th[class*="col-"]{position:static;float:none;display:table-cell}.table>thead>tr>td.active,.table>tbody>tr>td.active,.table>tfoot>tr>td.active,.table>thead>tr>th.active,.table>tbody>tr>th.active,.table>tfoot>tr>th.active,.table>thead>tr.active>td,.table>tbody>tr.active>td,.table>tfoot>tr.active>td,.table>thead>tr.active>th,.table>tbody>tr.active>th,.table>tfoot>tr.active>th{background-color:#f5f5f5}.table-hover>tbody>tr>td.active:hover,.table-hover>tbody>tr>th.active:hover,.table-hover>tbody>tr.active:hover>td,.table-hover>tbody>tr:hover>.active,.table-hover>tbody>tr.active:hover>th{background-color:#e8e8e8}.table>thead>tr>td.success,.table>tbody>tr>td.success,.table>tfoot>tr>td.success,.table>thead>tr>th.success,.table>tbody>tr>th.success,.table>tfoot>tr>th.success,.table>thead>tr.success>td,.table>tbody>tr.success>td,.table>tfoot>tr.success>td,.table>thead>tr.success>th,.table>tbody>tr.success>th,.table>tfoot>tr.success>th{background-color:#dff0d8}.table-hover>tbody>tr>td.success:hover,.table-hover>tbody>tr>th.success:hover,.table-hover>tbody>tr.success:hover>td,.table-hover>tbody>tr:hover>.success,.table-hover>tbody>tr.success:hover>th{background-color:#d0e9c6}.table>thead>tr>td.info,.table>tbody>tr>td.info,.table>tfoot>tr>td.info,.table>thead>tr>th.info,.table>tbody>tr>th.info,.table>tfoot>tr>th.info,.table>thead>tr.info>td,.table>tbody>tr.info>td,.table>tfoot>tr.info>td,.table>thead>tr.info>th,.table>tbody>tr.info>th,.table>tfoot>tr.info>th{background-color:#d9edf7}.table-hover>tbody>tr>td.info:hover,.table-hover>tbody>tr>th.info:hover,.table-hover>tbody>tr.info:hover>td,.table-hover>tbody>tr:hover>.info,.table-hover>tbody>tr.info:hover>th{background-color:#c4e3f3}.table>thead>tr>td.warning,.table>tbody>tr>td.warning,.table>tfoot>tr>td.warning,.table>thead>tr>th.warning,.table>tbody>tr>th.warning,.table>tfoot>tr>th.warning,.table>thead>tr.warning>td,.table>tbody>tr.warning>td,.table>tfoot>tr.warning>td,.table>thead>tr.warning>th,.table>tbody>tr.warning>th,.table>tfoot>tr.warning>th{background-color:#fcf8e3}.table-hover>tbody>tr>td.warning:hover,.table-hover>tbody>tr>th.warning:hover,.table-hover>tbody>tr.warning:hover>td,.table-hover>tbody>tr:hover>.warning,.table-hover>tbody>tr.warning:hover>th{background-color:#faf2cc}.table>thead>tr>td.danger,.table>tbody>tr>td.danger,.table>tfoot>tr>td.danger,.table>thead>tr>th.danger,.table>tbody>tr>th.danger,.table>tfoot>tr>th.danger,.table>thead>tr.danger>td,.table>tbody>tr.danger>td,.table>tfoot>tr.danger>td,.table>thead>tr.danger>th,.table>tbody>tr.danger>th,.table>tfoot>tr.danger>th{background-color:#f2dede}.table-hover>tbody>tr>td.danger:hover,.table-hover>tbody>tr>th.danger:hover,.table-hover>tbody>tr.danger:hover>td,.table-hover>tbody>tr:hover>.danger,.table-hover>tbody>tr.danger:hover>th{background-color:#ebcccc}.table-responsive{overflow-x:auto;min-height:0.01%}@media screen and (max-width:767px){.table-responsive{width:100%;margin-bottom:15px;overflow-y:hidden;-ms-overflow-style:-ms-autohiding-scrollbar;border:1px solid #ddd}.table-responsive>.table{margin-bottom:0}.table-responsive>.table>thead>tr>th,.table-responsive>.table>tbody>tr>th,.table-responsive>.table>tfoot>tr>th,.table-responsive>.table>thead>tr>td,.table-responsive>.table>tbody>tr>td,.table-responsive>.table>tfoot>tr>td{white-space:nowrap}.table-responsive>.table-bordered{border:0}.table-responsive>.table-bordered>thead>tr>th:first-child,.table-responsive>.table-bordered>tbody>tr>th:first-child,.table-responsive>.table-bordered>tfoot>tr>th:first-child,.table-responsive>.table-bordered>thead>tr>td:first-child,.table-responsive>.table-bordered>tbody>tr>td:first-child,.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.table-responsive>.table-bordered>thead>tr>th:last-child,.table-responsive>.table-bordered>tbody>tr>th:last-child,.table-responsive>.table-bordered>tfoot>tr>th:last-child,.table-responsive>.table-bordered>thead>tr>td:last-child,.table-responsive>.table-bordered>tbody>tr>td:last-child,.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.table-responsive>.table-bordered>tbody>tr:last-child>th,.table-responsive>.table-bordered>tfoot>tr:last-child>th,.table-responsive>.table-bordered>tbody>tr:last-child>td,.table-responsive>.table-bordered>tfoot>tr:last-child>td{border-bottom:0}}fieldset{padding:0;margin:0;border:0;min-width:0}legend{display:block;width:100%;padding:0;margin-bottom:20px;font-size:21px;line-height:inherit;color:#333;border:0;border-bottom:1px solid #e5e5e5}label{display:inline-block;max-width:100%;margin-bottom:5px;font-weight:bold}input[type="search"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}input[type="radio"],input[type="checkbox"]{margin:4px 0 0;margin-top:1px \9;line-height:normal}input[type="file"]{display:block}input[type="range"]{display:block;width:100%}select[multiple],select[size]{height:auto}input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}output{display:block;padding-top:7px;font-size:14px;line-height:1.42857143;color:#555}.form-control{display:block;width:100%;height:34px;padding:6px 12px;font-size:14px;line-height:1.42857143;color:#555;background-color:#fff;background-image:none;border:1px solid #ccc;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);-webkit-transition:border-color ease-in-out .15s, -webkit-box-shadow ease-in-out .15s;-o-transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s;transition:border-color ease-in-out .15s, box-shadow ease-in-out .15s}.form-control:focus{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6)}.form-control::-moz-placeholder{color:#999;opacity:1}.form-control:-ms-input-placeholder{color:#999}.form-control::-webkit-input-placeholder{color:#999}.form-control::-ms-expand{border:0;background-color:transparent}.form-control[disabled],.form-control[readonly],fieldset[disabled] .form-control{background-color:#eee;opacity:1}.form-control[disabled],fieldset[disabled] .form-control{cursor:not-allowed}textarea.form-control{height:auto}input[type="search"]{-webkit-appearance:none}@media screen and (-webkit-min-device-pixel-ratio:0){input[type="date"].form-control,input[type="time"].form-control,input[type="datetime-local"].form-control,input[type="month"].form-control{line-height:34px}input[type="date"].input-sm,input[type="time"].input-sm,input[type="datetime-local"].input-sm,input[type="month"].input-sm,.input-group-sm input[type="date"],.input-group-sm input[type="time"],.input-group-sm input[type="datetime-local"],.input-group-sm input[type="month"]{line-height:30px}input[type="date"].input-lg,input[type="time"].input-lg,input[type="datetime-local"].input-lg,input[type="month"].input-lg,.input-group-lg input[type="date"],.input-group-lg input[type="time"],.input-group-lg input[type="datetime-local"],.input-group-lg input[type="month"]{line-height:46px}}.form-group{margin-bottom:15px}.radio,.checkbox{position:relative;display:block;margin-top:10px;margin-bottom:10px}.radio label,.checkbox label{min-height:20px;padding-left:20px;margin-bottom:0;font-weight:normal;cursor:pointer}.radio input[type="radio"],.radio-inline input[type="radio"],.checkbox input[type="checkbox"],.checkbox-inline input[type="checkbox"]{position:absolute;margin-left:-20px;margin-top:4px \9}.radio+.radio,.checkbox+.checkbox{margin-top:-5px}.radio-inline,.checkbox-inline{position:relative;display:inline-block;padding-left:20px;margin-bottom:0;vertical-align:middle;font-weight:normal;cursor:pointer}.radio-inline+.radio-inline,.checkbox-inline+.checkbox-inline{margin-top:0;margin-left:10px}input[type="radio"][disabled],input[type="checkbox"][disabled],input[type="radio"].disabled,input[type="checkbox"].disabled,fieldset[disabled] input[type="radio"],fieldset[disabled] input[type="checkbox"]{cursor:not-allowed}.radio-inline.disabled,.checkbox-inline.disabled,fieldset[disabled] .radio-inline,fieldset[disabled] .checkbox-inline{cursor:not-allowed}.radio.disabled label,.checkbox.disabled label,fieldset[disabled] .radio label,fieldset[disabled] .checkbox label{cursor:not-allowed}.form-control-static{padding-top:7px;padding-bottom:7px;margin-bottom:0;min-height:34px}.form-control-static.input-lg,.form-control-static.input-sm{padding-left:0;padding-right:0}.input-sm{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-sm{height:30px;line-height:30px}textarea.input-sm,select[multiple].input-sm{height:auto}.form-group-sm .form-control{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.form-group-sm select.form-control{height:30px;line-height:30px}.form-group-sm textarea.form-control,.form-group-sm select[multiple].form-control{height:auto}.form-group-sm .form-control-static{height:30px;min-height:32px;padding:6px 10px;font-size:12px;line-height:1.5}.input-lg{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-lg{height:46px;line-height:46px}textarea.input-lg,select[multiple].input-lg{height:auto}.form-group-lg .form-control{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.form-group-lg select.form-control{height:46px;line-height:46px}.form-group-lg textarea.form-control,.form-group-lg select[multiple].form-control{height:auto}.form-group-lg .form-control-static{height:46px;min-height:38px;padding:11px 16px;font-size:18px;line-height:1.3333333}.has-feedback{position:relative}.has-feedback .form-control{padding-right:42.5px}.form-control-feedback{position:absolute;top:0;right:0;z-index:2;display:block;width:34px;height:34px;line-height:34px;text-align:center;pointer-events:none}.input-lg+.form-control-feedback,.input-group-lg+.form-control-feedback,.form-group-lg .form-control+.form-control-feedback{width:46px;height:46px;line-height:46px}.input-sm+.form-control-feedback,.input-group-sm+.form-control-feedback,.form-group-sm .form-control+.form-control-feedback{width:30px;height:30px;line-height:30px}.has-success .help-block,.has-success .control-label,.has-success .radio,.has-success .checkbox,.has-success .radio-inline,.has-success .checkbox-inline,.has-success.radio label,.has-success.checkbox label,.has-success.radio-inline label,.has-success.checkbox-inline label{color:#3c763d}.has-success .form-control{border-color:#3c763d;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-success .form-control:focus{border-color:#2b542c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #67b168}.has-success .input-group-addon{color:#3c763d;border-color:#3c763d;background-color:#dff0d8}.has-success .form-control-feedback{color:#3c763d}.has-warning .help-block,.has-warning .control-label,.has-warning .radio,.has-warning .checkbox,.has-warning .radio-inline,.has-warning .checkbox-inline,.has-warning.radio label,.has-warning.checkbox label,.has-warning.radio-inline label,.has-warning.checkbox-inline label{color:#8a6d3b}.has-warning .form-control{border-color:#8a6d3b;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-warning .form-control:focus{border-color:#66512c;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #c0a16b}.has-warning .input-group-addon{color:#8a6d3b;border-color:#8a6d3b;background-color:#fcf8e3}.has-warning .form-control-feedback{color:#8a6d3b}.has-error .help-block,.has-error .control-label,.has-error .radio,.has-error .checkbox,.has-error .radio-inline,.has-error .checkbox-inline,.has-error.radio label,.has-error.checkbox label,.has-error.radio-inline label,.has-error.checkbox-inline label{color:#a94442}.has-error .form-control{border-color:#a94442;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075);box-shadow:inset 0 1px 1px rgba(0,0,0,0.075)}.has-error .form-control:focus{border-color:#843534;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483;box-shadow:inset 0 1px 1px rgba(0,0,0,0.075),0 0 6px #ce8483}.has-error .input-group-addon{color:#a94442;border-color:#a94442;background-color:#f2dede}.has-error .form-control-feedback{color:#a94442}.has-feedback label~.form-control-feedback{top:25px}.has-feedback label.sr-only~.form-control-feedback{top:0}.help-block{display:block;margin-top:5px;margin-bottom:10px;color:#737373}@media (min-width:768px){.form-inline .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-static{display:inline-block}.form-inline .input-group{display:inline-table;vertical-align:middle}.form-inline .input-group .input-group-addon,.form-inline .input-group .input-group-btn,.form-inline .input-group .form-control{width:auto}.form-inline .input-group>.form-control{width:100%}.form-inline .control-label{margin-bottom:0;vertical-align:middle}.form-inline .radio,.form-inline .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.form-inline .radio label,.form-inline .checkbox label{padding-left:0}.form-inline .radio input[type="radio"],.form-inline .checkbox input[type="checkbox"]{position:relative;margin-left:0}.form-inline .has-feedback .form-control-feedback{top:0}}.form-horizontal .radio,.form-horizontal .checkbox,.form-horizontal .radio-inline,.form-horizontal .checkbox-inline{margin-top:0;margin-bottom:0;padding-top:7px}.form-horizontal .radio,.form-horizontal .checkbox{min-height:27px}.form-horizontal .form-group{margin-left:-15px;margin-right:-15px}@media (min-width:768px){.form-horizontal .control-label{text-align:right;margin-bottom:0;padding-top:7px}}.form-horizontal .has-feedback .form-control-feedback{right:15px}@media (min-width:768px){.form-horizontal .form-group-lg .control-label{padding-top:11px;font-size:18px}}@media (min-width:768px){.form-horizontal .form-group-sm .control-label{padding-top:6px;font-size:12px}}.btn{display:inline-block;margin-bottom:0;font-weight:normal;text-align:center;vertical-align:middle;-ms-touch-action:manipulation;touch-action:manipulation;cursor:pointer;background-image:none;border:1px solid transparent;white-space:nowrap;padding:6px 12px;font-size:14px;line-height:1.42857143;border-radius:4px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.btn:focus,.btn:active:focus,.btn.active:focus,.btn.focus,.btn:active.focus,.btn.active.focus{outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn:hover,.btn:focus,.btn.focus{color:#333;text-decoration:none}.btn:active,.btn.active{outline:0;background-image:none;-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn.disabled,.btn[disabled],fieldset[disabled] .btn{cursor:not-allowed;opacity:.65;filter:alpha(opacity=65);-webkit-box-shadow:none;box-shadow:none}a.btn.disabled,fieldset[disabled] a.btn{pointer-events:none}.btn-default{color:#333;background-color:#fff;border-color:#ccc}.btn-default:focus,.btn-default.focus{color:#333;background-color:#e6e6e6;border-color:#8c8c8c}.btn-default:hover{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{color:#333;background-color:#e6e6e6;border-color:#adadad}.btn-default:active:hover,.btn-default.active:hover,.open>.dropdown-toggle.btn-default:hover,.btn-default:active:focus,.btn-default.active:focus,.open>.dropdown-toggle.btn-default:focus,.btn-default:active.focus,.btn-default.active.focus,.open>.dropdown-toggle.btn-default.focus{color:#333;background-color:#d4d4d4;border-color:#8c8c8c}.btn-default:active,.btn-default.active,.open>.dropdown-toggle.btn-default{background-image:none}.btn-default.disabled:hover,.btn-default[disabled]:hover,fieldset[disabled] .btn-default:hover,.btn-default.disabled:focus,.btn-default[disabled]:focus,fieldset[disabled] .btn-default:focus,.btn-default.disabled.focus,.btn-default[disabled].focus,fieldset[disabled] .btn-default.focus{background-color:#fff;border-color:#ccc}.btn-default .badge{color:#fff;background-color:#333}.btn-primary{color:#fff;background-color:#337ab7;border-color:#2e6da4}.btn-primary:focus,.btn-primary.focus{color:#fff;background-color:#286090;border-color:#122b40}.btn-primary:hover{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{color:#fff;background-color:#286090;border-color:#204d74}.btn-primary:active:hover,.btn-primary.active:hover,.open>.dropdown-toggle.btn-primary:hover,.btn-primary:active:focus,.btn-primary.active:focus,.open>.dropdown-toggle.btn-primary:focus,.btn-primary:active.focus,.btn-primary.active.focus,.open>.dropdown-toggle.btn-primary.focus{color:#fff;background-color:#204d74;border-color:#122b40}.btn-primary:active,.btn-primary.active,.open>.dropdown-toggle.btn-primary{background-image:none}.btn-primary.disabled:hover,.btn-primary[disabled]:hover,fieldset[disabled] .btn-primary:hover,.btn-primary.disabled:focus,.btn-primary[disabled]:focus,fieldset[disabled] .btn-primary:focus,.btn-primary.disabled.focus,.btn-primary[disabled].focus,fieldset[disabled] .btn-primary.focus{background-color:#337ab7;border-color:#2e6da4}.btn-primary .badge{color:#337ab7;background-color:#fff}.btn-success{color:#fff;background-color:#5cb85c;border-color:#4cae4c}.btn-success:focus,.btn-success.focus{color:#fff;background-color:#449d44;border-color:#255625}.btn-success:hover{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{color:#fff;background-color:#449d44;border-color:#398439}.btn-success:active:hover,.btn-success.active:hover,.open>.dropdown-toggle.btn-success:hover,.btn-success:active:focus,.btn-success.active:focus,.open>.dropdown-toggle.btn-success:focus,.btn-success:active.focus,.btn-success.active.focus,.open>.dropdown-toggle.btn-success.focus{color:#fff;background-color:#398439;border-color:#255625}.btn-success:active,.btn-success.active,.open>.dropdown-toggle.btn-success{background-image:none}.btn-success.disabled:hover,.btn-success[disabled]:hover,fieldset[disabled] .btn-success:hover,.btn-success.disabled:focus,.btn-success[disabled]:focus,fieldset[disabled] .btn-success:focus,.btn-success.disabled.focus,.btn-success[disabled].focus,fieldset[disabled] .btn-success.focus{background-color:#5cb85c;border-color:#4cae4c}.btn-success .badge{color:#5cb85c;background-color:#fff}.btn-info{color:#fff;background-color:#5bc0de;border-color:#46b8da}.btn-info:focus,.btn-info.focus{color:#fff;background-color:#31b0d5;border-color:#1b6d85}.btn-info:hover{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{color:#fff;background-color:#31b0d5;border-color:#269abc}.btn-info:active:hover,.btn-info.active:hover,.open>.dropdown-toggle.btn-info:hover,.btn-info:active:focus,.btn-info.active:focus,.open>.dropdown-toggle.btn-info:focus,.btn-info:active.focus,.btn-info.active.focus,.open>.dropdown-toggle.btn-info.focus{color:#fff;background-color:#269abc;border-color:#1b6d85}.btn-info:active,.btn-info.active,.open>.dropdown-toggle.btn-info{background-image:none}.btn-info.disabled:hover,.btn-info[disabled]:hover,fieldset[disabled] .btn-info:hover,.btn-info.disabled:focus,.btn-info[disabled]:focus,fieldset[disabled] .btn-info:focus,.btn-info.disabled.focus,.btn-info[disabled].focus,fieldset[disabled] .btn-info.focus{background-color:#5bc0de;border-color:#46b8da}.btn-info .badge{color:#5bc0de;background-color:#fff}.btn-warning{color:#fff;background-color:#f0ad4e;border-color:#eea236}.btn-warning:focus,.btn-warning.focus{color:#fff;background-color:#ec971f;border-color:#985f0d}.btn-warning:hover{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{color:#fff;background-color:#ec971f;border-color:#d58512}.btn-warning:active:hover,.btn-warning.active:hover,.open>.dropdown-toggle.btn-warning:hover,.btn-warning:active:focus,.btn-warning.active:focus,.open>.dropdown-toggle.btn-warning:focus,.btn-warning:active.focus,.btn-warning.active.focus,.open>.dropdown-toggle.btn-warning.focus{color:#fff;background-color:#d58512;border-color:#985f0d}.btn-warning:active,.btn-warning.active,.open>.dropdown-toggle.btn-warning{background-image:none}.btn-warning.disabled:hover,.btn-warning[disabled]:hover,fieldset[disabled] .btn-warning:hover,.btn-warning.disabled:focus,.btn-warning[disabled]:focus,fieldset[disabled] .btn-warning:focus,.btn-warning.disabled.focus,.btn-warning[disabled].focus,fieldset[disabled] .btn-warning.focus{background-color:#f0ad4e;border-color:#eea236}.btn-warning .badge{color:#f0ad4e;background-color:#fff}.btn-danger{color:#fff;background-color:#d9534f;border-color:#d43f3a}.btn-danger:focus,.btn-danger.focus{color:#fff;background-color:#c9302c;border-color:#761c19}.btn-danger:hover{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{color:#fff;background-color:#c9302c;border-color:#ac2925}.btn-danger:active:hover,.btn-danger.active:hover,.open>.dropdown-toggle.btn-danger:hover,.btn-danger:active:focus,.btn-danger.active:focus,.open>.dropdown-toggle.btn-danger:focus,.btn-danger:active.focus,.btn-danger.active.focus,.open>.dropdown-toggle.btn-danger.focus{color:#fff;background-color:#ac2925;border-color:#761c19}.btn-danger:active,.btn-danger.active,.open>.dropdown-toggle.btn-danger{background-image:none}.btn-danger.disabled:hover,.btn-danger[disabled]:hover,fieldset[disabled] .btn-danger:hover,.btn-danger.disabled:focus,.btn-danger[disabled]:focus,fieldset[disabled] .btn-danger:focus,.btn-danger.disabled.focus,.btn-danger[disabled].focus,fieldset[disabled] .btn-danger.focus{background-color:#d9534f;border-color:#d43f3a}.btn-danger .badge{color:#d9534f;background-color:#fff}.btn-link{color:#337ab7;font-weight:normal;border-radius:0}.btn-link,.btn-link:active,.btn-link.active,.btn-link[disabled],fieldset[disabled] .btn-link{background-color:transparent;-webkit-box-shadow:none;box-shadow:none}.btn-link,.btn-link:hover,.btn-link:focus,.btn-link:active{border-color:transparent}.btn-link:hover,.btn-link:focus{color:#23527c;text-decoration:underline;background-color:transparent}.btn-link[disabled]:hover,fieldset[disabled] .btn-link:hover,.btn-link[disabled]:focus,fieldset[disabled] .btn-link:focus{color:#777;text-decoration:none}.btn-lg,.btn-group-lg>.btn{padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}.btn-sm,.btn-group-sm>.btn{padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}.btn-xs,.btn-group-xs>.btn{padding:1px 5px;font-size:12px;line-height:1.5;border-radius:3px}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:5px}input[type="submit"].btn-block,input[type="reset"].btn-block,input[type="button"].btn-block{width:100%}.fade{opacity:0;-webkit-transition:opacity .15s linear;-o-transition:opacity .15s linear;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{display:none}.collapse.in{display:block}tr.collapse.in{display:table-row}tbody.collapse.in{display:table-row-group}.collapsing{position:relative;height:0;overflow:hidden;-webkit-transition-property:height, visibility;-o-transition-property:height, visibility;transition-property:height, visibility;-webkit-transition-duration:.35s;-o-transition-duration:.35s;transition-duration:.35s;-webkit-transition-timing-function:ease;-o-transition-timing-function:ease;transition-timing-function:ease}.caret{display:inline-block;width:0;height:0;margin-left:2px;vertical-align:middle;border-top:4px dashed;border-top:4px solid \9;border-right:4px solid transparent;border-left:4px solid transparent}.dropup,.dropdown{position:relative}.dropdown-toggle:focus{outline:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;font-size:14px;text-align:left;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.15);border-radius:4px;-webkit-box-shadow:0 6px 12px rgba(0,0,0,0.175);box-shadow:0 6px 12px rgba(0,0,0,0.175);-webkit-background-clip:padding-box;background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:normal;line-height:1.42857143;color:#333;white-space:nowrap}.dropdown-menu>li>a:hover,.dropdown-menu>li>a:focus{text-decoration:none;color:#262626;background-color:#f5f5f5}.dropdown-menu>.active>a,.dropdown-menu>.active>a:hover,.dropdown-menu>.active>a:focus{color:#fff;text-decoration:none;outline:0;background-color:#337ab7}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{color:#777}.dropdown-menu>.disabled>a:hover,.dropdown-menu>.disabled>a:focus{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled = false);cursor:not-allowed}.open>.dropdown-menu{display:block}.open>a{outline:0}.dropdown-menu-right{left:auto;right:0}.dropdown-menu-left{left:0;right:auto}.dropdown-header{display:block;padding:3px 20px;font-size:12px;line-height:1.42857143;color:#777;white-space:nowrap}.dropdown-backdrop{position:fixed;left:0;right:0;bottom:0;top:0;z-index:990}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px dashed;border-bottom:4px solid \9;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:2px}@media (min-width:768px){.navbar-right .dropdown-menu{left:auto;right:0}.navbar-right .dropdown-menu-left{left:0;right:auto}}.btn-group,.btn-group-vertical{position:relative;display:inline-block;vertical-align:middle}.btn-group>.btn,.btn-group-vertical>.btn{position:relative;float:left}.btn-group>.btn:hover,.btn-group-vertical>.btn:hover,.btn-group>.btn:focus,.btn-group-vertical>.btn:focus,.btn-group>.btn:active,.btn-group-vertical>.btn:active,.btn-group>.btn.active,.btn-group-vertical>.btn.active{z-index:2}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{margin-left:-5px}.btn-toolbar .btn,.btn-toolbar .btn-group,.btn-toolbar .input-group{float:left}.btn-toolbar>.btn,.btn-toolbar>.btn-group,.btn-toolbar>.input-group{margin-left:5px}.btn-group>.btn:not(:first-child):not(:last-child):not(.dropdown-toggle){border-radius:0}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn:first-child:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn:last-child:not(:first-child),.btn-group>.dropdown-toggle:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.btn-group>.btn-group{float:left}.btn-group>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-top-right-radius:0}.btn-group>.btn-group:last-child:not(:first-child)>.btn:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px}.btn-group>.btn-lg+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{-webkit-box-shadow:inset 0 3px 5px rgba(0,0,0,0.125);box-shadow:inset 0 3px 5px rgba(0,0,0,0.125)}.btn-group.open .dropdown-toggle.btn-link{-webkit-box-shadow:none;box-shadow:none}.btn .caret{margin-left:0}.btn-lg .caret{border-width:5px 5px 0;border-bottom-width:0}.dropup .btn-lg .caret{border-width:0 5px 5px}.btn-group-vertical>.btn,.btn-group-vertical>.btn-group,.btn-group-vertical>.btn-group>.btn{display:block;float:none;width:100%;max-width:100%}.btn-group-vertical>.btn-group>.btn{float:none}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn:not(:first-child):not(:last-child){border-radius:0}.btn-group-vertical>.btn:first-child:not(:last-child){border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn:last-child:not(:first-child){border-top-right-radius:0;border-top-left-radius:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}.btn-group-vertical>.btn-group:not(:first-child):not(:last-child)>.btn{border-radius:0}.btn-group-vertical>.btn-group:first-child:not(:last-child)>.btn:last-child,.btn-group-vertical>.btn-group:first-child:not(:last-child)>.dropdown-toggle{border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:last-child:not(:first-child)>.btn:first-child{border-top-right-radius:0;border-top-left-radius:0}.btn-group-justified{display:table;width:100%;table-layout:fixed;border-collapse:separate}.btn-group-justified>.btn,.btn-group-justified>.btn-group{float:none;display:table-cell;width:1%}.btn-group-justified>.btn-group .btn{width:100%}.btn-group-justified>.btn-group .dropdown-menu{left:auto}[data-toggle="buttons"]>.btn input[type="radio"],[data-toggle="buttons"]>.btn-group>.btn input[type="radio"],[data-toggle="buttons"]>.btn input[type="checkbox"],[data-toggle="buttons"]>.btn-group>.btn input[type="checkbox"]{position:absolute;clip:rect(0, 0, 0, 0);pointer-events:none}.input-group{position:relative;display:table;border-collapse:separate}.input-group[class*="col-"]{float:none;padding-left:0;padding-right:0}.input-group .form-control{position:relative;z-index:2;float:left;width:100%;margin-bottom:0}.input-group .form-control:focus{z-index:3}.input-group-lg>.form-control,.input-group-lg>.input-group-addon,.input-group-lg>.input-group-btn>.btn{height:46px;padding:10px 16px;font-size:18px;line-height:1.3333333;border-radius:6px}select.input-group-lg>.form-control,select.input-group-lg>.input-group-addon,select.input-group-lg>.input-group-btn>.btn{height:46px;line-height:46px}textarea.input-group-lg>.form-control,textarea.input-group-lg>.input-group-addon,textarea.input-group-lg>.input-group-btn>.btn,select[multiple].input-group-lg>.form-control,select[multiple].input-group-lg>.input-group-addon,select[multiple].input-group-lg>.input-group-btn>.btn{height:auto}.input-group-sm>.form-control,.input-group-sm>.input-group-addon,.input-group-sm>.input-group-btn>.btn{height:30px;padding:5px 10px;font-size:12px;line-height:1.5;border-radius:3px}select.input-group-sm>.form-control,select.input-group-sm>.input-group-addon,select.input-group-sm>.input-group-btn>.btn{height:30px;line-height:30px}textarea.input-group-sm>.form-control,textarea.input-group-sm>.input-group-addon,textarea.input-group-sm>.input-group-btn>.btn,select[multiple].input-group-sm>.form-control,select[multiple].input-group-sm>.input-group-addon,select[multiple].input-group-sm>.input-group-btn>.btn{height:auto}.input-group-addon,.input-group-btn,.input-group .form-control{display:table-cell}.input-group-addon:not(:first-child):not(:last-child),.input-group-btn:not(:first-child):not(:last-child),.input-group .form-control:not(:first-child):not(:last-child){border-radius:0}.input-group-addon,.input-group-btn{width:1%;white-space:nowrap;vertical-align:middle}.input-group-addon{padding:6px 12px;font-size:14px;font-weight:normal;line-height:1;color:#555;text-align:center;background-color:#eee;border:1px solid #ccc;border-radius:4px}.input-group-addon.input-sm{padding:5px 10px;font-size:12px;border-radius:3px}.input-group-addon.input-lg{padding:10px 16px;font-size:18px;border-radius:6px}.input-group-addon input[type="radio"],.input-group-addon input[type="checkbox"]{margin-top:0}.input-group .form-control:first-child,.input-group-addon:first-child,.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group>.btn,.input-group-btn:first-child>.dropdown-toggle,.input-group-btn:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group-btn:last-child>.btn-group:not(:last-child)>.btn{border-bottom-right-radius:0;border-top-right-radius:0}.input-group-addon:first-child{border-right:0}.input-group .form-control:last-child,.input-group-addon:last-child,.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group>.btn,.input-group-btn:last-child>.dropdown-toggle,.input-group-btn:first-child>.btn:not(:first-child),.input-group-btn:first-child>.btn-group:not(:first-child)>.btn{border-bottom-left-radius:0;border-top-left-radius:0}.input-group-addon:last-child{border-left:0}.input-group-btn{position:relative;font-size:0;white-space:nowrap}.input-group-btn>.btn{position:relative}.input-group-btn>.btn+.btn{margin-left:-1px}.input-group-btn>.btn:hover,.input-group-btn>.btn:focus,.input-group-btn>.btn:active{z-index:2}.input-group-btn:first-child>.btn,.input-group-btn:first-child>.btn-group{margin-right:-1px}.input-group-btn:last-child>.btn,.input-group-btn:last-child>.btn-group{z-index:2;margin-left:-1px}.nav{margin-bottom:0;padding-left:0;list-style:none}.nav>li{position:relative;display:block}.nav>li>a{position:relative;display:block;padding:10px 15px}.nav>li>a:hover,.nav>li>a:focus{text-decoration:none;background-color:#eee}.nav>li.disabled>a{color:#777}.nav>li.disabled>a:hover,.nav>li.disabled>a:focus{color:#777;text-decoration:none;background-color:transparent;cursor:not-allowed}.nav .open>a,.nav .open>a:hover,.nav .open>a:focus{background-color:#eee;border-color:#337ab7}.nav .nav-divider{height:1px;margin:9px 0;overflow:hidden;background-color:#e5e5e5}.nav>li>a>img{max-width:none}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{float:left;margin-bottom:-1px}.nav-tabs>li>a{margin-right:2px;line-height:1.42857143;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>li.active>a,.nav-tabs>li.active>a:hover,.nav-tabs>li.active>a:focus{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-tabs.nav-justified{width:100%;border-bottom:0}.nav-tabs.nav-justified>li{float:none}.nav-tabs.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-tabs.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-tabs.nav-justified>li{display:table-cell;width:1%}.nav-tabs.nav-justified>li>a{margin-bottom:0}}.nav-tabs.nav-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs.nav-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs.nav-justified>.active>a,.nav-tabs.nav-justified>.active>a:hover,.nav-tabs.nav-justified>.active>a:focus{border-bottom-color:#fff}}.nav-pills>li{float:left}.nav-pills>li>a{border-radius:4px}.nav-pills>li+li{margin-left:2px}.nav-pills>li.active>a,.nav-pills>li.active>a:hover,.nav-pills>li.active>a:focus{color:#fff;background-color:#337ab7}.nav-stacked>li{float:none}.nav-stacked>li+li{margin-top:2px;margin-left:0}.nav-justified{width:100%}.nav-justified>li{float:none}.nav-justified>li>a{text-align:center;margin-bottom:5px}.nav-justified>.dropdown .dropdown-menu{top:auto;left:auto}@media (min-width:768px){.nav-justified>li{display:table-cell;width:1%}.nav-justified>li>a{margin-bottom:0}}.nav-tabs-justified{border-bottom:0}.nav-tabs-justified>li>a{margin-right:0;border-radius:4px}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border:1px solid #ddd}@media (min-width:768px){.nav-tabs-justified>li>a{border-bottom:1px solid #ddd;border-radius:4px 4px 0 0}.nav-tabs-justified>.active>a,.nav-tabs-justified>.active>a:hover,.nav-tabs-justified>.active>a:focus{border-bottom-color:#fff}}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-right-radius:0;border-top-left-radius:0}.navbar{position:relative;min-height:50px;margin-bottom:20px;border:1px solid transparent}@media (min-width:768px){.navbar{border-radius:4px}}@media (min-width:768px){.navbar-header{float:left}}.navbar-collapse{overflow-x:visible;padding-right:15px;padding-left:15px;border-top:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1);-webkit-overflow-scrolling:touch}.navbar-collapse.in{overflow-y:auto}@media (min-width:768px){.navbar-collapse{width:auto;border-top:0;-webkit-box-shadow:none;box-shadow:none}.navbar-collapse.collapse{display:block !important;height:auto !important;padding-bottom:0;overflow:visible !important}.navbar-collapse.in{overflow-y:visible}.navbar-fixed-top .navbar-collapse,.navbar-static-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{padding-left:0;padding-right:0}}.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:340px}@media (max-device-width:480px) and (orientation:landscape){.navbar-fixed-top .navbar-collapse,.navbar-fixed-bottom .navbar-collapse{max-height:200px}}.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:-15px;margin-left:-15px}@media (min-width:768px){.container>.navbar-header,.container-fluid>.navbar-header,.container>.navbar-collapse,.container-fluid>.navbar-collapse{margin-right:0;margin-left:0}}.navbar-static-top{z-index:1000;border-width:0 0 1px}@media (min-width:768px){.navbar-static-top{border-radius:0}}.navbar-fixed-top,.navbar-fixed-bottom{position:fixed;right:0;left:0;z-index:1030}@media (min-width:768px){.navbar-fixed-top,.navbar-fixed-bottom{border-radius:0}}.navbar-fixed-top{top:0;border-width:0 0 1px}.navbar-fixed-bottom{bottom:0;margin-bottom:0;border-width:1px 0 0}.navbar-brand{float:left;padding:15px 15px;font-size:18px;line-height:20px;height:50px}.navbar-brand:hover,.navbar-brand:focus{text-decoration:none}.navbar-brand>img{display:block}@media (min-width:768px){.navbar>.container .navbar-brand,.navbar>.container-fluid .navbar-brand{margin-left:-15px}}.navbar-toggle{position:relative;float:right;margin-right:15px;padding:9px 10px;margin-top:8px;margin-bottom:8px;background-color:transparent;background-image:none;border:1px solid transparent;border-radius:4px}.navbar-toggle:focus{outline:0}.navbar-toggle .icon-bar{display:block;width:22px;height:2px;border-radius:1px}.navbar-toggle .icon-bar+.icon-bar{margin-top:4px}@media (min-width:768px){.navbar-toggle{display:none}}.navbar-nav{margin:7.5px -15px}.navbar-nav>li>a{padding-top:10px;padding-bottom:10px;line-height:20px}@media (max-width:767px){.navbar-nav .open .dropdown-menu{position:static;float:none;width:auto;margin-top:0;background-color:transparent;border:0;-webkit-box-shadow:none;box-shadow:none}.navbar-nav .open .dropdown-menu>li>a,.navbar-nav .open .dropdown-menu .dropdown-header{padding:5px 15px 5px 25px}.navbar-nav .open .dropdown-menu>li>a{line-height:20px}.navbar-nav .open .dropdown-menu>li>a:hover,.navbar-nav .open .dropdown-menu>li>a:focus{background-image:none}}@media (min-width:768px){.navbar-nav{float:left;margin:0}.navbar-nav>li{float:left}.navbar-nav>li>a{padding-top:15px;padding-bottom:15px}}.navbar-form{margin-left:-15px;margin-right:-15px;padding:10px 15px;border-top:1px solid transparent;border-bottom:1px solid transparent;-webkit-box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);box-shadow:inset 0 1px 0 rgba(255,255,255,0.1),0 1px 0 rgba(255,255,255,0.1);margin-top:8px;margin-bottom:8px}@media (min-width:768px){.navbar-form .form-group{display:inline-block;margin-bottom:0;vertical-align:middle}.navbar-form .form-control{display:inline-block;width:auto;vertical-align:middle}.navbar-form .form-control-static{display:inline-block}.navbar-form .input-group{display:inline-table;vertical-align:middle}.navbar-form .input-group .input-group-addon,.navbar-form .input-group .input-group-btn,.navbar-form .input-group .form-control{width:auto}.navbar-form .input-group>.form-control{width:100%}.navbar-form .control-label{margin-bottom:0;vertical-align:middle}.navbar-form .radio,.navbar-form .checkbox{display:inline-block;margin-top:0;margin-bottom:0;vertical-align:middle}.navbar-form .radio label,.navbar-form .checkbox label{padding-left:0}.navbar-form .radio input[type="radio"],.navbar-form .checkbox input[type="checkbox"]{position:relative;margin-left:0}.navbar-form .has-feedback .form-control-feedback{top:0}}@media (max-width:767px){.navbar-form .form-group{margin-bottom:5px}.navbar-form .form-group:last-child{margin-bottom:0}}@media (min-width:768px){.navbar-form{width:auto;border:0;margin-left:0;margin-right:0;padding-top:0;padding-bottom:0;-webkit-box-shadow:none;box-shadow:none}}.navbar-nav>li>.dropdown-menu{margin-top:0;border-top-right-radius:0;border-top-left-radius:0}.navbar-fixed-bottom .navbar-nav>li>.dropdown-menu{margin-bottom:0;border-top-right-radius:4px;border-top-left-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:0}.navbar-btn{margin-top:8px;margin-bottom:8px}.navbar-btn.btn-sm{margin-top:10px;margin-bottom:10px}.navbar-btn.btn-xs{margin-top:14px;margin-bottom:14px}.navbar-text{margin-top:15px;margin-bottom:15px}@media (min-width:768px){.navbar-text{float:left;margin-left:15px;margin-right:15px}}@media (min-width:768px){.navbar-left{float:left !important}.navbar-right{float:right !important;margin-right:-15px}.navbar-right~.navbar-right{margin-right:0}}.navbar-default{background-color:#f8f8f8;border-color:#e7e7e7}.navbar-default .navbar-brand{color:#777}.navbar-default .navbar-brand:hover,.navbar-default .navbar-brand:focus{color:#5e5e5e;background-color:transparent}.navbar-default .navbar-text{color:#777}.navbar-default .navbar-nav>li>a{color:#777}.navbar-default .navbar-nav>li>a:hover,.navbar-default .navbar-nav>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:hover,.navbar-default .navbar-nav>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav>.disabled>a,.navbar-default .navbar-nav>.disabled>a:hover,.navbar-default .navbar-nav>.disabled>a:focus{color:#ccc;background-color:transparent}.navbar-default .navbar-toggle{border-color:#ddd}.navbar-default .navbar-toggle:hover,.navbar-default .navbar-toggle:focus{background-color:#ddd}.navbar-default .navbar-toggle .icon-bar{background-color:#888}.navbar-default .navbar-collapse,.navbar-default .navbar-form{border-color:#e7e7e7}.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:hover,.navbar-default .navbar-nav>.open>a:focus{background-color:#e7e7e7;color:#555}@media (max-width:767px){.navbar-default .navbar-nav .open .dropdown-menu>li>a{color:#777}.navbar-default .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>li>a:focus{color:#333;background-color:transparent}.navbar-default .navbar-nav .open .dropdown-menu>.active>a,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.active>a:focus{color:#555;background-color:#e7e7e7}.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-default .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#ccc;background-color:transparent}}.navbar-default .navbar-link{color:#777}.navbar-default .navbar-link:hover{color:#333}.navbar-default .btn-link{color:#777}.navbar-default .btn-link:hover,.navbar-default .btn-link:focus{color:#333}.navbar-default .btn-link[disabled]:hover,fieldset[disabled] .navbar-default .btn-link:hover,.navbar-default .btn-link[disabled]:focus,fieldset[disabled] .navbar-default .btn-link:focus{color:#ccc}.navbar-inverse{background-color:#222;border-color:#080808}.navbar-inverse .navbar-brand{color:#9d9d9d}.navbar-inverse .navbar-brand:hover,.navbar-inverse .navbar-brand:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-text{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav>li>a:hover,.navbar-inverse .navbar-nav>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav>.active>a,.navbar-inverse .navbar-nav>.active>a:hover,.navbar-inverse .navbar-nav>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav>.disabled>a,.navbar-inverse .navbar-nav>.disabled>a:hover,.navbar-inverse .navbar-nav>.disabled>a:focus{color:#444;background-color:transparent}.navbar-inverse .navbar-toggle{border-color:#333}.navbar-inverse .navbar-toggle:hover,.navbar-inverse .navbar-toggle:focus{background-color:#333}.navbar-inverse .navbar-toggle .icon-bar{background-color:#fff}.navbar-inverse .navbar-collapse,.navbar-inverse .navbar-form{border-color:#101010}.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:hover,.navbar-inverse .navbar-nav>.open>a:focus{background-color:#080808;color:#fff}@media (max-width:767px){.navbar-inverse .navbar-nav .open .dropdown-menu>.dropdown-header{border-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu .divider{background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a{color:#9d9d9d}.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus{color:#fff;background-color:transparent}.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.active>a:focus{color:#fff;background-color:#080808}.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:hover,.navbar-inverse .navbar-nav .open .dropdown-menu>.disabled>a:focus{color:#444;background-color:transparent}}.navbar-inverse .navbar-link{color:#9d9d9d}.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .btn-link{color:#9d9d9d}.navbar-inverse .btn-link:hover,.navbar-inverse .btn-link:focus{color:#fff}.navbar-inverse .btn-link[disabled]:hover,fieldset[disabled] .navbar-inverse .btn-link:hover,.navbar-inverse .btn-link[disabled]:focus,fieldset[disabled] .navbar-inverse .btn-link:focus{color:#444}.breadcrumb{padding:8px 15px;margin-bottom:20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block}.breadcrumb>li+li:before{content:"/\00a0";padding:0 5px;color:#ccc}.breadcrumb>.active{color:#777}.pagination{display:inline-block;padding-left:0;margin:20px 0;border-radius:4px}.pagination>li{display:inline}.pagination>li>a,.pagination>li>span{position:relative;float:left;padding:6px 12px;line-height:1.42857143;text-decoration:none;color:#337ab7;background-color:#fff;border:1px solid #ddd;margin-left:-1px}.pagination>li:first-child>a,.pagination>li:first-child>span{margin-left:0;border-bottom-left-radius:4px;border-top-left-radius:4px}.pagination>li:last-child>a,.pagination>li:last-child>span{border-bottom-right-radius:4px;border-top-right-radius:4px}.pagination>li>a:hover,.pagination>li>span:hover,.pagination>li>a:focus,.pagination>li>span:focus{z-index:2;color:#23527c;background-color:#eee;border-color:#ddd}.pagination>.active>a,.pagination>.active>span,.pagination>.active>a:hover,.pagination>.active>span:hover,.pagination>.active>a:focus,.pagination>.active>span:focus{z-index:3;color:#fff;background-color:#337ab7;border-color:#337ab7;cursor:default}.pagination>.disabled>span,.pagination>.disabled>span:hover,.pagination>.disabled>span:focus,.pagination>.disabled>a,.pagination>.disabled>a:hover,.pagination>.disabled>a:focus{color:#777;background-color:#fff;border-color:#ddd;cursor:not-allowed}.pagination-lg>li>a,.pagination-lg>li>span{padding:10px 16px;font-size:18px;line-height:1.3333333}.pagination-lg>li:first-child>a,.pagination-lg>li:first-child>span{border-bottom-left-radius:6px;border-top-left-radius:6px}.pagination-lg>li:last-child>a,.pagination-lg>li:last-child>span{border-bottom-right-radius:6px;border-top-right-radius:6px}.pagination-sm>li>a,.pagination-sm>li>span{padding:5px 10px;font-size:12px;line-height:1.5}.pagination-sm>li:first-child>a,.pagination-sm>li:first-child>span{border-bottom-left-radius:3px;border-top-left-radius:3px}.pagination-sm>li:last-child>a,.pagination-sm>li:last-child>span{border-bottom-right-radius:3px;border-top-right-radius:3px}.pager{padding-left:0;margin:20px 0;list-style:none;text-align:center}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:hover,.pager li>a:focus{text-decoration:none;background-color:#eee}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:hover,.pager .disabled>a:focus,.pager .disabled>span{color:#777;background-color:#fff;cursor:not-allowed}.label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:bold;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}a.label:hover,a.label:focus{color:#fff;text-decoration:none;cursor:pointer}.label:empty{display:none}.btn .label{position:relative;top:-1px}.label-default{background-color:#777}.label-default[href]:hover,.label-default[href]:focus{background-color:#5e5e5e}.label-primary{background-color:#337ab7}.label-primary[href]:hover,.label-primary[href]:focus{background-color:#286090}.label-success{background-color:#5cb85c}.label-success[href]:hover,.label-success[href]:focus{background-color:#449d44}.label-info{background-color:#5bc0de}.label-info[href]:hover,.label-info[href]:focus{background-color:#31b0d5}.label-warning{background-color:#f0ad4e}.label-warning[href]:hover,.label-warning[href]:focus{background-color:#ec971f}.label-danger{background-color:#d9534f}.label-danger[href]:hover,.label-danger[href]:focus{background-color:#c9302c}.badge{display:inline-block;min-width:10px;padding:3px 7px;font-size:12px;font-weight:bold;color:#fff;line-height:1;vertical-align:middle;white-space:nowrap;text-align:center;background-color:#777;border-radius:10px}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.btn-xs .badge,.btn-group-xs>.btn .badge{top:0;padding:1px 5px}a.badge:hover,a.badge:focus{color:#fff;text-decoration:none;cursor:pointer}.list-group-item.active>.badge,.nav-pills>.active>a>.badge{color:#337ab7;background-color:#fff}.list-group-item>.badge{float:right}.list-group-item>.badge+.badge{margin-right:5px}.nav-pills>li>a>.badge{margin-left:3px}.jumbotron{padding-top:30px;padding-bottom:30px;margin-bottom:30px;color:inherit;background-color:#eee}.jumbotron h1,.jumbotron .h1{color:inherit}.jumbotron p{margin-bottom:15px;font-size:21px;font-weight:200}.jumbotron>hr{border-top-color:#d5d5d5}.container .jumbotron,.container-fluid .jumbotron{border-radius:6px;padding-left:15px;padding-right:15px}.jumbotron .container{max-width:100%}@media screen and (min-width:768px){.jumbotron{padding-top:48px;padding-bottom:48px}.container .jumbotron,.container-fluid .jumbotron{padding-left:60px;padding-right:60px}.jumbotron h1,.jumbotron .h1{font-size:63px}}.thumbnail{display:block;padding:4px;margin-bottom:20px;line-height:1.42857143;background-color:#fff;border:1px solid #ddd;border-radius:4px;-webkit-transition:border .2s ease-in-out;-o-transition:border .2s ease-in-out;transition:border .2s ease-in-out}.thumbnail>img,.thumbnail a>img{margin-left:auto;margin-right:auto}a.thumbnail:hover,a.thumbnail:focus,a.thumbnail.active{border-color:#337ab7}.thumbnail .caption{padding:9px;color:#333}.alert{padding:15px;margin-bottom:20px;border:1px solid transparent;border-radius:4px}.alert h4{margin-top:0;color:inherit}.alert .alert-link{font-weight:bold}.alert>p,.alert>ul{margin-bottom:0}.alert>p+p{margin-top:5px}.alert-dismissable,.alert-dismissible{padding-right:35px}.alert-dismissable .close,.alert-dismissible .close{position:relative;top:-2px;right:-21px;color:inherit}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.alert-success hr{border-top-color:#c9e2b3}.alert-success .alert-link{color:#2b542c}.alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.alert-info hr{border-top-color:#a6e1ec}.alert-info .alert-link{color:#245269}.alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.alert-warning hr{border-top-color:#f7e1b5}.alert-warning .alert-link{color:#66512c}.alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}.alert-danger hr{border-top-color:#e4b9c0}.alert-danger .alert-link{color:#843534}@-webkit-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@-o-keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f5f5f5;border-radius:4px;-webkit-box-shadow:inset 0 1px 2px rgba(0,0,0,0.1);box-shadow:inset 0 1px 2px rgba(0,0,0,0.1)}.progress-bar{float:left;width:0%;height:100%;font-size:12px;line-height:20px;color:#fff;text-align:center;background-color:#337ab7;-webkit-box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);box-shadow:inset 0 -1px 0 rgba(0,0,0,0.15);-webkit-transition:width .6s ease;-o-transition:width .6s ease;transition:width .6s ease}.progress-striped .progress-bar,.progress-bar-striped{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);-webkit-background-size:40px 40px;background-size:40px 40px}.progress.active .progress-bar,.progress-bar.active{-webkit-animation:progress-bar-stripes 2s linear infinite;-o-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-bar-success{background-color:#5cb85c}.progress-striped .progress-bar-success{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-info{background-color:#5bc0de}.progress-striped .progress-bar-info{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-warning{background-color:#f0ad4e}.progress-striped .progress-bar-warning{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.progress-bar-danger{background-color:#d9534f}.progress-striped .progress-bar-danger{background-image:-webkit-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:-o-linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent);background-image:linear-gradient(45deg, rgba(255,255,255,0.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,0.15) 50%, rgba(255,255,255,0.15) 75%, transparent 75%, transparent)}.media{margin-top:15px}.media:first-child{margin-top:0}.media,.media-body{zoom:1;overflow:hidden}.media-body{width:10000px}.media-object{display:block}.media-object.img-thumbnail{max-width:none}.media-right,.media>.pull-right{padding-left:10px}.media-left,.media>.pull-left{padding-right:10px}.media-left,.media-right,.media-body{display:table-cell;vertical-align:top}.media-middle{vertical-align:middle}.media-bottom{vertical-align:bottom}.media-heading{margin-top:0;margin-bottom:5px}.media-list{padding-left:0;list-style:none}.list-group{margin-bottom:20px;padding-left:0}.list-group-item{position:relative;display:block;padding:10px 15px;margin-bottom:-1px;background-color:#fff;border:1px solid #ddd}.list-group-item:first-child{border-top-right-radius:4px;border-top-left-radius:4px}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:4px;border-bottom-left-radius:4px}a.list-group-item,button.list-group-item{color:#555}a.list-group-item .list-group-item-heading,button.list-group-item .list-group-item-heading{color:#333}a.list-group-item:hover,button.list-group-item:hover,a.list-group-item:focus,button.list-group-item:focus{text-decoration:none;color:#555;background-color:#f5f5f5}button.list-group-item{width:100%;text-align:left}.list-group-item.disabled,.list-group-item.disabled:hover,.list-group-item.disabled:focus{background-color:#eee;color:#777;cursor:not-allowed}.list-group-item.disabled .list-group-item-heading,.list-group-item.disabled:hover .list-group-item-heading,.list-group-item.disabled:focus .list-group-item-heading{color:inherit}.list-group-item.disabled .list-group-item-text,.list-group-item.disabled:hover .list-group-item-text,.list-group-item.disabled:focus .list-group-item-text{color:#777}.list-group-item.active,.list-group-item.active:hover,.list-group-item.active:focus{z-index:2;color:#fff;background-color:#337ab7;border-color:#337ab7}.list-group-item.active .list-group-item-heading,.list-group-item.active:hover .list-group-item-heading,.list-group-item.active:focus .list-group-item-heading,.list-group-item.active .list-group-item-heading>small,.list-group-item.active:hover .list-group-item-heading>small,.list-group-item.active:focus .list-group-item-heading>small,.list-group-item.active .list-group-item-heading>.small,.list-group-item.active:hover .list-group-item-heading>.small,.list-group-item.active:focus .list-group-item-heading>.small{color:inherit}.list-group-item.active .list-group-item-text,.list-group-item.active:hover .list-group-item-text,.list-group-item.active:focus .list-group-item-text{color:#c7ddef}.list-group-item-success{color:#3c763d;background-color:#dff0d8}a.list-group-item-success,button.list-group-item-success{color:#3c763d}a.list-group-item-success .list-group-item-heading,button.list-group-item-success .list-group-item-heading{color:inherit}a.list-group-item-success:hover,button.list-group-item-success:hover,a.list-group-item-success:focus,button.list-group-item-success:focus{color:#3c763d;background-color:#d0e9c6}a.list-group-item-success.active,button.list-group-item-success.active,a.list-group-item-success.active:hover,button.list-group-item-success.active:hover,a.list-group-item-success.active:focus,button.list-group-item-success.active:focus{color:#fff;background-color:#3c763d;border-color:#3c763d}.list-group-item-info{color:#31708f;background-color:#d9edf7}a.list-group-item-info,button.list-group-item-info{color:#31708f}a.list-group-item-info .list-group-item-heading,button.list-group-item-info .list-group-item-heading{color:inherit}a.list-group-item-info:hover,button.list-group-item-info:hover,a.list-group-item-info:focus,button.list-group-item-info:focus{color:#31708f;background-color:#c4e3f3}a.list-group-item-info.active,button.list-group-item-info.active,a.list-group-item-info.active:hover,button.list-group-item-info.active:hover,a.list-group-item-info.active:focus,button.list-group-item-info.active:focus{color:#fff;background-color:#31708f;border-color:#31708f}.list-group-item-warning{color:#8a6d3b;background-color:#fcf8e3}a.list-group-item-warning,button.list-group-item-warning{color:#8a6d3b}a.list-group-item-warning .list-group-item-heading,button.list-group-item-warning .list-group-item-heading{color:inherit}a.list-group-item-warning:hover,button.list-group-item-warning:hover,a.list-group-item-warning:focus,button.list-group-item-warning:focus{color:#8a6d3b;background-color:#faf2cc}a.list-group-item-warning.active,button.list-group-item-warning.active,a.list-group-item-warning.active:hover,button.list-group-item-warning.active:hover,a.list-group-item-warning.active:focus,button.list-group-item-warning.active:focus{color:#fff;background-color:#8a6d3b;border-color:#8a6d3b}.list-group-item-danger{color:#a94442;background-color:#f2dede}a.list-group-item-danger,button.list-group-item-danger{color:#a94442}a.list-group-item-danger .list-group-item-heading,button.list-group-item-danger .list-group-item-heading{color:inherit}a.list-group-item-danger:hover,button.list-group-item-danger:hover,a.list-group-item-danger:focus,button.list-group-item-danger:focus{color:#a94442;background-color:#ebcccc}a.list-group-item-danger.active,button.list-group-item-danger.active,a.list-group-item-danger.active:hover,button.list-group-item-danger.active:hover,a.list-group-item-danger.active:focus,button.list-group-item-danger.active:focus{color:#fff;background-color:#a94442;border-color:#a94442}.list-group-item-heading{margin-top:0;margin-bottom:5px}.list-group-item-text{margin-bottom:0;line-height:1.3}.panel{margin-bottom:20px;background-color:#fff;border:1px solid transparent;border-radius:4px;-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.panel-body{padding:15px}.panel-heading{padding:10px 15px;border-bottom:1px solid transparent;border-top-right-radius:3px;border-top-left-radius:3px}.panel-heading>.dropdown .dropdown-toggle{color:inherit}.panel-title{margin-top:0;margin-bottom:0;font-size:16px;color:inherit}.panel-title>a,.panel-title>small,.panel-title>.small,.panel-title>small>a,.panel-title>.small>a{color:inherit}.panel-footer{padding:10px 15px;background-color:#f5f5f5;border-top:1px solid #ddd;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.list-group,.panel>.panel-collapse>.list-group{margin-bottom:0}.panel>.list-group .list-group-item,.panel>.panel-collapse>.list-group .list-group-item{border-width:1px 0;border-radius:0}.panel>.list-group:first-child .list-group-item:first-child,.panel>.panel-collapse>.list-group:first-child .list-group-item:first-child{border-top:0;border-top-right-radius:3px;border-top-left-radius:3px}.panel>.list-group:last-child .list-group-item:last-child,.panel>.panel-collapse>.list-group:last-child .list-group-item:last-child{border-bottom:0;border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.panel-heading+.panel-collapse>.list-group .list-group-item:first-child{border-top-right-radius:0;border-top-left-radius:0}.panel-heading+.list-group .list-group-item:first-child{border-top-width:0}.list-group+.panel-footer{border-top-width:0}.panel>.table,.panel>.table-responsive>.table,.panel>.panel-collapse>.table{margin-bottom:0}.panel>.table caption,.panel>.table-responsive>.table caption,.panel>.panel-collapse>.table caption{padding-left:15px;padding-right:15px}.panel>.table:first-child,.panel>.table-responsive:first-child>.table:first-child{border-top-right-radius:3px;border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child{border-top-left-radius:3px;border-top-right-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:first-child,.panel>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:first-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:first-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:first-child{border-top-left-radius:3px}.panel>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child td:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child td:last-child,.panel>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>thead:first-child>tr:first-child th:last-child,.panel>.table:first-child>tbody:first-child>tr:first-child th:last-child,.panel>.table-responsive:first-child>.table:first-child>tbody:first-child>tr:first-child th:last-child{border-top-right-radius:3px}.panel>.table:last-child,.panel>.table-responsive:last-child>.table:last-child{border-bottom-right-radius:3px;border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child{border-bottom-left-radius:3px;border-bottom-right-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:first-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:first-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:first-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:first-child{border-bottom-left-radius:3px}.panel>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child td:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child td:last-child,.panel>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tbody:last-child>tr:last-child th:last-child,.panel>.table:last-child>tfoot:last-child>tr:last-child th:last-child,.panel>.table-responsive:last-child>.table:last-child>tfoot:last-child>tr:last-child th:last-child{border-bottom-right-radius:3px}.panel>.panel-body+.table,.panel>.panel-body+.table-responsive,.panel>.table+.panel-body,.panel>.table-responsive+.panel-body{border-top:1px solid #ddd}.panel>.table>tbody:first-child>tr:first-child th,.panel>.table>tbody:first-child>tr:first-child td{border-top:0}.panel>.table-bordered,.panel>.table-responsive>.table-bordered{border:0}.panel>.table-bordered>thead>tr>th:first-child,.panel>.table-responsive>.table-bordered>thead>tr>th:first-child,.panel>.table-bordered>tbody>tr>th:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:first-child,.panel>.table-bordered>tfoot>tr>th:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:first-child,.panel>.table-bordered>thead>tr>td:first-child,.panel>.table-responsive>.table-bordered>thead>tr>td:first-child,.panel>.table-bordered>tbody>tr>td:first-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:first-child,.panel>.table-bordered>tfoot>tr>td:first-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:first-child{border-left:0}.panel>.table-bordered>thead>tr>th:last-child,.panel>.table-responsive>.table-bordered>thead>tr>th:last-child,.panel>.table-bordered>tbody>tr>th:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>th:last-child,.panel>.table-bordered>tfoot>tr>th:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>th:last-child,.panel>.table-bordered>thead>tr>td:last-child,.panel>.table-responsive>.table-bordered>thead>tr>td:last-child,.panel>.table-bordered>tbody>tr>td:last-child,.panel>.table-responsive>.table-bordered>tbody>tr>td:last-child,.panel>.table-bordered>tfoot>tr>td:last-child,.panel>.table-responsive>.table-bordered>tfoot>tr>td:last-child{border-right:0}.panel>.table-bordered>thead>tr:first-child>td,.panel>.table-responsive>.table-bordered>thead>tr:first-child>td,.panel>.table-bordered>tbody>tr:first-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>td,.panel>.table-bordered>thead>tr:first-child>th,.panel>.table-responsive>.table-bordered>thead>tr:first-child>th,.panel>.table-bordered>tbody>tr:first-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:first-child>th{border-bottom:0}.panel>.table-bordered>tbody>tr:last-child>td,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>td,.panel>.table-bordered>tfoot>tr:last-child>td,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>td,.panel>.table-bordered>tbody>tr:last-child>th,.panel>.table-responsive>.table-bordered>tbody>tr:last-child>th,.panel>.table-bordered>tfoot>tr:last-child>th,.panel>.table-responsive>.table-bordered>tfoot>tr:last-child>th{border-bottom:0}.panel>.table-responsive{border:0;margin-bottom:0}.panel-group{margin-bottom:20px}.panel-group .panel{margin-bottom:0;border-radius:4px}.panel-group .panel+.panel{margin-top:5px}.panel-group .panel-heading{border-bottom:0}.panel-group .panel-heading+.panel-collapse>.panel-body,.panel-group .panel-heading+.panel-collapse>.list-group{border-top:1px solid #ddd}.panel-group .panel-footer{border-top:0}.panel-group .panel-footer+.panel-collapse .panel-body{border-bottom:1px solid #ddd}.panel-default{border-color:#ddd}.panel-default>.panel-heading{color:#333;background-color:#f5f5f5;border-color:#ddd}.panel-default>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ddd}.panel-default>.panel-heading .badge{color:#f5f5f5;background-color:#333}.panel-default>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ddd}.panel-primary{border-color:#337ab7}.panel-primary>.panel-heading{color:#fff;background-color:#337ab7;border-color:#337ab7}.panel-primary>.panel-heading+.panel-collapse>.panel-body{border-top-color:#337ab7}.panel-primary>.panel-heading .badge{color:#337ab7;background-color:#fff}.panel-primary>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#337ab7}.panel-success{border-color:#d6e9c6}.panel-success>.panel-heading{color:#3c763d;background-color:#dff0d8;border-color:#d6e9c6}.panel-success>.panel-heading+.panel-collapse>.panel-body{border-top-color:#d6e9c6}.panel-success>.panel-heading .badge{color:#dff0d8;background-color:#3c763d}.panel-success>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#d6e9c6}.panel-info{border-color:#bce8f1}.panel-info>.panel-heading{color:#31708f;background-color:#d9edf7;border-color:#bce8f1}.panel-info>.panel-heading+.panel-collapse>.panel-body{border-top-color:#bce8f1}.panel-info>.panel-heading .badge{color:#d9edf7;background-color:#31708f}.panel-info>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#bce8f1}.panel-warning{border-color:#faebcc}.panel-warning>.panel-heading{color:#8a6d3b;background-color:#fcf8e3;border-color:#faebcc}.panel-warning>.panel-heading+.panel-collapse>.panel-body{border-top-color:#faebcc}.panel-warning>.panel-heading .badge{color:#fcf8e3;background-color:#8a6d3b}.panel-warning>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#faebcc}.panel-danger{border-color:#ebccd1}.panel-danger>.panel-heading{color:#a94442;background-color:#f2dede;border-color:#ebccd1}.panel-danger>.panel-heading+.panel-collapse>.panel-body{border-top-color:#ebccd1}.panel-danger>.panel-heading .badge{color:#f2dede;background-color:#a94442}.panel-danger>.panel-footer+.panel-collapse>.panel-body{border-bottom-color:#ebccd1}.embed-responsive{position:relative;display:block;height:0;padding:0;overflow:hidden}.embed-responsive .embed-responsive-item,.embed-responsive iframe,.embed-responsive embed,.embed-responsive object,.embed-responsive video{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;border:0}.embed-responsive-16by9{padding-bottom:56.25%}.embed-responsive-4by3{padding-bottom:75%}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,0.05);box-shadow:inset 0 1px 1px rgba(0,0,0,0.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,0.15)}.well-lg{padding:24px;border-radius:6px}.well-sm{padding:9px;border-radius:3px}.close{float:right;font-size:21px;font-weight:bold;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:hover,.close:focus{color:#000;text-decoration:none;cursor:pointer;opacity:.5;filter:alpha(opacity=50)}button.close{padding:0;cursor:pointer;background:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{display:none;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;-webkit-overflow-scrolling:touch;outline:0}.modal.fade .modal-dialog{-webkit-transform:translate(0, -25%);-ms-transform:translate(0, -25%);-o-transform:translate(0, -25%);transform:translate(0, -25%);-webkit-transition:-webkit-transform 0.3s ease-out;-o-transition:-o-transform 0.3s ease-out;transition:transform 0.3s ease-out}.modal.in .modal-dialog{-webkit-transform:translate(0, 0);-ms-transform:translate(0, 0);-o-transform:translate(0, 0);transform:translate(0, 0)}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:10px}.modal-content{position:relative;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 3px 9px rgba(0,0,0,0.5);box-shadow:0 3px 9px rgba(0,0,0,0.5);-webkit-background-clip:padding-box;background-clip:padding-box;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0;filter:alpha(opacity=0)}.modal-backdrop.in{opacity:.5;filter:alpha(opacity=50)}.modal-header{padding:15px;border-bottom:1px solid #e5e5e5}.modal-header .close{margin-top:-2px}.modal-title{margin:0;line-height:1.42857143}.modal-body{position:relative;padding:15px}.modal-footer{padding:15px;text-align:right;border-top:1px solid #e5e5e5}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:768px){.modal-dialog{width:600px;margin:30px auto}.modal-content{-webkit-box-shadow:0 5px 15px rgba(0,0,0,0.5);box-shadow:0 5px 15px rgba(0,0,0,0.5)}.modal-sm{width:300px}}@media (min-width:992px){.modal-lg{width:900px}}.tooltip{position:absolute;z-index:1070;display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:12px;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.9;filter:alpha(opacity=90)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-left .tooltip-arrow{bottom:0;right:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.top-right .tooltip-arrow{bottom:0;left:5px;margin-bottom:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-left .tooltip-arrow{top:0;right:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.tooltip.bottom-right .tooltip-arrow{top:0;left:5px;margin-top:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1060;display:none;max-width:276px;padding:1px;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-style:normal;font-weight:normal;letter-spacing:normal;line-break:auto;line-height:1.42857143;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;white-space:normal;word-break:normal;word-spacing:normal;word-wrap:normal;font-size:14px;background-color:#fff;-webkit-background-clip:padding-box;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,0.2);border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0,0,0,0.2);box-shadow:0 5px 10px rgba(0,0,0,0.2)}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-content{padding:9px 14px}.popover>.arrow,.popover>.arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover>.arrow{border-width:11px}.popover>.arrow:after{border-width:10px;content:""}.popover.top>.arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,0.25);bottom:-11px}.popover.top>.arrow:after{content:" ";bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right>.arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,0.25)}.popover.right>.arrow:after{content:" ";left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom>.arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,0.25);top:-11px}.popover.bottom>.arrow:after{content:" ";top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left>.arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,0.25)}.popover.left>.arrow:after{content:" ";right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.carousel{position:relative}.carousel-inner{position:relative;overflow:hidden;width:100%}.carousel-inner>.item{display:none;position:relative;-webkit-transition:.6s ease-in-out left;-o-transition:.6s ease-in-out left;transition:.6s ease-in-out left}.carousel-inner>.item>img,.carousel-inner>.item>a>img{line-height:1}@media all and (transform-3d),(-webkit-transform-3d){.carousel-inner>.item{-webkit-transition:-webkit-transform 0.6s ease-in-out;-o-transition:-o-transform 0.6s ease-in-out;transition:transform 0.6s ease-in-out;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}.carousel-inner>.item.next,.carousel-inner>.item.active.right{-webkit-transform:translate3d(100%, 0, 0);transform:translate3d(100%, 0, 0);left:0}.carousel-inner>.item.prev,.carousel-inner>.item.active.left{-webkit-transform:translate3d(-100%, 0, 0);transform:translate3d(-100%, 0, 0);left:0}.carousel-inner>.item.next.left,.carousel-inner>.item.prev.right,.carousel-inner>.item.active{-webkit-transform:translate3d(0, 0, 0);transform:translate3d(0, 0, 0);left:0}}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:0;left:0;bottom:0;width:15%;opacity:.5;filter:alpha(opacity=50);font-size:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6);background-color:rgba(0,0,0,0)}.carousel-control.left{background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-image:-webkit-gradient(linear, left top, right top, color-stop(0, rgba(0,0,0,0.5)), to(rgba(0,0,0,0.0001)));background-image:linear-gradient(to right, rgba(0,0,0,0.5) 0, rgba(0,0,0,0.0001) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1)}.carousel-control.right{left:auto;right:0;background-image:-webkit-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-o-linear-gradient(left, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-image:-webkit-gradient(linear, left top, right top, color-stop(0, rgba(0,0,0,0.0001)), to(rgba(0,0,0,0.5)));background-image:linear-gradient(to right, rgba(0,0,0,0.0001) 0, rgba(0,0,0,0.5) 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1)}.carousel-control:hover,.carousel-control:focus{outline:0;color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-control .icon-prev,.carousel-control .icon-next,.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right{position:absolute;top:50%;margin-top:-10px;z-index:5;display:inline-block}.carousel-control .icon-prev,.carousel-control .glyphicon-chevron-left{left:50%;margin-left:-10px}.carousel-control .icon-next,.carousel-control .glyphicon-chevron-right{right:50%;margin-right:-10px}.carousel-control .icon-prev,.carousel-control .icon-next{width:20px;height:20px;line-height:1;font-family:serif}.carousel-control .icon-prev:before{content:'\2039'}.carousel-control .icon-next:before{content:'\203a'}.carousel-indicators{position:absolute;bottom:10px;left:50%;z-index:15;width:60%;margin-left:-30%;padding-left:0;list-style:none;text-align:center}.carousel-indicators li{display:inline-block;width:10px;height:10px;margin:1px;text-indent:-999px;border:1px solid #fff;border-radius:10px;cursor:pointer;background-color:#000 \9;background-color:rgba(0,0,0,0)}.carousel-indicators .active{margin:0;width:12px;height:12px;background-color:#fff}.carousel-caption{position:absolute;left:15%;right:15%;bottom:20px;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center;text-shadow:0 1px 2px rgba(0,0,0,0.6)}.carousel-caption .btn{text-shadow:none}@media screen and (min-width:768px){.carousel-control .glyphicon-chevron-left,.carousel-control .glyphicon-chevron-right,.carousel-control .icon-prev,.carousel-control .icon-next{width:30px;height:30px;margin-top:-10px;font-size:30px}.carousel-control .glyphicon-chevron-left,.carousel-control .icon-prev{margin-left:-10px}.carousel-control .glyphicon-chevron-right,.carousel-control .icon-next{margin-right:-10px}.carousel-caption{left:20%;right:20%;padding-bottom:30px}.carousel-indicators{bottom:20px}}.clearfix:before,.clearfix:after,.dl-horizontal dd:before,.dl-horizontal dd:after,.container:before,.container:after,.container-fluid:before,.container-fluid:after,.row:before,.row:after,.form-horizontal .form-group:before,.form-horizontal .form-group:after,.btn-toolbar:before,.btn-toolbar:after,.btn-group-vertical>.btn-group:before,.btn-group-vertical>.btn-group:after,.nav:before,.nav:after,.navbar:before,.navbar:after,.navbar-header:before,.navbar-header:after,.navbar-collapse:before,.navbar-collapse:after,.pager:before,.pager:after,.panel-body:before,.panel-body:after,.modal-header:before,.modal-header:after,.modal-footer:before,.modal-footer:after{content:" ";display:table}.clearfix:after,.dl-horizontal dd:after,.container:after,.container-fluid:after,.row:after,.form-horizontal .form-group:after,.btn-toolbar:after,.btn-group-vertical>.btn-group:after,.nav:after,.navbar:after,.navbar-header:after,.navbar-collapse:after,.pager:after,.panel-body:after,.modal-header:after,.modal-footer:after{clear:both}.center-block{display:block;margin-left:auto;margin-right:auto}.pull-right{float:right !important}.pull-left{float:left !important}.hide{display:none !important}.show{display:block !important}.invisible{visibility:hidden}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.hidden{display:none !important}.affix{position:fixed}@-ms-viewport{width:device-width}.visible-xs,.visible-sm,.visible-md,.visible-lg{display:none !important}.visible-xs-block,.visible-xs-inline,.visible-xs-inline-block,.visible-sm-block,.visible-sm-inline,.visible-sm-inline-block,.visible-md-block,.visible-md-inline,.visible-md-inline-block,.visible-lg-block,.visible-lg-inline,.visible-lg-inline-block{display:none !important}@media (max-width:767px){.visible-xs{display:block !important}table.visible-xs{display:table !important}tr.visible-xs{display:table-row !important}th.visible-xs,td.visible-xs{display:table-cell !important}}@media (max-width:767px){.visible-xs-block{display:block !important}}@media (max-width:767px){.visible-xs-inline{display:inline !important}}@media (max-width:767px){.visible-xs-inline-block{display:inline-block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm{display:block !important}table.visible-sm{display:table !important}tr.visible-sm{display:table-row !important}th.visible-sm,td.visible-sm{display:table-cell !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-block{display:block !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline{display:inline !important}}@media (min-width:768px) and (max-width:991px){.visible-sm-inline-block{display:inline-block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md{display:block !important}table.visible-md{display:table !important}tr.visible-md{display:table-row !important}th.visible-md,td.visible-md{display:table-cell !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-block{display:block !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline{display:inline !important}}@media (min-width:992px) and (max-width:1199px){.visible-md-inline-block{display:inline-block !important}}@media (min-width:1200px){.visible-lg{display:block !important}table.visible-lg{display:table !important}tr.visible-lg{display:table-row !important}th.visible-lg,td.visible-lg{display:table-cell !important}}@media (min-width:1200px){.visible-lg-block{display:block !important}}@media (min-width:1200px){.visible-lg-inline{display:inline !important}}@media (min-width:1200px){.visible-lg-inline-block{display:inline-block !important}}@media (max-width:767px){.hidden-xs{display:none !important}}@media (min-width:768px) and (max-width:991px){.hidden-sm{display:none !important}}@media (min-width:992px) and (max-width:1199px){.hidden-md{display:none !important}}@media (min-width:1200px){.hidden-lg{display:none !important}}.visible-print{display:none !important}@media print{.visible-print{display:block !important}table.visible-print{display:table !important}tr.visible-print{display:table-row !important}th.visible-print,td.visible-print{display:table-cell !important}}.visible-print-block{display:none !important}@media print{.visible-print-block{display:block !important}}.visible-print-inline{display:none !important}@media print{.visible-print-inline{display:inline !important}}.visible-print-inline-block{display:none !important}@media print{.visible-print-inline-block{display:inline-block !important}}@media print{.hidden-print{display:none !important}} \ No newline at end of file diff --git a/manager/media/style/common/font-awesome/css/font-awesome.min.css b/manager/media/style/common/font-awesome/css/font-awesome.min.css new file mode 100644 index 0000000000..540440ce89 --- /dev/null +++ b/manager/media/style/common/font-awesome/css/font-awesome.min.css @@ -0,0 +1,4 @@ +/*! + * Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome + * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) + */@font-face{font-family:'FontAwesome';src:url('../fonts/fontawesome-webfont.eot?v=4.7.0');src:url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.fa-handshake-o:before{content:"\f2b5"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-o:before{content:"\f2b7"}.fa-linode:before{content:"\f2b8"}.fa-address-book:before{content:"\f2b9"}.fa-address-book-o:before{content:"\f2ba"}.fa-vcard:before,.fa-address-card:before{content:"\f2bb"}.fa-vcard-o:before,.fa-address-card-o:before{content:"\f2bc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-circle-o:before{content:"\f2be"}.fa-user-o:before{content:"\f2c0"}.fa-id-badge:before{content:"\f2c1"}.fa-drivers-license:before,.fa-id-card:before{content:"\f2c2"}.fa-drivers-license-o:before,.fa-id-card-o:before{content:"\f2c3"}.fa-quora:before{content:"\f2c4"}.fa-free-code-camp:before{content:"\f2c5"}.fa-telegram:before{content:"\f2c6"}.fa-thermometer-4:before,.fa-thermometer:before,.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-3:before,.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-thermometer-2:before,.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-1:before,.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-0:before,.fa-thermometer-empty:before{content:"\f2cb"}.fa-shower:before{content:"\f2cc"}.fa-bathtub:before,.fa-s15:before,.fa-bath:before{content:"\f2cd"}.fa-podcast:before{content:"\f2ce"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-times-rectangle:before,.fa-window-close:before{content:"\f2d3"}.fa-times-rectangle-o:before,.fa-window-close-o:before{content:"\f2d4"}.fa-bandcamp:before{content:"\f2d5"}.fa-grav:before{content:"\f2d6"}.fa-etsy:before{content:"\f2d7"}.fa-imdb:before{content:"\f2d8"}.fa-ravelry:before{content:"\f2d9"}.fa-eercast:before{content:"\f2da"}.fa-microchip:before{content:"\f2db"}.fa-snowflake-o:before{content:"\f2dc"}.fa-superpowers:before{content:"\f2dd"}.fa-wpexplorer:before{content:"\f2de"}.fa-meetup:before{content:"\f2e0"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto} diff --git a/manager/media/style/common/font-awesome/fonts/FontAwesome.otf b/manager/media/style/common/font-awesome/fonts/FontAwesome.otf new file mode 100644 index 0000000000..401ec0f36e Binary files /dev/null and b/manager/media/style/common/font-awesome/fonts/FontAwesome.otf differ diff --git a/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.eot b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.eot new file mode 100644 index 0000000000..e9f60ca953 Binary files /dev/null and b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.eot differ diff --git a/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.svg b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.svg new file mode 100644 index 0000000000..855c845e53 --- /dev/null +++ b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.svg @@ -0,0 +1,2671 @@ + + + + +Created by FontForge 20120731 at Mon Oct 24 17:37:40 2016 + By ,,, +Copyright Dave Gandy 2016. All rights reserved. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.ttf b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.ttf new file mode 100644 index 0000000000..35acda2fa1 Binary files /dev/null and b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.ttf differ diff --git a/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.woff b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.woff new file mode 100644 index 0000000000..400014a4b0 Binary files /dev/null and b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.woff differ diff --git a/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.woff2 b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.woff2 new file mode 100644 index 0000000000..4d13fc6040 Binary files /dev/null and b/manager/media/style/common/font-awesome/fonts/fontawesome-webfont.woff2 differ diff --git a/manager/media/style/common/images/misc/login-logo.png b/manager/media/style/common/images/misc/login-logo.png index 2a03b8c30a..7c817545fb 100644 Binary files a/manager/media/style/common/images/misc/login-logo.png and b/manager/media/style/common/images/misc/login-logo.png differ diff --git a/manager/media/style/common/images/misc/logo.png b/manager/media/style/common/images/misc/logo.png index fab087fb22..be7005f202 100644 Binary files a/manager/media/style/common/images/misc/logo.png and b/manager/media/style/common/images/misc/logo.png differ diff --git a/manager/media/style/common/login.tpl b/manager/media/style/common/login.tpl index 2999bb13eb..9b6d6e360a 100755 --- a/manager/media/style/common/login.tpl +++ b/manager/media/style/common/login.tpl @@ -348,7 +348,7 @@
                      - © 2005-2014 by MODX®, and licensed under the GPL. + © 2005-2016 by MODX®, and licensed under the GPL.
                      diff --git a/manager/media/style/common/manager.lockout.tpl b/manager/media/style/common/manager.lockout.tpl index 9178aa79d9..25a9401366 100644 --- a/manager/media/style/common/manager.lockout.tpl +++ b/manager/media/style/common/manager.lockout.tpl @@ -81,7 +81,7 @@

                      - MODX™ is licensed under the GPL license. © 2005-2014 MODX. + MODX™ is licensed under the GPL license. © 2005-2016 MODX.

                      diff --git a/manager/media/style/common/moo-datepicker/datepicker.inc.php b/manager/media/style/common/moo-datepicker/datepicker.inc.php new file mode 100644 index 0000000000..efb87d5fd4 --- /dev/null +++ b/manager/media/style/common/moo-datepicker/datepicker.inc.php @@ -0,0 +1,11 @@ +parseText($tpl,$_lang,'[%','%]'); + } +} diff --git a/manager/media/style/common/moo-datepicker/datepicker.js b/manager/media/style/common/moo-datepicker/datepicker.js new file mode 100644 index 0000000000..9ec3cd30d1 --- /dev/null +++ b/manager/media/style/common/moo-datepicker/datepicker.js @@ -0,0 +1,390 @@ +/* + * DatePicker + * @author Rick Hopkins + * @modified by Micah Nolte and Martin Vašina + * @version 0.3.2 + * @classDescription A date picker object. Created with the help of MooTools v1.11 + * MIT-style License. + +-- start it up by doing this in your domready: + +$$('input.DatePicker').each( function(el){ + new DatePicker(el); +}); + + */ + +var DatePicker = new Class({ + + /* set and create the date picker text box */ + initialize: function(dp, options){ + + // Options defaults + this.dayChars = 1; // number of characters in day names abbreviation + this.dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']; + this.daysInMonth = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; + this.format = 'dd-mm-yyyy hh:mm:00'; + this.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + this.startDay = 7; // 1 = week starts on Monday, 7 = week starts on Sunday + this.yearOrder = 'asc'; + this.yearRange = 10; + this.yearStart = (new Date().getFullYear()); + this.yearOffset = -10; + this.error = ''; + this.lastValidDate = ''; + + // Pull the rest of the options + if(options) { + options = options; + } else { + options = []; + } + dp.options = { + monthNames: (options.monthNames && options.monthNames.length == 12 ? options.monthNames : this.monthNames) || this.monthNames, + daysInMonth: (options.daysInMonth && options.daysInMonth.length == 12 ? options.daysInMonth : this.daysInMonth) || this.daysInMonth, + dayNames: (options.dayNames && options.dayNames.length == 7 ? options.dayNames : this.dayNames) || this.dayNames, + startDay : options.startDay || this.startDay, + dayChars : options.dayChars || this.dayChars, + format: options.format || this.format, + yearStart: options.yearStart || this.yearStart, + yearRange: options.yearRange || this.yearRange, + yearOrder: options.yearOrder || this.yearOrder, + yearOffset: options.yearOffset || this.yearOffset + }; + + // Finds the entered date, or uses the current date + dp = this.getValue(dp); + dp.lastValidDate = dp.value; + + // Set beginning time and today, remember the original + dp.oldYear = dp.year = dp.then.getFullYear(); + dp.oldMonth = dp.month = dp.then.getMonth(); + dp.oldDay = dp.then.getDate(); + dp.nowYear = dp.today.getFullYear(); + dp.nowMonth = dp.today.getMonth(); + dp.nowDay = dp.today.getDate(); + + dp.setProperties({'id':dp.getProperty('name'), 'autocomplete': 'off'}); + dp.container = false; + dp.calendar = false; + dp.interval = null; + dp.active = false; + dp.onclick = dp.onfocus = this.create.pass(dp, this); + }, + + getValue: function(dp) { + if(dp.value != '') { + // handle dd-mm-YYYY date format as that is invalid for Date() + if (dp.options.format == 'dd-mm-YYYY hh:mm:00' || dp.options.format == 'dd-mm-YYYY') { + var dateVals = dp.value.split(' '); + var dateParts = dateVals[0].split('-'); + dp.thenvalue = dateParts[1] + '/' + dateParts[0] + '/' + dateParts[2]; + if (dateVals[1]) dp.thenvalue = dp.thenvalue + ' ' + dateVals[1]; + } else { + dp.thenvalue = dp.value; + } + dp.then = new Date(dp.thenvalue); + dp.today = new Date(); + } else { + dp.then = dp.today = new Date(); + dp.thenvalue = dp.then; + } + return dp; + }, + + updateValue: function(dp) { + el = $(document.body).getElement('td.dp_selected'); + if(el) { + ds = el.axis.split('|'); + var formatted = this.formatValue(dp, ds[0], ds[1], ds[2]); + if(formatted != '') { + dp.value = formatted; + dp.lastValidDate = formatted; + } + this.dp.dirty = true; + } + }, + + alertError: function(dp) { + if(dp.error != '' && typeof dp.error != 'undefined') { + alert(dp.error); + dp.error = ''; + } + }, + + close: function(e) { + if (!$(this.dp.id + 'dp_container')) return; + e = new Event(e); + + var clickOutside = ($chk(e) && e.target != this.dp && e.target != this.dp.container && !$(this.dp.id + 'dp_container').hasChild(e.target)); + if (clickOutside) { + if(this.dp.dirty) { + this.updateValue(this.dp); + this.alertError(this.dp); + } + this.remove(this.dp); + } + }, + + /* create the calendar */ + create: function(dp){ + + // Finds the entered date, or uses the current date + dp = this.getValue(dp); + + this.dp = dp; + if (dp.calendar) return false; + + this.dp.dirty = false; + + /* create the outer container */ + dp.container = new Element('div', {'class':'dp_container', 'id': dp.id + 'dp_container'}).injectBefore(dp); + + document.addEvent('mousedown', this.close.bind(this)); + + document.addEvents({ + 'keydown': function(e) { + e = new Event(e); + if ((e.code== 9 && !e.shift) || e.code == 27 || e.code == 13) { + if(e.code == 13 && dp.container) { + e.preventDefault ? e.preventDefault() : (e.returnValue = false); + if(this.dp.dirty) this.updateValue(dp); + this.remove(this.dp); + this.alertError(this.dp); + } else { + this.remove(this.dp); + } + } + }.bind(this) + }); + + /* create the calendar */ + dp.calendar = new Element('div', {'class':'dp_cal'}).injectInside(dp.container); + + /* create the date object */ + var date = new Date(); + + /* create the date object */ + if ((dp.month >=0) && dp.year) { + date.setFullYear(dp.year, dp.month, 1); + } else { + dp.month = date.getMonth(); + dp.year = date.getFullYear(); + date.setDate(1); + } + dp.year % 4 == 0 ? dp.options.daysInMonth[1] = 29 : dp.options.daysInMonth[1] = 28; + + /* set the day to first of the month */ + var firstDay = (1-(7+date.getDay()-dp.options.startDay)%7); + + /* create the month select box */ + monthSel = new Element('select', {'id':dp.id + '_monthSelect'}); + for (var m = 0; m < dp.options.monthNames.length; m++){ + monthSel.options[m] = new Option(dp.options.monthNames[m], m); + if (dp.month == m) monthSel.options[m].selected = true; + } + + /* create the year select box */ + yearSel = new Element('select', {'id':dp.id + '_yearSelect'}); + i = 0; + dp.options.yearStart ? dp.options.yearStart : dp.options.yearStart = date.getFullYear(); + if (dp.options.yearOrder == 'desc'){ + for (var y = dp.options.yearStart - dp.options.yearOffset; y > (dp.options.yearStart - dp.options.yearRange - 1); y--){ + yearSel.options[i] = new Option(y, y); + if (dp.year == y) yearSel.options[i].selected = true; + i++; + } + } else { + for (var y = dp.options.yearStart + dp.options.yearOffset; y < (dp.options.yearStart + dp.options.yearRange + 1); y++){ + yearSel.options[i] = new Option(y, y); + if (dp.year == y) yearSel.options[i].selected = true; + i++; + } + } + + /* create time textbox */ + if (!dp.time) { + var d = new Date(dp.thenvalue); + var minutes = d.getMinutes(); + if (minutes < 10) { + minutes = '0' + minutes; + } + var time = d.getHours() + ':' + minutes; + } else { + var time = dp.time; + } + timeTextBox = new Element('input', {'id':dp.id + '_timeTextBox', 'class':'cal_timeTextBox', 'type':'text', 'value':time}); + submitButton = new Element('button', {'id':dp.id + '_submit', 'class':'cal_submit'}).appendText('OK'); + + /* start creating calendar */ + calTable = new Element('table'); + calTableThead = new Element('thead'); + calSelRow = new Element('tr'); + calSelCell = new Element('th', {'colspan':'7'}); + monthSel.injectInside(calSelCell); + yearSel.injectInside(calSelCell); + calSelCell.injectInside(calSelRow); + calSelRow.injectInside(calTableThead); + calTableTbody = new Element('tbody'); + + /* create day names */ + calDayNameRow = new Element('tr'); + for (var i = 0; i < dp.options.dayNames.length; i++) { + calDayNameCell = new Element('th'); + calDayNameCell.appendText(dp.options.dayNames[(dp.options.startDay+i)%7].substr(0, dp.options.dayChars)); + calDayNameCell.injectInside(calDayNameRow); + } + calDayNameRow.injectInside(calTableTbody); + + /* create the day cells */ + while (firstDay <= dp.options.daysInMonth[dp.month]){ + calDayRow = new Element('tr'); + for (i = 0; i < 7; i++){ + if ((firstDay <= dp.options.daysInMonth[dp.month]) && (firstDay > 0)){ + calDayCell = new Element('td', {'class':dp.id + '_calDay', 'axis':dp.year + '|' + (parseInt(dp.month) + 1) + '|' + firstDay}).appendText(firstDay).injectInside(calDayRow); + } else { + calDayCell = new Element('td', {'class':'dp_empty'}).appendText(' ').injectInside(calDayRow); + } + // Show the previous day + if ( (firstDay == dp.oldDay) && (dp.month == dp.oldMonth ) && (dp.year == dp.oldYear) ) { + calDayCell.addClass('dp_selected'); + } + // Show today + if ( (firstDay == dp.nowDay) && (dp.month == dp.nowMonth ) && (dp.year == dp.nowYear) ) { + calDayCell.addClass('dp_today'); + } + firstDay++; + } + calDayRow.injectInside(calTableTbody); + } + + /* table into the calendar div */ + calTableThead.injectInside(calTable); + calTableTbody.injectInside(calTable); + + /* time box */ + //calTimeRow = new Element('tr'); + calTimePara = new Element('p', {'class':dp.id + '_calTime'}); + timeTextBox.injectInside(calTimePara); + //calTimeCell.injectInside(calTimeRow); + submitButton.injectInside(calTimePara); + + calTable.injectInside(dp.calendar); + calTimePara.injectInside(dp.calendar); + + /* set the onmouseover events for all calendar days */ + $$('td.' + dp.id + '_calDay').each(function(el){ + el.onmouseover = function(){ + el.addClass('dp_roll'); + }.bind(this); + }.bind(this)); + + /* set the onmouseout events for all calendar days */ + $$('td.' + dp.id + '_calDay').each(function(el){ + el.onmouseout = function(){ + el.removeClass('dp_roll'); + }.bind(this); + }.bind(this)); + + /* set the onclick events for all calendar days */ + $$('td.' + dp.id + '_calDay').each(function(el){ + el.onclick = function(){ + if( $(document.body).getElement('td.dp_selected') ) + $(document.body).getElement('td.dp_selected').removeClass('dp_selected'); // Remove old selected + el.addClass('dp_selected'); // Set new selected + this.updateValue(this.dp); + // this.remove(dp); // Stay after date is picked + }.bind(this); + el.ondblclick = function(){ + if( $(document.body).getElement('td.dp_selected') ) + $(document.body).getElement('td.dp_selected').removeClass('dp_selected'); // Remove old selected + el.addClass('dp_selected'); // Set new selected + this.updateValue(this.dp); + this.remove(dp); // Close for double click + }.bind(this); + }.bind(this)); + + /* set the onchange event for the month & year select boxes */ + monthSel.onfocus = function(){ dp.active = true; }; + monthSel.onblur = function() { + dp.active = true; + }.bind(this); + monthSel.onchange = function(){ + dp.month = monthSel.value; + dp.year = yearSel.value; + this.remove(dp); + this.create(dp); + }.bind(this); + + yearSel.onfocus = function(){ dp.active = true; }; + yearSel.onblur = function() { + dp.active = true; + }.bind(this); + yearSel.onchange = function(){ + dp.month = monthSel.value; + dp.year = yearSel.value; + this.remove(dp); + this.create(dp); + }.bind(this); + + /* set the onchange event for the timeTextBox */ + timeTextBox.onfocus = function(){ dp.active = true; }; + timeTextBox.onblur = function() { + this.updateValue(this.dp); + this.alertError(this.dp); + }.bind(this); + timeTextBox.onkeypress = function(e) { + this.dp.dirty = true; + }.bind(this); + submitButton.onclick = function(e) { + e.stopPropagation(); + if(this.dp.dirty) { + this.updateValue(this.dp); + this.alertError(this.dp); + } + this.remove(this.dp); + }.bind(this); + }, + + /* Format the returning date value according to the selected formation */ + formatValue: function(dp, year, month, day) { + /* setup the date string variable */ + var dateStr = ''; + + /* get time */ + var time = $(dp.id + '_timeTextBox').value.split(':'); + + if (time[0] == '' || time[0] < 0 || time[0] > 23) { + dp.error = 'Invalid hours value: ' + time[0] + '\nAllowed range is 00-23'; + return ''; + } + if (time[1] == '' || time[1] < 0 || time[1] > 59 || time[1].length !== 2) { + dp.error = 'Invalid minutes value: ' + time[1] + '\nAllowed range is 00-59'; + return ''; + } + + /* check the length of day */ + if (day < 10) day = '0' + day; + if (month < 10) month = '0' + month; + + /* check the format & replace parts // thanks O'Rey */ + dateStr = dp.options.format.replace( /dd/i, day ).replace( /mm/i, month ).replace( /yyyy/i, year ).replace(/hh/, time[0]).replace(/mm/, time[1]); + dp.month = dp.oldMonth = '' + (month - 1) + ''; + dp.year = dp.oldYear = year; + dp.oldDay = day; + + this.dp.thenvalue = month+'/'+day+'/'+year+' '+time[0]+':'+time[1]+':00'; + + /* return the date string value */ + return dateStr; + }, + + /* Remove the calendar from the page */ + remove: function(dp){ + dp.active = false; + if (dp.container) dp.container.remove(); + dp.calendar = false; + dp.container = false; + $$('select.dp_hide').removeClass('dp_hide'); + } +}); diff --git a/manager/media/style/common/moo-datepicker/datepicker.tpl b/manager/media/style/common/moo-datepicker/datepicker.tpl new file mode 100644 index 0000000000..c4e5d37810 --- /dev/null +++ b/manager/media/style/common/moo-datepicker/datepicker.tpl @@ -0,0 +1,13 @@ + + diff --git a/manager/media/style/common/moo-datepicker/index.html b/manager/media/style/common/moo-datepicker/index.html new file mode 100644 index 0000000000..cfb7d0fe18 --- /dev/null +++ b/manager/media/style/common/moo-datepicker/index.html @@ -0,0 +1,2 @@ +

                      Unauthorized access

                      +You're not allowed to access file folder \ No newline at end of file diff --git a/manager/media/style/common/welcome.tpl b/manager/media/style/common/welcome.tpl index ab99d0dd44..6622e93117 100644 --- a/manager/media/style/common/welcome.tpl +++ b/manager/media/style/common/welcome.tpl @@ -1,5 +1,13 @@
                      +
                      + [+logout_reminder_msg+] +
                      + +
                      + [+multiple_sessions_msg+] +
                      +
                      "; + if($_POST['ajax']!=1) echo ""; + else echo $msg."\n"; +} + +function login($username,$givenPassword,$dbasePassword) { + global $modx; + return $modx->phpass->CheckPassword($givenPassword, $dbasePassword); +} + +function loginV1($internalKey,$givenPassword,$dbasePassword,$username) { + global $modx; + + $user_algo = $modx->manager->getV1UserHashAlgorithm($internalKey); + + if(!isset($modx->config['pwd_hash_algo']) || empty($modx->config['pwd_hash_algo'])) + $modx->config['pwd_hash_algo'] = 'UNCRYPT'; + + if($user_algo !== $modx->config['pwd_hash_algo']) { + $bk_pwd_hash_algo = $modx->config['pwd_hash_algo']; + $modx->config['pwd_hash_algo'] = $user_algo; + } + + if($dbasePassword != $modx->manager->genV1Hash($givenPassword, $internalKey)) { + return false; + } + + updateNewHash($username,$givenPassword); + + return true; +} + +function loginMD5($internalKey,$givenPassword,$dbasePassword,$username) { + global $modx; + + if($dbasePassword != md5($givenPassword)) return false; + updateNewHash($username,$givenPassword); + return true; +} + +function updateNewHash($username,$password) { + global $modx; + + $field = array(); + $field['password'] = $modx->phpass->HashPassword($password); + $modx->db->update($field, '[+prefix+]manager_users', "username='{$username}'"); +} + +function incrementFailedLoginCount($internalKey,$failedlogins,$failed_allowed,$blocked_minutes) { + global $modx; + + $failedlogins += 1; + + $fields = array('failedlogincount' => $failedlogins); + if($failedlogins>=$failed_allowed) //block user for too many fail attempts + $fields['blockeduntil'] = time()+($blocked_minutes*60); + + $modx->db->update($fields, '[+prefix+]user_attributes', "internalKey='{$internalKey}'"); + + if($failedlogins<$failed_allowed) { + //sleep to help prevent brute force attacks + $sleep = (int)$failedlogins/2; + if($sleep>5) $sleep = 5; + sleep($sleep); } + @session_destroy(); + session_unset(); + return; } diff --git a/manager/processors/logout.processor.php b/manager/processors/logout.processor.php index 05e7e2c8d1..5bcd712152 100755 --- a/manager/processors/logout.processor.php +++ b/manager/processors/logout.processor.php @@ -3,7 +3,7 @@ $internalKey = $modx->getLoginUserID(); $username = $_SESSION['mgrShortname']; - +$sid = $modx->sid; // invoke OnBeforeManagerLogout event $modx->invokeEvent("OnBeforeManagerLogout", @@ -25,6 +25,12 @@ //startCMSSession(); //session_destroy(); +// Clean up active_user_locks +$modx->db->delete($modx->getFullTableName('active_user_locks'), "sid = '{$sid}'"); + +// Clean up active_user_sessions +$modx->db->delete($modx->getFullTableName('active_user_sessions'), "sid = '{$sid}'"); + // invoke OnManagerLogout event $modx->invokeEvent("OnManagerLogout", array( diff --git a/manager/processors/move_document.processor.php b/manager/processors/move_document.processor.php index 4a92f71de3..5d0b1815e7 100755 --- a/manager/processors/move_document.processor.php +++ b/manager/processors/move_document.processor.php @@ -4,28 +4,23 @@ $modx->webAlertAndQuit($_lang["error_no_privileges"]); } +$newParentID = isset($_REQUEST['new_parent']) ? (int)$_REQUEST['new_parent'] : 0; +$documentID = isset($_REQUEST['id']) ? (int)$_REQUEST['id'] : 0; + // ok, two things to check. // first, document cannot be moved to itself // second, new parent must be a folder. If not, set it to folder. -if($_REQUEST['id']==$_REQUEST['new_parent']) { - $modx->webAlertAndQuit($_lang["error_movedocument1"]); -} -if($_REQUEST['id']=="") { - $modx->webAlertAndQuit($_lang["error_movedocument2"]); -} -if($_REQUEST['new_parent']=="") { - $modx->webAlertAndQuit($_lang["error_movedocument2"]); -} - -$rs = $modx->db->select('parent', $modx->getFullTableName('site_content'), "id='{$_REQUEST['id']}'"); +if($documentID==$newParentID) $modx->webAlertAndQuit($_lang["error_movedocument1"]); +if($documentID <= 0) $modx->webAlertAndQuit($_lang["error_movedocument2"]); +if($newParentID < 0) $modx->webAlertAndQuit($_lang["error_movedocument2"]); +$rs = $modx->db->select('parent', $modx->getFullTableName('site_content'), "id='{$documentID}'"); $oldparent = $modx->db->getValue($rs); -$newParentID = $_REQUEST['new_parent']; // check user has permission to move document to chosen location if ($use_udperms == 1) { -if ($oldparent != $newParentID) { + if ($oldparent != $newParentID) { include_once MODX_MANAGER_PATH . "processors/user_documents_permissions.class.php"; $udperms = new udperms(); $udperms->user = $modx->getLoginUserID(); @@ -42,52 +37,65 @@ function allChildren($currDocID) { global $modx; $children= array(); $rs = $modx->db->select('id', $modx->getFullTableName('site_content'), "parent = '{$currDocID}'"); - while ($child= $modx->db->getRow($rs)) { - $children[]= $child['id']; - $nextgen= array(); - $nextgen= allChildren($child['id']); - $children= array_merge($children, $nextgen); - } + while ($child= $modx->db->getRow($rs)) { + $children[]= $child['id']; + $nextgen= array(); + $nextgen= allChildren($child['id']); + $children= array_merge($children, $nextgen); + } return $children; } -$children= allChildren($_REQUEST['id']); +$evtOut = $modx->invokeEvent("onBeforeMoveDocument", array ( + "id_document" => $documentID, + "old_parent" => $oldparent, + "new_parent" => $newParentID +)); +if (is_array($evtOut) && count($evtOut) > 0){ + $newParent = array_pop($evtOut); + if($newParent == $oldparent) { + $modx->webAlertAndQuit($_lang["error_movedocument2"]); + }else{ + $newParentID = $newParent; + } +} +$children = allChildren($documentID); if (!array_search($newParentID, $children)) { + $modx->db->update(array( + 'isfolder' => 1, + ), $modx->getFullTableName('site_content'), "id='{$newParentID}'"); - $modx->db->update( - array( - 'isfolder' => 1, - ), $modx->getFullTableName('site_content'), "id='{$_REQUEST['new_parent']}'"); - - $modx->db->update( - array( - 'parent' => $_REQUEST['new_parent'], - 'editedby' => $modx->getLoginUserID(), - 'editedon' => time(), - ), $modx->getFullTableName('site_content'), "id='{$_REQUEST['id']}'"); + $modx->db->update(array( + 'parent' => $newParentID, + 'editedby' => $modx->getLoginUserID(), + 'editedon' => time(), + ), $modx->getFullTableName('site_content'), "id='{$documentID}'"); // finished moving the document, now check to see if the old_parent should no longer be a folder. $rs = $modx->db->select('COUNT(*)', $modx->getFullTableName('site_content'), "parent='{$oldparent}'"); $limit = $modx->db->getValue($rs); if(!$limit>0) { - $modx->db->update( - array( - 'isfolder' => 0, - ), $modx->getFullTableName('site_content'), "id='{$oldparent}'"); + $modx->db->update(array( + 'isfolder' => 0, + ), $modx->getFullTableName('site_content'), "id='{$oldparent}'"); } - // Set the item name for logger - $pagetitle = $modx->db->getValue($modx->db->select('pagetitle', $modx->getFullTableName('site_content'), "id='{$id}'")); + $pagetitle = $modx->db->getValue($modx->db->select('pagetitle', $modx->getFullTableName('site_content'), "id='{$documentID}'")); $_SESSION['itemname'] = $pagetitle; + $modx->invokeEvent("onAfterMoveDocument", array ( + "id_document" => $documentID, + "old_parent" => $oldparent, + "new_parent" => $newParentID + )); + // empty cache & sync site $modx->clearCache('full'); - $header="Location: index.php?r=1&id=$id&a=7"; + $header="Location: index.php?r=1&id={$documentID}&a=7"; header($header); } else { $modx->webAlertAndQuit("You cannot move a document to a child document!"); -} -?> \ No newline at end of file +} \ No newline at end of file diff --git a/manager/processors/purge_plugin.processor.php b/manager/processors/purge_plugin.processor.php new file mode 100644 index 0000000000..60f45e2214 --- /dev/null +++ b/manager/processors/purge_plugin.processor.php @@ -0,0 +1,54 @@ +hasPermission('delete_plugin')) { + $e->setError(3); + $e->dumpError(); +} + +$tbl_site_plugins = $modx->getFullTablename('site_plugins'); +$tbl_site_plugin_events = $modx->getFullTablename('site_plugin_events'); + +// Get unique list of latest added plugins by highest sql-id +$rs = $modx->db->query("SELECT t1.id FROM {$tbl_site_plugins} t1 LEFT JOIN {$tbl_site_plugins} t2 ON (t1.name = t2.name AND t1.id < t2.id) WHERE t2.id IS NULL;"); +$latestIds = array(); +while($row = $modx->db->getRow($rs)) { + $latestIds[] = $row['id']; +} + +// Get list of plugins with disabled and enabled versions +$rs = $modx->db->query("SELECT id FROM {$tbl_site_plugins} t1 WHERE disabled = 1 AND name IN (SELECT name FROM {$tbl_site_plugins} t2 WHERE t1.name = t2.name AND t1.id != t2.id)"); + +while($row = $modx->db->getRow($rs)) { + + $id = $row['id']; + + if(in_array($id,$latestIds)) continue; // Keep latest version of disabled plugins + + // invoke OnBeforePluginFormDelete event + $modx->invokeEvent('OnBeforePluginFormDelete', array('id'=> $id)); + + // delete the plugin. + if (!$modx->db->delete($tbl_site_plugins, "id={$id}")) { + echo "Something went wrong while trying to delete plugin {$id}"; + exit; + } else { + // delete the plugin events. + if (!$modx->db->delete($tbl_site_plugin_events, "pluginid={$id}")) { + echo "Something went wrong while trying to delete the plugin events for plugin {$id}"; + exit; + } else { + // invoke OnPluginFormDelete event + $modx->invokeEvent('OnPluginFormDelete', array('id'=>$id)); + } + } +} + +// empty cache +include_once "cache_sync.class.processor.php"; +$sync = new synccache(); +$sync->setCachepath("../assets/cache/"); +$sync->setReport(false); +$sync->emptyCache(); // first empty the cache + +header('Location: index.php?a=76'); diff --git a/manager/processors/remove_locks.processor.php b/manager/processors/remove_locks.processor.php index a28f47b19e..b31ad28e39 100755 --- a/manager/processors/remove_locks.processor.php +++ b/manager/processors/remove_locks.processor.php @@ -1,12 +1,25 @@ INCLUDE_ORDERING_ERROR

                      Please use the MODX Content Manager instead of accessing this file directly."); -if(!$modx->hasPermission('remove_locks')) { - $modx->webAlertAndQuit($_lang["error_no_privileges"]); -} -// Remove locks -$modx->db->truncate($modx->getFullTableName('active_users')); +if(!isset($_GET['id'])) { + if(!$modx->hasPermission('remove_locks')) $modx->webAlertAndQuit($_lang["error_no_privileges"]); + + // Remove all locks + $modx->db->truncate($modx->getFullTableName('active_user_locks')); -$header="Location: index.php?a=7"; + $header = "Location: index.php?a=7"; header($header); +} else { + // Remove single locks via AJAX / window.onbeforeunload + $type = intval($_GET['type']); + $id = intval($_GET['id']); + $includeAllUsers = $modx->hasPermission('remove_locks'); // Enables usage of "unlock"-ajax-button + if($type && $id) { + $modx->unlockElement($type, $id, $includeAllUsers); + echo '1'; + exit; + } else { + echo 'No type or id sent with request.'; + } +} ?> \ No newline at end of file diff --git a/manager/processors/save_content.processor.php b/manager/processors/save_content.processor.php index 8a9e5d2fec..2551ae4621 100644 --- a/manager/processors/save_content.processor.php +++ b/manager/processors/save_content.processor.php @@ -663,6 +663,9 @@ if ($_POST['refresh_preview'] == '1') $header = "Location: ".MODX_SITE_URL."index.php?id=$id&z=manprev"; else { + if ($_POST['stay'] != '2' && $id > 0) { + $modx->unlockElement(7, $id); + } if ($_POST['stay'] != '') { $id = $_REQUEST['id']; if ($type == "reference") { diff --git a/manager/processors/save_htmlsnippet.processor.php b/manager/processors/save_htmlsnippet.processor.php index 4012db882a..ec5b881b4b 100755 --- a/manager/processors/save_htmlsnippet.processor.php +++ b/manager/processors/save_htmlsnippet.processor.php @@ -5,7 +5,7 @@ } $id = intval($_POST['id']); -$snippet = trim($modx->db->escape($_POST['post'])); +$snippet = $modx->db->escape($_POST['post']); $name = $modx->db->escape(trim($_POST['name'])); $description = $modx->db->escape($_POST['description']); $locked = $_POST['locked']=='on' ? 1 : 0 ; @@ -25,6 +25,9 @@ if($name=="") $name = "Untitled chunk"; +$editor_type = $_POST['which_editor'] != 'none' ? 1 : 2; +$editor_name = $_POST['which_editor'] != 'none' ? $_POST['which_editor'] : 'none'; + switch ($_POST['mode']) { case '77': @@ -51,6 +54,8 @@ 'snippet' => $snippet, 'locked' => $locked, 'category' => $categoryid, + 'editor_type' => $editor_type, + 'editor_name' => $editor_name ), $modx->getFullTableName('site_htmlsnippets')); // invoke OnChunkFormSave event @@ -99,6 +104,8 @@ 'snippet' => $snippet, 'locked' => $locked, 'category' => $categoryid, + 'editor_type' => $editor_type, + 'editor_name' => $editor_name ), $modx->getFullTableName('site_htmlsnippets'), "id='{$id}'"); // invoke OnChunkFormSave event @@ -120,6 +127,7 @@ $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']; header($header); } else { + $modx->unlockElement(3, $id); $header="Location: index.php?a=76&r=2"; header($header); } diff --git a/manager/processors/save_module.processor.php b/manager/processors/save_module.processor.php index 92136f8b8a..3faa5eb2b0 100644 --- a/manager/processors/save_module.processor.php +++ b/manager/processors/save_module.processor.php @@ -18,6 +18,7 @@ $properties = $modx->db->escape($_POST['properties']); $enable_sharedparams = $_POST['enable_sharedparams']=='on' ? 1 : 0 ; $guid = $modx->db->escape($_POST['guid']); +$parse_docblock = $_POST['parse_docblock']=="1" ? '1' : '0'; //Kyle Jaebker - added category support if (empty($_POST['newcategory']) && $_POST['categoryid'] > 0) { @@ -34,6 +35,24 @@ if($name=="") $name = "Untitled module"; +if($parse_docblock) { + $parsed = $modx->parseDocBlockFromString($modulecode, true); + $name = isset($parsed['name']) ? $parsed['name'] : $name; + $properties = isset($parsed['properties']) ? $parsed['properties'] : $properties; + $guid = isset($parsed['guid']) ? $parsed['guid'] : $guid; + $enable_sharedparams = isset($parsed['shareparams']) ? intval($parsed['shareparams']) : $enable_sharedparams; + + $description = isset($parsed['description']) ? $parsed['description'] : $description; + $version = isset($parsed['version']) ? ''.$parsed['version'].' ' : ''; + if($version) { + $description = $version . trim(preg_replace('/(.+?)+(<\/b>)/i', '', $description)); + } + if(isset($parsed['modx_category'])) { + include_once(MODX_MANAGER_PATH.'includes/categories.inc.php'); + $categoryid = getCategory($parsed['modx_category']); + } +} + switch ($_POST['mode']) { case '107': // invoke OnBeforeModFormSave event @@ -66,7 +85,7 @@ 'enable_sharedparams' => $enable_sharedparams, 'guid' => $guid, 'modulecode' => $modulecode, - 'guid' => $properties, + 'properties' => $properties, ), $modx->getFullTableName('site_modules')); // save user group access permissions @@ -150,6 +169,7 @@ $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']; header($header); } else { + $modx->unlockElement(6, $id); $header="Location: index.php?a=106&r=2"; header($header); } @@ -182,4 +202,4 @@ function saveUserGroupAccessPermissons(){ } } } -?> \ No newline at end of file +?> diff --git a/manager/processors/save_password.processor.php b/manager/processors/save_password.processor.php index d4f86b3aab..e39704370d 100755 --- a/manager/processors/save_password.processor.php +++ b/manager/processors/save_password.processor.php @@ -16,9 +16,11 @@ $modx->webAlertAndQuit("Password is too short. Please specify a password of at least 6 characters."); } + $pass1 = htmlspecialchars($pass1, ENT_NOQUOTES, $modx->config['modx_charset']); $tbl_manager_users = $modx->getFullTableName('manager_users'); $uid = $modx->getLoginUserID(); - $f['password'] = $modx->manager->genHash($pass1, $uid); + $modx->loadExtension('phpass'); + $f['password'] = $modx->phpass->HashPassword($pass1); $modx->db->update($f,$tbl_manager_users,"id='{$uid}'"); // invoke OnManagerChangePassword event diff --git a/manager/processors/save_plugin.processor.php b/manager/processors/save_plugin.processor.php index 11b805d3cf..5fa2b18ff3 100755 --- a/manager/processors/save_plugin.processor.php +++ b/manager/processors/save_plugin.processor.php @@ -13,6 +13,7 @@ $disabled = $_POST['disabled']=="on" ? '1' : '0'; $moduleguid = $modx->db->escape($_POST['moduleguid']); $sysevents = $_POST['sysevents']; +$parse_docblock = $_POST['parse_docblock']=="1" ? '1' : '0'; //Kyle Jaebker - added category support if (empty($_POST['newcategory']) && $_POST['categoryid'] > 0) { @@ -21,18 +22,34 @@ $categoryid = 0; } else { include_once(MODX_MANAGER_PATH.'includes/categories.inc.php'); - $categoryid = checkCategory($_POST['newcategory']); - if (!$categoryid) { - $categoryid = newCategory($_POST['newcategory']); - } + $categoryid = getCategory($_POST['newcategory']); } if($name=="") $name = "Untitled plugin"; +if($parse_docblock) { + $parsed = $modx->parseDocBlockFromString($plugincode, true); + $name = isset($parsed['name']) ? $parsed['name'] : $name; + $sysevents = isset($parsed['events']) ? explode(',', $parsed['events']) : $sysevents; + $properties = isset($parsed['properties']) ? $parsed['properties'] : $properties; + $moduleguid = isset($parsed['guid']) ? $parsed['guid'] : $moduleguid; + + $description = isset($parsed['description']) ? $parsed['description'] : $description; + $version = isset($parsed['version']) ? ''.$parsed['version'].' ' : ''; + if($version) { + $description = $version . trim(preg_replace('/(.+?)+(<\/b>)/i', '', $description)); + } + if(isset($parsed['modx_category'])) { + include_once(MODX_MANAGER_PATH.'includes/categories.inc.php'); + $categoryid = getCategory($parsed['modx_category']); + } +} + $tblSitePlugins = $modx->getFullTableName('site_plugins'); +$eventIds = array(); switch ($_POST['mode']) { case '101': - + // invoke OnBeforePluginFormSave event $modx->invokeEvent("OnBeforePluginFormSave", array( @@ -142,6 +159,7 @@ $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']; header($header); } else { + $modx->unlockElement(5, $id); $header="Location: index.php?a=76&r=2"; header($header); } @@ -158,10 +176,12 @@ function saveEventListeners($id,$sysevents,$mode) { $tblSitePluginEvents = $modx->getFullTableName('site_plugin_events'); $insert_sysevents = array(); for($i=0;$idb->select('max(priority) as priority', $tblSitePluginEvents, "evtid='{$sysevents[$i]}'"); + $rs = $modx->db->select('max(priority) as priority', $tblSitePluginEvents, "evtid='{$evtId}'"); } else { - $rs = $modx->db->select('priority', $tblSitePluginEvents, "evtid='{$sysevents[$i]}' and pluginid='{$id}'"); + $rs = $modx->db->select('priority', $tblSitePluginEvents, "evtid='{$evtId}' and pluginid='{$id}'"); } $prevPriority = $modx->db->getValue($rs); if ($mode == '101') { @@ -169,7 +189,7 @@ function saveEventListeners($id,$sysevents,$mode) { } else { $priority = isset($prevPriority) ? $prevPriority : 1; } - $insert_sysevents[] = array('pluginid'=>$id,'evtid'=>$sysevents[$i],'priority'=>$priority); + $insert_sysevents[] = array('pluginid'=>$id,'evtid'=>$evtId,'priority'=>$priority); } $modx->db->delete($tblSitePluginEvents, "pluginid='{$id}'"); foreach ($insert_sysevents as $insert_sysevent) { @@ -177,4 +197,13 @@ function saveEventListeners($id,$sysevents,$mode) { } } +function getEventIdByName($name) { + global $modx, $eventIds; + if(empty($eventIds)) { + $rs = $modx->db->select('id, name', $modx->getFullTableName('system_eventnames')); + while ($row = $modx->db->getRow($rs)) + $eventIds[$row['name']] = $row['id']; + } + return $eventIds[$name]; +} ?> \ No newline at end of file diff --git a/manager/processors/save_role.processor.php b/manager/processors/save_role.processor.php index 626315427d..70986a47ec 100755 --- a/manager/processors/save_role.processor.php +++ b/manager/processors/save_role.processor.php @@ -51,6 +51,8 @@ 'error_dialog' => $error_dialog, 'about' => $about, 'file_manager' => $file_manager, + 'assets_files' => $assets_files, + 'assets_images' => $assets_images, 'save_user' => $save_user, 'delete_user' => $delete_user, 'save_password' => $save_password, @@ -81,7 +83,9 @@ 'view_unpublished' => $view_unpublished, 'import_static' => $import_static, 'export_static' => $export_static, - 'remove_locks' => $remove_locks + 'remove_locks' => $remove_locks, + 'display_locks' => $display_locks, + 'change_resourcetype' => $change_resourcetype ); $fields = $modx->db->escape($fields); @@ -126,4 +130,7 @@ default : $modx->webAlertAndQuit("No operation set in request."); } + +$modx->unlockElement(8, $id); + ?> \ No newline at end of file diff --git a/manager/processors/save_settings.processor.php b/manager/processors/save_settings.processor.php index a520e65a7a..43fab4521c 100755 --- a/manager/processors/save_settings.processor.php +++ b/manager/processors/save_settings.processor.php @@ -50,8 +50,17 @@ $data['rb_base_dir'] = str_replace('[(base_path)]',MODX_BASE_PATH,$data['rb_base_dir']); if (isset($data) && count($data) > 0) { + if(isset($data['manager_language'])) { + $lang_path = MODX_MANAGER_PATH . 'includes/lang/' . $data['manager_language'] . '.inc.php'; + if(is_file($lang_path)) { + include($lang_path); + global $modx_lang_attribute; + $data['lang_code'] = !$modx_lang_attribute ? 'en' : $modx_lang_attribute; + } + } $savethese = array(); $data['sys_files_checksum'] = $modx->manager->getSystemChecksum($data['check_files_onlogin']); + $data['mail_check_timeperiod'] = intval($data['mail_check_timeperiod']) < 60 ? 60 : $data['mail_check_timeperiod']; // updateMail() in mainMenu no faster than every minute foreach ($data as $k => $v) { switch ($k) { case 'settings_version':{ @@ -105,11 +114,17 @@ } $k = ''; break; + case 'session_timeout': + $mail_check_timeperiod = $data['mail_check_timeperiod']; + $v = intval($v) < ($data['mail_check_timeperiod']/60+1) ? ($data['mail_check_timeperiod']/60+1) : $v; // updateMail() in mainMenu pings as per mail_check_timeperiod, so +1min is minimum + break; default: break; } $v = is_array($v) ? implode(",", $v) : $v; - + + $modx->config[$k] = $v; + if(!empty($k)) $savethese[] = '(\''.$modx->db->escape($k).'\', \''.$modx->db->escape($v).'\')'; } diff --git a/manager/processors/save_snippet.processor.php b/manager/processors/save_snippet.processor.php index 8bb0df6dd4..4357ac4424 100755 --- a/manager/processors/save_snippet.processor.php +++ b/manager/processors/save_snippet.processor.php @@ -5,7 +5,7 @@ } $id = intval($_POST['id']); -$snippet = trim($modx->db->escape($_POST['post'])); +$snippet = trim($_POST['post']); $name = $modx->db->escape(trim($_POST['name'])); $description = $modx->db->escape($_POST['description']); $locked = $_POST['locked']=='on' ? 1 : 0 ; @@ -13,11 +13,13 @@ if ( strncmp($snippet, "' ) $snippet = substr($snippet, 0, -2); } +if ( substr($snippet, -2) == '?>' ) $snippet = substr($snippet, 0, -2); +$snippet = $modx->db->escape($snippet); + $properties = $modx->db->escape($_POST['properties']); $moduleguid = $modx->db->escape($_POST['moduleguid']); -$sysevents = $_POST['sysevents']; +$parse_docblock = $_POST['parse_docblock']=="1" ? '1' : '0'; //Kyle Jaebker - added category support if (empty($_POST['newcategory']) && $_POST['categoryid'] > 0) { @@ -34,6 +36,23 @@ if($name=="") $name = "Untitled snippet"; +if($parse_docblock) { + $parsed = $modx->parseDocBlockFromString($snippet, true); + $name = isset($parsed['name']) ? $parsed['name'] : $name; + $properties = isset($parsed['properties']) ? $parsed['properties'] : $properties; + $moduleguid = isset($parsed['guid']) ? $parsed['guid'] : $moduleguid; + + $description = isset($parsed['description']) ? $parsed['description'] : $description; + $version = isset($parsed['version']) ? ''.$parsed['version'].' ' : ''; + if($version) { + $description = $version . trim(preg_replace('/(.+?)+(<\/b>)/i', '', $description)); + } + if(isset($parsed['modx_category'])) { + include_once(MODX_MANAGER_PATH.'includes/categories.inc.php'); + $categoryid = getCategory($parsed['modx_category']); + } +} + switch ($_POST['mode']) { case '23': // Save new snippet @@ -134,6 +153,7 @@ $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']; header($header); } else { + $modx->unlockElement(4, $id); $header="Location: index.php?a=76&r=2"; header($header); } @@ -141,4 +161,3 @@ default: $modx->webAlertAndQuit("No operation set in request."); } -?> \ No newline at end of file diff --git a/manager/processors/save_template.processor.php b/manager/processors/save_template.processor.php index 922eea7899..91570babf6 100755 --- a/manager/processors/save_template.processor.php +++ b/manager/processors/save_template.processor.php @@ -9,6 +9,8 @@ $templatename = $modx->db->escape(trim($_POST['templatename'])); $description = $modx->db->escape($_POST['description']); $locked = $_POST['locked']=='on' ? 1 : 0 ; +$selectable = $id == $modx->config['default_template'] ? 1 : // Force selectable + $_POST['selectable']=='on' ? 1 : 0; //Kyle Jaebker - added category support if (empty($_POST['newcategory']) && $_POST['categoryid'] > 0) { @@ -50,6 +52,7 @@ 'description' => $description, 'content' => $template, 'locked' => $locked, + 'selectable' => $selectable, 'category' => $categoryid, ), $modx->getFullTableName('site_templates')); @@ -59,6 +62,8 @@ "mode" => "new", "id" => $newid )); + // Set new assigned Tvs + saveTemplateAccess($newid); // Set the item name for logger $_SESSION['itemname'] = $templatename; @@ -75,6 +80,7 @@ $header="Location: index.php?a=76&r=2"; header($header); } + break; case '16': @@ -100,8 +106,11 @@ 'description' => $description, 'content' => $template, 'locked' => $locked, + 'selectable' => $selectable, 'category' => $categoryid, ), $modx->getFullTableName('site_templates'), "id='{$id}'"); + // Set new assigned Tvs + saveTemplateAccess($id); // invoke OnTempFormSave event $modx->invokeEvent("OnTempFormSave", @@ -122,14 +131,42 @@ $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']; header($header); } else { + $modx->unlockElement(1, $id); $header="Location: index.php?a=76&r=2"; header($header); } - break; default: $modx->webAlertAndQuit("No operation set in request."); } -?> \ No newline at end of file + +function saveTemplateAccess($id) { + + global $modx; + + $newAssignedTvs = $_POST['assignedTv']; + + // Preserve rankings of already assigned TVs + $rs = $modx->db->select( "tmplvarid, rank", $modx->getFullTableName('site_tmplvar_templates'), "templateid='{$id}'", "" ); + + $ranksArr = array(); + $highest = 0; + while($row = $modx->db->getRow($rs)) { + $ranksArr[$row['tmplvarid']] = $row['rank']; + $highest = $highest < $row['rank'] ? $row['rank'] : $highest; + }; + + $modx->db->delete($modx->getFullTableName('site_tmplvar_templates'),"templateid='{$id}'"); + if(empty($newAssignedTvs)) return; + foreach($newAssignedTvs as $tvid){ + if(!$id || !$tvid) continue; // Dont link zeros + $modx->db->insert( + array( + 'templateid' => $id, + 'tmplvarid' => $tvid, + 'rank' => isset($ranksArr[$tvid]) ? $ranksArr[$tvid] : $highest += 1 // append TVs to rank + ), $modx->getFullTableName('site_tmplvar_templates')); + } +} diff --git a/manager/processors/save_tmplvars.processor.php b/manager/processors/save_tmplvars.processor.php index 585d382151..e49a408b94 100755 --- a/manager/processors/save_tmplvars.processor.php +++ b/manager/processors/save_tmplvars.processor.php @@ -15,6 +15,8 @@ $display = $modx->db->escape($_POST['display']); $params = $modx->db->escape($_POST['params']); $locked = $_POST['locked']=='on' ? 1 : 0 ; +$origin = isset($_REQUEST['or']) ? intval($_REQUEST['or']) : 76; +$originId = isset($_REQUEST['oid']) ? intval($_REQUEST['oid']) : NULL; //Kyle Jaebker - added category support if (empty($_POST['newcategory']) && $_POST['categoryid'] > 0) { @@ -29,9 +31,8 @@ } } -if($caption =="") { - $caption = $name? $name: "Untitled variable"; -} +$name = $name != '' ? $name : "Untitled variable"; +$caption = $caption != '' ? $caption : $name; // get table names $tbl_site_tmplvars = $modx->getFullTableName('site_tmplvars'); @@ -159,10 +160,11 @@ // finished emptying cache - redirect if($_POST['stay']!='') { $a = ($_POST['stay']=='2') ? "301&id=$id":"300"; - $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']; + $header="Location: index.php?a=".$a."&r=2&stay=".$_POST['stay']."&or=".$origin."&oid=".$originId; header($header); } else { - $header="Location: index.php?a=76&r=2"; + $modx->unlockElement(2, $id); + $header="Location: index.php?a=".$origin."&r=2".($originId!=NULL?'&id='.$originId:''); header($header); } diff --git a/manager/processors/save_user.processor.php b/manager/processors/save_user.processor.php index a25ef124d0..7621b9fa31 100755 --- a/manager/processors/save_user.processor.php +++ b/manager/processors/save_user.processor.php @@ -4,29 +4,23 @@ $modx->webAlertAndQuit($_lang["error_no_privileges"]); } +$modx->loadExtension('phpass'); + $tbl_manager_users = $modx->getFullTableName('manager_users'); $tbl_user_attributes = $modx->getFullTableName('user_attributes'); $tbl_member_groups = $modx->getFullTableName('member_groups'); $input = $_POST; -foreach($input as $k=>$v) { - if($k!=='comment') { - $v = sanitize($v); - } - $input[$k] = $v; -} $id = intval($input['id']); $oldusername = $input['oldusername']; $newusername = !empty ($input['newusername']) ? trim($input['newusername']) : "New User"; -$esc_newusername = $modx->db->escape($newusername); $fullname = $input['fullname']; $genpassword = $input['newpassword']; $passwordgenmethod = $input['passwordgenmethod']; $passwordnotifymethod = $input['passwordnotifymethod']; $specifiedpassword = $input['specifiedpassword']; $email = $input['email']; -$esc_email = $modx->db->escape($email); $oldemail = $input['oldemail']; $phone = $input['phone']; $mobilephone = $input['mobilephone']; @@ -53,14 +47,14 @@ } // verify email -if ($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i", $email)) { +if ($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i", $email)) { webAlertAndQuit("E-mail address doesn't seem to be valid!"); } // verify admin security if ($_SESSION['mgrRole'] != 1) { // Check to see if user tried to spoof a "1" (admin) role - if ($role == 1) { + if (!$modx->hasPermission('save_role')) { webAlertAndQuit("Illegal attempt to create/modify administrator by non-administrator!"); } // Verify that the user being edited wasn't an admin and the user ID got spoofed @@ -75,14 +69,14 @@ switch ($input['mode']) { case '11' : // new user // check if this user name already exist - $rs = $modx->db->select('count(id)', $tbl_manager_users, "username='{$esc_newusername}'"); + $rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s'", $modx->db->escape($newusername))); $limit = $modx->db->getValue($rs); if ($limit > 0) { webAlertAndQuit("User name is already in use!"); } // check if the email address already exist - $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, "email='{$esc_email}' AND id!='{$id}'"); + $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND id!='%s'", $modx->db->escape($email), $id)); $limit = $modx->db->getValue($rs); if ($limit > 0) { webAlertAndQuit("Email is already in use!"); @@ -111,12 +105,10 @@ )); // create the user account - $field = array(); - $field['username'] = $esc_newusername; - $internalKey = $modx->db->insert($field, $tbl_manager_users); + $internalKey = $modx->db->insert(array('username'=>$modx->db->escape($newusername)), $tbl_manager_users); $field = array(); - $field['password'] = $modx->manager->genHash($newpassword, $internalKey); + $field['password'] = $modx->phpass->HashPassword($newpassword); $modx->db->update($field, $tbl_manager_users, "id='{$internalKey}'"); $field = compact('internalKey','fullname','role','email','phone','mobilephone','fax','zip','street','city','state','country','gender','dob','photo','comment','blocked','blockeduntil','blockedafter'); @@ -185,7 +177,7 @@
                      @@ -193,7 +185,7 @@

                      - + htmlspecialchars($newusername), $modx->htmlspecialchars($newpassword)); ?>

                      @@ -227,14 +219,14 @@ } // check if the username already exist - $rs = $modx->db->select('count(id)', $tbl_manager_users, "username='{$esc_newusername}' AND id!='{$id}'"); + $rs = $modx->db->select('count(id)', $tbl_manager_users, sprintf("username='%s' AND id!='%s'", $modx->db->escape($newusername), $id)); $limit = $modx->db->getValue($rs); if ($limit > 0) { webAlertAndQuit("User name is already in use!"); } // check if the email address already exists - $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, "email='{$esc_email}' AND internalKey!='{$id}'"); + $rs = $modx->db->select('count(internalKey)', $tbl_user_attributes, sprintf("email='%s' AND internalKey!='%s'", $modx->db->escape($email), $id)); $limit = $modx->db->getValue($rs); if ($limit > 0) { webAlertAndQuit("Email is already in use!"); @@ -248,9 +240,9 @@ // update user name and password $field = array(); - $field['username'] = $esc_newusername; + $field['username'] = $modx->db->escape($newusername); if($genpassword == 1) { - $field['password'] = $modx->manager->genHash($newpassword, $id); + $field['password'] = $modx->phpass->HashPassword($newpassword); } $modx->db->update($field, $tbl_manager_users, "id='{$id}'"); $field = compact('fullname','role','email','phone','mobilephone','fax','zip','street','city','state','country','gender','dob','photo','comment','failedlogincount','blocked','blockeduntil','blockedafter'); @@ -325,14 +317,14 @@
                      -

                      getLoginUserID()) ? ' '.$_lang['user_changeddata'] : ''); ?>

                      +

                      htmlspecialchars($newusername), $modx->htmlspecialchars($newpassword)).(($id == $modx->getLoginUserID()) ? ' '.$_lang['user_changeddata'] : ''); ?>

                      @@ -354,17 +346,6 @@ webAlertAndQuit("No operation set in request."); } -// in case any plugins include a quoted_printable function -function save_user_quoted_printable($string) { - $crlf = "\n" ; - $string = preg_replace('!(\r\n|\r|\n)!', $crlf, $string) . $crlf ; - $f[] = '/([\000-\010\013\014\016-\037\075\177-\377])/e' ; - $r[] = "'=' . sprintf('%02X', ord('\\1'))" ; $f[] = '/([\011\040])' . $crlf . '/e' ; - $r[] = "'=' . sprintf('%02X', ord('\\1')) . '" . $crlf . "'" ; - $string = preg_replace($f, $r, $string) ; - return trim(wordwrap($string, 70, ' =' . $crlf)) ; -} - // Send an email to the user function sendMailMessage($email, $uid, $pwd, $ufn) { global $modx,$_lang,$signupemail_message; @@ -495,21 +476,3 @@ function generate_password($length = 10) { } return $pass; } - -function sanitize($str='',$safecount=0) { - global $modx; - $safecount++; - if (1000 < $safecount) { - exit("error too many loops '{$safecount}'"); - } - if(is_array($str)) { - foreach($str as $i=>$v) { - $str[$i] = sanitize($v,$safecount); - } - } - else { - $str = strip_tags($str); - $str = htmlspecialchars($str, ENT_NOQUOTES, $modx->config['modx_charset']); - } - return $str; -} diff --git a/manager/processors/save_web_user.processor.php b/manager/processors/save_web_user.processor.php index f11d99c6a4..a3ed989fdb 100755 --- a/manager/processors/save_web_user.processor.php +++ b/manager/processors/save_web_user.processor.php @@ -53,7 +53,7 @@ } // verify email -if ($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,6}$/i", $email)) { +if ($email == '' || !preg_match("/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,24}$/i", $email)) { webAlertAndQuit("E-mail address doesn't seem to be valid!"); } @@ -166,7 +166,7 @@
                      @@ -303,7 +303,7 @@
                      @@ -347,8 +347,7 @@ function save_user_quoted_printable($string) { function sendMailMessage($email, $uid, $pwd, $ufn) { global $modx,$_lang,$websignupemail_message; global $emailsubject, $emailsender; - global $site_name; - $manager_url = MODX_MANAGER_URL; + global $site_name, $site_url; $message = sprintf($websignupemail_message, $uid, $pwd); // use old method // replace placeholders $message = str_replace("[+uid+]", $uid, $message); @@ -357,7 +356,7 @@ function sendMailMessage($email, $uid, $pwd, $ufn) { $message = str_replace("[+sname+]", $site_name, $message); $message = str_replace("[+saddr+]", $emailsender, $message); $message = str_replace("[+semail+]", $emailsender, $message); - $message = str_replace("[+surl+]", $manager_url, $message); + $message = str_replace("[+surl+]", $site_url, $message); $param = array(); $param['from'] = "{$site_name}<{$emailsender}>"; @@ -433,7 +432,7 @@ function sanitize($str='',$safecount=0) { } } else { - $str = strip_tags($str); + // $str = strip_tags($str); // LEAVE < and > intact $str = htmlspecialchars($str, ENT_NOQUOTES, $modx->config['modx_charset']); } return $str; diff --git a/manager/processors/user_documents_permissions.class.php b/manager/processors/user_documents_permissions.class.php index 4065c4bb43..affcc974eb 100755 --- a/manager/processors/user_documents_permissions.class.php +++ b/manager/processors/user_documents_permissions.class.php @@ -23,7 +23,7 @@ function checkPermissions() { return true; // administrator - grant all document permissions } - if($document==0 && $udperms_allowroot==1) { + if($document==0 && ($udperms_allowroot==1 || $modx->hasPermission('edit_document'))) { return true; } diff --git a/sample-robots.txt b/sample-robots.txt index 0cf81d874a..c7978c7aa4 100644 --- a/sample-robots.txt +++ b/sample-robots.txt @@ -1,5 +1,6 @@ # Default modx exclusions User-agent: * +Disallow: /assets/backup/ Disallow: /assets/cache/ Disallow: /assets/docs/ Disallow: /assets/export/ @@ -10,7 +11,16 @@ Disallow: /assets/snippets/ Disallow: /assets/packages/ Disallow: /assets/tvs/ Disallow: /install/ -Disallow: /manager/ -# For sitemaps.xml autodiscovery. Uncomment if you have one. +Allow: /assets/cache/images/ +Allow: /assets/modules/*.css +Allow: /assets/modules/*.js +Allow: /assets/plugins/*.css +Allow: /assets/plugins/*.js +Allow: /assets/snippets/*.css +Allow: /assets/snippets/*.js + +# Host: example.com + +# For sitemaps.xml autodiscovery. Uncomment if you have one: # Sitemap: http://example.com/sitemap.xml \ No newline at end of file